Тригонометрия

Тригонометрия в машинном обучении

GPT-4, LLaMA, BERT - каждая из этих моделей использует тригонометрию внутри. Positional Encoding в трансформерах - это буквально sin и cos. RoPE поворачивает эмбеддинги. Без тригонометрии современный AI не существовал бы.

  • LLaMA / GPT: RoPE позволяет модели обобщаться на последовательности длиннее обученных
  • BERT / GPT-2: sinusoidal positional encoding кодирует порядок токенов
  • Нейросинтез аудио (WaveNet, EnCodec): Snake активация для периодических аудиосигналов

Предварительные знания

  • Law of Cosines and Law of Sines: Arbitrary Triangles
  • Trigonometric Substitution and Product-to-Sum Formulas

Positional Encoding в трансформерах

GPT-4 использует синусоидальное позиционное кодирование: PE(p,d) = sin(p/10000^(2i/d)) - это позволяет обрабатывать контекст до 128 000 токенов. Трансформеры обрабатывают все токены параллельно и не знают об их позиции в последовательности. Positional Encoding добавляет к каждому эмбеддингу вектор, кодирующий позицию через синусы и косинусы разных частот. Это даёт модели информацию о порядке токенов.

**Positional Encoding** (Vaswani et al., 2017 - оригинальный трансформер): PE(pos, 2i) = sin(pos / 10000^{2i/d_model}) PE(pos, 2i+1) = cos(pos / 10000^{2i/d_model}) где pos - позиция токена, i - индекс измерения, d_model - размерность модели. **Почему синусы/косинусы?** 1. |PE(pos)| ≈ const - нет взрывного роста 2. PE(pos+k) можно выразить через PE(pos) линейно - модель может обобщаться на любые расстояния 3. Разные частоты кодируют «ближние» и «дальние» отношения

В Positional Encoding используются частоты 1/10000^{2i/d}. Зачем нужны РАЗНЫЕ частоты для разных измерений i?

RoPE: Rotary Position Embedding

RoPE (Su et al., 2021) - более элегантный способ кодирования позиции: вместо сложения вектора PE к эмбеддингу, мы ПОВОРАЧИВАЕМ эмбеддинг в векторном пространстве на угол, зависящий от позиции. Используется в LLaMA, GPT-NeoX, PaLM и большинстве современных LLM.

**RoPE** - поворот каждой пары измерений (x_{2i}, x_{2i+1}) на угол m·θᵢ: f(q, m) = R_m · q где матрица поворота для пары (2i, 2i+1): R_m(i) = | cos(m·θᵢ) -sin(m·θᵢ) | | sin(m·θᵢ) cos(m·θᵢ) | θᵢ = 10000^{-2i/d} **Ключевое свойство** - внутреннее произведение зависит только от РАЗНОСТИ позиций: q_m^T · k_n = q^T · R_{n-m} · k = f(q, m)^T · f(k, n) Это идеально для attention: модель видит только относительные позиции.

В чём главное преимущество RoPE перед исходным Positional Encoding?

Геометрия Attention: косинусное сходство

Механизм attention вычисляет скалярное произведение query и key векторов. Нормализованное скалярное произведение - это косинус угла между векторами. Понимание attention как геометрии косинусного сходства объясняет, почему масштабирование на √d_k необходимо.

**Scaled Dot-Product Attention:** Attention(Q, K, V) = softmax(QK^T / √d_k) · V **Косинусное сходство:** cos(q, k) = q·k / (||q|| · ||k||) **Почему деление на √d_k?** Если q, k ~ N(0,1), то q·k ~ N(0, d_k). Стандартное отклонение растёт как √d_k. Деление нормализует: q·k/√d_k ~ N(0,1). Без масштабирования при больших d_k softmax насыщается → градиенты исчезают.

Почему в Scaled Dot-Product Attention делят на √d_k, а не просто на d_k?

Тригонометрические функции активации: Swish, GELU, Snake

Классический ReLU прост, но у него нет гладкости в нуле. Современные функции активации используют гладкие аппроксимации через erf (GELU), сигмоиду (Swish) и явные тригонометрические функции (Snake). Знание этих функций важно для выбора архитектуры нейросети.

**GELU** (Gaussian Error Linear Unit): GELU(x) = x · Φ(x) ≈ x · σ(1.702x) где Φ - CDF нормального распределения, erf(x) = (2/√π)∫₀ˣ e^{-t²}dt **Swish** (Google Brain, 2017): Swish(x) = x · σ(x) = x / (1 + e^{-x}) **Snake** (явная тригонометрия, 2020): Snake_α(x) = x + sin²(αx) / α Snake полезен для моделирования периодических функций: аудио, физические процессы, временные ряды.

Почему Snake активация sin²(αx)/α особенно полезна для моделирования аудио и физических сигналов?

Ключевые идеи

  • PE(pos, 2i) = sin(pos/10000^{2i/d}): разные частоты кодируют ближние и дальние позиции
  • RoPE: поворот эмбеддинга - attention score зависит только от разности позиций
  • Scaled attention делит на √d_k: нормализует дисперсию при компонентах N(0,1)
  • Snake(x, α) = x + sin²(αx)/α: идеально для периодических сигналов в нейросетях

Связанные темы

Тригонометрия в ML соединяет чистую математику с современной AI-инженерией:

  • Тригонометрические ряды и Фурье — Positional Encoding - дискретный аналог Фурье-признаков по позиции
  • Тригонометрия в компьютерной графике — Матрицы поворота из тригонометрии используются и в attention, и в 3D

Вопросы для размышления

  • Докажите, что f(q,m)·f(k,n) = g(q,k,n-m) для RoPE, то есть dot product зависит только от разности позиций.
  • Почему masking в decoder attention реализован добавлением -∞ к scores до softmax, а не обнулением после? Что произойдёт с градиентами?
  • Сравните Snake(x, α) с рядом Фурье: в чём их математическое родство? Как обобщить Snake на произвольный набор частот?

Связанные уроки

  • ml-01-intro
Тригонометрия в машинном обучении

0

1

Войти