Прошлый урок показал, что глубина решает то, что не под силу одному слою. Но у порогового нейрона есть изъян, который мешает учить глубину: ступенька негладкая, и градиентный спуск об неё спотыкается. Сегодня мы заменим ступеньку гладкой кривой — и по дороге выясним, что без нелинейности глубина вообще бессмысленна, а неудачный выбор кривой губит обучение сетей.

Зачем вообще гнуть прямую

Начнём с вопроса, который легко проскочить: а нужна ли активация вообще? Пусть у нас два слоя без всякой нелинейности между ними — просто две линейные операции подряд. Первый слой превращает вход xx в W1xW_1 x, второй берёт результат и делает W2(W1x)W_2(W_1 x). Раскроем:

W2(W1x)=(W2W1)x=Wx,W=W2W1.W_2\,(W_1\,x) = (W_2 W_1)\,x = W\,x, \qquad W = W_2 W_1 .

Произведение двух матриц — снова матрица. Два линейных слоя схлопнулись в один; сколько бы линейных слоёв мы ни поставили друг за другом, всё это равно одному линейному преобразованию. Глубина без нелинейности — иллюзия: она не добавляет ни грамма выразительности. Именно нелинейная функция, вставленная между слоями, ломает это схлопывание и даёт глубине смысл — ту самую способность гнуть пространство из прошлого урока. Без неё многослойная сеть не сложнее одного нейрона.

Ступенька, о которую спотыкается спуск

Пороговый нейрон Мак-Каллока–Питтса выдаёт ступеньку: 00 слева от порога, 11 справа, резкий скачок посередине. Нелинейность безупречная — но приглядимся к её производной. Слева и справа от скачка функция постоянна, значит, её наклон равен нулю; ровно в точке скачка наклон бесконечен и не определён. Производная ступеньки — ноль почти всюду.

Для обучения это приговор. Градиентный спуск, к которому мы идём, двигает веса в сторону, подсказанную производной ошибки: «наклони чуть туда, где ошибка убывает». Но если производять активации всюду ноль, подсказки нет — как ни двинь вес, выход ступеньки не шелохнётся, пока не перевалит через порог, а там прыгнет разом. Плоскость без наклона не говорит, куда идти. Чтобы спуск заработал, ступеньку надо сгладить: чуть наклонить полки, скруглить скачок — так, чтобы у функции всюду был ненулевой, осмысленный наклон.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Слева жёсткая пороговая ступенька с нулевой производной по бокам и скачком в центре; справа сигмоида — плавная S-кривая, приближающая ступеньку, с ненулевым наклоном везде
Рис. 17.1. Ступенька и её сглаженные наследницы

Слева — пороговая ступенька: нелинейна, но её наклон нулевой по бокам и не определён в скачке, спуску не за что зацепиться. Справа — сигмоида, плавная S-образная наследница ступеньки: та же форма «переключателя», но всюду с ненулевым наклоном. Сглаживание превращает негладкий переключатель в обучаемую функцию.

Сигмоида: гладкий переключатель и вероятность

Самая известная гладкая замена ступеньки — сигмоида, или логистическая функция:

σ(z)=11+ez.\sigma(z)=\frac{1}{1+e^{-z}} .

Она плавно поднимается от 00 (при больших отрицательных zz) к 11 (при больших положительных), проходя через 12\tfrac12 в нуле, — та же S-форма переключателя, но без разрыва. Два её свойства драгоценны. Во-первых, выход лежит строго между 00 и 11, и его можно читать как вероятность: сигмоида превращает произвольный «счёт уверенности» z=wxz=w\cdot x в число «насколько модель уверена, что это класс 11». Ровно так работал логистический классификатор спама из урока о классификации: его сырые счёта проходили через сигмоиду и становились вероятностями «это спам».

Во-вторых, у сигмоиды на редкость удобная производная:

σ(z)=σ(z)(1σ(z)).\sigma'(z)=\sigma(z)\,\bigl(1-\sigma(z)\bigr).

