Стэнфордский курс CS231N: эволюция механизма внимания и архитектуры трансформеров

Stanford Online 33,5 тыс. 1 ч 6 мин 11 мин 02.09.2025
Главное

В рамках восьмой лекции знаменитого курса Стэнфордского университета CS231N, опубликованной платформой Stanford Online, подробно рассматривается революционный переход в сфере искусственного интеллекта — от рекуррентных нейросетей к механизмам внимания и архитектуре трансформеров. Преподаватель последовательно раскрывает математическую и концептуальную логику этих технологий, изменивших ландшафт глубокого обучения. Данный материал предлагает глубокий разбор того, как скромное технологическое решение проблемы «узкого горлышка» привело к созданию триллионных ИИ-моделей.

🔄 От рекуррентных сетей к идее внимания 0:04

Традиционные рекуррентные нейронные сети (RNN) разрабатывались как специализированная архитектура для обработки последовательностей данных. В отличие от классических полносвязных и сверточных сетей, которые в основном решали задачи биективного отображения «один к одному» (например, классификация одного изображения), рекуррентный подход позволил ИИ выйти на новые типы задач. Сюда относятся сценарии «один ко многим», такие как автоматическое описание изображений текстом (image captioning), и «многие к одному», вроде классификации видео по набору кадров.

Наиболее ярким примером применения рекуррентных архитектур стали задачи класса Sequence-to-Sequence (Seq2Seq), в частности, машинный перевод. При переводе предложения с английского языка на итальянский невозможно заранее составить фиксированные правила соответствия слов: их количество в исходном и целевом языках может различаться, а сам порядок слов часто меняется радикально. Идея использования RNN для решения Seq2Seq-задач восходит к 2014 году.

Стандартный рекуррентный подход в задачах Seq2Seq строится на двух компонентах:

Ключевым связующим звеном этой системы выступает контекстный вектор $C$ — финальное скрытое состояние энкодера, которое призвано инкапсулировать и суммировать всю информацию из входной последовательности.

Однако в этой классической схеме скрывается серьезная фундаментальная проблема, известная как коммуникационное «бутылочное горлышко» (communication bottleneck). Размер контекстного вектора $C$ фиксируется на этапе проектирования сети и может составлять, например, 128 или 1024 числа с плавающей запятой. Если для короткой фразы такого объема памяти достаточно, то при масштабировании задачи до целого абзаца, книги или огромного корпуса данных фиксированный вектор физически не способен вместить в себя весь необходимый объем информации.

Чтобы преодолеть это ограничение, архитектуру ИИ радикально пересмотрели. Идея заключалась в том, чтобы отказаться от принудительного сжатия данных в один неизменяемый вектор. Вместо этого сети предоставили возможность динамически «возвращаться» и просматривать всю входную последовательность на каждом шаге генерации ответа. Данная концепция легла в основу механизма внимания (Attention).

🛠️ Математика внимания: как это устроено в RNN 9:13

Реализация интуитивного принципа «взгляда назад» в рамках рекуррентной модели требует точного математического алгоритма. Процесс начинается с вычисления оценок выравнивания (alignment scores), которые показывают, насколько текущее состояние декодера $s_0$ соответствует каждому скрытому состоянию энкодера $h$ из входной последовательности.

Простейшим вычислительным решением для определения этих оценок является линейный слой, обозначаемый как $f_{att}$. Этот слой берет вектор скрытого состояния декодера $s$, конкатенирует его с вектором скрытого состояния энкодера $h$ и применяется линейное преобразование, которое сжимает полученный вектор до одного скалярного значения. Этот оператор полностью дифференцируем, что позволяет обучать его совместно с остальными параметрами сети методом обратного распространения ошибки.

Полученные скалярные оценки выравнивания могут принимать любые вещественные значения в диапазоне от $-\infty$ до $+\infty$. Чтобы стабилизировать вычисления и упорядочить структуру, к вектору оценок применяется функция Softmax. Softmax преобразует произвольный набор чисел в дискретное распределение вероятностей: значения на выходе строго ограничены от 0 до 1, а их сумма всегда равна 1. На данном этапе сеть фактически предсказывает распределение весов внимания над входными токенами для текущего шага генерации.

