# Как устроено внимание в ИИ: подробный разбор Гранта Сандерсона

Источник: https://www.youtube.com/watch?v=KJtZARuO3JY
Канал: Grant Sanderson
Опубликовано: 20.11.2024

---

Грант Сандерсон, создатель популярного математического YouTube-канала 3Blue1Brown, выступил на конференции TNG Big Tech Day '24 с глубоким визуальным разбором внутренней математики трансформеров. В своем докладе он детально объяснил, как работают механизмы внимания (attention), запросов (queries), ключей (keys) и значений (values), а также почему простая задача предсказания следующего токена порождает сложные интеллектуальные способности. Спикер продемонстрировал, как многомерная геометрия помогает моделям кодировать тончайшие смысловые оттенки и почему эта архитектура идеально приспособлена для параллельных вычислений на видеокартах.

## 🚀 От перевода к генерации: как работают современные LLM
[[JUMP:00:00]]

Современные большие языковые модели (LLM) потребляют колоссальные объемы вычислительных ресурсов [0:25]. Любой, кто следит за рыночной капитализацией компании Nvidia, понимает, что эти алгоритмы выполняются на графических процессорах (GPU) из-за их высокой приспособленности к параллельным вычислениям [0:25]. Грант Сандерсон ставит своей целью дать слушателям интуитивное, «до мозга костей» физическое понимание того, какие именно математические операции происходят внутри нейросетей при обработке текста и почему они так легко распараллеливаются [0:38].

Архитектура трансформеров была представлена в теперь уже легендарной научной работе *«Attention is all you need»* («Внимание — это все, что вам нужно») в 2017 году [0:51]. Изначально исследователи фокусировались на узкой задаче машинного перевода (например, для сервисов вроде Google Translate) [0:51]. Однако с тех пор технология вышла далеко за рамки этой области. Она оказалась невероятно гибкой средой, применимой для множества типов данных [1:16].

Примерами таких задач выступают:

*   Машинный перевод и локализация текстов.
*   Транскрипция аудио в текст с помощью специализированных моделей (например, Whisper) [1:03].
*   Синтез речи по текстовому описанию (Text-to-Speech) [1:16].
*   Классификация и сегментация изображений [1:16].

В основе современных чат-ботов лежит упрощенная версия оригинальной архитектуры 2017 года [1:30]. Эта модель обучается на простой задаче: принять на вход фрагмент текста и предсказать, какое слово должно идти следующим [1:30]. Получая фразу вроде *«To date, the cleverest thinker of all time was...»* («На сегодняшний день самым умным мыслителем всех времен был...»), алгоритм не просто выдает один конкретный вариант [1:30]. Он формирует распределение вероятностей по всему своему словарному запасу [1:43]. В данном случае вероятности распределятся между множеством исторических фигур, а также вводными словами вроде «вероятно», «несомненно» или «спорно» [1:56].

Чтобы превратить такую предсказательную модель в генеративный ИИ (чат-бот), разработчики используют метод случайного сэмплирования из полученного распределения [2:08]. Модель выбирает слово с учетом его вероятностного веса, присоединяет его к исходному тексту и запускает весь цикл вычислений заново, чтобы предсказать следующее слово [2:21]. Этот процесс повторяется токен за токеном, требуя огромных вычислительных мощностей на каждом шаге [2:34].

Многие задаются вопросом: зачем выбирать случайные слова, а не брать всегда самый вероятный вариант? Грант Сандерсон объясняет, что если установить так называемую «температуру» модели на ноль (что означает жесткий выбор только самого вероятного токена), выводимый текст становится сухим, банальным и неестественным [2:46]. Внесение искры случайности делает речь ИИ более живой, гибкой и творческой [2:59].

Чтобы превратить этот процесс в полноценный диалог, разработчики создают для модели контекст [3:12]. В самое начало текстового окна (seed text) помещается описание среды: «Ниже приведен диалог между пользователем и полезным ИИ-ассистентом» [3:12]. Затем туда добавляется реплика пользователя, после чего модель генерирует ответ от лица ассистента — строго по одному токену за раз [3:24]. По мнению Гранта Сандерсона, удивительно, что столь простой механизм предсказания следующего слова способен имитировать долгосрочное планирование и глубокие логические рассуждения [3:50].

