Лекция 02

Нелинейности, которые делают сеть глубокой

Кривые сигмоиды, гиперболического тангенса и ReLU
Типичные активации: гладкая S-кривая, tanh и «ломаная» ReLU.

Композиция линейных отображений снова линейна. Если между слоями нет нелинейности, хоть сто слоёв схлопнутся в одну матрицу. Активация \(\sigma\) ломает эту линейность и позволяет приближать сложные функции.

Сигмоида

$$\sigma(z)=\frac{1}{1+e^{-z}}, \qquad \sigma'(z)=\sigma(z)\,(1-\sigma(z))$$

Диапазон \((0,1)\). На краях производная почти ноль — классическая проблема затухающих градиентов.

Гиперболический тангенс

$$\tanh(z)=\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}=2\sigma(2z)-1, \qquad \tanh'(z)=1-\tanh^2(z)$$

Центрирован около нуля, поэтому часто удобнее сигмоиды во скрытых слоях старых сетей.

ReLU и родственники

$$\operatorname{ReLU}(z)=\max(0,z), \qquad \operatorname{ReLU}'(z)=\mathbf{1}[z>0]$$
$$\operatorname{LeakyReLU}(z)=\begin{cases}z,&z>0\\ \alpha z,&z\le 0\end{cases}, \qquad \operatorname{ELU}(z)=\begin{cases}z,&z>0\\ \alpha(e^{z}-1),&z\le 0\end{cases}$$

ReLU дешёвая и хорошо проводит градиент при \(z>0\). Цена — «мёртвые» нейроны, которые всегда выдают ноль. Leaky ReLU оставляет тонкий отрицательный ток.

GELU и Swish

В трансформерах чаще встречаются гладкие активации:

$$\operatorname{GELU}(z)=z\,\Phi(z) \approx z\,\sigma(1.702\,z)$$
$$\operatorname{SiLU}(z)=\operatorname{Swish}(z)=z\,\sigma(z)$$

\(\Phi\) — функция распределения стандартного нормального закона. GELU можно читать как «пропускать \(z\) с вероятностью, зависящей от величины \(z\)».

Softmax

Для \(K\) классов вектор логитов \(\mathbf{z}\) превращают в распределение:

$$\operatorname{softmax}(z)_k = \frac{e^{z_k}}{\sum_{j=1}^{K} e^{z_j}}, \qquad \sum_k \operatorname{softmax}(z)_k = 1$$

Якобиан softmax красиво записывается через диагональ и внешнее произведение:

$$\frac{\partial \operatorname{softmax}(z)}{\partial z} = \operatorname{diag}(\mathbf{p}) - \mathbf{p}\mathbf{p}^\top, \qquad \mathbf{p}=\operatorname{softmax}(z)$$
На практике из логитов вычитают \(\max_j z_j\) до экспоненты. Это не меняет softmax, но спасает от переполнения \(e^{z}\).