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

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

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

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

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

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

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

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

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

11
задан starbeamrainbowlabs 10 April 2018 в 13:15
поделиться