Вызов: языковые модели зацикливаются
Авторегрессионные языковые модели генерируют текст по одному токену за раз, опираясь на уже написанные слова. Этот процесс почти неизбежно приводит к дегенеративным повторениям: модель начинает бесконечно воспроизводить одну и ту же фразу или цепочку предложений. Особенно часто это случается при коротких текстах, математических рассуждениях или логических цепочках, где модель «застревает» в локальной петле.
Стандартные методы борьбы — штраф за частотность (frequency penalty) и штраф за повторение (repetition penalty) — работают лишь частично. Они корректируют распределение вероятностей на этапе декодирования, но не учитывают структуру повторяющихся паттернов. В результате даже у современных систем частота срыва в зацикленный повтор достигает нескольких процентов — это трудно заметить на коротких ответах, но критично для длинных рассуждений.

Недостаточно наказывать за частоту: нужна теория информации
Frequency penalty уменьшает вероятность токенов, которые уже встречались в тексте, а repetition penalty дополнительно снижает вес уже выданных последовательностей. Но оба подхода используют эвристики, не имеющие отношения к тому, как модель понимает структуру текста. Они могут подавлять полезные повторы (например, повторение важного вывода) и одновременно пропускать длинные зацикленные паттерны, состоящие из разных слов.
Более принципиальный взгляд предлагает теория сжатия данных. Если последовательность хорошо сжимается алгоритмом вроде LZ77, это значит, что она содержит мало новой информации — и, с точки зрения предсказания, является «предсказуемой» и опасной для генерации. Логично штрафовать модель за выбор таких паттернов, а не просто за повторение отдельных слов.
Что такое LZ77 и как построен штраф на его основе
LZ77 — один из классических алгоритмов сжатия без потерь. Он заменяет повторяющиеся фрагменты на ссылки на более ранние вхождения: вместо того чтобы записывать строку целиком, алгоритм хранит смещение и длину. В результате каждая порция текста получает «кодовую длину» — минимальное число бит, необходимое для её представления. Чем более предсказуем фрагмент, тем короче его код.
Авторы LZ penalty предложили использовать эту длину как меру избыточности прямо во время декодирования. На очередном шаге модель вычисляет вероятности всех возможных продолжений, и каждое из них дополнительно оценивается с точки зрения того, насколько сильно оно увеличивает сжимаемость всей сгенерированной последовательности. Продолжения, которые ведут к длинным повторяющимся структурам, получают увеличенный штраф.
Интересно, что такой подход естественно вытекает из дуальности предсказания и сжатия: хороший компрессор — это одновременно хороший предсказатель, и наоборот. Декодирование с LZ penalty можно интерпретировать как сэмплинг из остаточного распределения, из которого уже удалена информация, успешно предсказываемая компрессором. Иными словами, модель вынуждена выдавать не самые «лёгкие» для неё продолжения, а те, которые содержат действительно новую информацию.

Практическая реализация: штраф добавляется до выбора токена
На уровне кода LZ penalty легко встраивается в процесс жадного декодирования. После каждого шага текущая гипотеза продолжения сжимается LZ77-подобным энкодером, и разница в длине кода учитывается в логарифме вероятности. Важно, что штраф не требует обучения или дообучения модели — он работает на этапе инференса.
Это делает метод универсальным: его можно применить к любой авторегрессионной модели, не меняя архитектуру и не трогая веса.
Результаты: отсутствие дегенеративных повторов при температуре ноль
Главный результат, который заявляют авторы, — LZ penalty позволяет современным открытым моделям рассуждать с жадным декодированием (температура ноль) без потери способностей. Обычно при нулевой температуре модель всегда выбирает самый вероятный токен, что делает зацикливание особенно вероятным. Именно поэтому на практике часто используют случайное сэмплирование с температурой выше нуля и штрафами — но это приносит в генерацию лишнюю случайность и может снизить качество.
С LZ penalty отпадает необходимость в таких ухищрениях. Жадное декодирование перестаёт быть источником дегенеративных повторов, и модель остаётся сосредоточенной на решении задачи. При этом способности модели к логическому выводу, математике и кодированию не ухудшаются — штраф работает только против избыточности, не затрагивая смысловую часть генерации.
Для сравнения: в экспериментах те же модели с frequency penalty и repetition penalty в ряде случаев демонстрировали до 4% срывов в зацикленные повторы. Это может показаться небольшим числом, но для длинных ответов или цепочек рассуждений каждый такой срыв полностью обесценивает результат.

Почему LZ penalty работает лучше эвристик
Ключевое отличие от частотного или повторного штрафа — в способности реагировать на структуру, а не на отдельные токены. Эвристики, как правило, штрафуют все повторы одинаково, независимо от длины паттерна. LZ penalty чувствителен к длине повторяющейся последовательности: чем длиннее и точнее повтор, тем больше штраф. Короткие же повторы, которые не образуют паттерн, наказываются слабо или вообще не наказываются.
Это важно для естественного языка. Модель может оправданно повторить слово «следовательно» в разных частях рассуждения, и это не должно блокироваться. Но если модель начинает генерировать одну и ту же цепочку аргументов снова и снова, LZ penalty заметит снижение длины кода и остановит процесс.
В результате LZ penalty снимает дилемму между качеством и безопасностью текста: не приходится выбирать между «разумным, но зацикленным» и «разнообразным, но бессвязным».
Практические выводы
Для разработчиков и исследователей LZ penalty — готовый инструмент, не требующий изменения модели. Его достаточно добавить в пайплайн инференса, чтобы получить стабильную генерацию без дегенеративных повторений. Особенно это актуально для open-source моделей рассуждения, которые используются в сценариях с длинными ответами и высокой требовательностью к детерминизму.
Остаётся открытым вопрос об эффективности: сжатие на каждом шаге требует дополнительных вычислений. Авторы не обсуждают сложность в представленной работе, но можно ожидать, что в будущем появятся оптимизированные версии, работающие на GPU и интегрированные в популярные библиотеки декодирования.
Ограничения и примечания
В статье отмечаются небольшие постпубликационные исправления, связанные с неточностями в расчётах — это говорит о внимательности авторов к деталям и не влияет на суть предложенного подхода. Как и любой метод, LZ penalty не является серебряной пулей: он решает конкретную проблему повторов, но не затрагивает, например, фактическую достоверность или логическую когерентность генерации.
Тем не менее сама идея использовать длину кода сжатия как меру информативности продолжения выглядит элегантной и перспективной. Она соединяет теорию информации с практикой генерации текстов и даёт то, чего не могут дать простые эвристики: понимание того, когда повторение — это шум, а когда — сигнал о деградации модели.



