Галлюцинации LLM — это артефакты сжатия. И это объясняет всё

Галлюцинации LLM — это артефакты сжатия. И это объясняет всё

Представьте, что вам дают 10 терабайт текста и просят уместить это в файл на 70 гигабайт. Причём так, чтобы по любому запросу можно было восстановить нужный фрагмент — не побайтово, но близко по смыслу.

Вы бы ответили: «Это же lossy-сжатие — часть данных неизбежно потеряется».

И были бы правы. Потому что именно это делает большая языковая модель (LLM).

Предсказание — это сжатие (и это не метафора)

Клод Шеннон доказал в 1948 году: предсказание следующего символа и сжатие данных — это математически эквивалентные задачи. Чем точнее модель предсказывает следующую букву, тем лучше она сжимает текст. И наоборот.

Арифметическое кодирование превращает хороший предсказатель в эффективный компрессор — это теорема.

GPT обучается предсказывать следующий токен. Значит, это алгоритм сжатия. А веса модели — и есть сжатый файл.

И с этого момента многое становится понятным.

JPEG для текста

Все знают, что происходит при сильном сжатии JPEG:

  • Крупные контрастные объекты сохраняются — лицо узнаваемо, небо голубое
  • Мелкие детали исчезают — текст на вывеске, ресницы, номер машины
  • На границах появляются артефакты — кубики, ореолы, ложные цвета
  • Артефакты выглядят правдоподобно — непрофессионал может не заметить

Теперь замените «пиксели» на «знания»:

Крупные контрастные объекты → общие знания, частые паттерны

Мелкие детали → редкие факты, точные цифры, конкретные даты

Артефакты на границах → галлюцинации

Качество сжатия (1–100%) → размер модели (7B → 70B → 405B → ???)

Оригинальный файл → обучающая выборка

Галлюцинация — это артефакт сжатия. Модель «помнит», что в этом месте должно быть что-то определённого типа — ссылка, цитата, число, — но точные данные утеряны. Она достраивает правдоподобный фрагмент. Точно так же, как JPEG воссоздаёт пиксели, которых не было.

Это объясняет буквально всё

Любой типичный «глюк» LLM легко объясняется через призму lossy-сжатия.

Почему LLM хороша в коде?
Код — один из самых сжимаемых видов текста. Строгий синтаксис, повторяющиеся паттерны, ограниченный словарь. Конструкции вроде for i in range(n) встречаются миллионы раз. При сжатии код страдает меньше всего — как крупные блоки на JPEG. Модель «запоминает» паттерны почти без потерь.

Почему LLM плоха в математике?
Потому что точные числа — это как раз те «мелкие детали», которые теряются первыми. 23 × 47 = 1081, но для модели это три случайных числа без явного паттерна. Таблицу умножения нельзя сжать — её нужно либо запомнить целиком, либо вычислить. LLM не делает ни того, ни другого. Она восстанавливает «что-то числовое, что выглядит правильным».

Почему увеличение модели помогает?
Это как увеличение битрейта у JPEG: качество 30% → 60% → 90%. Чем больше параметров, тем больше битов на хранение информации — и тем меньше потерь. GPT-175B галлюцинирует чаще, чем гипотетическая GPT-1.8T. При бесконечном числе параметров потери стремятся к нулю — но и размер модели приближается к размеру обучающей выборки. Гонка за параметрами — это гонка за битрейтом.

Почему модель «уверенно врёт»?
А JPEG «уверенно рисует» несуществующие пиксели. Артефакты сжатия не помечены как таковые — они выглядят как настоящие данные. Кодек не знает, где информация потеряна, потому что и эта информация тоже потеряна. Это не ложь в обычном смысле — это фундаментальное свойство lossy-кодека.

Temperature — это ползунок качества

Когда вы устанавливаете temperature = 0, декодер выбирает на каждом шаге самый вероятный токен. Это как шарпинг на сжатом JPEG: картинка становится чётче, но артефакты усиливаются.

Когда temperature = 1.0+, вы добавляете шум. Это похоже на dithering — артефакты размываются, но теряется чёткость. Появляется «креативность», которая на самом деле — семплирование из менее вероятных вариантов реконструкции.

То есть «креативность» LLM — не мышление, а интерполяция между возможными реконструкциями в латентном пространстве.

Когда JPEG на низком качестве рисует несуществующий цвет между блоками, он тоже «креативен». Просто мы не пишем об этом постов.

RAG, fine-tuning и промпт-инжиниринг — в новом свете

Если рассматривать LLM как lossy-кодек, современные техники приобретают ясный смысл.

RAG — вы подставляете в контекст lossless-данные. Вместо того чтобы полагаться на сжатое «воспоминание» модели, вы даёте ей оригинал. Это как вставить фрагмент PNG в JPEG. Дорого по объёму контекста, но без артефактов.

Fine-tuning — вы перекодируете файл с новыми приоритетами. «Мне не важна поэзия XIX века, но юридические тексты сожми лучше». Это перераспределение битового бюджета.

Промпт-инжиниринг — вы указываете декодеру, из какого региона сжатого файла извлекать данные. «Ты — эксперт по Kubernetes» = «ищи в блоке с паттернами DevOps-текстов».

System prompt — это настройки декодера. Можно сказать, профиль кодека.

Можно ли убрать галлюцинации?

Если галлюцинации — артефакты сжатия, ответ математически строгий: нет. Не полностью.

Можно увеличить битрейт (большая модель), добавить lossless-данные (RAG), улучшить архитектуру. Это уменьшит артефакты.

Но пока вы сжимаете 10 ТБ в 70 ГБ — потери неизбежны. Ни один кодек не может сжать данные ниже их энтропии без потерь.

Каждый, кто обещает «решить проблему галлюцинаций» без увеличения размера модели или подключения внешней памяти, либо лукавит, либо не понимает информационную теорию.

Сюжетный поворот: мы — тоже lossy-кодек

Вы помните, что ели на обед в прошлый четверг? А что было на слайде 14 из вчерашней презентации?

Человеческая память — тоже lossy-кодек. Мы сжимаем поток опыта в нейронные паттерны, теряем детали и достраиваем правдоподобное. Психологи называют это конфабуляцией — мозг заполняет пробелы памяти выдуманными, но убедительными деталями.

Буквально — галлюцинации.

Мы делаем это по той же причине: объём входных данных несопоставим с объёмом хранилища. Сетчатка передаёт около 10 Мбит/с, но вы не помните лицо человека, с которым говорили час назад — ваш биологический кодек решил, что эти данные не стоит хранить.

Разница в том, что у нас был миллион лет на тюнинг, а у LLM — четыре года.

Вывод: LLM — это искусственная память

LLM — не искусственный интеллект и не стохастический попугай.

Скорее, это искусственная память: ёмкая, дорогая и неизбежно дырявая. Как и наша собственная.

Если принять эту модель, пропадает половина хайпа и половина страхов. Не нужно бояться, что GPT «осознает себя» — zip-архив не осознаёт. И не стоит ждать, что она перестанет ошибаться — lossy-кодек не перестанет терять данные.

Зато можно спокойно инженерить: подкладывать lossless-фрагменты там, где критична точность, увеличивать битрейт там, где нужна детализация, и не требовать от кодека того, что может дать только оригинал.

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

А пока — пользуйтесь JPEG.

Читать оригинал