Глава 1.1 — Что такое языковая модель на самом деле

Содержание

  1. Откуда взялась эта идея: коммуникация как статистический процесс
  2. Вероятностная постановка задачи: языковое моделирование как предсказание следующего токена
  3. Как измерить языковую модель: энтропия, перекрёстная энтропия и перплексия
  4. Почему предсказание — такой мощный обучающий сигнал
  5. Взгляд с точки зрения собеседования
  6. Вопросы для самопроверки
  7. Источники

1. Откуда взялась эта идея: коммуникация как статистический процесс

Задолго до того, как кто-либо обучил нейронную сеть на текстах, ключевая идея, лежащая в основе языкового моделирования, уже была сформулирована на бумаге: сообщение можно рассматривать как результат случайного процесса, а задача хорошей модели этого процесса — предсказывать, что будет дальше, максимально точно.

Эта идея восходит к статье Клода Шеннона 1948 года «A Mathematical Theory of Communication» («Математическая теория связи»), написанной для решения инженерной задачи, не имеющей никакого отношения к смыслу или грамматике: как передать сообщение по зашумлённому каналу, используя как можно меньше бит? Ключевая мысль Шеннона состояла в том, что статистическая структура сообщения — насколько предсказуем следующий символ, если известны предыдущие, — определяет, насколько сообщение сжимаемо. Источник с высокой предсказуемостью (например, английский текст, где после «q» почти всегда идёт «u») требует меньше бит для кодирования, чем источник чистого шума, где каждый символ — неожиданность.

Стоит задержаться на этой мысли, потому что именно она пронизывает всю эту книгу. Языковое моделирование зародилось не как попытка построить нечто, что «понимает» язык. Оно началось как попытка построить нечто, что хорошо предсказывает язык, — и оказалось, что предсказание, доведённое до достаточной глубины, вынуждает модель кодировать огромный объём того, что мы обычно называем пониманием, просто потому, что понимание — это то, что делает хорошее предсказание возможным. Современные LLM — это крайняя точка линии, которая начинается с того, что Шеннон рассматривал английский язык как стохастический источник и задавался вопросом, сколько бит на букву ему на самом деле нужно.

2. Вероятностная постановка задачи: языковое моделирование как предсказание следующего токена

Формально языковая модель присваивает вероятность последовательности токенов (слов, подслов или символов — к вопросу токенизации мы вернёмся подробно в одной из следующих глав). Дана последовательность токенов \(x_1, x_2, \ldots, x_n\), языковая модель оценивает:

$$P(x_1, x_2, \ldots, x_n)$$

По цепному правилу теории вероятностей эту совместную вероятность всегда можно разложить в произведение условных вероятностей:

$$P(x_1, \ldots, x_n) = \prod_{i=1}^{n} P(x_i \mid x_1, \ldots, x_{i-1})$$

Это разложение — самое важное уравнение во всей книге. Оно говорит о том, что моделирование целой последовательности сводится к моделированию одной вещи, снова и снова: зная всё, что было раньше, что будет дальше? Каждая архитектура, рассматриваемая в этой книге, — таблицы n-грамм, RNN, LSTM и трансформеры — это разный инженерный ответ на один и тот же вопрос: как вычислить \(P(x_i \mid x_1, \ldots, x_{i-1})\) как можно лучше и как можно эффективнее?

Именно из-за этой постановки задачи термины «языковая модель» и «предсказатель следующего токена (next-token predictor)» в этой книге фактически являются синонимами, и именно поэтому это гораздо более сильное понятие, чем может показаться на слух. Чтобы хорошо предсказывать следующий токен, нужно отслеживать синтаксис (какая часть речи здесь грамматически уместна), семантику (какое слово имеет смысл с учётом темы), знания о мире (на какой факт идёт отсылка) и даже рассуждение (какой вывод следует из уже изложенных посылок). Модель, предсказывающая следующий токен во фразе «Столица страны, где находится Эйфелева башня, — это», почти обязана закодировать географический факт, чтобы справиться с этим хорошо. Предсказание следующего токена — обманчиво узко звучащая цель, которая при масштабировании на весь диапазон человеческих текстов оказывается почти бездонной по глубине.

Стоит точно описать, что «модель» механически делает на каждом шаге: она выдаёт распределение вероятностей по всему словарю для того, каким будет следующий токен, при условии всего, что было до этого. Генерация — это просто многократное сэмплирование из этого распределения, токен за токеном, при этом каждый выбранный токен подаётся обратно как новый контекст — процесс, обычно называемый авторегрессионной генерацией. Это верно вне зависимости от того, оценивается ли базовое распределение подсчётом n-грамм в корпусе или трансформером со ста миллиардами параметров; постановка задачи не меняется — меняется только качество и стоимость оценки \(P(x_i \mid x_1, \ldots, x_{i-1})\).