## 📊 Поток данных в трансформере: от токенов к векторным пространствам
[[JUMP:04:17]]

Прежде чем углубляться в математические детали, Грант Сандерсон предлагает рассмотреть высокоуровневую схему движения данных через нейросеть [4:17]. 

Первым делом поступающий текст разбивается на минимальные единицы — токены [4:29]. В случае текста это обычно целые слова, их части или знаки препинания [4:43]. В моделях, работающих с другими модальностями (звук, изображения), токенами могут выступать небольшие фрагменты спектрограммы или патчи картинки [4:55]. Возникает логичный вопрос: почему бы не разбивать текст просто на отдельные буквы (символы), ведь это кажется более естественным атомарным уровнем языка? Грант Сандерсон предлагает слушателям подумать над этим вопросом, обещая вернуться к нему позже [5:22].

После токенизации каждый токен сопоставляется с длинным списком чисел — вектором эмбеддинга (векторным представлением токена) [5:48]. На первом этапе этот процесс представляет собой простой поиск по таблице (lookup table) [6:01]. Каждый раз, когда модель встречает конкретное слово, она присваивает ему один и тот же базовый вектор, кодирующий исходное значение слова вне контекста [6:01].

Затем эти векторы последовательно проходят через цепочку из двух ключевых блоков:

1.  **Блок внимания (Attention Block)** — механизм, позволяющий векторам взаимодействовать друг с другом, обмениваться информацией и обновлять свои значения в зависимости от контекста [6:14].
2.  **Многослойный перцептрон (Multi-Layer Perceptron, MLP)** — стандартная полносвязная нейросеть, состоящая из нескольких матричных умножений с нелинейными функциями активации между ними [7:08].

Блок внимания критически важен для разрешения многозначности слов [6:28]. Например, слово *«mole»* в английском языке имеет совершенно разные значения в контекстах: «американский крот» (животное), «один моль углекислого газа» (химическая единица) и «взять биопсию родинки» (медицинский термин) [6:28]. Взаимодействие векторов в блоке внимания позволяет им корректировать свои направления в пространстве, впитывая смысл окружающих слов [6:42]. Вектор не просто избавляется от двусмысленности — он вбирает в себя «эссенцию» всего контекста, необходимую для точного предсказания следующего токена [6:55].

После блока внимания данные попадают в многослойный перцептрон (MLP) [7:08]. Несмотря на то что историческая статья называлась *«Attention is all you need»*, с точки зрения количества параметров именно на MLP приходится львиная доля объема модели — около двух третей (в то время как на механизмы внимания уходит лишь одна треть параметров) [7:35]. 

Долгое время роль MLP оставалась не до конца понятной. Однако в декабре 2023 года исследователи из DeepMind опубликовали работу, посвященную интерпретируемости нейросетей [7:49]. Они изучали, как и где модель хранит факты о реальном мире (например, ассоциации спортсменов с видами спорта) [7:49]. Если модель успешно дополняет фразу *«Michael Jordan plays the sport of...»* словом *«basketball»*, эта информация не могла прийти из текущего контекста — ее там просто нет [8:01]. Модель должна была извлечь этот факт из своих внутренних весов, настроенных в процессе обучения [8:14]. Исследование DeepMind показало, что подобные факты и долгосрочные знания о мире хранятся именно в параметрах многослойных перцептронов (MLP) [8:26]. 

По мнению Сандерсона, блоки внимания отвечают за сбор и интеграцию контекста, а перцептроны предоставляют модели емкость для хранения фактологической памяти [8:39].

Эти два блока чередуются многократно. Глубокое обучение называется «глубоким» именно из-за многократного повторения однотипных операций [9:05]. В современных больших моделях число таких слоев может достигать сотни. Например, оригинальная модель GPT-3 содержит 96 слоев [9:17].

На выходе из последнего слоя модель анализирует только самый последний вектор последовательности [9:17]. Изначально он кодировал лишь последнее слово входного текста (например, *«was»*), но пройдя через десятки блоков внимания и MLP, этот вектор вобрал в себя контекст всего предложения и накопленные базовые знания сети [9:30]. К этому финальному вектору применяется простая математическая операция (линейная проекция и софтмакс), которая превращает его в итоговое распределение вероятностей для следующего токена [9:30]. 

