Обучение нейронных сетей: лучшие практики

В этом разделе объясняются случаи сбоя обратного распространения ошибки и наиболее распространенный способ регуляризации нейронной сети.

Случаи сбоя

Существует несколько распространенных причин, по которым обратное распространение ошибки может пойти не так.

Исчезающие градиенты

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

Когда градиенты для нижних слоев исчезают в направлении 0, эти слои обучаются очень медленно или не обучаются вообще.

Функция активации ReLU может помочь предотвратить исчезновение градиентов.

Взрывные градиенты

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

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

Мертвые юниты ReLU

Как только взвешенная сумма для единицы ReLU упадет ниже 0, единица ReLU может зависнуть. Он выводит 0 активации, ничего не внося в выходные данные сети, и градиенты больше не могут проходить через него во время обратного распространения ошибки. Если источник градиентов отключен, входные данные ReLU могут никогда не измениться настолько, чтобы вернуть взвешенную сумму обратно выше 0.

Снижение скорости обучения может помочь предотвратить смерть модулей ReLU.

Регуляризация отсева

Еще одна форма регуляризации, называемая Dropout , полезна для нейронных сетей. Он работает путем случайного «выпадения» активаций юнитов в сети для одного шага градиента. Чем больше вы выбываете, тем сильнее регуляризация:

  • 0,0 = нет регуляризации отсева.
  • 1.0 = Отбросить все. Модель ничему не учится.
  • Значения от 0,0 до 1,0 = более полезно.