Рефераты. Функциональные модели универсального нейрокомпьютера

1.     Вычислить_оценку О2

2.     О1=О2

3.     Вычислить_градиент

4.     Оптимизация шага Пустой_указатель Шаг

5.     Вычислить_оценку О2

6.     Если О1-О2<Точность то переход к шагу 2

Рис. 5. Метод наискорейшего спуска

Этот метод работает, как правило, на порядок быстрее методов случайного поиска. Он имеет два параметра – Точность, показывающий, что если изменение оценки за шаг метода меньше чем Точность, то обучение останавливается; Шаг – начальный шаг для оптимизации шага. Заметим, что шаг постоянно изменяется в ходе оптимизации шага.

а)
б)
в)

Рис. 6. Траектории спуска при различных конфигурациях окрестности минимума и разных методах оптимизации.

Остановимся на основных недостатках этого метода. Во-первых, эти методом находится тот минимум, в область притяжения которого попадет начальная точка. Этот минимум может не быть глобальным. Существует несколько способов выхода из этого положения. Наиболее простой и действенный – случайное изменение параметров с дальнейшим повторным обучение методом наискорейшего спуска. Как правило, этот метод позволяет за несколько циклов обучения с последующим случайным изменением параметров найти глобальный минимум.

1.     Создать_вектор В1

2.     Создать_вектор В2

3.     Шаг=1

4.     Вычислить_оценку О2

5.     Сохранить_вектор В1

6.     О1=О2

7.     N=0

8.     Вычислить_градиент

9.     Оптимизация_шага Пустой_указатель Шаг

10. N=N+1

11. Если N<k то переход к шагу 8

12. Сохранить_вектор В2

13. В2=В2-В1

14. ШагParTan=1

15. Оптимизация шага В2 ШагParTan

16. Вычислить_оценку О2

17. Если О1-О2<Точность то переход к шагу 5

Рис. 7. Метод kParTan

Вторым серьезным недостатком метода наискорейшего спуска является его чувствительность к форме окрестности минимума. На рис. 6а проиллюстрирована траектория спуска при использовании метода наискорейшего спуска, в случае, если в окрестности минимума линии уровня функции оценки являются кругами (рассматривается двумерный случай). В этом случае минимум достигается за один шаг. На рис. 6б приведена траектория метода наискорейшего спуска в случае эллиптических линий уровня. Видно, что в этой ситуации за один шаг минимум достигается только из точек, расположенных на осях эллипсов. Из любой другой точки спуск будет происходить по ломаной, каждое звено которой ортогонально к соседним звеньям, а длина звеньев убывает. Легко показать что для точного достижения минимума потребуется бесконечное число шагов метода градиентного спуска. Этот эффект получил название овражного, а методы оптимизации, позволяющие бороться с этим эффектом – антиовражных.

7.3.3.2.   kParTan

Одним из простейших антиовражных методов [48, 104, 183] является метод kParTan. Идея метода состоит в том, чтобы запомнить начальную точку, затем выполнить k шагов оптимизации по методу наискорейшего спуска, затем сделать шаг оптимизации по направлению из начальной точки в конечную. Описание метода приведено на рис 7. На рис 6в приведен один шаг оптимизации по методу 2ParTan. Видно, что после шага вдоль направления из первой точки в третью траектория спуска привела в минимум. К сожалению, это верно только для двумерного случая. В многомерном случае направление kParTan не ведет прямо в точку минимума, но спуск в этом направлении, как правило, приводит в окрестность минимума меньшего радиуса, чем при еще одном шаге метода наискорейшего спуска (см. рис. 6б). Кроме того, следует отметить, что для выполнения третьего шага не потребовалось вычислять градиент, что экономит время при численной оптимизации.

7.3.3.3.   Квазиньютоновские методы

Существует большое семейство квазиньютоновских методов [48], позволяющих на каждом шаге проводить минимизацию в направлении минимума квадратичной формы. Идея этих методов состоит в том, что функция оценки приближается квадратичной формой. Зная квадратичную форму, можно вычислить ее минимум и проводить оптимизацию шага в направлении этого минимума. Одним из наиболее часто используемых методов из семейства одношаговых квазиньютоновских методов является BFGS метод. Этот метод хорошо зарекомендовал себя при обучении нейронных сетей (см. [34]). Подробно ознакомиться с методом BFGS и другими квазиньютоновскими методами можно в работе [48].