Финальным шагом вычисляется обновленный контекстный вектор $c_1$:

$$c_1 = \sum_{i} a_{1i} h_i$$

Он представляет собой линейную комбинацию скрытых состояний энкодера, где в качестве коэффициентов выступают полученные веса внимания $a$. Этот вектор $c_1$ затем конкатенируется с первым токеном выходной последовательности $y_0$ и передается в рекурсивный блок декодера для расчета следующего скрытого состояния $s_1$ и предсказания выходного слова.

Лектор подчеркивает, что этот механизм работает полностью в автоматическом режиме. Разработчикам не требуется вручную размечать связи между словами в обучающих парах данных. Сеть оптимизирует веса выравнивания самостоятельно, опираясь на стандартную функцию потерь кросс-энтропии (cross-entropy softmax loss) в процессе обучения методом градиентного спуска.

При инициализации обработки новой последовательности начальное скрытое состояние декодера $s_0$ может задаваться как последнее состояние энкодера, вычисляться через линейную проекцию или заполняться нулями. На последующих шагах декодирования весь цикл повторяется: на основе состояния $s_1$ рассчитываются новые оценки схожести, формируется вектор $c_2$, и сеть генерирует очередной токен.

📊 Визуализация и историческое признание 20:59

Одним из важнейших преимуществ механизма внимания является возможность интроспекции — визуализации внутренних процессов работы нейросети. Поскольку ИИ самостоятельно определяет веса векторов, исследователи могут извлечь матрицы внимания и представить их в виде двухмерной тепловой карты, отражающей распределение вероятностей.

На примере перевода предложения «The agreement on the European Economic Area was signed in August 1992» на французский язык визуализация демонстрирует следующие закономерности:

Исторически данный подход впервые был представлен в классической статье 2015 года «Neural Machine Translation by Jointly Learning to Align and Translate». Лектор отметил примечательный факт: в 2025 году эта научная работа удостоилась престижной награды Test of Time Award (за проверку временем) на конференции ICLR, что подтверждает её колоссальное долгосрочное влияние на индустрию ИИ.

🚀 Абстрагирование внимания: запросы, ключи и значения 26:27

Успех применения технологии в машинах перевода подтолкнул исследователей к идее полностью отделить механизм внимания от рекуррентных нейросетей. Внимание доказало свою состоятельность как самостоятельный мощный вычислительный примитив. Чтобы превратить его в универсальный слой, потребовалось формализовать алгоритм в обобщенных терминах.

Для этого была разработана концепция, оперирующая тремя типами векторов:

Лектор приводит понятную аналогию с поисковыми системами или современными чат-ботами. Когда пользователь вводит в Google или ChatGPT фразу «какой университет лучший в мире?», эта строка выступает в качестве запроса. Алгоритмы бэкенда сопоставляют этот запрос с миллиардами поисковых индексов сайтов — ключами. На основе совпадения система выдает пользователю фактический ответ, например, «Стэнфорд», который является целевым значением, концептуально отличающимся от текста самого запроса.

В рамках математического упрощения разработчики отказались от использования сложного полносвязного слоя $f_{att}$ в пользу операции скалярного произведения (dot product) векторов. Однако чистый dot product имеет скрытый дефект: при значительном росте размерности векторов $D$ результаты умножения становятся слишком большими по модулю. Это приводит к тому, что функция Softmax начинает выдавать экстремально сглаженные или, напротив, контрастные распределения с околонулевыми градиентами, полностью блокируя обучение сети.

Решением стал механизм масштабированного скалярного произведения (Scaled Dot-Product Attention). Векторные произведения делятся на квадратный корень из размерности ключей $\sqrt{d_k}$, что гарантирует стабильный поток градиентов при любых масштабах сети.

Более того, для достижения максимальной производительности вычисления были переведены в матричную форму, позволяющую обрабатывать множество запросов параллельно. Формула расчета слоя внимания принимает классический вид:

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right) V$$

