Текст вашему другу Марков
Text Your Friend Markov — переработка бренда Anthropic
Палитра Sky→Clay, шрифты Anthropic Sans/Serif
:root {
--ink-2: #3D3D3A;
--ink-3: #73726C;
--ink-4: #7A7870;
/* ========== Макет статьи ========== */
/* ========== Разделитель ========== */
/* ========== Рамка телефона ========== */
width: 72px; height: 5px;
.prediction-btn:active,
/* ========== Область обучения ========== */
/* ========== Матрица ========== */
table.matrix th,
/* ========== Сэмплер ========== */
left: 0; top: 0; bottom: 0;
/* ========== Раздел с масштабированием ========== */
left: 0; top: 0; bottom: 0;
/* ========== Викторина / Ползунки ========== */
/* ========== Сравнительная таблица ========== */
.grid-markov,
/* ========== Куки / завершение ========== */
Попробуйте в действии
Текст вашему другу Марков
"Тренировка" вашей модели
Давайте обучим модель на нескольких сообщениях. Нам нужно всего лишь подсчитать связи между словами. Сделаем это по одному сообщению за раз.
- + Добавить сообщение 1
Матрица переходов
Добавьте сообщения выше, чтобы начать построение матрицы.
Эта готовая карта связей между словами называется частотной таблицей. Нормализуйте каждую строку, и вы получите вероятностное распределение того, что будет дальше.
Процесс выбора следующего слова на основе имеющегося контекста называется сэмплингом. Мы используем тот же термин для этого процесса в современных языковых моделях, таких как Claude.
Сделайте сэмплинг
Используя ту же матрицу на основе 5 текстов, попробуйте поиграть в нашу игру с более обоснованными предсказаниями. Мы покажем вам вероятности.
- ↻ Начать заново
Выделенная строка — это ваш текущий контекст. Выберите слово из доступных вариантов, чтобы продолжить.
Масштабируем
Пять сообщений дали нам крошечную матрицу и несколько предсказаний. Что произойдет с большим объемом данных?
- + 1 сообщение
- + 10
- + 50
- Все 222
| 5 сообщений | |
|-------------|-|
| 17 уникальных слов | |
| 13 контекстов | |
| 24 перехода | |
| 2 максимальных варианта | |
После:
Ползунки
Во время сэмплинга вы могли видеть вероятности, но также полагались на интуицию в выборе слов, которые "звучали правильно".
Если бы вам пришлось писать код для принятия этих решений вместо использования интуиции, какое правило кодирования, по вашему мнению, создало бы лучший результат?
- Всегда выбирать слово с наибольшей вероятностью
- Выбирать полу-случайно, согласно вероятностям
- Выбирать согласно вероятностям, но также усиливать наиболее вероятные варианты
- Игнорировать всё, что ниже определенного порога вероятности
- Учитывать только топ N вариантов
- Режим гоблина — игнорировать вероятности и выбирать что-то случайное
- Показать мне ползунки
Отлично. Поиграйте с ползунками ниже, чтобы увидеть, как параметры сэмплинга влияют на выбор языковой модели. Затем сравните, как ваша интуиция совпадает с ними.
Разработчики используют такие параметры, как температура и обрезка хвоста, чтобы улучшить сэмплинг после генерации вероятностей.
После "think":
Температура
1.0
focusedrandom
Сэмплинг в точном соответствии с распределением.
Обрезка хвоста
Удаление маловероятных слов полностью перед сэмплингом.
- Нет
- Top-k
- Top-p
Top words: 3
Остаются только 3 самых вероятных слова.
Вероятностная масса: 0.9
Оставляем минимальный набор слов, сумма вероятностей которых составляет 90%.
В отличие от top-k, это адаптируется к уверенности модели — когда модель уверена, остается меньше слов. Когда она не уверена, остается больше.
- Сгенерировать
- Сбросить
Если вы делали выбор ранее, вы интуитивно выбрали один из этих подходов.
Как моя интуиция соотносится с этими параметрами?
Мост
Только что использованные вами стратегии сэмплинга более или менее совпадают с теми ограничениями сэмплинга, которые разработчики передают Claude. Для больших языковых моделей есть несколько отличий.
| Цепь Маркова | LLM |
|--------------|-----|
| 1. Чтение контекста | последнее слово: "think" | 1. Чтение контекста | вся предыдущая беседа |
| 2. Вычисление распределения | поиск одной строки в таблице | 2. Вычисление распределения | прямой проход через миллиарды параметров — внимание, эмбеддинги, слои прямой передачи, остаточные соединения, нормализаторы слоёв... |
| 3. Сэмплинг следующего токена | we 32% the 16% i 11% | 3. Сэмплинг следующего токена | тот же процесс |
Поиск в таблице цепи Маркова — это действительно простая и объяснимая операция. Прямой проход через нейросеть — это гораздо более сложный процесс. Но в обоих случаях результат один и тот же: вероятностное распределение вероятных следующих слов или токенов.
Хотя сэмплинг одинаковый, обучение радикально отличается. Ранее существовавшая экспоненциальная стена (строки vocabulary^N) здесь не применяется. Большие языковые модели жертвуют объяснимостью простого подсчёта слов ради гораздо большего контекста и возможностей.
Технология столетней давности
"Это реальная технология?" Отличный вопрос, читатель.
Марков опубликовал эту идею в 1906 году. Спустя столетие, в 2010 году, n-граммовые модели, подобные этой, использовались для предсказания следующего слова на вашем телефоне (SwiftKey, затем Apple QuickType). Около 2015 года нейронные сети — сначала RNN, затем трансформеры в 2017 году — начали вытеснять подход с таблицей поиска обучаемой функцией, и всё остальное... ну, это то, над чем мы работаем сейчас.