При этом во время обучения модели для эффективности используются все промежуточные векторы последовательности одновременно — каждый из них учится предсказывать свой собственный последующий токен на исторических данных [9:43]. Это позволяет из одного обучающего текста извлекать тысячи обучающих примеров [9:56].

## 📐 Магия многомерных пространств: геометрия смыслов
[[JUMP:10:09]]

Идея перевода слов в векторы (числовые списки) обусловлена требованиями математического аппарата машинного обучения [13:50]. Чтобы использовать математический анализ, вычислять градиенты и применять обратное распространение ошибки, входные данные должны быть непрерывными вещественными числами [13:50]. 

Удивительно то, какие геометрические свойства возникают в этих векторных пространствах в процессе обучения [14:17]. Оказывается, слова с похожими значениями естественным образом группируются в кластеры [14:30]. Если найти ближайших соседей для вектора слова *«Tower»* (башня) в простом пространстве Word2Vec, мы обнаружим векторы других строений и высоких объектов [14:30].

Более того, целые направления в этом пространстве начинают кодировать абстрактные семантические признаки [14:57]. В работе исследователей из Google 2013 года *«Efficient estimation of word representations in vector space»* был описан классический пример [15:11]: если из вектора слова *«Woman»* (женщина) вычесть вектор слова *«Man»* (мужчина) и прибавить полученную разницу к вектору слова *«King»* (король), то ближайшим вектором в этой точке пространства окажется вектор слова *«Queen»* (королева) [15:25]. 

Грант Сандерсон делится личным опытом: при попытке воспроизвести этот эксперимент на стандартной предобученной модели Word2Vec самым близким вектором все же оказался сам исходный *«King»*, а *«Queen»* заняла лишь второе место [15:38]. Спикер объясняет это тем, что слово «королева» в обучающих текстах встречается не только как женский аналог короля, но и в других контекстах (например, музыкальная группа Queen или словосочетание drag queen) [15:52]. Однако при тестировании семейных отношений (например, разница между дядей и тетей в сопоставлении с разницей между мужчиной и женщиной) аналогия сработала безупречно [16:04]. 

В процессе градиентного спуска модель самостоятельно выделила в векторном пространстве конкретное направление, отвечающее за категорию гендера [16:18]. Добавление вектора этого направления смещает значение слова из мужского рода в женский. Аналогично модель сопоставляет «Япония — суши» с «Германия — братвурст» [16:30].

Визуализировать такие пространства крайне сложно, поскольку они обладают колоссальной размерностью [16:58]. В GPT-3 векторы токенов имеют 12 288 координат [17:12]. Высокая размерность критически важна для того, чтобы модель могла кодировать огромное количество независимых концептов и смысловых оттенков [17:12]. 

Чтобы продемонстрировать удивительные свойства многомерных пространств, Грант Сандерсон предлагает слушателям решить две геометрические задачи [19:17].

**Задача № 1 (простая)**: Какое максимальное количество векторов можно разместить в $N$-мерном пространстве так, чтобы все они были строго перпендикулярны (под углом 90 градусов) друг другу? [19:17]

Ответ: Ровно $N$ векторов. Это базовое определение размерности векторного пространства [20:08]. Если у нас 12 288 измерений, мы можем получить лишь 12 288 строго независимых понятий, что ничтожно мало для описания всего многообразия мира [19:02].

**Задача № 2 (сложная и контринтуитивная)**: Сколько векторов можно разместить в $N$-мерном пространстве, если ослабить требование строгой перпендикулярности и разрешить им быть *почти* перпендикулярными — например, под углами в диапазоне от 88 до 92 градусов? [20:20]

В двухмерном или трехмерном пространствах такое небольшое послабление практически не увеличивает количество возможных векторов [20:33]. Однако в пространствах высокой размерности математические законы меняются: количество почти перпендикулярных векторов растет **экспоненциально** относительно числа измерений [20:46]. 

Грант Сандерсон отмечает, что при проведении численных экспериментов со 100-мерными векторами ему удалось без труда разместить сотни тысяч векторов, попарный угол между которыми находился в пределах $90 \pm 2$ градусов [20:59]. Для 1000-мерных пространств это число исчисляется миллионами и миллиардами [21:12].

