Язык математики

Разбор формул из статей

Пять настоящих формул, разобранных по типам и размерностям, и заготовка личного глоссария

Шаг 11 из 117 · ~35 мин

Экзамен блока. Ни одну из этих формул сейчас не надо понимать — надо уметь разобрать её на части и сказать, какого типа каждый символ и какой у него shape. Смысл придёт в блоках 1–6.

Процедура одна и та же:

  1. выписать каждый символ;
  2. указать его тип: скаляр, вектор, матрица, множество, функция, распределение;
  3. указать shape, если это тензор;
  4. проверить, что размерности сходятся.

1. Линейная регрессия, векторная форма

y^=Xw+b1\hat{\mathbf{y}} = X\mathbf{w} + b\mathbf{1}

СимволТипShape
XXматрица объектовn×dn \times d
w\mathbf{w}вектор весовdd
bbскаляр
1\mathbf{1}вектор из единицnn
y^\hat{\mathbf{y}}вектор предсказанийnn

Проверка: (n×d)(d)=(n)(n \times d) \cdot (d) = (n), плюс вектор длины nn — сходится. Заметьте, что bb скаляр, а прибавляется к вектору: запись b1b\mathbf{1} и есть явная форма того, что в NumPy сделал бы broadcasting.

2. Softmax

σ(z)i=ezij=1Kezj\sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}

zRK\mathbf{z} \in \R^K — вектор логитов, σ(z)RK\sigma(\mathbf{z}) \in \R^K — вектор вероятностей. Индекс ii слева фиксирован, а jj справа — связанная переменная суммирования. Их легко перепутать, и это первое, что нужно проверять.

Из записи сразу видно: знаменатель одинаков для всех ii, значит softmax не покомпонентная функция — каждая координата зависит от всех остальных.

Отсюда же следует сдвиговая инвариантность: умножив числитель и знаменатель на ece^{-c}, получим тот же результат при замене zizicz_i \to z_i - c. Это и есть трюк со стабильным softmax, и он выводится из формулы за одну строку.

3. Внимание

Attention(Q,K,V)=softmax ⁣(QKdk)V\mathrm{Attention}(Q, K, V) = \mathrm{softmax}\!\left(\frac{QK^\top}{\sqrt{d_k}}\right) V

СимволShape
QQn×dkn \times d_k
KKm×dkm \times d_k
VVm×dvm \times d_v
QKQK^\topn×mn \times m
результатn×dvn \times d_v

Разбор по шагам: QKQK^\top имеет форму (n×dk)(dk×m)=n×m(n \times d_k)(d_k \times m) = n \times m — матрица «каждый запрос против каждого ключа». Softmax применяется по строкам, форма не меняется. Умножение на VV: (n×m)(m×dv)=n×dv(n \times m)(m \times d_v) = n \times d_v.

dk\sqrt{d_k} — скаляр. Зачем он там, разбирается в блоке 6; пока достаточно видеть, что он не влияет на размерности.

4. Матожидание и оценка методом Монте-Карло

Exp[f(x)]1Ni=1Nf(xi),xip\mathbb{E}_{x \sim p}[f(x)] \approx \frac{1}{N}\sum_{i=1}^{N} f(x_i), \qquad x_i \sim p

Здесь важна нижняя приписка у E\mathbb{E}: она говорит, по какому распределению берётся ожидание. Без неё запись неоднозначна, и в статьях это регулярный источник путаницы.

ff — функция, pp — распределение, xix_i — сэмплы, результат — скаляр (или вектор, если ff векторнозначна). Знак \sim здесь читается «распределено как» — не эквивалентность и не приближённое равенство.

5. ELBO

logp(x)Eq(zx)[logp(xz)]DKL(q(zx)p(z))\log p(x) \ge \mathbb{E}_{q(z \mid x)}\big[\log p(x \mid z)\big] - D_{\mathrm{KL}}\big(q(z \mid x)\,\|\,p(z)\big)

Самая нагруженная формула из пяти, и всё равно разбирается механически:

  • p(x)p(x), p(xz)p(x \mid z), p(z)p(z), q(zx)q(z \mid x) — плотности, то есть функции, возвращающие неотрицательные числа;
  • Eq(zx)[]\mathbb{E}_{q(z \mid x)}[\cdot] — ожидание по zz, распределённому согласно qq;
  • DKL()D_{\mathrm{KL}}(\cdot \| \cdot) — функция от двух распределений, возвращающая неотрицательный скаляр;
  • вертикальная черта внутри DKLD_{\mathrm{KL}} — разделитель аргументов, а не условная вероятность. Внутри q(zx)q(z \mid x) та же черта означает именно условность. Один символ, два смысла, различаются позицией.

Обе части неравенства — скаляры. Это всё, что нужно установить сейчас.

Заведите глоссарий

Практическое задание без проверки, но самое полезное во всём блоке.

Создайте файл notation.md и записывайте туда каждый незнакомый символ, встреченный при чтении: сам символ, тип, shape, где встретился. Пополняйте его до конца курса.

Через полгода это будет ваша персональная шпаргалка — и она окажется полезнее любой чужой, потому что составлена по тем статьям, которые читаете именно вы.

Начать можно с того, что уже разобрано выше.

Источники

Проверки

0 из 2
  1. Форма результата внимания

    В формуле внимания QQ имеет форму 32×6432 \times 64, KK — форму 40×6440 \times 64, VV — форму 40×12840 \times 128.

    Какую форму имеет результат softmax(QK/dk)V\mathrm{softmax}(QK^\top / \sqrt{d_k})\,V?

    Запишите ответ в виде 32x128 (два числа через латинскую x, без пробелов).

  2. Устойчивый softmax

    Реализуйте softmax(logits) по формуле

    σ(z)i=ezijezj\sigma(\mathbf{z})_i = \frac{e^{z_i}}{\sum_{j} e^{z_j}}

    с одной поправкой: перед возведением в экспоненту вычтите из всех логитов их максимум. Как показано в уроке, результат от этого не меняется — но наивная версия переполняется уже на z=1000z = 1000.

    Верните список чисел той же длины. Для пустого входа верните пустой список.

    Проверка сравнивает с точностью 10910^{-9}.

    функция softmax

    Загрузка редактора…

    Ctrl/⌘ + Enter