Учебное пособие по курсу «Нейроинформатика»
Шрифт:
При описании методов используется набор макросов, приведенный в табл. 2. В табл. 2 дано пояснение выполняемых макросами действий. Все макрокоманды могут оперировать с данными как пространства параметров, так и пространства входных сигналов сети. В первой части главы полагается, что объект обучения установлен заранее. В макросах используются понятия и аргументы, приведенные в табл. 1. Список макрокоманд приведен в табл. 2.
Таблица 1. Понятия и аргументы макрокоманд, используемых при описании учителя
Название | Смысл |
---|---|
Точка | Точка
|
Вектор | Вектор в пространстве параметров или входных сигналов. Аналогичен точке. |
Вектор_минимумов | Вектор минимальных значений параметров или входных сигналов. |
Вектор_максимумов | Вектор максимальных значений параметров или входных сигналов. |
Указатель_на_вектор | Адрес вектора. Используется для передачи векторов в макрокоманды. |
Пустой_указатель | Указатель на отсутствующий вектор. |
При описании методов обучения все аргументы имеют тип, определяемый типом аргумента макрокоманды. Если в описании макрокоманды в табл. 2 тип аргумента не соответствует ни одному из типов, приведенных в табл. 1, то эти аргументы имеют числовой тип.
Таблица 2. Список макрокоманд, используемых для описания учителя
Название | Аргументы (типы) | Выполняемые действия |
---|---|---|
Модификация_вектора | Указатель_на_вектор Старый_Шаг Новый_Шаг | Генерирует запрос на модификацию вектора (см. раздел «Провести обучение (Modify)»). |
Вычислить_градиент | Вычисляет градиент функции оценки. | |
Установить_параметры | Указатель_на_вектор | Скопировать вектор, указанный в аргументе, в текущий вектор. |
Создать_вектор | Указатель_на_вектор | Создает экземпляр вектора с неопределенными значениями. Адрес вектора помещается в аргумент. |
Освободить_вектор | Указатель_на_вектор | Освобождает память занятую вектором, расположенным по адресу Указатель_на_вектор. |
Случайный_вектор | Указатель_на_вектор | В векторе, на который указывает Указатель_на_вектор, генерируется вектор, каждая из координат которого является случайной величиной, равномерно распределенной на интервале между значениями соответствующих координат векторов Вектор_минимумов и Вектор_максимумов. |
Оптимизация_шага | Указатель_на_вектор Начальный_Шаг | Производит подбор оптимального шага (см. рис. 3). |
Сохранить_вектор | Указатель_на_вектор | Скопировать текущий вектор в вектор, указанный в аргументе. |
Вычислить_оценку | Оценка | Вычисляет оценку текущего вектора. Вычисленную величину
|
Неградиентные методы обучения
Среди неградиентных методов рассмотрим следующие методы, каждый из которых является представителем целого семейства методов оптимизации:
1. Метод случайной стрельбы (представитель семейства методов Монте-Карло).
2. Метод покоординатного спуска (псевдоградиентный метод).
3. Метод случайного поиска (псевдоградиентный метод).
4. Метод Нелдера-Мида.
Рис. 1. Простейший алгоритм метода случайной стрельбы
Идея метода случайной стрельбы состоит в генерации большой последовательности случайных точек и вычисления оценки в каждой из них. При достаточной длине последовательности минимум будет найден. Запись этой процедуры на макроязыке приведена на рис. 1
Остановка данной процедуры производится по команде пользователя или при выполнении условия, что О1 стало меньше некоторой заданной величины. Существует огромное разнообразие модификаций этого метода. Наиболее простой является метод случайной стрельбы с уменьшением радиуса. Пример процедуры, реализующей этот метод, приведен на рис. 2. В этом методе есть два параметра, задаваемых пользователем:
Число_попыток — число неудачных пробных генераций вектора при одном радиусе.
Минимальный_радиус — минимальное значение радиуса, при котором продолжает работать алгоритм.
Идея этого метода состоит в следующем. Зададимся начальным состоянием вектора параметров. Новый вектор параметров будем искать как сумму начального и случайного, умноженного на радиус, векторов. Если после Число_попыток случайных генераций не произошло уменьшения оценки, то уменьшаем радиус. Если произошло уменьшение оценки, то полученный вектор объявляем начальным и продолжаем процедуру с тем же шагом. Важно, чтобы последовательность уменьшающихся радиусов образовывала расходящийся ряд. Примером такой последовательности может служить использованный в примере на рис. 2 ряд 1/n.