Сжатие данных и языковые модели решают одну и ту же задачу

Блог хостинг-сервиса ngrok опубликовал 11 августа 2026 года объяснительный пост «Compression is prediction» («Сжатие, это предсказание»). Центральный тезис: архиваторы данных и языковые модели по сути решают одну и ту же задачу, предсказывают, что будет дальше, и чем точнее предсказание, тем меньше бит нужно на запись результата.
Автор начинает с разграничения: минификация кода (укорачивание имён переменных, удаление пробелов) не считается «настоящим» сжатием, потому что не использует избыточность данных. Настоящее сжатие строится на трёх компонентах: трансформациях (подготовка данных, делающая их более сжимаемыми), моделях (таблица вероятностей каждого символа) и энтропийных кодерах (финальный шаг, превращающий вероятности в битовый поток).
На примере строки из 9 «A», 4 «B», 2 «C», 1 «D», ещё 3 «A» и 9 «D» (28 символов, 224 бита в обычной 8-битной кодировке ASCII) показано, как кодирование длин серий (run-length encoding) сжимает её до записи «A9B4C2D1A3D9», 12 символов, 96 бит, то есть на 57% меньше.
Далее подробно разобрано арифметическое кодирование на строке «A B A B A A C»: по частотам символов (4 A, 2 B, 1 C из 7) строится диапазон от 0 до 1, где A занимает 0, 0,571, B, 0,571, 0,857, C, 0,857, 1. Кодируя символы по очереди, диапазон сжимается до интервала [0,38730; 0,38855), и вся строка представляется единственным числом 0,3876953125, против 56 бит в исходной ASCII-записи этому числу достаточно 10 бит. Автор показывает и обратный процесс: декодер, зная те же вероятности, восстанавливает исходную строку, находя, в какой участок диапазона попадает число, и повторяя сужение шаг за шагом.
Затем демонстрируется, как перекос вероятностей улучшает сжатие: для строки из 10 «A», 1 «B» и 1 «C» (вероятность A, 0,833) арифметическое кодирование даёт 0,82 бита на символ против 1,38 бита на символ для более равномерной строки «A B A B A A C». Это подводит к понятию энтропии, среднего числа бит на символ, которое является теоретическим нижним пределом сжатия для данного набора вероятностей: сжать плотнее уже невозможно.
Понятие энтропии автор поясняет игрой в угадывание животного по убывающим вероятностям (птица, белка, кошка, лиса, медведь), где чем вероятнее ответ, тем меньше вопросов-«бит» нужно на угадывание, это иллюстрирует ещё один тип энтропийного кодера, кодирование Хаффмана (используется, в частности, в gzip и Brotli), и его ограничение: если вероятности не делятся ровно пополам (пример, вероятность 0,3973 для «кошки»), приходится округлять число «вопросов» и терять часть эффективности, которую арифметическое кодирование не теряет.
В завершение фрагмента, доступного для пересказа, автор указывает: раз предел сжатия задаётся конкретным набором вероятностей, единого «супер-архиватора» для всех данных быть не может, чем более смещено (skewed) распределение вероятностей, тем сильнее можно сжать данные, а до сих пор в примерах использовалась простейшая модель, учитывающая только частоту символа (вероятность = количество вхождений, делённое на общее число символов). Текст поста продолжается дальше, там, по всей видимости, разбор более сложных, контекстно-зависимых моделей, включая языковые, но этот фрагмент разбора выходит за пределы доступного нам текста.
Ключевые факты
- Тезис поста: архиваторы данных и языковые модели решают одну и ту же задачу, предсказывают вероятность следующего символа/токена.
- Кодирование длин серий сжимает строку из 28 символов (224 бита) до записи из 12 символов (96 бит), на 57% меньше.
- Арифметическое кодирование представляет строку «A B A B A A C» (56 бит в ASCII) одним числом 0,3876953125, для которого достаточно 10 бит.
- Чем более смещено распределение вероятностей символов, тем лучше сжатие: 0,82 бита на символ у строки со скошенной вероятностью против 1,38 бита на символ у более равномерной строки.
- Энтропия, теоретический нижний предел числа бит на символ для конкретного набора вероятностей; единого «идеального» архиватора для всех данных быть не может именно поэтому.
Почему это важно
Пост формулирует простую, но точную идею: и архиватор, и языковая модель по сути занимаются одним, предсказанием вероятности следующего элемента данных (символа, токена). Чем увереннее предсказание, тем меньше бит требуется на кодирование фактического результата. Это связывает две области, которые обычно преподают отдельно, классическое сжатие данных (gzip, Brotli) и обучение больших языковых моделей, общим фундаментом теории информации: энтропией и вероятностными моделями.
Кому это важно
Материал адресован тем, кто хочет понять внутреннюю механику LLM и компрессоров не на уровне лозунгов, а на уровне арифметики: инженерам и исследователям ИИ, разработчикам, работающим со сжатием данных или токенизацией, и всем, кто интересуется теорией информации как основой современного машинного обучения.
Как это применить
Пост, учебный разбор с интерактивными примерами (в статье есть кликабельные демонстрации run-length-кодирования, арифметического кодирования и декодирования), а не инструмент или продукт. Практическая польза, в понимании: зная, что модель вероятностей определяет предел сжатия, легче понять, почему более «умная» (более контекстно-зависимая) модель данных, будь то в архиваторе или в языковой модели, снижает энтропию и, соответственно, объём нужных бит.
Можно ли доверять
Материал излагает устоявшиеся, десятилетиями проверенные основы теории информации, энтропию Шеннона, арифметическое кодирование, кодирование Хаффмана, без спорных или непроверяемых утверждений; все числовые примеры (символьные строки, вероятности, вычисленные биты), учебные иллюстрации автора, а не измерения на реальных файлах или системах. Имя автора поста в тексте не указано, есть только дата публикации.
Риски и подводные камни
Доступный для пересказа фрагмент текста обрывается на введении простейшей, частотной модели вероятностей, до того, как пост явно проводит обещанную заголовком параллель между энтропийным кодированием и предсказанием следующего токена в языковых моделях. Судя по вводному тезису и логике изложения, эта связь раскрывается дальше по тексту, но в переданном фрагменте её ещё нет.
«Самое важное, что нужно понимать про энтропию: это нижний предел. Это наименьшее число бит на символ, которого можно достичь для данного набора данных.»
— блог ngrok, «Compression is prediction»