Этот математический феномен объясняет две важные вещи:

*   Как ИИ удается упаковывать гигантское количество независимых идей, концептов и грамматических правил в относительно скромные 12 000 измерений без их взаимного искажения [21:25].
*   Почему большие языковые модели демонстрируют сверхлинейный рост эффективности при увеличении размерности векторов в процессе масштабирования [21:51].

## 🔍 Запрос, ключ и значение: как устроен механизм внимания (Attention)
[[JUMP:22:04]]

Чтобы детально разобрать механизм внимания, Грант Сандерсон предлагает использовать упрощенный учебный пример [22:55]. Представим фразу: *«A fluffy blue creature roamed the verdant forest»* («Пушистое синее существо бродило по зеленеющему лесу») [22:55]. 

Нам необходимо понять, как информация от прилагательных («пушистое», «синее») передается существительному («существо»), чтобы обновить его векторное представление [23:09]. Исходный базовый вектор слова «существо» абстрактен [23:09]. Мы хотим, чтобы после прохождения слоя внимания этот вектор стал более специфичным и кодировал концепт именно *пушистого синего существа* [23:21].

Векторы исходно содержат не только информацию о значении самого слова, но и о его позиции в тексте (позиционное кодирование) [23:34]. Это необходимо для сохранения полной параллелизуемости вычислений: модель должна обрабатывать все токены одновременно, не привязываясь к их последовательному чтению шаг за шагом [23:47].

Математический дизайн слоя внимания спроектирован так, чтобы все вычисления производились через операции матричного умножения [24:51]. Это дает два ключевых преимущества:

1.  Матричное умножение чрезвычайно быстро выполняется на графических процессорах (GPU) за счет параллельных потоков вычислений [25:05].
2.  Линейные операции имеют простые производные, что значительно облегчает и ускоряет расчет градиентов при обратном распространении ошибки во время обучения [25:17].

Для реализации этого механизма используются три матрицы параметров, которые настраиваются в процессе обучения: матрица Запросов (Query), матрица Ключей (Key) и матрица Значений (Value) [25:30].

Вектор каждого слова умножается на матрицу Запросов $W_Q$, порождая вектор запроса (Query) [25:43]. Вектор запроса обычно имеет гораздо меньшую размерность, чем исходный эмбеддинг — например, всего 64 или 128 измерений вместо 12 288 [26:21]. Смысловая задача запроса — сформулировать «вопрос» от имени слова к своему контексту [25:43]. Для слова «существо» (существительное в четвертой позиции) запрос может звучать так: «Есть ли передо мной прилагательные, описывающие меня?» [25:55].

Параллельно векторы всех слов умножаются на матрицу Ключей $W_K$, создавая векторы ключей (Key) в том же самом сжатом 64-мерном пространстве [28:05]. Ключ — это «ответ» токена, описывающий его собственные характеристики [28:18]. Для слов «пушистое» и «синее» ключи будут транслировать информацию: «Я прилагательное, стою на такой-то позиции» [28:18].

Связь между запросом и ключом устанавливается через их геометрическое выравнивание в пространстве [29:11]. Если запрос одного слова («ищу прилагательные перед собой») совпадает по смыслу с ключом другого слова («я прилагательное перед тобой»), их векторы в 64-мерном пространстве должны указывать в одном направлении [29:23].

Степень их сонаправленности измеряется с помощью простейшей и вычислительно дешевой операции — скалярного произведения векторов (dot product) [29:37]:

*   Если векторы сонаправлены, скалярное произведение дает большое положительное число (слова тесно связаны) [29:50].
*   Если они перпендикулярны, результат равен нулю (слова не связаны) [29:50].
*   Если они указывают в противоположные стороны, результат отрицательный [29:50].

Вычислив скалярное произведение векторов запросов и ключей для всех пар слов в предложении, мы получаем квадратную матрицу (сетку) оценок внимания [30:02]. В нашем примере ячейки на пересечении строки «существо» со столбцами «пушистое» и «синее» покажут высокие положительные значения, тогда как связь с другими словами будет близка к нулю [30:15].

