Скорость обучения нейронной сети и пакетное обновление веса

Я запрограммировал нейронную сеть на Java и сейчас работаю над алгоритмом обратного распространения.

Я читал, что пакетное обновление весов приведет к более стабильному поиску градиента вместо онлайн-обновления веса.

В качестве теста я создал функцию временного ряда из 100 точек, например x = [0..99] и y = f(x). Я создал нейронную сеть с одним входом и одним выходом и 2 скрытыми слоями с 10 нейронами для тестирования. Я борюсь со скоростью обучения алгоритма обратного распространения при решении этой проблемы.

У меня есть 100 входных точек, поэтому, когда я вычисляю изменение веса dw_{ij} для каждого узла, это фактически сумма:

dw_{ij} = dw_{ij,1} + dw_{ij,2} + ... + dw_{ij,p}

где p = 100 в данном случае.

Теперь обновления веса стали действительно огромными, и поэтому моя ошибка E отскакивает так, что трудно найти минимум. Единственный способ добиться правильного поведения - это установить скорость обучения y примерно на 0.7 / p^2.

Есть ли какое-то общее правило для установки скорости обучения в зависимости от количества выборок?


person avanwieringen    schedule 10.07.2012    source источник


Ответы (2)


http://francky.me/faqai.php#otherFAQs:

Тема: Какую скорость обучения следует использовать для обратного распространения информации?

В стандартном обратном распространении слишком низкая скорость обучения заставляет сеть учиться очень медленно. Слишком высокая скорость обучения приводит к расхождению весов и целевой функции, поэтому обучение не происходит вообще. Если целевая функция является квадратичной, как в линейных моделях, хорошие темпы обучения можно вычислить с помощью матрицы Гессе (Bertsekas and Tsitsiklis, 1996). Если целевая функция имеет много локальных и глобальных оптимумов, как в типичных сетевых сетях прямого распространения со скрытыми модулями, оптимальная скорость обучения часто резко меняется в процессе обучения, поскольку гессиан также резко меняется. Попытка обучить сетевую сеть с постоянной скоростью обучения - обычно утомительный процесс, требующий многих проб и ошибок. Для некоторых примеров того, как выбор скорости обучения и импульса взаимодействует с числовым условием в некоторых очень простых сетях, см. ftp://ftp.sas.com/pub/neural/illcond/illcond.html

При пакетном обучении нет необходимости использовать постоянную скорость обучения. На самом деле, нет никаких причин для использования стандартного обратного распространения, поскольку существуют гораздо более эффективные, надежные и удобные алгоритмы пакетного обучения (см. Quickprop и RPROP в разделе «Что такое обратное распространение?» И многочисленные алгоритмы обучения, упомянутые в разделе «Что такое сопряженное градиенты, Левенберга-Марквардта и т. д.? »).

Было изобретено много других вариантов обратного распространения звука. Большинство из них страдают от того же теоретического недостатка, что и стандартное обратное распространение: величина изменения весов (размер шага) НЕ должна быть функцией величины градиента. В некоторых областях весового пространства градиент небольшой, и вам нужен большой размер шага; это происходит, когда вы инициализируете сеть с небольшими случайными весами. В других областях весового пространства градиент небольшой, и вам нужен небольшой размер шага; это происходит, когда вы приближаетесь к локальному минимуму. Точно так же большой градиент может потребовать либо небольшого шага, либо большого шага. Многие алгоритмы пытаются адаптировать скорость обучения, но любой алгоритм, который умножает скорость обучения на градиент для вычисления изменения весов, вероятно, приведет к неустойчивому поведению при резком изменении градиента. Большим преимуществом Quickprop и RPROP является то, что они не имеют этой чрезмерной зависимости от величины градиента. Обычные алгоритмы оптимизации используют не только градиент, но также производные второго порядка или линейный поиск (или некоторую их комбинацию) для получения хорошего размера шага.

При инкрементальном обучении гораздо сложнее придумать алгоритм, который автоматически регулирует скорость обучения во время обучения. В литературе НН появлялись различные предложения, но большинство из них не работает. Проблемы с некоторыми из этих предложений проиллюстрированы Даркеном и Муди (1992), которые, к сожалению, не предлагают решения. Некоторые многообещающие результаты предоставлены ЛеКаном, Симардом и Перлмуттером (1993) и Орром и Лином (1997), которые адаптируют импульс, а не скорость обучения. Существует также вариант стохастической аппроксимации, называемый «повторное усреднение» или «усреднение по Поляку» (Kushner and Yin, 1997), который теоретически обеспечивает оптимальные скорости сходимости путем сохранения скользящего среднего значений весов. У меня нет личного опыта использования этих методов; Если у вас есть какие-либо веские доказательства того, что эти или другие методы автоматической установки скорости обучения и / или импульса в инкрементальном обучении действительно работают в большом количестве приложений NN, сообщите об этом специалисту по сопровождению FAQ ([email protected]).

Ссылки:

  • Бертсекас Д. П. и Цициклис Дж. Н. (1996), Нейродинамическое программирование, Бельмонт, Массачусетс: Athena Scientific, ISBN 1-886529-10-8.
  • Даркен К. и Муди Дж. (1992), «На пути к более быстрому поиску стохастического градиента», в: Муди, Дж. Э., Хэнсон, С. Дж., И Липпманн, Р. П., ред.
  • Достижения в системах обработки нейронной информации 4, Сан-Матео, Калифорния: Издательство Morgan Kaufmann, стр. 1009-1016. Кушнер, Х.Дж., Инь, Г. (1997), Алгоритмы стохастической аппроксимации и их приложения, Нью-Йорк: Springer-Verlag. LeCun, Y., Simard, P.Y., и Pearlmetter, B. (1993), "Автоматическая максимизация скорости обучения путем онлайн-оценки собственных векторов Гессе", в Hanson, S.J., Cowan, J.D., and Giles,
  • C.L. (ред.), Достижения в системах обработки нейронной информации 5, Сан-Матео, Калифорния: Морган Кауфманн, стр. 156-163. Орр, Дж. и Лин, Т. (1997), «Использование информации о кривизне для быстрого стохастического поиска», в
  • Мозер М.К., Джордан М.И. и Петше Т. (ред.) Достижения в системах обработки нейронной информации 9, Кембридж, Массачусетс: The MIT Press, стр. 606-612.

Кредиты:

person Franck Dernoncourt    schedule 10.07.2012
comment
Спасибо за невероятно подробный ответ! Это мне очень поможет! - person avanwieringen; 11.07.2012

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

Более интересную информацию о пакетном обновлении и скорости обучения можно найти в этой статье Уилсона (2003).

person Sicco    schedule 10.07.2012