3. Как измерить языковую модель: энтропия, перекрёстная энтропия и перплексия

Если языковое моделирование сводится к тому, чтобы хорошо оценивать условные вероятности, нам нужен способ измерить это «хорошо». Здесь на сцену снова выходит теория информации Шеннона, уточнённая специально для языкового моделирования Фредом Елинеком (Fred Jelinek) и его коллегами из IBM в 1970-х годах — в работах по распознаванию речи.

Энтропия Шеннона \(H\) измеряет среднее число бит, необходимых для кодирования символа из источника при известном истинном распределении этого источника. Для языковой модели истинное распределение английского языка нам неизвестно (его не знает никто), поэтому вместо этого мы измеряем перекрёстную энтропию (cross-entropy): сколько бит в среднем нужно предсказанному моделью распределению, чтобы закодировать текст, реально пришедший из истинного распределения. Модель, которая присваивает высокую вероятность фактически встречающимся токенам, имеет низкую перекрёстную энтропию; модель, которая часто «удивляется» следующему токену, имеет высокую перекрёстную энтропию.

Перплексия — это просто перекрёстная энтропия, выраженная в более интерпретируемой шкале: это 2 в степени перекрёстной энтропии (или \(e\) в этой степени, в зависимости от того, работаете ли вы в битах или натах). Елинек с коллегами ввели этот показатель явно как «меру сложности задач распознавания речи» — способ выразить одним числом, насколько хорошо модель в среднем предсказывает следующее слово. Перплексия, равная 1, означает, что модель никогда не удивляется — она всегда присваивает вероятность 1 тому, что реально идёт дальше, а такое возможно только для тривиальной или заученной наизусть последовательности. Перплексия, равная \(V\) (размеру словаря), — это то, что получилось бы у модели, равновероятно угадывающей среди всех возможных токенов. Хорошо обученная модель на естественном тексте находится где-то между этими крайностями, и чем ниже перплексия, тем лучше: неформально это означает «модель ведёт себя так, будто на каждом шаге ей приходилось выбирать лишь из стольких примерно равновероятных вариантов», даже если реальный словарь может насчитывать десятки тысяч токенов.

$$\text{PPL} = 2^{H(p,q)} = 2^{-\frac{1}{N}\sum_{i=1}^{N}\log_2 q(x_i \mid x_{<i})}$$

Родственная метрика, которую стоит знать, — биты на символ (bits-per-character), или биты на байт для версии, не зависящей от токенизатора: вместо того чтобы измерять неожиданность на предсказанный токен, она измеряет неожиданность на «сырой» символ или байт исходного текста, деля суммарную перекрёстную энтропию модели в битах на число символов или байтов, которые фактически составляют предсказанные токены:

$$\text{BPC} = \frac{H_{\text{bits}}}{N_{\text{characters}}}$$

Это важно, потому что численное значение перплексии зависит от словаря, который использует токенизатор конкретной модели, — перплексия 15, посчитанная под одним токенизатором, и перплексия 15, посчитанная под другим, измеряют не одно и то же, поскольку две модели удивляются кускам текста разного размера, и напрямую сравнивать сырые числа бессмысленно. Биты на символ обходят эту проблему, привязывая единицу измерения к самому тексту, а не к тому, на какие куски его режет конкретный токенизатор, — именно поэтому эта метрика становится метрикой выбора при сравнении моделей, использующих принципиально разные словари или схемы токенизации (глава 4.1 подробно разбирает токенизацию).

Это важно на практике, потому что перплексия (и лежащая в её основе перекрёстная энтропия) — это фактическая функция потерь при обучении практически для любой языковой модели, рассматриваемой в этой книге. Каждое архитектурное усовершенствование — от n-грамм к RNN и трансформерам — это, с точки зрения цели оптимизации, попытка снизить перекрёстную энтропию на отложенном тексте. Стоит помнить, что именно эта единственная простая, не зависящая от конкретной задачи функция потерь в конечном счёте порождает модели, способные вести диалог, писать код и сдавать профессиональные экзамены. Ни одна из этих итоговых способностей не оптимизировалась напрямую — она возникла как побочный продукт оптимизации точности предсказания при масштабировании.