## 🎭 От матрицы оценок к нормированным весам и маскированию
[[JUMP:30:54]]

Полученные скалярные произведения еще не являются весами, так как они могут быть любыми вещественными числами [31:22]. Для превращения их в нормированные коэффициенты (от 0 до 1, дающие в сумме 1 по каждому столбцу) применяется функция Софтмакс (SoftMax) [31:48]. Она возводит значения в экспоненту и делит каждое на сумму всех экспонент столбца [31:48]. Это математически сглаживает распределение, выделяя максимальные значения и устремляя к нулю мелкие отрицательные величины [32:13]. При этом сохраняется непрерывность функции, что важно для расчета производных [32:41].

Перед применением Софтмакса значения скалярного произведения дополнительно делят на квадратный корень из размерности пространства ключей/запросов (в нашем примере — $\sqrt{64} = 8$) для предотвращения проблемы исчезающих градиентов при больших значениях [33:19].

Однако при обучении генеративных моделей возникает серьезная проблема [34:09]. Поскольку модель обучается на параллельном предсказании каждого последующего токена для всех префиксов текста одновременно, она «видит» весь текст целиком [34:09]. Если позволить всем токенам свободно общаться друг с другом, то при предсказании слова, следующего за «существо», модель просто подсмотрит правильный ответ, который уже содержится в следующих позициях входной строки [35:15].

Чтобы этого избежать, применяется механизм маскирования (Causal Attention) [36:48]. Все связи, где более поздние токены (будущее) передают информацию более ранним (прошлое), принудительно зануляются [35:29]. 

Для сохранения нормировки Софтмакса зануление выполняют элегантно [36:22]: всем элементам выше главной диагонали матрицы оценок (соответствующим влиянию будущих слов на прошлые) присваивается значение минус бесконечность ($-\infty$) [36:22]. При прохождении через экспоненту в функции Софтмакса эти значения превращаются в строгие нули, и веса распределяются корректно только по доступным левым токенам [36:35].

Грант Сандерсон указывает на ключевую проблему классического механизма внимания — его квадратичную сложность $O(N^2)$ относительно длины контекста [37:02]. Размер матрицы внимания растет пропорционально квадрату количества токенов [37:15]. Именно поэтому простое увеличение контекстного окна в современных LLM требует внедрения сложных алгоритмических оптимизаций [37:15].

При генерации нового текста в режиме реального времени возникает избыточность вычислений: на каждом новом шаге модель заново обрабатывает всю предысторию [37:42]. Для борьбы с этим применяется кэширование ключей и значений (KV-caching), что позволяет избежать квадратичного замедления на этапе вывода (inference), перенося основную тяжесть вычислений на этап обучения [37:56].

Спикер также возвращается к вопросу о символьной токенизации [38:23]. Использование отдельных символов в качестве токенов привело бы к:

1.  Взрывному росту длины контекста и, как следствие, к колоссальным затратам памяти из-за квадратичной сложности матрицы внимания [38:36].
2.  Необходимости тратить первые слои сети просто на сборку букв в слова для понимания их базового смысла [38:49].

Современным золотым стандартом выступает метод побайтового парного кодирования (BPE), находящий оптимальный баланс между размером словаря и длиной контекста [39:26].

## 💎 Формирование вектора изменений и мультиголовое внимание
[[JUMP:39:39]]

Когда матрица весов внимания сформирована, необходимо физически перенести смысл от слов-доноров («пушистое», «синее») к слову-реципиенту («существо») [39:39]. Для этого применяется третья матрица — матрица Значений (Value) [40:05].

Векторы исходных токенов умножаются на эту матрицу. Полученный вектор значения (Value) определяет, *что именно* данный токон должен передать другим словам, если они обратят на него внимание [40:05]. Вектор значения слова «пушистое» будет содержать математический сдвиг, добавляющий признак «пушистости» [40:19].

Если бы мы использовали прямое отображение из исходного 12 000-мерного пространства в него же, матрица Значений содержала бы слишком много параметров (в 100 раз больше, чем матрицы ключей и запросов) [40:45]. Для оптимизации вычислений ее представляют в виде низкорангового преобразования [41:11]: вектор сначала проецируется в промежуточное сжатое пространство малой размерности, а затем расширяется обратно до исходных 12 288 измерений [41:23].