Матричное умножение $Q K^T$ мгновенно рассчитывает сходство между всеми парами запросов и ключей, а последующее умножение матрицы весов на $V$ эффективно собирает итоговые контекстные представления. Формирование ключей и значений из исходных данных $X$ происходит с помощью линейных проекций через обучаемые матрицы весов $W_k$ и $W_v$.

🔗 Кросс-внимание против селф-внимания 44:47

В зависимости от источника поступающих векторов, выделяют две основные конфигурации слоя внимания. Первая — это кросс-внимание (Cross-Attention), где запросы поступают из одного источника (например, генерируемый текст декодера), а ключи и значения — из другого (исходный текст энкодера). Такая структура незаменима при сопоставлении разнородных данных, например, в задачах генерации описания к картинкам, где сравниваются визуальные области и текстовые токены.

Вторая, более распространенная в современных архитектурах конфигурация — это самовнимание (Self-Attention). Здесь все три матрицы — Запросы ($Q$), Ключи ($K$) и Значения ($V$) — генерируются из одного и того же входного массива данных $X$ с помощью трех независимых матриц весов $W_q, W_k, W_v$. В инженерной практике для оптимизации работы на GPU эти матрицы обычно объединяют (фьюзинг) в одну большую операцию матричного умножения.

Слой самовнимания обладает уникальным математическим свойством — перестановочной эквивариантностью (permutation equivariance). Если случайным образом перемешать элементы на входе слоя, то векторы на выходе изменятся ровно в том же порядке, но их численные значения останутся прежними. Это означает, что самовнимание по своей сути оперирует не упорядоченными последовательностями, а неупорядоченными множествами векторов (sets of vectors). Чтобы вернуть модели понимание структуры языка и хронологии, к входным векторам добавляют позиционные эмбеддинги (positional embeddings), кодирующие индекс каждого слова.

Для создания языковых моделей общего назначения применяется модификация, называемая маскированным самовниманием (Masked Self-Attention). При авторегрессионной генерации тексту запрещено «заглядывать в будущее». Для реализации этого правила на этапе расчета схожести $Q K^T$ все элементы, соответствующие будущим токенам, принудительно перезаписываются значениями $-\infty$. После прохождения Softmax эти позиции превращаются в чистые нули, гарантируя, что текущее слово формируется строго на основе уже сгенерированного контекста.

Чтобы кратно увеличить емкость модели, применяется многоголовый режим (Multi-Headed Self-Attention). На вход подается $H$ независимых копий слоев внимания, веса которых инициализируются случайно и обучаются параллельно. В конечном счете, весь комплексный процесс многоголового самовнимания сводится к четырем базовым операциям матричного умножения:

  1. Проекция входных данных в матрицы Запросов, Ключей и Значений.
  2. Пакетное перемножение $Q$ и $K^T$ для нахождения матриц сходства.
  3. Взвешивание матрицы Значений весами внимания.
  4. Финальная выходная проекция для агрегации информации из всех «голов» внимания.

🥊 Сравнение архитектур: RNN, CNN и самовнимание 58:21

Развитие технологий привело к формированию трех фундаментальных подходов к обработке последовательностей в глубоком обучении. Каждый из них обладает своими уникальными вычислительными свойствами и ограничениями.

Сравнительные характеристики базовых примитивов глубокого обучения:

Единственным слабым местом самовнимания выступает его вычислительная стоимость: сложность по памяти и вычислениям растет квадратично ($O(N^2)$) относительно длины входной последовательности $N$. При работе с контекстами в сотни тысяч или миллионы токенов требования к оборудованию возрастают экспоненциально. Однако, как иронично подметил лектор, эта проблема сегодня успешно решается простой покупкой большего количества графических процессоров (GPUs).

По мнению преподавателя, квадратичная сложность парадоксальным образом выступает драйвером повышения качества ИИ. Лектор отметил: «Больше вычислений означает, что сеть выполняет больше работы, у нее появляется больше возможностей думать и обрабатывать информацию».

