Назад
Чи може gzip бути мовною моделлю? Генератор тексту на основі DEFLATE
SiTech AI Team2 წთ. საკითხავი

Чи може gzip бути мовною моделлю? Генератор тексту на основі DEFLATE

Автор блогу nathan.rs перевірив, чи здатний gzip генерувати текст. Експеримент gzipt використовує променевий пошук за стиснутими байтовими послідовностями — без нейромережі та навчання.

Блоговий пост, опублікований на nathan.rs, ставить питання, яке звучить як жарт: чи може gzip — інструмент стиснення, що постачається майже з кожною операційною системою — працювати як мовна модель? Автор зробив gzipt: невеликий експеримент, який генерує текст, використовуючи лише компресор, без нейронної мережі та без вивчених параметрів.

Стиснення — це передбачення

Відправна точка — стаття «Language Modeling is Compression» (arXiv 2309.10668), яка формулює еквівалентність стиснення й передбачення: кожна модель передбачення за своєю суттю є компресором, а кожен алгоритм стиснення — моделлю передбачення. Інтуїція походить з теорії інформації: для кодування символу потрібно −log₂ p біт, де p — імовірність, яку модель йому приписує. Висока ймовірність означає короткий код.

gzip використовує алгоритм DEFLATE і працює з ковзним вікном у 32 КіБ. Якщо наступні байти повторюють те, що вже є у вікні, DEFLATE кодує їх дешевим зворотним посиланням. Звідси й оцінка: стиснути контекст разом із кандидатом-продовженням і виміряти довжину результату. Чим коротший результат, тим «передбачуванішим» є кандидат. Попередня подача корпусу поміщає його у вікно gzip.

Від оцінки до генерації

Оцінювання — ще не генерація. Вибір одного наступного байта, що стискається найкраще, працює погано: gzip повертає цілу кількість байтів, без дробів. Додавання одного байта часто взагалі не змінює довжину, тож багато кандидатів отримують однакову оцінку, і сигнал тоне в шумі квантування. gzipt долає це променевим пошуком (beam search): він зберігає beam_width найбільш стисливих часткових продовжень, розширює кожне кожним байтом, що трапляється в корпусі, оцінює результати за стиснутою довжиною і знову відсікає. Це повторюється на горизонті байтів, перш ніж зафіксувати найкращий фрагмент.

Важлива деталь: у контексті оцінювання залишаються лише останні байти згенерованого тексту. DEFLATE кодує близькі збіги дешевше за далекі, тож модель, яка бачила б усю історію, найдешевше потрапляла б у дослівні цикли, повторюючи щойно згенероване.

Що виходить на практиці

Після попередньої подачі корпусу tiny Shakespeare і підказки "MENENIUS:" інструмент повернув рядки, приписані Мененію, Марцію та Ларцію, — не зв'язний текст, але вплив джерела очевидний. Код — один файл чистим Python зі стандартної бібліотеки (лише zlib). У виносках автор зазначає, що автори статті пробували подібне й отримали слабкі результати, а додавання променевого пошуку суттєво покращило якість генерації.

Висновок вузький, але реальний: компресор загального призначення може нести корисну неявну модель тексту. До нейронної мовної моделі йому далеко, і автор це визнає. Проте це чиста демонстрація того, що передбачення і стиснення — одна задача, побачена з двох боків.

SSiTech

SiTech — веброзробка з підтримкою AI

Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.