Итоговое обновление вектора слова происходит следующим образом [41:36]:

1.  Берутся векторы Значений (Value) для всех токенов.
2.  Находится их взвешенная сумма, где весами выступают нормированные коэффициенты из матрицы внимания [41:49]. Для слова «существо» веса для всех слов, кроме «пушистое» и «синее», будут нулевыми [42:02].
3.  Полученный вектор изменений $\Delta E$ складывается с исходным базовым вектором токена [42:28].

На выходе из блока внимания мы получаем новый вектор, который теперь позиционируется в пространстве как «пушистое синее существо» [42:42]. Этот процесс протекает параллельно для всех токенов в последовательности [42:55].

Описанная схема представляет работу одной **головы внимания (Attention Head)** [43:07]. Однако за один проход через современную модель вычисляются тысячи таких голов параллельно [43:19]. Один блок внимания большой модели может содержать около 100 независимых голов, и каждый слой содержит свой блок внимания [43:31].

Различные головы внимания обучаются фокусироваться на разных типах связей в языке [43:58]:

*   Одна голова связывает прилагательные с существительными.
*   Другая сопоставляет глаголы с наречиями.
*   Третья ищет местоимения и их антецеденты (к какому имени собственному относится слово «он» или «она»).
*   Четвертая отслеживает логические и фактологические ассоциации.

Каждая голова вычисляет свои матрицы запросов, ключей и значений, создавая свой уникальный паттерн внимания [44:36]. Векторы изменений $\Delta E$ от всех голов просто суммируются и прибавляются к исходному эмбеддингу токена [45:03]. Пройдя через эту процедуру на десятках слоев, векторы приобретают невероятно глубокое смысловое наполнение [45:53].

## 📈 Почему трансформеры захватили мир? Сила масштабирования
[[JUMP:46:07]]

Грант Сандерсон отмечает, что с 2017 года трансформеры практически вытеснили все остальные архитектуры в сфере обработки естественного языка и активно проникают в соседние области [46:19]. Главная причина их тотального доминирования кроется в феномене масштабирования [46:32].

Эмпирические «законы масштабирования» (Scaling Laws) показывают, что простое увеличение объема обучающих данных и количества параметров модели предсказуемо снижает значение функции потерь (cost function) [46:45]. А более низкие потери напрямую транслируются в качественный скачок возможностей модели — от простого автодополнения слов до ведения осмысленного диалога [47:10].

Трансформеры идеально подходят для масштабирования благодаря следующим факторам:

*   **Отказ от рекуррентности**. Предыдущие архитектуры (RNN, LSTM) обрабатывали текст последовательно, слово за словом, накапливая скрытое состояние [47:23]. Их невозможно было эффективно распараллелить на GPU [47:23]. Трансформер обрабатывает весь контекст целиком в один проход, обеспечивая максимальную утилизацию вычислительной мощности современных чипов [47:37].
*   **Самообучение без учителя (Unsupervised Learning)**. Задача предсказания следующего токена не требует ручной разметки данных людьми [48:02]. Модель может обучаться на терабайтах неразмеченных текстов из интернета [48:14]. Ручная разметка (например, обучение с подкреплением на основе отзывов людей — RLHF) требуется лишь на финальном этапе тонкой настройки чат-бота [48:28].
*   **Универсальность токенизации**. Поскольку токенизировать можно любой тип данных (звук, изображения, видео, генетический код), трансформер способен объединять разные модальности в рамках одной архитектуры без создания специфических гибридных систем [48:53].

## ❓ Вопросы и ответы: о глубоких раскопках, аналоговых вычислениях и двумерном внимании
[[JUMP:49:58]]

После завершения основной лекции Грант Сандерсон ответил на вопросы аудитории.

**Вопрос**: Как много времени вы лично посвятили изучению этой темы за последние месяцы? [50:13]

**Грант Сандерсон**: Гораздо больше, чем я планировал изначально, но это было невероятно увлекательно [50:13]. Будучи математиком по образованию, я провел много часов в беседах с экспертами, особенно с исследователями в области интерпретируемости нейросетей [50:25]. Моя цель — создавать наглядные педагогические визуализации, но сами темы, которые вскрываются в процессе, поражают [50:38]. 

