Нужен хороший способ выбрать и скорректировать «скорость обучения» - PullRequest
11 голосов
/ 05 июня 2009

На рисунке ниже вы можете увидеть алгоритм обучения, пытающийся научиться производить желаемый результат (красная линия). Алгоритм обучения аналогичен нейронной сети с обратным распространением ошибок.

«Скорость обучения» - это значение, которое контролирует размер корректировок, сделанных в процессе обучения. Если скорость обучения слишком высока, то алгоритм обучается быстро, но его прогнозы во время процесса обучения сильно колеблются (зеленая линия - скорость обучения 0,001), если она ниже, тогда прогнозы скачут меньше, но алгоритм требует намного дольше учиться (синяя линия - скорость обучения 0,0001).

Черные линии - скользящие средние.

Как я могу адаптировать скорость обучения так, чтобы она сначала сходилась близко к желаемому результату, но затем замедлялась, чтобы она могла отточить правильное значение?

график обучения http://img.skitch.com/20090605-pqpkse1yr1e5r869y6eehmpsym.png

Ответы [ 4 ]

18 голосов
/ 05 июня 2009

Иногда процесс снижения скорости обучения с течением времени называют «отжигом» скорости обучения.

Существует много возможных «графиков отжига», например, когда скорость обучения является линейной функцией времени:

u(t) = c / t

... где c - некоторая константа. Или есть расписание «поиск-затем-сходиться»:

u(t) = A * (1 + (c/A)*(t/T)) / 
           (1 + (c/A)*(t/T) + T*(t^2)/(T^2))

... который удерживает скорость обучения на уровне A, когда t мала по сравнению с T (фаза "поиска"), и затем снижает скорость обучения, когда t велика по сравнению с T (фаза "сходится"). Конечно, для обоих этих подходов вам нужно настроить параметры (например, c, A или T), но, надеюсь, введение их поможет больше, чем повредит. :)

Некоторые ссылки:

  • Графики скорости обучения для более быстрого поиска градиента стохастика , Кристиан Даркен, Джозеф Чанг и Джон Муди, Нейронные сети для обработки сигналов 2 - Материалы семинара IEEE 1992 года, IEEE Press, Piscataway, NJ, 1992
  • Метод стохастической аппроксимации , Герберт Роббинс и Саттон Монро, Анналы математической статистики 22, № 3 (сентябрь 1951 г.), с. 400–407.
  • Нейронные сети и обучающие машины (в частности, раздел 3.13), Саймон С. Хайкин, 3-е издание (2008), ISBN 0131471392, 9780131471399
  • Вот страница , в которой кратко обсуждается адаптация скорости обучения .
7 голосов
/ 05 июня 2009

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

Самый простой способ - уменьшить скорость обучения линейно с количеством итераций. Каждые 25 (или любое другое произвольное число) вычитайте часть ставки, пока она не достигнет хорошего минимума.

Вы также можете сделать это нелинейно с количеством итераций. Например, умножьте скорость обучения на 0,99 каждую итерацию, снова, пока она не достигнет хорошего минимума.

Или вы можете стать более хитрым. Используйте результаты сети, чтобы определить следующую скорость обучения сети. Чем лучше он работает по метрике фитнеса, тем меньше скорость обучения. Таким образом, он будет быстро сходиться столько, сколько нужно, а затем медленно. Это, вероятно, лучший способ, но он более затратный, чем простой подход с числом итераций.

4 голосов
/ 10 июля 2009

Рассматривали ли вы другие методы обучения, которые не зависят от скорости обучения?

Существуют методы обучения, которые обходят необходимость в скорости обучения, которая вычисляет матрицу Гессиана (например, Левенберг-Марквардт), в то время как я сталкивался с алгоритмами прямого поиска (например, разработанными Норио Бабой).

1 голос
/ 05 июня 2009

Возможно, код в цикле отрицательной обратной связи в алгоритм обучения, привязанный к скорости. Значения скорости обучения, которые начинают качаться слишком широко, попадают в замедляющую часть петли обратной связи, заставляя ее качаться в другую сторону, и в этот момент вступает в силу противодействующая сила замедления.

Вектор состояния в конечном итоге придет к равновесию, которое устанавливает баланс между «слишком много» и «слишком мало». Сколько систем в биологии работает

...