Также стоит с самого начала отметить ограничения перплексии, поскольку они важны для книги об инженерии, а не только о теории: перплексия — это прокси-метрика. Она хорошо коррелирует со многими видами итогового качества, но две модели с одинаковой перплексией могут вести себя совершенно по-разному в задачах фактической точности, следования инструкциям или безопасности, потому что перплексия вычисляется на конкретном оценочном корпусе и усредняется по всем токенам одинаково — независимо от того, тривиальное ли это служебное слово или единственное слово в предложении, которое реально имело значение. В более поздних главах об оценке моделей мы подробно вернёмся к этому напряжению: перплексия необходима, но недостаточна как мера того, хороша ли модель.

4. Почему предсказание — такой мощный обучающий сигнал

Стоит задержаться на вопросе, почему «предсказывай следующий токен» оказалась одной из самых продуктивных обучающих целей, когда-либо придуманных в машинном обучении, — потому что это оправдывает всю структуру этой книги.

Во-первых, это самообучение (self-supervised): сырой текст уже содержит свой собственный обучающий сигнал. Не нужно ничего размечать вручную — каждое когда-либо написанное предложение одновременно является и обучающим примером, и собственным эталоном истинности. Это означает, что цель обучения масштабируется вместе с объёмом доступного текста, а это масштабирование, как оказалось, работает исключительно хорошо (это утверждение мы уточним в главе о законах масштабирования).

Во-вторых, эта цель максимально насыщена информацией в расчёте на пример. В отличие от задачи классификации с горсткой возможных меток, предсказание следующего токена требует от модели различать весь словарь целиком на каждой отдельной позиции в каждой отдельной последовательности. Обучающий корпус в миллиард токенов не даёт вам сигнал объёмом в миллиард меток — благодаря разложению по цепному правилу, описанному выше, он даёт вам задачу предсказания на каждой из этих миллиарда позиций, причём каждая обусловлена своим растущим контекстом.

В-третьих, и это наиболее важно для последующих глав, эта цель — это лишённый потерь прокси для «смоделируй процесс порождения данных, лежащий в основе человеческого письма». Поскольку человеческое письмо кодирует факты, цепочки рассуждений, стиль, диалог, код и многое другое, модели, которая научилась хорошо предсказывать всё это, требуется внутренний механизм, представляющий все эти вещи — хотя бы неявно. Это концептуальный мост ко всему, что последует далее: остальная часть книги — это история о том, как область продолжала строить всё более совершенные аппроксиматоры функции \(P(x_i \mid x_1, \ldots, x_{i-1})\) — от таблиц подсчётов до фиксированных прямых нейронных сетей, рекуррентных сетей, механизма внимания и, наконец, трансформера, — каждый следующий шаг способен учитывать больше контекста, делать это эффективнее и с лучшей обобщающей способностью, чем предыдущий.

5. Взгляд с точки зрения собеседования

На серьёзном собеседовании по LLM редко спросят напрямую «что такое языковая модель», но обязательно проверят, действительно ли вы понимаете постановку задачи, лежащую в основе всего остального, — обычно через такие вопросы:

  • «Почему предсказание следующего токена — такая эффективная цель для предобучения?» — ожидаемый ответ затрагивает самообучение, плотность информации на токен и утверждение, что хорошее предсказание требует неявного моделирования мира.
  • «В чём разница между перплексией и точностью (accuracy) как метриками оценки, и когда они могут расходиться?» — сильный ответ объясняет, что перплексия — это гладкая, усреднённая по токенам прокси-метрика, тогда как точность на задаче — это мера уровня итогового результата, и что модель может улучшать одну метрику, топчась на месте по другой, особенно когда модель уже далеко за пределами того режима, в котором перплексия изначально была наиболее информативна.
  • «Почему более низкая перплексия не всегда означает лучший пользовательский опыт продукта?» — это проверяет, понимаете ли вы слепое пятно перплексии: она взвешивает каждый токен одинаково, включая токены, которые не влияют на то, действительно ли ответ полезен, корректен или безопасен.

Общая нить, которую проверяют интервьюеры, — видите ли вы современные LLM как масштабированный, лучше инженерно проработанный ответ на ту же самую задачу предсказания следующего токена, которую Шеннон и Елинек уже формализовали десятилетия назад, — а не как принципиально новый вид объекта.

