Alterna · учебный материал

07.4 Нелинейные правила преобразования

ReLU, GELU и SiLU — разные способы преобразовать сумму нейрона. Сравним одно входное число и его чувствительность, а не будем запоминать названия.

Что в этом материале

Содержание и основные понятия

На предыдущей странице: гладкая функция и насыщение.
ReLU, GELU и SiLU — разные способы преобразовать сумму нейрона. Сравним одно входное число и его чувствительность, а не будем запоминать названия.
Он собирает вклады входов, добавляет смещение и применяет нелинейное правило. Все части этого расчёта уже доступны школьной арифметике.
Для изменения рисунка включитеJavaScript; расчёт и теория доступны далее.
Разные отрицательные ветви
ReLU(z)=max(0,z). Производная равна 0 при z<0 и 1 при z>0. В нуле классической производной нет; runtime выбирает 0 как явное соглашение. Пороговый перцептрон имеет другую производную: 0 вне порога и неопределённость на нём.
SiLU(z)=zσ(z). По правилу произведения:
SiLU
⁡
′
(
z
)
=
σ
(
z
)
+
z
σ
(
z
)
(
1
−
σ
(
z
)
)
.
\operatorname{SiLU}'(z)=\sigma(z)+z\sigma(z)(1-\sigma(z)).
SiLU
′
(
z
)
=
σ
(
z
)
+
z
σ
(
z
)
(
1
−
σ
(
z
))
.
При z=0 результат 0, производная .5; при z=−1 значение приблизительно −.268941. Небольшие отрицательные выходы допустимы. N09.
Точная GELU равна zΦ(z), где Φ — стандартная Gaussian CDF. В лаборатории используется
tanh-аппроксимация
, а не точная CDF (N05,N08):
u
=
2
/
π
(
z
+
0.044715
z
3
)
,
g
(
z
)
=
1
2
z
(
1
+
tanh
⁡
u
)
.
u=\sqrt{2/\pi}(z+0.044715z^3),\qquad g(z)=\tfrac12z(1+\tanh u).
u
=
2/
π
​
(
z
+
0.044715
z
3
)
,
g
(
z
)
=
2
1
​
z
(
1
+
tanh
u
)
.
Её производная: .5(1+tanh u)+.5z(1−tanh²u)√(2/π)(1+3·.044715z²). Она соответствует именно выбранной аппроксимации.
Исследовать.
Сравните функции при −1,0,1 и объясните различия производных. Форма графика не задаёт универсальный рейтинг: полезность зависит от архитектуры, данных и обучения. Переключение φ меняет семейство функций, а не только оформление линии.
from math import tanh,sqrt,pi
z=0
u=sqrt(2/pi)*(z+.044715*z**3)
g=.5*z*(1+tanh(u))
gp=.5*(1+tanh(u))+.5*z*(1-tanh(u)**2)*sqrt(2/pi)*(1+3*.044715*z*z)
assert g==0 and gp==.5
Код повторяет только что разобранные операции.
Полный проверяемыйPython-пример главы
доступен отдельным файлом; показанный короткий фрагмент не заменяет его реализацию.
Формула и derivative относятся к одной выбранной аппроксимации.
Почему одной прямой недостаточно. Как этот вопрос продолжает полученный результат?
Python-примеры главы 07
Академическая база →

Структурная карта учебников