В процессе проектирования архитектуры нейронной сети перед разработчиком неизбежно встает вопрос выбора функций активации для скрытых и выходных слоев. В рамках обучающего курса от DeepLearning.AI Эндрю Ын (Andrew Ng) подробно разбирает, почему классическая сигмоида постепенно уходит в прошлое и какие альтернативы позволяют значительно ускорить обучение моделей.
🔄 От Сигмоиды к гиперболическому тангенсу 0:00
Долгое время стандартным выбором в нейронных сетях была сигмоидальная функция активации (sigmoid), которая математически выражается как $a = 1 / (1 + e^{-z})$ . Она переводит входные значения в диапазон от 0 до 1. Однако, по мнению Эндрю Ына, на сегодняшний день существуют варианты, которые почти всегда работают лучше .
Одним из таких вариантов является функция гиперболического тангенса (tanh). Математически она представляет собой смещенную и масштабированную версию сигмоиды, принимающую значения в диапазоне от -1 до +1 .
Ключевые преимущества tanh, выделяемые Эндрю Ыном:
- Центрирование данных: Среднее значение активаций в скрытом слое оказывается ближе к нулю .
- Ускорение оптимизации: Использование tanh дает эффект, схожий с центрированием данных при предобработке, что облегчает процесс обучения для последующих слоев .
Эндрю Ын утверждает, что tanh практически во всех случаях превосходит сигмоиду для скрытых слоев . Единственным исключением остается выходной слой в задачах бинарной классификации: если целевая переменная $y$ принимает значения 0 или 1, логично использовать сигмоиду, чтобы получить предсказание в том же диапазоне .
📉 Проблема затухающих градиентов 4:13
Несмотря на преимущества, и сигмоида, и tanh обладают общим серьезным недостатком. Когда значение $z$ становится очень большим или очень маленьким, наклон функции (производная) становится крайне малым, практически стремясь к нулю .
Это явление критически замедляет работу алгоритма градиентного спуска. Поскольку градиент в этих областях близок к нулю, обновление весов происходит крайне медленно, что увеличивает время обучения сети.
⚡ ReLU: современный стандарт индустрии 4:41
Чтобы решить проблему замедления обучения, в машинном обучении стала крайне популярной функция ReLU (Rectified Linear Unit) — выпрямленная линейная единица . Её формула предельно проста: $a = max(0, z)$.
Технические особенности ReLU:
- Производная: Она равна 1, когда $z$ положительно, и 0, когда $z$ отрицательно .
- Скорость обучения: По наблюдениям Эндрю Ына, нейросети с ReLU часто обучаются гораздо быстрее, чем с tanh или сигмоидой .
- Дифференцируемость: В точке $z=0$ производная математически не определена, но при программной реализации это не создает проблем — можно назначить производную в этой точке равной 0 или 1 .
Эндрю Ын отмечает, что ReLU стала выбором по умолчанию для скрытых слоев в современных архитектурах . Если разработчик не уверен, какую функцию использовать, лектор рекомендует начинать именно с ReLU.
🧪 Leaky ReLU и эмпирический подход 6:28
Существует также модифицированная версия — Leaky ReLU («протекающая» ReLU). В отличие от стандартной ReLU, она не обнуляется при отрицательных значениях $z$, а имеет небольшой наклон (например, $0.01 \times z$) .
По словам Эндрю Ына, Leaky ReLU обычно показывает результаты не хуже, а иногда и лучше стандартной ReLU, хотя на практике используется реже . Некоторые исследователи идут дальше и делают коэффициент наклона (0.01) обучаемым параметром, но, как утверждает автор, такая практика встречается довольно редко .
Основные рекомендации Эндрю Ына по выбору функций активации:
- Выходной слой: Сигмоида — для бинарной классификации .
- Скрытые слои: ReLU — как наиболее эффективный стандартный выбор .
- Эксперименты: Tanh и Leaky ReLU — если ReLU не дает желаемого результата .
В глубоком обучении часто отсутствуют универсальные правила, подходящие для любой задачи. Эндрю Ын подчеркивает, что из-за особенностей конкретных данных (идиосинкразии приложений) бывает трудно заранее предугадать идеальную архитектуру . Единственный надежный способ — это итеративный процесс: попробовать разные функции активации и оценить их эффективность на валидационной выборке (hold-out validation set) .