7.4.               Запросы к компоненту учитель

Компонент учитель одновременно работает только с одним учителем. Запросы к компоненту учитель можно разбить на следующие группы.

1.     Обучение сети.

2.     Чтение/запись учителя.

3.     Инициация редактора учителя.

4.     Работа с параметрами учителя.

7.4.1.                       Обучение сети

К данной группе относятся три запроса – обучить сеть (InstructNet), провести N шагов обучения (NInstructSteps) и прервать обучение (CloseInstruction).

7.4.1.1.   Обучить сеть (InstructNet)

Описание запроса:

Pascal:

Function InstructNet : Logic;

C:

Logic InstructNet()

Аргументов нет.

Назначение – производит обучение сети.

Описание исполнения.

1.     Если Error <> 0, то выполнение запроса прекращается.

2.     Если в момент получения запроса учитель не загружен, то возникает ошибка 601 – неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3.     Выполняется главная процедура загруженного учителя.

4.     Если во время выполнения запроса возникает ошибка, а значение переменной Error равно нулю, то генерируется внутренняя ошибка 605 – ошибка исполнения учителя, управление передается обработчику ошибок, а обработка запроса прекращается.

5.     Если во время выполнения запроса возникает ошибка, а значение переменной Error не равно нулю, то обработка запроса прекращается.

7.4.1.2.   Провести N шагов обучения (NInstructSteps)

Описание запроса:

Pascal:

Function NInstructNet( N : Integer ) : Logic;

C:

Logic NInstructNet(Integer N)

Описание аргумента:

N – число выполнений блока одного шага обучения сети.

Назначение – производит обучение сети.

Описание исполнения.

1.     Если Error <> 0, то выполнение запроса прекращается.

2.     Если в момент получения запроса учитель не загружен, то возникает ошибка 601 – неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3.     Выполняется блок инициации главной процедуры загруженного учителя, N раз выполняется блок одного шага обучения, выполняется блок завершения обучения.

4.     Если во время выполнения запроса возникает ошибка, а значение переменной Error равно нулю, то генерируется внутренняя ошибка 605 – ошибка исполнения учителя, управление передается обработчику ошибок, а обработка запроса прекращается.

5.     Если во время выполнения запроса возникает ошибка, а значение переменной Error не равно нулю, то обработка запроса прекращается.

7.4.1.3.   Прервать обучение (CloseInstruction)

Описание запроса:

Pascal:

Function CloseInstruction: Logic;

C:

Logic CloseInstruction()

Аргументов нет.

Назначение – прерывает обучение сети.

Описание исполнения.

1.     Если Error <> 0, то выполнение запроса прекращается.

2.     Если в момент получения запроса учитель не загружен, то возникает ошибка 601 – неверное имя компонента, управление передается обработчику ошибок, а обработка запроса прекращается.

3.     Если в момент получения запроса не выполняется ни один из запросов обучить сеть (InstructNet) или провести N шагов обучения (NInstructSteps), то возникает ошибка 606 – неверное использование запроса на прерывание обучения, управление передается обработчику ошибок, а обработка запроса прекращается.

4.     Завершается выполнение текущего шага обучения сети.

5.     Выполняется блок завершения обучения сети.

6.     Если во время выполнения запроса возникает ошибка, а значение переменной Error равно нулю, то генерируется внутренняя ошибка 605 – ошибка исполнения учителя, управление передается обработчику ошибок, а обработка запроса прекращается.

7.     Если во время выполнения запроса возникает ошибка, а значение переменной Error не равно нулю, то обработка запроса прекращается.

7.4.2.                       Чтение/запись учителя

В данном разделе описаны запросы, позволяющие загрузить учителя с диска или из памяти, выгрузить учителя и сохранить текущего учителя на диске или в памяти.

7.4.2.1.   Прочитать учителя (inAdd)

Описание запроса:

Pascal:

Function inAdd( CompName : PString ) : Logic;

C:

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.