Наклон выражается через саму функцию — не надо ничего пересчитывать. В нуле, где сигмоида круче всего, наклон равен σ(0)(1σ(0))=1212=14\sigma(0)(1-\sigma(0))= \tfrac12\cdot\tfrac12=\tfrac14. Это её максимальный наклон, и вот это число 14\tfrac14 ещё выйдет нам боком.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Сигмоида, отображающая ось счёта w·x в вероятность от 0 до 1; на оси отмечены реальные счёта спам-классификатора урока 07, ниже нуля тянутся к вероятности 0 (не спам), выше — к 1 (спам)
Рис. 17.2. Сигмоида превращает счёт в вероятность

Сигмоида отображает счёт z=wxz=w\cdot x (сколь уверенно сработали признаки) в вероятность от 00 до 11. Точки внизу — реальные счёта спам-классификатора из урока 07: отрицательные счёта сигмоида уводит к «не спам», положительные — к «спам», а околонулевые попадают в зону сомнения вокруг 12\tfrac12. Одна кривая связывает линейный счёт и вероятностный ответ.

tanh: та же кривая, но по центру

У сигмоиды есть неудобство: её выход всегда положителен, среднее не в нуле, и это чуть замедляет обучение следующего слоя. Лечит это близкая родственница — гиперболический тангенс:

tanh(z)=ezezez+ez=2σ(2z)1.\tanh(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} =2\,\sigma(2z)-1 .

Это та же S-кривая, растянутая на диапазон от 1-1 до 11 и симметричная относительно нуля. Её наклон в нуле равен 11 — вчетверо круче сигмоиды, и градиент сквозь неё проходит легче. Долгое время tanh\tanh был активацией по умолчанию в скрытых слоях, а сигмоиду оставляли для выхода, где нужна именно вероятность. Но у обеих S-кривых остаётся общая болезнь, и ради неё стоит присмотреться к наклонам внимательнее.

Затухающий градиент: почему глубокие сигмоиды не учились

Вот главный сюжет урока. Обучая многослойную сеть, ошибку проводят с выхода назад к ранним слоям, перемножая по дороге наклоны активаций — подробно этот механизм разберёт урок о backprop. Пока достаточно знать: чтобы поправить вес в слое, отстоящем от выхода на LL активаций, ошибку домножают на произведение LL их наклонов.

У сигмоиды наклон нигде не превышает 14\tfrac14. Значит, проходя через LL сигмоидных слоёв, сигнал ошибки умножается на число не большее

(14)L,(14)10106.\left(\tfrac14\right)^{L}, \qquad \left(\tfrac14\right)^{10}\approx 10^{-6}.

Через десяток слоёв поправка сжимается в миллион раз: ранние слои глубокой сигмоидной сети получают исчезающе слабый сигнал и почти не учатся. Это и есть проблема затухающего градиента — она годами держала нейросети мелкими. Чем глубже сеть, тем сильнее душит её собственная активация; сигмоида, спасшая нас от негладкой ступеньки, сама оказалась удавкой для глубины.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Логарифмический график: множитель градиента по числу слоёв; для сигмоиды кривая падает как одна четвёртая в степени L, к десятому слою около миллионной доли; для ReLU остаётся на единице
Рис. 17.3. Градиент сквозь слои: сигмоида гаснет, ReLU держится

Во сколько раз усыхает сигнал ошибки, пройдя LL слоёв. У сигмоиды множитель падает как (14)L(\tfrac14)^L — к десятому слою около миллионной доли, ранние слои не учатся. У ReLU наклон на активной стороне равен 11, произведение остаётся порядка единицы, и градиент доходит до первых слоёв живым. Один график объясняет, почему глубокое обучение взлетело только со сменой активации.

:::

ReLU: почти линейная, но всё меняет

Спасение оказалось обезоруживающе простым. Взять функцию

ReLU(z)=max(0,z):\operatorname{ReLU}(z)=\max(0,\,z):

отрицательные значения обнулить, положительные пропустить как есть. Никакой экспоненты, никакой S-кривой — просто сломанная в нуле прямая. Её наклон тоже элементарен: 00 для отрицательных zz и ровно 11 для положительных. И именно эта единица всё решает: проходя через слой активных (z>0z>0) ReLU-нейронов, градиент домножается на 11 — не гаснет. Стек ReLU-слоёв проводит сигнал ошибки к первым слоям без затухания, и глубокие сети наконец стали обучаемыми.

