Практика: предсказание следующего токена
⏱️ Примерное время: ~12 минут · 🎯 Урок 5 курса «Возможности и ограничения ИИ»
Отправьте сообщение
Давным-давно мы с друзьями играли в такую игру: берёшь телефон и составляешь сообщение другу, используя только подсказываемые слова. Может быть, вы тоже так делали.
Вот симулятор, «обученный» на небольшом объёме контента. Попробуйте поиграть!
Мы говорили об этом как о «боте-двойнике». Мы знали, что он подсказывает слова на основе наших индивидуальных привычек, и в персональных подсказках узнавали собственный голос.
Тогда мы охотно списывали это на технологическую магию. Думаю, мы и не догадывались, насколько простым может быть алгоритм.
Читайте дальше, если хотите собрать такой вместе со мной :)
«Обучение» вашей модели
Давайте обучим её на горстке сообщений. Всё, что нам нужно, — это подсчитать связи между словами. Сделаем это по одному сообщению за раз.
Матрица переходов
Добавьте сообщения выше, чтобы начать строить матрицу.
Эта готовая карта связей между словами называется таблицей частот. Нормализуйте каждую строку — и вы получите распределение вероятностей того, что идёт следующим.
Сам выбор следующего слова на основе того, что уже есть, называется сэмплированием (выборкой). Тот же термин мы используем и для этого процесса в современных языковых моделях вроде Claude.
Немного сэмплирования
Используя ту же матрицу, построенную на 5 текстах, сыграйте в нашу игру уже более осознанно. Мы будем показывать вам вероятности.
Подсвеченная строка — это ваш текущий контекст. Выберите слово из доступных вариантов, чтобы продолжить.
Увеличиваем масштаб
Пять сообщений дали нам крошечную матрицу и горстку предсказаний. А что будет с бо́льшим объёмом данных?
После:
Регуляторы (ручки настройки)
Когда вы сэмплировали, вы видели вероятности, но при этом полагались и на интуицию: какие слова «ощущаются правильными».
Если бы вам пришлось писать код, чтобы делать этот выбор вместо опоры на чутьё, какое закодированное правило, по-вашему, давало бы наилучший результат?
Отлично. Поиграйте с регуляторами ниже, чтобы увидеть, как параметры сэмплирования влияют на выбор языковой модели. Затем проверьте, насколько ваша интуиция совпала с реальностью.
Разработчики используют такие параметры, как температура и обрезание «хвоста», чтобы улучшить сэмплирование уже после того, как вероятности сгенерированы.
После «think» («думать»):
Точное сэмплирование из распределения.
Обрезание «хвоста»
Полностью убрать маловероятные слова перед сэмплированием.
Выживают только 3 самых вероятных слова.
Сохранить наименьший набор слов, вероятности которых в сумме дают 90%.
В отличие от top-k, этот подход подстраивается под уверенность модели: когда модель уверена, выживает меньше слов; когда сомневается — больше.
Если вы делали выбор раньше, вы интуитивно выбрали один из этих подходов.
Мост
Стратегии сэмплирования, которые вы только что применяли, — это, в общем-то, те же ограничения сэмплирования, которые разработчики передают Claude. Для LLM есть несколько отличий.
Поиск по таблице Маркова — очень простая и объяснимая операция. Прямой проход (forward pass) через нейросеть заметно сложнее. Но в любом случае результат один и тот же: распределение вероятностей вероятных следующих слов или токенов.
Хотя сэмплирование одинаково, обучение радикально отличается. Прежняя экспоненциальная стена (vocabulary^N строк) здесь не действует. LLM меняют объяснимость простого подсчёта слов на гораздо больший контекст и значительно более широкие возможности.
Технология, которой 100 лет
«А это вообще настоящая технология?» Отличный вопрос, читатель.
Марков опубликовал эту идею в 1906 году. Спустя столетие, в 2010 году, n-граммные модели вроде этой уже обеспечивали предсказание следующего слова на вашем телефоне (SwiftKey, а затем Apple QuickType). Около 2015 года нейросети — сначала RNN, затем трансформеры в 2017-м — начали заменять подход с поиском по таблице обученной функцией, а дальше... ну, это то, над чем мы работаем сейчас.
*Адаптировано с русским переводом. Оригинал: © 2025 Anthropic. All rights reserved.*