Учебное пособие по курсу «Нейроинформатика» - страница 55

Шрифт
Интервал

стр.


Таблица 1. Понятия и аргументы макрокоманд, используемых при описании учителя

НазваниеСмысл
ТочкаТочка в пространстве параметров или входных сигналов. Аналогична вектору.
ВекторВектор в пространстве параметров или входных сигналов. Аналогичен точке.
Вектор_минимумовВектор минимальных значений параметров или входных сигналов.
Вектор_максимумовВектор максимальных значений параметров или входных сигналов.
Указатель_на_векторАдрес вектора. Используется для передачи векторов в макрокоманды.
Пустой_указательУказатель на отсутствующий вектор.

При описании методов обучения все аргументы имеют тип, определяемый типом аргумента макрокоманды. Если в описании макрокоманды в табл. 2 тип аргумента не соответствует ни одному из типов, приведенных в табл. 1, то эти аргументы имеют числовой тип.


Таблица 2. Список макрокоманд, используемых для описания учителя

НазваниеАргументы (типы)Выполняемые действия
Модификация_вектораУказатель_на_вектор Старый_Шаг Новый_ШагГенерирует запрос на модификацию вектора (см. раздел «Провести обучение (Modify)»).
Вычислить_градиентВычисляет градиент функции оценки.
Установить_параметрыУказатель_на_векторСкопировать вектор, указанный в аргументе, в текущий вектор.
Создать_векторУказатель_на_векторСоздает экземпляр вектора с неопределенными значениями. Адрес вектора помещается в аргумент.
Освободить_векторУказатель_на_векторОсвобождает память занятую вектором, расположенным по адресу Указатель_на_вектор.
Случайный_векторУказатель_на_векторВ векторе, на который указывает Указатель_на_вектор, генерируется вектор, каждая из координат которого является случайной величиной, равномерно распределенной на интервале между значениями соответствующих координат векторов Вектор_минимумов и Вектор_максимумов.
Оптимизация_шагаУказатель_на_вектор Начальный_ШагПроизводит подбор оптимального шага (см. рис. 3).
Сохранить_векторУказатель_на_векторСкопировать текущий вектор в вектор, указанный в аргументе.
Вычислить_оценкуОценкаВычисляет оценку текущего вектора. Вычисленную величину складывает в аргумент Оценка.

Неградиентные методы обучения

Среди неградиентных методов рассмотрим следующие методы, каждый из которых является представителем целого семейства методов оптимизации:

1. Метод случайной стрельбы (представитель семейства методов Монте-Карло).

2. Метод покоординатного спуска (псевдоградиентный метод).

3. Метод случайного поиска (псевдоградиентный метод).

4. Метод Нелдера-Мида.

Метод случайной стрельбы

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

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

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

>4.  Сохранить_вктор В1

>5.  Установить_параметры В1

>6.  Случайный_вектор В2

>7.  Модификация_вектора В2, 0, 1

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

>9.  Если О2<О1 то переход к шагу 11

>10. Переход к шагу 5

>11. О1=О2

>12. Переход к шагу 4

>13. Установить_параметры В1

>14. Освободить_вектор В1

>15. Освободить_вектор В2

Рис. 1. Простейший алгоритм метода случайной стрельбы


Идея метода случайной стрельбы состоит в генерации большой последовательности случайных точек и вычисления оценки в каждой из них. При достаточной длине последовательности минимум будет найден. Запись этой процедуры на макроязыке приведена на рис. 1

Остановка данной процедуры производится по команде пользователя или при выполнении условия, что О1 стало меньше некоторой заданной величины. Существует огромное разнообразие модификаций этого метода. Наиболее простой является метод случайной стрельбы с уменьшением радиуса. Пример процедуры, реализующей этот метод, приведен на рис. 2. В этом методе есть два параметра, задаваемых пользователем:

Число_попыток — число неудачных пробных генераций вектора при одном радиусе.

Минимальный_радиус — минимальное значение радиуса, при котором продолжает работать алгоритм.

Идея этого метода состоит в следующем. Зададимся начальным состоянием вектора параметров. Новый вектор параметров будем искать как сумму начального и случайного, умноженного на радиус, векторов. Если после Число_попыток случайных генераций не произошло уменьшения оценки, то уменьшаем радиус. Если произошло уменьшение оценки, то полученный вектор объявляем начальным и продолжаем процедуру с тем же шагом. Важно, чтобы последовательность уменьшающихся радиусов образовывала расходящийся ряд. Примером такой последовательности может служить использованный в примере на рис. 2 ряд 1/n.


стр.

Похожие книги