Вход/Регистрация
Учебное пособие по курсу «Нейроинформатика»
вернуться

Миркес Е. М.

Шрифт:
Оптимизация_шага Указатель_на_вектор Начальный_Шаг Производит подбор оптимального шага (см. рис. 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.

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

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

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

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

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

6. Попытка=0

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

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

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

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

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

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

13. Если 02<01 то переход к шагу 16

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

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

16. О1=О2

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

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

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

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

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

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

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

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

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

Метод покоординатного спуска

Идея этого метода состоит в том, что если в задаче сложно или долго вычислять градиент, то можно построить вектор, обладающий приблизительно теми же свойствами, что и градиент следующим путем. Даем малое положительное приращение первой координате вектора. Если оценка при этом увеличилась, то пробуем отрицательное приращение. Далее так же поступаем со всеми остальными координатами. В результате получаем вектор, в направлении которого оценка убывает. Для вычисления такого вектора потребуется, как минимум, столько вычислений функции оценки, сколько координат у вектора. В худшем случае потребуется в два раза большее число вычислений функции оценки. Время же необходимое для вычисления градиента в случае использования двойственных сетей можно оценить как 2–3 вычисления функции оценки. Таким образом, учитывая способность двойственных сетей быстро вычислять градиент, можно сделать вывод о нецелесообразности применения метода покоординатного спуска в обучении нейронных сетей.

  • Читать дальше
  • 1
  • ...
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: