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

Что такое языковое моделирование?

В широком смысле, языковое моделирование — это процесс формализации языка, в частности — естественного языка, чтобы сделать его машинно‑читаемым и обрабатывать различными способами. Таким образом, это касается не только генерации текста, но и представления языка.

Наиболее распространенная ассоциация с «языковым моделированием», благодаря Генеративному ИИ, тесно связана с процессом генерации текста. Именно поэтому моя статья рассматривает эволюцию языковых моделей исключительно с позиции генерации текста.

Языковые модели на основе n-грамм

Хотя основы n-граммных языковых моделей были заложены в середине 20-го века, их широкое распространение началось в 1980-х и 1990-х годах.

N-граммные языковые модели используют предположение Маркова, которое утверждает, что в контексте языкового моделирования вероятность следующего слова в последовательности зависит только от предыдущего(их) слова(слов). Следовательно, приближение вероятности слова, учитывая его контекст в n-граммной модели, можно формализовать следующим образом:

Вероятность следующего слова, учитывая последовательность всех предыдущих, можно аппроксимировать как вероятность следующего слова, учитывая N предыдущих (например, N=2 — биграммная модель).
Вероятность следующего слова, учитывая последовательность всех предыдущих, можно аппроксимировать как вероятность следующего слова, учитывая N предыдущих (например, N=2 — биграммная модель).

где t — это количество слов во всей последовательности, а N — размер контекста (униграмма (1), биграмма (2) и т. д.). Теперь возникает вопрос, как рассчитать эти вероятности n‑грамм? Самый простой подход — использовать количество n‑грамм (которое вычисляется на большом текстовом корпусе «без учителя»):

Вероятность следующего слова, учитывая N предыдущих: числитель — сколько раз результирующая последовательность встречается в данных, знаменатель — сколько раз последовательность предыдущих слов встречается в данных. Назовём это n-граммными счётчиками.
Вероятность следующего слова, учитывая N предыдущих: числитель — сколько раз результирующая последовательность встречается в данных, знаменатель — сколько раз последовательность предыдущих слов встречается в данных. Назовём это n-граммными счётчиками.

Очевидно, что оценка вероятности по вышеприведенной формуле может показаться наивной. Что если значения числителя или даже знаменателя будут равны нулю? Именно поэтому более продвинутые методы оценки вероятности включают сглаживание или метод отката (англ. backoff) (например, аддитивное сглаживание, stupid backoff, сглаживание Кнесера-Нея). Мы не будем рассматривать эти методы здесь, однако концептуально подход к оценке вероятности не меняется при использовании любого метода сглаживания или отката. В следующем примере показано высокоуровневое представление n-граммной языковой модели:

Высокоуровневое представление n-граммной языковой модели
Высокоуровневое представление n-граммной языковой модели

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

  • жадный (greedy) сэмплинг — выбрать слово с наивысшей вероятностью;

  • случайный (random) сэмплинг — выбрать случайное слово согласно распределению вероятностей.

Языковые модели на основе Feedforward нейронных сетей

Несмотря на сглаживание и методы отката, оценка вероятности в n-граммных языковых моделях все же интуитивно слишком проста для моделирования естественного языка. Прорывной подход, предложенный Йошуа Бенжио и его соавторами в 2000 году, был очень простым, но в то же время новаторским: что если вместо n‑граммных «счетчиков» использовать нейронные сети для оценки вероятностей слов? Хотя в статье и утверждается, что для этой задачи также могут использоваться рекуррентные нейронные сети (RNN), основное внимание уделяется feedforward архитектуре нейронной сети (FFNN).

Архитектура FFNN, предложенная Бенжио, представляет собой простой многоклассовый классификатор (число классов равно размеру словаря V). Обучение осуществляется на основе задачи предсказания пропущенного слова w в последовательности контекстных слов c: P (w|c), где |c| — размер окна контекста. Архитектура FFNN, предложенная Бенжио и соавторами, показана ниже:

Архитектура FFNN для оценки вероятности следующего слова в последовательности
Архитектура FFNN для оценки вероятности следующего слова в последовательности

Такие языковые модели на основе FFNN могут обучаться на больших текстовых корпусах в режиме «без учителя» (т.е. не требуется явного размеченного набора данных).

Что касается сэмплинга, помимо жадной и случайной стратегий, существуют еще две, которые можно применять к языковым моделям на основе нейронных сетей:

  • top-k сэмплинг — то же самое, что и жадная стратегия, но выполненная в пределах перенормализованного набора из топ-k слов (softmax пересчитывается для топ-k слов),

  • nucleus сэмплинг — то же самое, что и top-k, но вместо количества k используется процент.

Языковые модели на основе рекурентных нейронных сетей

До сих пор мы исходили из предположения, что вероятность следующего слова зависит только от предыдущих. Мы также рассматривали фиксированный контекст или размер n-граммы для оценки вероятности. Что если важны также и связи между словами? Что если мы хотим учитывать всю последовательность предшествующих слов, чтобы предсказать следующее слово? Это как раз можно прекрасно моделировать с помощью рекуррентных нейронных сетей (RNN)!

Преимущество RNN естественным образом заключается в том, что они способны улавливать зависимости во всей последовательности слов, добавляя выход скрытого слоя с предыдущего шага (t-1) к входу текущего шага (t):

Вычисление выхода скрытого слоя на шаге t для простой RNN
Вычисление выхода скрытого слоя на шаге t для простой RNN

где h — выход скрытого слоя, g(x) — функция активации, U и W — матрицы весов.

RNN также обучаются в режиме самоконтроля на больших текстовых корпусах для предсказания следующего слова по заданной последовательности. Генерация текста затем выполняется с помощью так называемого авторегрессивного процесса генерации, который также называется causal генерацией. Авторегрессивная генерация с использованием RNN показана ниже:

Авторегрессивная генерация текста с использованием RNN и другие перечисленные примеры
Авторегрессивная генерация текста с использованием RNN и другие перечисленные примеры

На практике «канонические» RNN редко используются для задач языкового моделирования. Вместо этого применяются улучшенные архитектуры RNN, такие как многоуровневые и двунаправленные сети, долгосрочная краткосрочная память (LSTM) и их вариации.

Одна из фундаментальных архитектур RNN была предложена Суцкевером и соавт. (2014) — архитектура на основе LSTM encoder-decoder (или seq2seq). Вместо простой авторегрессивной генерации модель seq2seq кодирует входную последовательность в промежуточное представление — контекстный вектор — и затем использует авторегрессию для его декодирования.

Однако исходная архитектура seq2seq имела серьезное узкое место — энкодер сводил всю входную последовательность к единственному представлению — контекстному вектору. Чтобы устранить это узкое место, Bahdanau и соавт. (2014) ввели понятие механизма внимания, который (1) использует индивидуальный контекстный вектор для каждого скрытого состояния декодера, (2) основываясь на взвешенных скрытых состояниях энкодера. Следовательно, интуиция, стоящая за механизмом внимания, заключается в том, что каждое входное слово влияет на каждое выходное слово, и интенсивность этого влияния варьируется.

Стоит отметить, что модели на основе RNN используются и для обучения векторных представлений языка. В частности, наиболее известными моделями являются ELMo (2018) и ULMFiT (2018).

Оценка качества: Перплексия

При рассмотрении языковых моделей без их применения к конкретной задаче (например, машинному переводу) существует одна универсальная мера, которая может дать нам представление о том, насколько хороша наша языковая модель. Эта мера называется Перплексией (англ. Perplexity).

Формула перплексии
Формула перплексии

где p — распределение вероятностей слов, N — общее количество слов в последовательности, wi — представляет i-ое слово. Поскольку Перплексия использует концепцию энтропии, интуиция, стоящая за ней, заключается в том, насколько неопределенной является конкретная модель в отношении предсказанной последовательности. Чем ниже перплексия, тем меньше неопределенность модели, и, следовательно, тем лучше она предсказывает выборку.

Языковые модели на основе трансформеров

Современные передовые языковые модели используют механизм внимания, упомянутый в предыдущем абзаце, и, в частности, механизм самовнимания (англ. self-attention), который является неотъемлемой частью архитектуры трансформера.

Языковые модели на основе трансформера имеют значительное преимущество над языковыми моделями на основе RNN с точки зрения вычислительной эффективности благодаря своей способности параллелизировать вычисления. В RNN последовательности обрабатываются шаг за шагом, что делает RNN медленнее, особенно для длинных последовательностей. В отличие от этого, модели на основе трансформера используют механизм самовнимания, который позволяет обрабатывать все позиции в последовательности одновременно. На рисунке ниже — высокоуровневое представление модели трансформера с «LM‑головой» на выходе.

Упрощённая архитектура языковрй модели на основе трансформеров
Упрощённая архитектура языковрй модели на основе трансформеров

Чтобы представить входной токен, трансформеры складывают эмбеддинги токенов и позиций. Последнее скрытое состояние последнего слоя трансформера обычно используется для получения вероятностей следующего слова через LM-голову на выходе. Языковые модели на основе трансформера предварительно обучаются (англ. pre-training) в соответствии с парадигмой self-supervised обучения. При рассмотрении моделей декодера или энкодер-декодера задачей предварительного обучения является предсказание следующего слова в последовательности, аналогично предыдущим языковым моделям.

Стоит отметить, что основные достижения в области языкового моделирования с момента появления трансформеров (2017) лежат в следующих направлениях: (1) масштабирование размеров моделей, (2) тонкая настройка для инструкций (англ. instruction fine-tuning), включая обучение с подкреплением с обратной связью от человека (англ. reinforcement learning with human feedback), (3) более эффективная тонкая настройка (адаптеры), квантизация

Оценка качества: бенчмарки с инструкциями

Языковые модели, настроенные на выполнение инструкций, рассматриваются как универсальные решатели задач. Следовательно, Перплексия может не быть лучшей мерой качества, так как она оценивает качество таких моделей косвенно. Явный способ оценки языковых моделей, настроенных на выполнение инструкций, основан на специализированных наборах тестов, таких как Massive Multitask Language Understanding (MMLU), HumanEval для кода, Mathematical Problem Solving (MATH) и другие.

Итоги

Мы рассмотрели эволюцию языковых моделей в контексте генерации текста, которая охватывает как минимум последние три десятилетия. Несмотря на то, что мы не углублялись в детали, очевидно, как развивались языковые модели с 1990-х годов по настоящее время.

Языковые модели на основе n-грамм аппроксимировали вероятность следующего слова, используя счётчики n-грамм и методы сглаживания. Для улучшения этого подхода были предложены feedforward архитектуры нейронных сетей (feedforward neural networks), чтобы аппроксимировать вероятность слова. Хотя модели n-грамм и FFNN учитывали только фиксированное количество контекста и игнорировали связи между словами во входном предложении, языковые модели на основе RNN заполнили этот пробел, естественным образом учитывая связи между словами и всей последовательностью входных токенов. В данный момент языковые модели на основе трансформеров демонстрируют не только лучшую вычислительную эффективность по сравнению с RNN, но и благодаря механизму самовнимания для создания более контекстуализированных представлений достигается более высокое качество на различных задачах.

С момента изобретения архитектуры трансформера в 2017 году крупнейшими достижениями в области языкового моделирования считаются масштабирование размеров моделей, тонкая настройка для инструкций, обучение с подкреплением с обратной связью от человека (RLHF), более вычислительно эффективную тонкую настройку и квантизацию моделей.

Ссылки

Хочу выразить благодарность Дэну Юрафски и Джеймсу Х. Мартину за их книгу «Обработка речи и языка», которая была главным источником вдохновения для этой статьи. Другие ссылки включены в виде гиперссылок в тексте.

Постскриптум

Если вы хотите примененять большие языковые моделей (LLM) в реальных промышленных задачах (например, AI-ассистенты, системы на основе агентов и многое другое), напишите мне на contact (at) perevalov (dot) com или посетите мой веб-сайт. Также, есть пара мест для менторства.

Комментарии (0)