Неградиентные методы обучения, Метод случайной стрельбы - Функциональные модели универсального нейрокомпьютера

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

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

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

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

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

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

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

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

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

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

О1=О2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Число_Смен_Радиуса=1

Радиус=1/ Число_Смен_Радиуса

Попытка=0

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

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

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

Модификация_вектора В2, 1, Радиус

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

Попытка=Попытка+1

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

Если Попытка<=Число_попыток то
Переход к шагу 8

Переход к шагу 18

О1=О2

Переход к шагу 6

Число_Смен_Радиуса= Число_Смен_Радиуса+1

Радиус=1/ Число_Смен_Радиуса

Если радиус>= Минимальный_радиус
То переход к шагу 6

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

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

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

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

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

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

Отмечен ряд случаев, когда метод случайной стрельбы с уменьшением радиуса работает быстрее градиентных методов, но обычно это не так.

Похожие статьи




Неградиентные методы обучения, Метод случайной стрельбы - Функциональные модели универсального нейрокомпьютера

Предыдущая | Следующая