В рамках лекционного курса MIT OpenCourseWare профессор Филипп Изола представил детальный разбор архитектуры трансформеров, которая сегодня доминирует в сфере глубокого обучения. Лектор объяснил, почему трансформеры вытеснили сверточные нейросети, как устроен механизм внимания и каким образом универсальное представление данных позволяет решать задачи в самых разных модальностях — от обработки текста до компьютерного зрения.
💍 Одна архитектура, чтобы править всеми 0:12
Современный ландшафт искусственного интеллекта полностью подчинен одной модели. По словам Филиппа Изолы, трансформер сегодня — это «одно кольцо всевластия» среди нейросетевых архитектур, знание которого открывает двери к получению работы в ИТ-индустрии. Лектор сразу делает оговорку: в будущем ситуация обязательно измениться, и на смену трансформерам придут новые решения, но прямо сейчас они остаются главным и самым эффективным практическим инструментом.
Чтобы проиллюстрировать, как старые идеи обретают новый смысл в измененном контексте, Изола обращается к литературе. Он пересказывает знаменитый постмодернистский рассказ Хорхе Луиса Борхеса «Пьер Менар, автор „Дон Кихота“». В этом произведении вымышленный писатель слово в слово воссоздает роман Сервантеса, однако текст приобретает совершенно иное значение из-за новой исторической эпохи и контекста жизни автора. Профессор считает, что это главная метафора лекции: базовые принципы машинного обучения во многом остаются прежними, но благодаря новым связям и масштабу они полностью меняют свое содержание.
🗺️ Ограничения сверточных сетей и сила глобального взгляда 2:51
Чтобы понять успех трансформеров, необходимо взглянуть на фундаментальные ограничения сверточных нейросетей (CNN). Если перед моделью стоит задача посчитать птиц на изображении, CNN отлично с ней справится: она разобьет картинку на локальные фрагменты, обработает их фильтрами и агрегирует результат. Однако ситуация резко усложняется, если задать вопрос: «Принадлежат ли птица в правом верхнем углу и птица в левом нижнем углу к одному биологическому виду?».
Сверточные сети построены вокруг принципа локальности (locality bias), то есть они обрабатывают сигналы небольшими соседствующими кусочками, собирая их воедино шаг за шагом. Как утверждает лектор, для большинства природных сигналов это полезное свойство, ведь наш мир обладает свойством гладкости — например, чтобы понять происходящее в этой лекционной аудитории, нам не нужно смотреть на Марс. Но локальные фильтры оказываются неэффективными, когда требуется оценить глобальные или пространственно удаленные взаимосвязи.
В глубокой сверточной сети информация между удаленными точками распространяется слишком медленно. Изола приводит аналогию с каплей краски, которая постепенно растекает по ребрам вычислительного графа. В простой двухслойной CNN с размером фильтра 3 рецептивное поле расширяется линейно и медленно: выходные нейроны физически не могут накопить информацию о совместной конфигурации удаленных друг от друга входных переменных. Чтобы решить эту проблему, можно делать сеть глубже, но это не всегда оптимальный путь.
Альтернативой могли бы стать полносвязные слои (MLP), где каждый выходной нейрон связан со всеми входными, обеспечивая мгновенную глобальную интеграцию данных. Однако для обработки вектора размерности $N$ полносвязный слой требует $N^2$ весов и вычислительных ребер, что делает его слишком ресурсоемким и тяжелым для обучения. Механизм внимания (attention) решает эту дилемму, предлагая разреженный глобальный взгляд: сеть смотрит на весь сигнал целиком, но динамически фокусируется только на тех частях, которые важны для текущей задачи, имитируя работу человеческого мозга.
🪙 Что такое токен: новый взгляд на атомы данных 8:27
Первым ключевым понятием трансформера является токен. Филипп Изола определяет токен как вектор нейронов, представляющий собой инкапсулированный модуль или пакет информации в вычислительном графе. В контексте графовых нейросетей (GNN) токенами выступали векторы признаков узлов.
Лектор подчеркивает терминологический нюанс: в сфере обработки естественного языка (NLP) под токенами обычно понимают дискретные единицы словаря — буквы, слоги или слова. Однако профессор предпочитает более общее определение, принятое в компьютерном зрении: токен — это содержательный фрагмент информации, на которые разлагается задача. Если классическая нейросеть оперирует массивом скалярных нейронов, то трансформер работает исключительно с массивом векторов-токенов.
Главная сила трансформеров заключается в их доменной независимости (domain agnostic). Как только эксперт в конкретной предметной области превращает исходный сигнал в набор токенов, дальнейшую обработку берет на себя универсальный трансформер.
Процесс токенизации выглядит следующим образом:
- Исходный сигнал (например, изображение) разрезается на локальные непересекающиеся патчи, что позволяет сохранить полезное индуктивное смещение локальности.
- Каждый патч вытягивается в плоский одномерный список пикселей.
- Полученный вектор умножается на матрицу проекции $W_{tokenize}$ для получения фиксированного $D$-мерного токена.
В лингвистическом анализе для этого используются так называемые байтовые пары (byte pairs), разделяющие текст на устойчивые буквосочетания вроде «TH» или «ING». Для математического удобства токены укладываются в матрицу $T$, где $N$ строк соответствуют количеству токенов, а $D$ столбцов — размерности каналов. При этом все токены в стандартных архитектурах имеют одинаковый размер, поскольку использование вариативных размерностей усложнило бы аппаратную оптимизацию под параллельные вычисления на GPU.
⚙️ Линейные комбинации и токенизированные нейросети 17:34
По аналогии с обычными многослойными перцептронами, нейросети, работающие на уровне токенов («токен-сети»), используют две базовые операции: линейную комбинацию и покомпонентную нелинейность.
Линейная комбинация токенов представляет собой взвешенную сумму векторов. В матричной нотации умножение обучаемой матрицы весов $W$ на матрицу токенов $T$ означает линейное комбинирование строк. Лектор указывает на важный математический факт: такая операция менее экспрессивна, чем линейный слой над отдельными нейронами, поскольку она представляет собой низкоранговое преобразование. Вместо множества независимых весов для каждого скаляра здесь используется ограниченное число параметров для управления целыми модулями данных.
Вторая операция — это токенозависимая нелинейность. Вместо применения функции активации (вроде ReLU) к каждому отдельному нейрону, через нелинейную функцию $F$ независимо и идентично пропускается каждый токен целиком. В трансформерах роль этой функции обычно выполняет полноценная подсеть MLP. С технической точки зрения этот процесс эквивалентен сверточному фильтру размером $1 \times 1$, скользящему по последовательности токенов.
Изола сравнивает токен-сети с развернутыми графовыми нейросетями (GNN), где функции агрегации и обновления узлов выполняют похожие роли. Ключевое отличие заключается в том, что в GNN связи жестко заданы матрицей смежности графа, тогда как трансформер представляет собой полносвязную графовую сеть, где каждый токен на каждом слое взаимодействует со всеми остальными, а веса связей не разделяются по глубине архитектуры.
🔍 Механизм «Запрос — Ключ — Значение» (Q-K-V) 26:44
Главное новшество трансформеров касается того, как именно вычисляются веса для линейной комбинации токенов. В обычном MLP веса являются свободными параметрами, оптимизируемыми через обратное распространение ошибки. В механизме внимания веса комбинации (матрица $A$) формируются динамически из активаций самой сети и напрямую зависят от обрабатываемых данных.
Для объяснения концепции Филипп Изола использует аналогию с базами данных. Представим, что мы ищем ответ на вопрос: «Каков цвет импалы на фотографии?». Каждая ячейка базы данных (токен изображения) «знает», какую информацию она хранит, и выставляет наружу «ключ». Заданный вопрос трансформируется в «запрос», который сопоставляется с ключами. При совпадении запроса и ключа ячейка открывается, и из нее извлекается «значение».
Математически этот процесс на одном слое внимания устроен следующим образом:
- Запрос (Query, Q): Вектор вопроса преобразуется с помощью обучаемой матрицы проекции $W_Q$.
- Ключ (Key, K): Каждый токен входного сигнала генерирует вектор-ключ через матрицу $W_K$.
- Значение (Value, V): Каждый токен генерирует вектор-значение через матрицу $W_V$, который и передается на следующий уровень сети.
Степень соответствия между запросом и ключом вычисляется через их скалярное произведение (dot product), отражающее меру геометрического сходства векторов в пространстве признаков. Полученный вектор оценок сходства пропускается через функцию Softmax, которая нормализует значения, превращая их в веса распределения внимания, суммирующиеся в единицу. На финише выходной токен формируется как взвешенная сумма векторов значений ($V$) в соответствии с вычисленными коэффициентами внимания. Единственными обучаемыми параметрами в этом слое остаются три матрицы проекции: $W_Q$, $W_K$ и $W_V$.
🔄 Самоосознание сети: как работает Self-Attention 40:56
Развитием идеи внешних запросов стал механизм самовнимания (self-attention). В этом сценарии запросы поступают не из внешнего источника (текста вопроса), а генерируются самими элементами обрабатываемого сигнала. Каждый токен в последовательности одновременно порождает свой собственный запрос, ключ и значение, обращаясь ко всем остальным токенам.
По мнению Изолы, это позволяет элементам уточнять собственные репрезентации. Например, неопределенный патч на стыке объектов может «осмотреться», найти похожие на себя фрагменты и скорректировать свое понимание: «Я импала или газель?». Визуализация работы self-attention в задачах видеоанализа наглядно показывает, что токен, расположенный на фигуре лошади, направляет максимум внимания на другие части этой же лошади, фактически самостоятельно решая задачу семантической сегментации и не пересекая границы объектов. Лектор подчеркивает, что такое интуитивно понятное поведение не закладывается в модель жестко — оно спонтанно обнаруживается алгоритмом обратного распространения ошибки в процессе минимизации функции потерь на реальных статистических данных.
Вся цепочка операций элегантно сводится к одному фундаментальному уравнению трансформеров:
$$Attention(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$
Скалярное произведение матрицы запросов $Q$ на транспонированную матрицу ключей $K^T$ дает матрицу весов размером $N \times N$ для последовательности из $N$ токенов. Деление на корень из размерности векторов ключей $\sqrt{d_k}$ необходимо для вычислительной стабилизации и предотвращения слишком малых градиентов на этапе Softmax.
Отвечая на вопрос аудитории, почему бы не обучать матрицу весов напрямую, Изола приводит важный практический аргумент: прямая оптимизация матрицы связей потребовала бы настройки $N^2$ параметров, что исключает обработку длинных текстов. В трансформерах же количество параметров в матрицах проекций зависит от фиксированной размерности токена $D$, а не от длины последовательности $N$, что позволяет современным большим языковым моделям оперировать контекстом объемом в целые книги.
🏗️ Анатомия Vision Transformer и математические маски 52:51
Сравнение структурных матриц различных слоев помогает наглядно увидеть математическую суть трансформера. В полносвязном слое (MLP) каждый элемент матрицы связей уникален — это $N^2$ свободных параметров. В сверточном слое матрица имеет структуру Тёплица (Toeplitz structure), где значения на диагоналях повторяются из-за разделения весов, обеспечивая свойство сдвиговой эквивариантности. Матрица внимания трансформера, с одной стороны, является полносвязной, но с другой — представляет собой динамическое низкоранговое разреженное преобразование, где веса генерируются на лету параллельным механизмом.
Стандартная архитектура Vision Transformer (ViT) включает в себя следующие шаги:
- Исходные токены проходят через нормализацию слоев (LayerNorm или TokenNorm), которая центрирует вектор и приводит его к единичной дисперсии для стабилизации градиентов.
- Данные поступают в блок многоголового самовнимания (Multi-Headed Self-Attention, MSA), где параллельно работают $K$ независимых механизмов внимания, каждый из которых может фокусироваться на своих признаках (например, один на текстурах, другой на геометрических формах).
- Результаты объединяются и передаются в токенозависимый MLP (нелинейный блок).
- Весь процесс сопровождается остаточными связями (residual connections), пропускающими исходный сигнал в обход блоков для улучшения сходимости.
Псевдокод алгоритма крайне прост, поскольку сводится к серии эффективных матричных умножений (matmul), идеально оптимизированных под аппаратную архитектуру современных графических процессоров (GPU).
📍 Позиционное кодирование: как вернуть чувство пространства 1:00:45
Поскольку вычисления в слоях самовнимания опираются исключительно на содержание векторов, трансформеры обладают свойством перестановочной эквивариантности (permutation equivariance). Если поменять местами строки во входной матрице токенов, ровно так же изменятся местами строки на выходе, а сами результаты вычислений не изменятся. По сути, чистый трансформер выполняет отображение некоторого неупорядоченного множества в другое множество.
Однако в реальных задачах порядок элементов критически важен. В языке предшествующие слова причинно определяют последующие, а в изображениях взаимное расположение патчей задает геометрию объектов. Чтобы разрушить перестановочную симметрию и внедрить индуктивное смещение локальности, к каждому токену добавляется позиционное кодирование (positional encodings).
Классический способ сделать это — использовать Фурье-базис. Вместо передачи сырых декартовых координат $(x, y)$ позиция кодируется набором значений синусоид и косинусоид разной частоты. В других предметных областях кодирование адаптируют под специфику данных. Например, для сферических геоданных (цифровой глобус) применяют сферические гармоники, а для графов — собственные векторы оператора Лапласа (graph Laplacian eigenvectors), определяющие каноническое положение узла внутри сложной топологии сети.
✍️ Каузальное маскирование и рождение языковых моделей 1:06:17
Наибольшую медийную известность трансформеры получили благодаря авторегрессионным генеративным моделям языка, таким как ChatGPT, Claude или Llama. Принцип их обучения тривиален: нейросеть получает последовательность слов и пытается угадать следующее за ними слово. Во время генерации предсказанное слово добавляется в конец фразы, и цикл повторяется.
При обучении такой модели на массивах интернет-текстов возникает фундаментальная проблема «подглядывания в будущее». Если модель при вычислении репрезентации третьего слова в предложении может направить внимание на четвертое слово, которое уже содержится во входных данных, она просто выучит тривиальное тождественное соответствие и ничему не научится.
Чтобы предотвратить это, применяется каузальное маскирование (causal masking) матрицы внимания. Верхняя треугольная часть матрицы весов принудительно зануляется. В результате каждый выходной токен на каждом слое имеет право направить стрелки внимания только на себя и на те токены, которые находятся строго левее него по временной оси. Архитектура теряет перестановочную эквивариантность, но обретает строгую временную каузальность.
В завершение Филипп Изола критикует и одновременно хвалит оригинальную статью «Attention Is All You Need», заложившую основы этой технологической революции. Профессор полушутя называет представленную там схему трансформера «худшей диаграммой в истории науки», отмечая, что она избыточно усложнена и путает читателя терминами вроде feedforward вместо простого токенозависимого MLP.
Тем не менее, элегантность базового математического каркаса позволила легко масштабировать его на мультимодальные задачи. Например, в задачах генерации описания изображений (image captioning) используется кросс-внимание (cross-attention), где токены генерируемого текста напрямую «всматриваются» в фиксированные токены обработанной картинки, бесшовно связывая зрение и язык.