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

Хотя в этой статье я постараюсь дать вам краткое представление об использовании Learning Rate Decay и его различных методов для оптимизации и обобщения ваших нейронных сетей.

Снижение скорости обучения

Спад скорости обучения - это метод обучения современных нейронных сетей. Он начинает обучение сети с большой скоростью обучения, а затем медленно сокращает / ослабляет ее до тех пор, пока не будут достигнуты локальные минимумы. Опыт показывает, что это помогает как в оптимизации, так и в обобщении.

Как это работает?

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

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

Снижение скорости обучения (распространенный метод):

«α = (1 / (1+ decayRate × epochNumber)) * α

1 эпоха: 1 проход данных

α: скорость обучения (текущая итерация)

α0: Начальная скорость обучения

decayRate: гиперпараметр для метода

Для большей интуиции возьмем грубый пример описанного выше метода:

Предположим, что у нас α0 = 0,2 и скорость распада = 1, тогда для каждой эпохи мы можем исследовать падение скорости обучения α как:

Эпоха 1: альфа 0,1

Эпоха 2: альфа 0,067

Эпоха 3: альфа 0,05

Эпоха 4: альфа 0,04

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

Другие методы

  1. Экспоненциальный спад:

«Α = (decayRate ^ (epochNumber)) * α0»

Эта функция применяет функцию экспоненциального затухания к заданной начальной скорости обучения, так что скорость обучения снижается со временем экспоненциально.

DecayRate этого метода всегда меньше 1, среди практикующих чаще всего используется 0,95.

2. Дискретная лестница:

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

3. На основе номера эпохи:

«Α = (k / √epochNumber) * α0»

В этом методе мы берем некоторую константу «k» и делим ее на квадратный корень из номера эпохи.

4. На основе номера мини-партии:

“ α = ( k/ √t)* α0 ”

В этом методе мы берем некоторую константу «k» и делим ее на квадратный корень из числа мини-партии. (Этот метод используется только для мини-пакетного градиентного спуска.)

5. Ручное затухание:

В этом методе практикующие вручную проверяют производительность алгоритма и вручную снижают скорость обучения день за днем ​​или час за часом и т. Д.

Вывод

Снижение скорости обучения - это продвинутый метод оптимизации и обобщения глубоких нейронных сетей, и его методы используются во всей области глубокого обучения, некоторые инфраструктуры API глубокого обучения, такие как KERAS, имеют встроенную поддержку этих методов. Надеюсь, эта статья окажется для вас полезной.

Спасибо за чтение 🙂

Авторы: Эндрю Нг

Ссылка: Улучшение глубоких нейронных сетей - настройка гиперпараметров