Anthropic Academy Courses My Profile Sign Out

Попробуйте сами

Текст вашему другу Марков

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 году — начали вытеснять подход с таблицей поиска обучаемой функцией, и всё остальное... ну, это то, над чем мы работаем сейчас.