Биграммы и n-граммы
Первая языковая модель в истории NLP — простая таблица счётчиков пар. Но в ней уже есть всё, что делает GPT: предсказание следующего токена, генерация через сэмплирование и перплексия как мера качества. Понять n-граммы — значит понять саму постановку задачи, которую трансформеры просто решают лучше.
Интуиция
Продолжите фразу: «я выпил чашку …». В голове наверняка всплыли «кофе» и «чая», а не «бетона». Это и есть языковая модель (language model, LM) — распределение вероятностей следующего слова при известном начале. Формально LM присваивает каждому возможному продолжению вероятность P(wt | w1…wt−1).
Самый прямой способ построить такую модель — посчитать. Биграммная модель (bigram model) отвечает на вопрос «что идёт после w1?» голой статистикой корпуса:
Если после слова «машинное» в 80 случаях из 100 шло «обучение», то P(«обучение» | «машинное») = 0.8. Никакой магии — деление двух счётчиков.
Как это работает
Генерация текста — это цепочка сэмплирований: берём стартовый токен, сэмплируем следующий из P(· | w1), приклеиваем к контексту, сэмплируем ещё раз — и так, пока не надоест. Именно так, токен за токеном, генерирует и GPT (подробнее о стратегиях — в теме про сэмплирование).
n-грамма обобщает биграмму: учитываем не одно предыдущее слово, а n−1. Здесь работает марковское предположение (Markov assumption) — будущее зависит только от короткого недавнего прошлого, а не от всей истории:
Это заведомо неправда для языка (согласование может тянуться через всё предложение), но она делает задачу счётной: таблица «контекст → счётчики продолжений» — вот и вся модель.
В интерактиве ниже — посимвольная n-грамная модель (токен = один символ), обученная на мини-корпусе из пяти предложений про котов, потоки и токены. Попробуйте все четыре n: при n=1 получается каша из букв, при n=2–3 проступают «почти слова», а при n=4 модель начинает дословно цитировать корпус.
Разреженность и сглаживание
Главная беда счётного подхода — таблица растёт экспоненциально. Для словаря из V токенов у n-граммы Vn−1 возможных контекстов: при V = 50 000 триграмма имеет 2.5 миллиарда контекстов, 5-грамма — уже 6×1018. Почти все осмысленные сочетания ни разу не встретятся даже в гигантском корпусе — таблица катастрофически разрежена (sparse). Именно это вы видите в интерактиве: с ростом n число контекстов взлетает, а счётчики в каждой ячейке тают.
Хуже того, невиданная пара получает P = 0, а одна нулевая вероятность обнуляет вероятность всего текста и делает перплексию бесконечной. Лечится сглаживанием (smoothing). Простейший вариант — сглаживание Лапласа (add-one): прибавляем единицу ко всем счётчикам, как будто каждую пару мы видели хотя бы раз:
Приёмы посерьёзнее — откат (backoff) к (n−1)-грамме, когда длинный контекст не встречался, интерполяция нескольких порядков и сглаживание Кнесера–Нея (Kneser–Ney) — вершина счётной эпохи.
Перплексия: на сколько вариантов модель колеблется
Как сравнить две языковые модели? Стандартная метрика — перплексия (perplexity) на отложенном тексте:
Интуиция: перплексия — это «эффективное число равновероятных вариантов», между которыми модель в среднем колеблется на каждом шаге. PPL = 1 — модель предсказывает текст без сомнений; PPL = V — гадает равномерно по всему словарю. Меньше — лучше. Униграммная модель живёт в сотнях, современные LLM на английском — в единицах.
Прямой предок GPT
GPT решает ровно ту же задачу next token prediction, что и биграмма Шеннона 1948 года. Разница — в параметризации. Таблица требует точного совпадения контекста: «кот пил» и «кошка пила» для неё никак не связаны, статистика не переносится. Нейросеть кодирует контекст вектором, и похожие контексты автоматически делят статистическую силу: выучив продолжения одного, модель обобщает на другой. Плюс контекст может быть в тысячи токенов — без экспоненциального взрыва памяти. Первый шаг этого пути — токенизация и рекуррентные сети, следующий — attention.
- «Что такое языковая модель?» — распределение вероятностей следующего токена при заданном контексте; всё остальное — детали параметризации.
- «Почему нельзя просто увеличивать n?» — число контекстов растёт как Vn−1, почти все длинные контексты уникальны: таблица разрежена, счётчики ненадёжны.
- «Что такое перплексия?» — экспонента средней кросс-энтропии; интуитивно — среднее число вариантов, между которыми модель колеблется. Сравнима только при одинаковом токенизаторе и тесте.
- «Чем GPT отличается от n-граммы?» — задача та же, но распределение параметризовано нейросетью, которая обобщает на невиданные контексты вместо точного совпадения строк.