🧱 Анатомия блока трансформера и масштабирование 1:02:34

Архитектура Transformer, предложенная в 2017 году, представляет собой упоряоченный стек однотипных вычислительных блоков, в основе каждого из которых лежит описанный механизм многоголового самовнимания.

Пошаговая структура стандартного блока трансформера:

  1. Входной массив: Набор векторов $X$ поступает на слой многоголового самовнимания, где векторы обмениваются контекстной информацией друг с другом.
  2. Остаточное соединение (Residual Connection): Результат работы внимания складывается с исходным вектором $X$ для предотвращения затухания градиентов при обучении.
  3. Нормализация слоя (Layer Normalization): Обеспечивает стабильность распределения активаций и ускоряет сходимость модели.
  4. Полносвязный слой (MLP / FFN): Небольшая двухслойная нейросеть, которая применяется к каждому вектору последовательности абсолютно независимо. Если самовнимание отвечает за коммуникацию между векторами, то MLP обеспечивает индивидуальный анализ и трансформацию каждого отдельного токена.
  5. Второе остаточное соединение и нормирование: Финальный этап стабилизации перед передачей данных на следующий блок.

По словам лектора, базовая структура блоков практически не изменилась с момента публикации оригинальной статьи в 2017 году, однако масштабы выросли колоссально. Если первая модель содержала всего 12 блоков и около 200 миллионов параметров, то современные ИИ-системы оперируют сотнями блоков и триллионами настраиваемых параметров, демонстрируя беспрецедентную масштабируемость.

Универсальность трансформеров позволила перенести их из текстового домена в визуальный с помощью концепции Vision Transformers (ViT). Исходное изображение просто нарезается на небольшие квадратные фрагменты (патчи), каждый из которых проецируется в вектор. Полученный набор векторов обрабатывается стандартным стеком трансформерных блоков. Для решения задач классификации выходные векторы агрегируются операцией пулинга (pooling) и передаются на линейный слой для предсказания финального класса объекта.

Лектор резюмирует, что благодаря своей гибкости, параллелизуемости и способности эффективно поглощать огромные объемы данных и вычислительных мощностей, трансформеры остаются главной архитектурой современного глубокого обучения.

💬 Цитаты

«Больше вычислений означает, что сеть выполняет больше работы, у нее появляется больше возможностей думать и обрабатывать информацию.»

«Архитектура трансформеров является основным решением практически для всех задач глубокого обучения на сегодняшний день.»

Лектор CS231N 1:37
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Контекстный вектор (Context Vector)
Вектор фиксированной длины, который собирает и кодирует всю информацию из входной последовательности в сетях Seq2Seq.
Самовнимание (Self-Attention)
Механизм, позволяющий элементам одной и той же последовательности взаимодействовать друг с другом для расчета обновленных представлений.
Перестановочная эквивариантность (Permutation Equivariance)
Свойство слоя нейросети, при котором изменение порядка элементов на входе приводит к точно такому же изменению порядка элементов на выходе.
Позиционные эмбеддинги (Positional Embeddings)
Дополнительные векторы, содержащие информацию о порядке и положении элементов в последовательности, компенсирующие свойство внимания игнорировать порядок.
Маскированное самовнимание (Masked Self-Attention)
Модификация слоя внимания, блокирующая доступ к будущим элементам последовательности путем зануления их весов через отрицательную бесконечность.
📊 Цифры
🗓 Хронология
  1. 2014 г. Начало активного применения рекуррентных нейросетей для решения задач Seq2Seq и машинного перевода.
  2. 2015 г. Публикация фундаментальной работы по совместному выравниванию и машинному переводу, заложившей основы механизмов внимания.
  3. 2017 г. Представление оригинальной архитектуры Transformer, состоящей из 12 блоков и 200 миллионов параметров.
  4. 2025 г. Статья 2015 года о механизме внимания получает награду Test of Time Award на конференции ICLR.
⚖️ Другая сторона
Искусственный интеллект CS231N Transformers Attention Stanford University