Подтвердить что ты не робот

Нужен хороший способ выбрать и настроить "курс обучения",

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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
  • Вот страница в которой кратко обсуждается адаптация скорости обучения.

Ответ 2

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

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

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

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

Ответ 3

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

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

Ответ 4

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

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