Alterna · учебный материал
07.3 Гладкая функция и насыщение
Функция может сжимать большой диапазон входов в ограниченный диапазон выходов. Но на краях небольшое изменение входа почти перестаёт влиять на ответ.
Что в этом материале
- Гладкость не исключает насыщения
Содержание и основные понятия
На предыдущей странице: граница между решениями.
Функция может сжимать большой диапазон входов в ограниченный диапазон выходов. Но на краях небольшое изменение входа почти перестаёт влиять на ответ.
Он собирает вклады входов, добавляет смещение и применяет нелинейное правило. Все части этого расчёта уже доступны школьной арифметике.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Гладкость не исключает насыщения
Sigmoid переводит z в (0,1), tanh — в (−1,1). Производные выражаются через уже вычисленный результат:
σ
(
z
)
=
1
1
+
e
−
z
,
σ
′
(
z
)
=
σ
(
z
)
(
1
−
σ
(
z
)
)
,
tanh
′
(
z
)
=
1
−
tanh
2
(
z
)
.
\sigma(z)=\frac1{1+e^{-z}},\quad \sigma'(z)=\sigma(z)(1-\sigma(z)),\quad
\tanh'(z)=1-\tanh^2(z).
σ
(
z
)
=
1
+
e
−
z
1
,
σ
′
(
z
)
=
σ
(
z
)
(
1
−
σ
(
z
))
,
tanh
′
(
z
)
=
1
−
tanh
2
(
z
)
.
При z=0 значения sigmoid и её производной равны .5 и .25; для tanh это 0 и 1. При большом |z| обе функции насыщаются, а локальная производная стремится к нулю. Много небольших множителей вдоль цепочки может существенно ослабить gradient. Это следствие chain rule, а не «усталость нейронов». N02.
Эксперимент.
Сравните активации при одинаковых x,w,b. Увеличьте модуль z через вес: shape не меняется, но sensitivity может резко уменьшиться. На графике отдельно показаны значение функции и её производная.
Для устойчивого sigmoid при z≥0 используем 1/(1+exp(−z)), а при z<0 — exp(z)/(1+exp(z)). Так не требуется экспонента большого положительного числа. При сильном насыщении floating-point всё равно может округлить p до 0 или 1; BCE поэтому лучше вычислять через logit.
Граница.
Sigmoid как скрытая активация и связка sigmoid+BCE на выходе имеют разные производные относительно общей ошибки. Уверенно неверный logit не обязан получать почти нулевой gradient объединённой loss. Значения tanh не являются распределением вероятностей.
from math import exp,tanh
s=1/(1+exp(0))
assert s==.5 and s*(1-s)==.25
assert tanh(0)==0 and 1-tanh(0)**2==1
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
σ′=σ(1−σ); это не полная derivative любого loss.
Нелинейные правила преобразования. Как этот вопрос продолжает полученный результат?
Python-примеры главы 07
Академическая база →