Обратное распространение ошибки — наиболее распространенный алгоритм обучения нейронных сетей. Он делает возможным градиентный спуск для многослойных нейронных сетей. Многие библиотеки кода для машинного обучения (например, Keras ) обрабатывают обратное распространение ошибки автоматически, поэтому вам не нужно выполнять какие-либо вычисления самостоятельно. Посмотрите следующее видео, чтобы получить общее представление о том, как работает обратное распространение ошибки:
Рекомендации по обучению нейронных сетей.
В этом разделе рассматриваются случаи сбоев обратного распространения ошибки и наиболее распространенный способ регуляризации нейронной сети.
Исчезающие градиенты
Градиенты для нижних слоев нейронной сети (тех, что ближе к входному слою) могут стать очень малыми. В глубоких сетях (сетях с более чем одним скрытым слоем) вычисление этих градиентов может включать в себя умножение множества малых членов.
Когда значения градиентов в нижних слоях приближаются к 0, говорят, что градиенты «исчезают». Слои с исчезающими градиентами обучаются очень медленно или не обучаются вовсе.
Функция активации ReLU может помочь предотвратить исчезновение градиентов.
Взрывающиеся градиенты
Если веса в сети очень велики, то градиенты для нижних слоев представляют собой произведения множества больших членов. В этом случае могут возникать взрывные градиенты: градиенты, которые становятся слишком большими, чтобы сходиться.
Пакетная нормализация может помочь предотвратить взрывные градиенты, как и снижение скорости обучения.
Неработающие блоки ReLU
Когда взвешенная сумма для блока ReLU падает ниже 0, блок ReLU может «застрять». Он выдает 0, ничего не внося в выход сети, и градиенты больше не могут проходить через него во время обратного распространения ошибки. При отключенном источнике градиентов входной сигнал для ReLU может никогда не измениться в достаточной степени, чтобы вернуть взвешенную сумму выше 0.
Снижение скорости обучения может помочь предотвратить выход из строя нейронов ReLU.
Регуляризация отсеивания
Ещё одна форма регуляризации, называемая дропаут-регуляризацией , полезна для нейронных сетей. Она работает за счёт случайного «удаления» активаций нейронов в сети на один шаг градиента. Чем больше удаленных активаций, тем сильнее регуляризация:
- 0,0 = Без регуляризации методом Dropout.
- 1.0 = Удалить все узлы. Модель ничего не обучается.
- Значения от 0,0 до 1,0 = Более полезны.