ReLU(z)={0,z<0,1,z>0.\operatorname{ReLU}'(z)= \begin{cases} 0,& z<0,\\ 1,& z>0. \end{cases}

ReLU нелинейна (излом в нуле не даёт слоям схлопнуться), почти гладка (наклон постоянен на каждой половине), считается за одно сравнение и не душит градиент. Когда в 2012 году глубокая сеть с ReLU выиграла соревнование по распознаванию изображений с большим отрывом, активация по умолчанию сменилась почти повсеместно: сигмоиду и tanh\tanh оставили там, где нужен именно их диапазон, а скрытые слои перешли на ReLU.

Рисунок шире экрана — проведите по немуОткрыть целиком ↗
Четыре пары графиков: пороговая ступенька, сигмоида, гиперболический тангенс и ReLU, у каждой сверху сама функция, снизу её производная; у ступеньки производная всюду ноль, у сигмоиды колокол с максимумом одна четвёртая, у tanh колокол с максимумом один, у ReLU ступенька из нуля и единицы
Рис. 17.4. Четыре активации и их наклоны

Четыре активации (верхний ряд) и их наклоны (нижний). Ступенька: наклон всюду ноль — необучаема. Сигмоида и tanh\tanh: наклон-колокол, максимум 14\tfrac14 и 11, по краям гаснет — насыщение и затухание. ReLU: наклон 00 или 11, на активной стороне градиент проходит без потерь. Эволюция активаций — это история борьбы за то, чтобы наклон не обнулялся.

Тень ReLU: мёртвые нейроны

Совершенных активаций не бывает, и у ReLU своя болезнь. Если веса нейрона сложились так, что на всех примерах его вход zz отрицателен, то выход всегда 00, а наклон всегда 00 — градиент до него не доходит никогда, и вес больше не меняется. Нейрон «умер»: он навсегда выключен и не участвует в обучении. При неудачной инициализации или слишком большом шаге так может отмереть заметная доля сети.

Лечат это лёгким наклоном на отрицательной стороне — «дырявой» ReLU:

LeakyReLU(z)={z,z0,0,01z,z<0,\operatorname{LeakyReLU}(z)= \begin{cases} z,& z\ge 0,\\ 0{,}01\,z,& z<0, \end{cases}

у которой наклон слева не ноль, а маленькая положительная величина. Тогда даже «отрицательный» нейрон получает тонкий ручеёк градиента и может ожить. Мёртвые ReLU и дырявые заплатки — типичная для инженерии история: простое решение работает почти всегда, а на оставшиеся редкие случаи ставят маленькую починку.

Лаборатория: активация и её наклон

Функция, наклон и затухание сквозь слои

Загружается живая иллюстрация…

Порядок опытов. Переключайте активацию — ступенька, сигмоида, tanh, ReLU, дырявая ReLU — и смотрите на пару графиков: саму функцию и её наклон. У ступеньки наклон всюду ноль; у сигмоиды колокол с вершиной 14\tfrac14; у ReLU наклон-ступенька из 00 и 11. Затем крутите число слоёв и следите за табло множителя градиента: сигмоида уводит его к исчезающим долям за десяток слоёв, ReLU держит на месте. Вы своими глазами увидите, почему смена активации открыла эпоху глубоких сетей.

Сборка: одна кривая решает судьбу глубины

Активация — крошечная деталь нейрона, от которой зависит всё. Без нелинейности глубина схлопывается в один линейный слой, поэтому гнуть прямую обязательно. Но негладкая ступенька, идеальная как переключатель, не даёт обучать сеть градиентом, потому что её наклон всюду ноль. Гладкая сигмоида чинит это и вдобавок читается как вероятность, но её наклон не больше 14\tfrac14, и через десяток слоёв градиент гаснет в миллион раз — глубокие сигмоидные сети не учились. ReLU, почти линейная и оттого дешёвая, держит наклон 11 на активной стороне, проводит градиент сквозь глубину без потерь и ценой мелкой болезни мёртвых нейронов открыла эпоху по-настоящему глубоких сетей. Теперь у нас есть всё для обучения: многослойная сеть, гнущая пространство, и гладкая активация, сквозь которую пройдёт градиент. Осталось понять, что именно этот градиент уменьшает, — то есть как измерить ошибку сети одним числом. С этой функции потерь начинается разговор об оптимизации.

Задачи