Вся идея в одной цепочке
Вот весь путь. Не волнуйтесь, если сначала это звучит как загадка; остальная часть статьи раскрывает каждое звено.
Разбейте предложение на кусочки — получите токены. Превратите токены в списки чисел — получите эмбеддинги. Пусть каждый токен задаст вопрос — получите запрос (query); пусть остальные ответят — получите ключи (keys) и значения (values). Сравните запросы с ключами — получите оценки внимания. Нормализуйте их с помощью softmax — получите веса внимания. Используйте веса, чтобы смешать значения, — получите контекст. Сделайте это для каждого токена — получите self-attention. Добавьте сеть прямого распространения, остаточные связи и нормализацию — получите блок трансформера. Сложите блоки в стопку — получите трансформер. Обучите его предсказывать следующий токен — получите языковую модель. Научите его следовать инструкциям и учиться на обратной связи от людей — получите нечто очень близкое к ChatGPT.
Шаг 1: разбейте предложение на кусочки — получите токены
Компьютер не читает слова так, как вы. Первое, что делает языковая модель, — нарезает текст на небольшие фрагменты, называемые токенами. Токеном может быть целое слово («собеседование»), часть слова («собесед» + «ование»), знак препинания или даже пробел, приклеенный к слову.
Почему не целые слова? Их слишком много, и каждый день появляются новые. С частями слов модель справляется с любым текстом, включая редкие имена и опечатки, имея фиксированный словарь из нескольких десятков тысяч токенов. Каждому токену в этом словаре присваивается числовой идентификатор. Фраза «Я прошёл собеседование» может превратиться во что-то вроде [40, 1734, 279, 7274].
Один токен — это примерно три четверти английского слова, поэтому «контекстное окно в 128 000 токенов» означает около 95 000 слов, которые модель может учитывать одновременно.
Шаг 2: превратите токены в векторы — получите эмбеддинги
Идентификатор токена вроде 7274 — всего лишь метка. Он ничего не говорит о смысле. Поэтому модель находит каждый идентификатор в большой таблице и заменяет его длинным списком чисел, часто из сотен или тысяч значений. Этот список называется вектором, а вектор, представляющий токен, называется эмбеддингом.
Эти числа никто не пишет вручную. Они начинаются как случайные и подстраиваются в ходе обучения, пока не отразят, что означает каждый токен и как он используется.
Шаг 3: расположите эмбеддинги в пространстве — смысл становится геометрией
Представьте каждый эмбеддинг как координаты точки — и каждый токен станет местом в огромном многомерном пространстве. Тысячу измерений не вообразить, но идея работает и в двух-трёх.
В этом пространстве токены со схожим смыслом оказываются рядом. «Зарплата» находится рядом с «оплатой» и «вознаграждением». «Собеседование» — рядом со «встречей» и «наймом». Даже направления могут нести смысл: известный пример — шаг от «мужчины» к «женщине» указывает примерно в ту же сторону, что и шаг от «короля» к «королеве».
Сами по себе эмбеддинги не говорят, где стоит токен, а порядок меняет смысл: «кандидат опросил менеджера» — это не то же самое, что «менеджер опросил кандидата». Поэтому модели добавляют к каждому вектору ещё и информацию о позиции.
Шаг 4: каждый токен задаёт вопросы и отвечает на них: запросы, ключи и значения
Слова меняют смысл в зависимости от соседей: «ключ» значит разное в «ключ от двери» и «родниковый ключ». Поэтому каждому токену нужно смотреть на остальные. Это важнейшая идея современного ИИ.
Из эмбеддинга каждого токена модель создаёт три новых вектора, умножая его на три обученные таблицы чисел:
- Запрос (query): вопрос, который задаёт этот токен. Представьте слово «он», спрашивающее: «На какое существительное выше по предложению я ссылаюсь?»
- Ключ (key): то, что этот токен предлагает, как ярлык на картотечном шкафу. Ключ существительного мог бы по сути говорить: «Я — то, на что можно сослаться».
- Значение (value): реальная информация, которую этот токен отдаст, если другой токен сочтёт её важной.
Представьте библиотеку: запрос — это ваш поиск, ключи — названия на полках, а значения — то, что внутри книг.
Шаг 5: сравните запрос с ключами — получите оценки внимания
Каждый токен сравнивает свой запрос с ключом каждого токена, который он видит, с помощью скалярного произведения: два вектора перемножаются число за числом, а результаты складываются. Похожие направления дают большой результат, не связанные между собой — малый или отрицательный.
Результат — набор оценок внимания, по одной для каждой пары токенов. Высокая оценка означает: «этот другой токен кажется важным для моего вопроса». В предложении «Рекрутер позвонила кандидатке, потому что ей понравилось её портфолио» токен «её» должен дать высокую оценку с «кандидатке» и более низкую с «рекрутер».
Шаг 6: нормализуйте оценки с помощью softmax — получите веса внимания
Сырые оценки могут быть любого размера, положительными или отрицательными. Функция softmax превращает их в положительные значения, которые в сумме дают ровно 1, а самым большим оценкам достаётся заметно большая доля.
Эти доли и есть веса внимания — что-то вроде процентов сосредоточенности. Упрощённый пример для «её»:
| Другой токен | Сырая оценка | Вес внимания |
|---|---|---|
| кандидатке | 4,0 | 0,84 |
| рекрутер | 2,0 | 0,11 |
| позвонила | 1,0 | 0,04 |
| что | -1,0 | 0,01 |
Таким образом, «её» направит около 84% своего внимания на «кандидатке».
Шаг 7: используйте веса, чтобы объединить значения, — получите контекст
Теперь каждый токен строит новый вектор как взвешенную смесь значений: 84% значения от «кандидатке», 11% от «рекрутер» и так далее. Результат — новое представление «её», несущее информацию о том, к кому «её» на самом деле относится.
Именно это и означает контекст внутри модели. Слово больше не просто абстрактное «её»; это «её, то есть кандидатки, в предложении о портфолио».
Шаг 8: пусть так делает каждый токен — получите self-attention
Когда каждый токен выполняет этот процесс одновременно, это называется self-attention (самовнимание): предложение обращает внимание на само себя.
Два усовершенствования делают его мощным:
- Только токены, которые он видит. В модели, которая пишет текст, каждый токен может смотреть только на предыдущие токены, никогда вперёд. Эта причинная маска существует потому, что при генерации будущих слов ещё нет.
- Много голов одновременно. Модели запускают параллельно несколько процессов внимания, называемых головами внимания, у каждой — свои таблицы запросов, ключей и значений. Одна может отслеживать грамматику, другая — кто на кого ссылается. Это многоголовое внимание (multi-head attention).
Шаг 9: добавьте сеть прямого распространения, остаточные связи и нормализацию — получите блок трансформера
Внимание делится информацией; модели нужно ещё и обработать её. Три дополнительные части завершают блок:
- Сеть прямого распространения (feed-forward): после внимания вектор каждого токена отдельно проходит через небольшую нейросеть. Если внимание — это совещание, где все делятся заметками, то здесь каждый обдумывает их за своим столом.
- Остаточные связи (residual): вместо того чтобы заменять вектор токена новым результатом, модель прибавляет результат к исходному. Это сохраняет прежнюю информацию и облегчает обучение глубоких сетей.
- Нормализация: шаг, который приводит числа к устойчивому диапазону, чтобы они не разрастались бесконтрольно и не сжимались до нуля при прохождении через множество слоёв.
Внимание плюс сеть прямого распространения, обёрнутые остаточными связями и нормализацией, — это один блок трансформера.
Шаг 10: сложите блоки в стопку — получите трансформер
Один блок даёт скромное понимание. Сложите их десятки, чтобы выход одного питал следующий, — и получится трансформер, архитектура, представленная исследователями Google в статье 2017 года «Attention Is All You Need». Это «T» в GPT, что расшифровывается как «Generative Pre-trained Transformer».
Каждый слой уточняет картину: ранние слои, как правило, схватывают грамматику, более поздние — более абстрактные идеи, такие как тон и намерение. Веса во всех этих таблицах, числа, которым учится модель, и называются параметрами. У больших моделей их миллиарды.
Шаг 11: обучите его предсказывать следующий токен — получите языковую модель
Пока что у нас есть машина, превращающая текст в векторы с учётом контекста. Теперь дадим ей задачу. В конце стопки модель превращает вектор последнего токена в оценку для каждого токена своего словаря, затем снова применяет softmax, чтобы получить вероятность для каждого. Иначе говоря: «Учитывая всё сказанное, что будет дальше?»
Во время обучения модель читает огромные объёмы текста: книги, статьи, код, сайты. В каждой позиции она угадывает следующий токен, сравнивает догадку с настоящим и слегка сдвигает все свои параметры в сторону, которая сделала бы верный ответ вероятнее. Повторите это триллионы раз — и получите языковую модель.
Эта простая задача многому учит: чтобы предсказать следующее слово в учебнике или договоре, модели приходится усвоить грамматику, факты и шаблоны рассуждения.
Генерация текста — это просто такое предсказание в цикле. Модель выбирает следующий токен, обычно выбирая случайно в соответствии с вероятностями (параметр под названием температура управляет тем, насколько смелым будет выбор), добавляет его к тексту и предсказывает снова — по одному токену за раз.
Шаг 12: научите его следовать инструкциям и учиться на обратной связи — получите ChatGPT
Модель, обученная только предсказывать следующий токен, — блестящее автодополнение, но не помощник. Задайте ей вопрос — и она может ответить тремя другими вопросами. Исправляют это два дополнительных этапа обучения:
- Настройка на инструкциях (instruction tuning): модель обучают на множестве примеров, где за просьбой следует хороший, полезный ответ. Она усваивает шаблон «кто-то спрашивает — я отвечаю с пользой».
- Обучение на обратной связи от людей: люди сравнивают пары ответов модели и выбирают лучший. Эти предпочтения используются, чтобы дальше направлять модель к полезным, точным и безопасным ответам. Это называется обучением с подкреплением на основе обратной связи от людей, или RLHF.
Добавьте интерфейс чата — и получите нечто близкое к ChatGPT, Claude или Gemini: тот же трансформер, настроенный действовать как помощник.
Всё вместе: путь одного предложения
Представьте, что вы вводите: «Самый сложный вопрос на собеседовании —…» За доли секунды происходит следующее:
- Текст делится на токены, и каждый становится эмбеддингом с информацией о позиции.
- В каждом блоке трансформера каждый токен формирует запрос, ключ и значение, оценивает предыдущие токены, превращает оценки в веса и подмешивает их значения. «Сложный» связывается с «вопрос», и фраза понимается как тема собеседования.
- Слои прямого распространения обрабатывают каждый обновлённый вектор; остаточные связи и нормализация сохраняют устойчивость; десятки блоков уточняют его дальше.
- Итоговый вектор превращается в вероятности по словарю. Токен вроде «расскажите» получает высокую оценку; модель выбирает его, добавляет и начинает заново.
Краткий глоссарий
| Термин | Простыми словами |
|---|---|
| Токен | Небольшой фрагмент текста, часто слово или его часть |
| Вектор | Упорядоченный список чисел |
| Эмбеддинг | Вектор, представляющий смысл токена |
| Запрос / Ключ / Значение | Что токен спрашивает / что предлагает / чем делится |
| Оценка внимания | Насколько один токен кажется важным для другого |
| Softmax | Превращает оценки в доли, дающие в сумме 1 |
| Вес внимания | Доля сосредоточенности, которую один токен отдаёт другому |
| Контекст | Смысл токена, уточнённый его соседями |
| Self-attention | Каждый токен обращает внимание на токены, которые видит |
| Блок трансформера | Внимание + сеть прямого распространения + остаточные связи + нормализация |
| Параметры | Выученные числа внутри модели |
| Контекстное окно | Сколько токенов модель может учитывать одновременно |
Почему это важно для вашей карьеры
Если вы идёте на собеседование на должность, связанную с ИИ, умение объяснить токены или внимание простыми словами — реальное преимущество. Это также делает вас более грамотным пользователем ИИ-инструментов: вы поймёте, почему они могут уверенно выдавать неверные факты (они предсказывают вероятный текст, а не проверенную истину) и почему чёткий, конкретный промпт даёт лучшие ответы. О практическом применении читайте в наших руководствах как использовать ИИ-инструменты для подготовки к собеседованиям и что на самом деле меняют ИИ-помощники на собеседованиях.
Часто задаваемые вопросы
Чем токен отличается от слова?
Токен — это единица, которую читает языковая модель. Распространённые слова часто бывают одним токеном, а более длинные или редкие делятся на несколько частей. В английском один токен в среднем составляет около трёх четвертей слова.
Понимает ли языковая модель то, что говорит?
Она строит богатые внутренние представления смысла и контекста, но обучена предсказывать вероятный текст, а не проверять факты. Поэтому её ответы могут звучать уверенно и всё равно быть неверными, а важные утверждения всегда нужно проверять.
ChatGPT — это просто трансформер?
По сути, да: большой трансформер, обученный предсказывать следующий токен. Полезным помощником его делают дополнительное обучение на инструкциях и обратной связи от людей, а также продукт, построенный вокруг него.