Например, упомянутая ранее гипотеза суперпозиции (Superposition Hypothesis) — о том, как модель умудряется кодировать гораздо больше признаков, чем у нее есть физических измерений в пространстве, используя почти перпендикулярные направления [50:50]. Это глубочайшая математическая кроличья нора, которая заслуживает отдельного видео [51:16].

**Вопрос**: В сверточных нейросетях исследователи когда-то столкнулись с проблемой затухающих градиентов и решили ее с помощью остаточных связей (ResNet), пропускающих сигнал без изменений. Есть ли подобные тренды в трансформерах? [51:42]

**Грант Сандерсон**: В трансформерах эта идея (резидуальность) внедрена на самом базовом уровне с самого начала [52:07]. Каждый блок внимания не заменяет исходный вектор новым значением, а вычисляет изменение $\Delta E$ и прибавляет его к исходному вектору [52:20]. Это сохраняет стабильность размерности векторов на протяжении всех 100 слоев и обеспечивает высочайшую стабильность градиентов при обучении [52:32]. Создатели архитектуры трансформеров изначально отлично понимали особенности аппаратного обеспечения и закладывали эти принципы в фундамент модели [52:32].

**Вопрос**: Есть ли у вас метрики для шуток во время длинных выступлений, чтобы люди не засыпали? Работает ли с вами команда креативщиков? [52:57]

**Грант Сандерсон**: Нет, у меня нет команды креативных мыслителей [53:23]. Я обычный ботаник (nerd), который просто глубоко погружается в тему [53:23]. При подготовке материалов я руководствуюсь исключительно стремлением к ясности понимания, а не юмором [53:36]. Я верю, что лучшая мотивация для зрителя досмотреть длинное видео до конца — это искреннее обещание того, что в финале он действительно разберется в сложной теме [53:49]. Если люди верят в это обещание, они готовы удерживать внимание без всяких шуток [54:03].

**Вопрос**: Если вы используете GPU для вычислений, но при этом модель толерантна к небольшим ошибкам (ведь все вычисляется через мягкие ассоциации), почему бы не перейти на аналоговые компьютеры для решения проблемы энергоэффективности? [54:16]

**Грант Сандерсон**: Это отличный вопрос, хотя я и не являюсь экспертом в области аналоговых вычислений [54:29]. С точки зрения физики, использование аналоговых систем в ИИ выглядит крайне логично [54:41]. В цифровых компьютерах 1940-х годов от аналоговых систем отказались в основном из-за лавинообразного накопления ошибок при последовательных вычислениях [54:54]. В нейросетях, где все завязано на мягкие вероятностные ассоциации, строгая цифровая точность действительно не так важна [55:06]. 

По моему мнению, главная причина, почему аналоговые чипы до сих пор не вытеснили цифровые GPU — это колоссальный технологический задел последних [55:21]. Огромное количество интеллектуальных и финансовых ресурсов было вложено в оптимизацию цифрового матричного умножения на GPU до предела [55:21]. Аналоговым системам невероятно сложно догнать этот локомотив, даже если с фундаментальной физической точки зрения они более перспективны [55:33].

**Вопрос**: Звук и текст по своей природе одномерны — они разворачиваются во времени или слева направо. Но изображения изначально двумерны. Пиксели сверху и снизу важнее для контекста, чем пиксели в конце строки. Как токенизировать изображения для трансформера с учетом этого фактора? [55:45]

**Грант Сандерсон**: При токенизации изображений картинка разбивается на небольшие квадратные фрагменты (патчи), которые и выступают в качестве токенов [56:24]. Двумерность пространства учитывается на этапе позиционного кодирования (Positional Encoding) [56:36]. Модель получает информацию о координатах патча сразу по осям X и Y, что позволяет вектору «знать», где именно на плоскости он находится [56:36]. 

Чтобы избежать вычислительного взрыва при расчете внимания на миллионах пикселей, разработчики идут на ухищрения — например, применяют маскированное внимание, которое сначала вычисляется по строкам, а затем по столбцам [57:01]. Существует множество подходов, но все они опираются на двумерное позиционное кодирование [57:14].