6. Вопросы для самопроверки

  1. Запишите по памяти разложение \(P(x_1, \ldots, x_n)\) по цепному правилу и одним предложением объясните, почему именно это разложение позволяет сравнивать все архитектуры языковых моделей на одинаковых основаниях.
  2. Какую задачу на самом деле пытался решить Шеннон в 1948 году, и почему решение этой задачи заодно даёт рецепт для языкового моделирования?
  3. Определите своими словами перекрёстную энтропию и перплексию и объясните, что означала бы перплексия, равная 1, в сравнении с перплексией, равной размеру словаря.
  4. Почему предсказание следующего токена называют «самообучением» (self-supervised)? Как выглядела бы обучаемая с учителем альтернатива и почему она не масштабируется так же хорошо?
  5. Приведите пример двух выводов модели, которые могли бы иметь одинаковую перплексию на некотором корпусе, но очень разное качество с точки зрения пользователя. Что это говорит вам о перплексии как метрике?
  6. Объясните своими словами, почему модель, обученная только предсказывать следующий токен, может в итоге неявно закодировать факты, способность к рассуждению или стиль — хотя ничто из этого напрямую не входило в цель обучения.

7. Источники

  • Shannon, C. E. (1948). A Mathematical Theory of Communication. Bell System Technical Journal, 27(3) & 27(4). Wiley
  • Jelinek, F., Mercer, R. L., Bahl, L. R., & Baker, J. K. (1977). Perplexity — a measure of the difficulty of speech recognition tasks. Journal of the Acoustical Society of America, 62(S1). AIP Publishing

Тест для самопроверки

Проверьте понимание главы с помощью короткого теста — вопросы по теории и небольшие расчёты.

Какая формула правильно выражает разложение по цепному правилу для $P(x_1, \ldots, x_n)$, используемое на протяжении всей книги?

Объяснение: Цепное правило раскладывает совместную вероятность всей последовательности в произведение условных вероятностей следующего токена — именно поэтому любую архитектуру из книги можно рассматривать как свой способ оценки одного и того же условного распределения.

Какую задачу на самом деле решал Клод Шеннон в своей статье 1948 года, давшей начало постановке языкового моделирования?

Объяснение: «Математическая теория связи» Шеннона посвящена эффективной и надёжной передаче сообщений по зашумлённому каналу. Статистическая предсказуемость источника оказалась именно тем, что десятилетия спустя формализует языковое моделирование.

Кто ввёл термин «перплексия» как меру качества языковой модели, и в каком контексте?

Объяснение: Елинек, Мерсер, Бал и Бейкер ввели перплексию в 1977 году явно как «меру сложности задач распознавания речи», опираясь на введённое Шенноном понятие перекрёстной энтропии.

Почему предсказание следующего токена называют сигналом самообучения (self-supervised)?

Объяснение: Любое когда-либо написанное предложение одновременно является и обучающим примером, и собственной истинной меткой — следующий токен, который нужно предсказать, уже находится прямо в тексте, поэтому ручная разметка не нужна.

У языковой модели перекрёстная энтропия на некотором тестовом тексте составляет 4 бита на токен. Чему равна её перплексия?

Объяснение: Перплексия = 2^(перекрёстная энтропия в битах) = 2^4 = 16.

Модель присваивает вероятность 0.0625 токену, который на самом деле встречается следующим. Сколько бит «неожиданности» ($-\log_2 p$) это составляет?

Объяснение: $-\log_2(0.0625) = -\log_2(1/16) = 4$ бита.

Словарь токенизатора содержит 32 768 токенов. Какую перплексию получила бы модель, если бы на каждом шаге угадывала токен равновероятно случайно?

Объяснение: Модель, угадывающая равновероятно среди V токенов, получает перплексию, равную ровно V — в данном случае 32 768.

У модели перекрёстная энтропия на отложенном тексте составляет 2 ната на токен. Чему равна её перплексия, с точностью до двух знаков после запятой? (Используйте $e \approx 2.71828$.)

Объяснение: Перплексия = e^(перекрёстная энтропия в натах) = e^2 ≈ 7.39.

Почему биты на символ (BPC) предпочтительнее перплексии при сравнении моделей с разными токенизаторами?

Объяснение: Численное значение перплексии зависит от словаря, который использует токенизатор, поэтому две модели, по-разному разбивающие текст, удивляются кускам разного размера. Деление суммарной перекрёстной энтропии на число символов или байтов обходит эту проблему, делая BPC сравнимой между разными схемами токенизации.

Суммарная перекрёстная энтропия модели на тестовом тексте составляет 8000 бит, а предсказанные токены составляют 2000 символов. Чему равны биты на символ (BPC)?

Объяснение: BPC = суммарные биты / число символов = 8000 / 2000 = 4.