# Авторегрессионные модели: от рекуррентных сетей к трансформерам и MLE

Источник: https://www.youtube.com/watch?v=bt3dqcbMLa0
Канал: Stanford Online
Опубликовано: 06.05.2024

---

В рамках курса CS236 **Стэнфордского университета (Stanford University)** прошла лекция, посвященная принципам обучения глубоких генеративных моделей. Основное внимание было уделено переходу от рекуррентных архитектур к трансформерам, а также фундаментальному методу обучения — максимизации правдоподобия (Maximum Likelihood Learning).

## 🧠 От RNN к механизмам внимания в авторегрессионных моделях
[[JUMP:00:05]]

В начале лекции спикер напомнил о базовом принципе авторегрессионных моделей: последовательном предсказании каждого следующего элемента на основе предыдущего контекста. Рекуррентные нейронные сети (RNN) долгое время были стандартом, используя скрытый вектор $H$ для суммирования всей истории. Однако RNN обладают критическими недостатками [02:29]:

*   **Информационное «бутылочное горлышко»:** один вектор должен вместить смысл всей последовательности.
*   **Сложность обучения:** последовательная природа вычислений делает невозможным параллелизм, а длинные зависимости приводят к проблеме исчезающих или взрывающихся градиентов (vanishing/exploding gradients).

Решением стал механизм внимания (Attention), используемый в современных LLM вроде GPT-4 и Llama. Вместо сжатия истории в один вектор, модель напрямую «смотрит» на все предыдущие скрытые состояния [03:33].

Ключевые концепции внимания:

*   **Query (запрос) и Key (ключ):** механизм определяет релевантность текущего шага по отношению к предыдущим, используя скалярное произведение векторов [04:38].
*   **Softmax:** превращает оценки релевантности в распределение вероятностей внимания.
*   **Параллелизм:** в отличие от RNN, трансформеры позволяют вычислять предсказания для всех токенов в обучающей последовательности одновременно, что позволяет эффективно использовать мощности GPU [09:30].

## 🖼️ Авторегрессия в мире изображений
[[JUMP:10:35]]

Авторегрессионный подход применим не только к тексту, но и к изображениям, если рассматривать их как последовательность пикселей (обычно слева направо, сверху вниз) [10:48].

В моделях типа PixelCNN обучение строится на предсказании каналов RGB. Для этого используется маскирование: при предсказании красного (R) канала модель не должна «видеть» зеленый (G) и синий (B) текущего пикселя. Маскирование реализуется через обнуление определенных весов в сверточных ядрах [15:28].

Интересным применением таких моделей является детекция аномалий и защита от состязательных атак (adversarial attacks). Было показано, что PixelCNN присваивает оригинальным изображениям высокую вероятность, а изображениям с едва заметным «состязательным шумом» — значительно более низкую [25:18]. Это доказывает, что модель действительно понимает тонкую структуру данных, а не просто копирует их.

## 📏 Обучение через максимизацию правдоподобия
[[JUMP:30:38]]

Основная задача обучения — найти параметры нейросети $\theta$, которые сделают модельную дистрибуцию $P_\theta$ максимально близкой к реальному распределению данных $P_{data}$.

Главная проблема здесь — колоссальная размерность [33:40]. Спикер привел пример с изображениями из датасета MNIST (28x28 пикселей). Даже при работе с бинарными пикселями существует $2^{784}$ возможных комбинаций. Это число ($10^{236}$) на много порядков превышает количество атомов во вселенной. Покрытие данных всегда будет разреженным, что делает задачу оценки плотности фундаментально сложной.

В качестве критерия близости распределений используется дивергенция Кульбака — Лейблера (KL-divergence). Она имеет информационно-теоретическую интерпретацию: KL-дивергенция показывает, насколько неэффективным будет сжатие данных, если мы используем код, оптимизированный под ошибочное распределение $Q$ вместо истинного $P$ [45:26].

Математически минимизация KL-дивергенции эквивалентна методу максимального правдоподобия (Maximum Likelihood Estimation, MLE) [56:42]. На практике это означает:

1.  Мы берем обучающий датасет.
2.  Считаем логарифм вероятности, которую наша модель присваивает этим данным.
3.  Меняем веса сети так, чтобы эта вероятность росла.

## 🎲 Метод Монте-Карло и оптимизация
[[JUMP:1:00:21]]

Поскольку мы не знаем истинного распределения $P_{data}$, мы заменяем теоретическое ожидание эмпирическим средним по выборке. Это классическая оценка Монте-Карло [1:05:06]:

*   **Несмещенность:** при достаточном количестве образцов среднее по выборке сходится к истинному значению.
*   **Снижение дисперсии:** чем больше данных, тем точнее наша оценка градиента.

Для масштабирования на огромные датасеты используется стохастический градиентный спуск (SGD) или мини-батчи: градиенты вычисляются не по всей базе данных сразу, а по небольшим случайным подгруппам образцов [1:17:35].

## ⚖️ Проблема переобучения: смещение и дисперсия
[[JUMP:1:18:01]]

В завершение лекции спикер затронул проблему обобщающей способности (generalization). Если модель слишком сложная, она может просто «запомнить» датасет (overfitting), что приведет к плохим результатам на новых данных.

Два полюса ошибок [1:19:19]:

1.  **Bias (Смещение):** Модель слишком проста (например, линейная функция для сложных данных) и не может уловить закономерность.
2.  **Variance (Дисперсия):** Модель слишком гибкая (полином высокой степени) и начинает реагировать на шум в данных.

Для борьбы с этим применяются методы регуляризации (предпочтение более простых весов) и кросс-валидация: если разрыв между ошибкой на обучающей и валидационной выборках растет, это сигнал о переобучении [1:23:28].