Галлюцинации языковых моделей: актуальное

В преддверии нового года хочется чего-нибудь весёлого и яркого, например, галлюцинаций. У языковых моделей. Вы же сразу про языковые модели подумали?

Это очень животрепещущая тема, и даже беглый поиск работ за последние полгода выдаёт такой объём литературы, который в один пост точно не впихнуть. Вообще никак, я пыталась, честно. Поэтому сегодня мы пройдёмся по нескольким статьям, которые я отобрала вручную по признаку «мне интересно». Это не самые свежие работы, не самые влиятельные и не самые какие-то ещё – они просто мне понравились.

Поехали.

Внимательное похлопывание по слоям

Метод выявления галлюцинаций авторы назвали «Cross-Layer Attention Probing (CLAP)» («Зондирование внимания между слоями»). Аббревиатура CLAP переводится как «хлопок», так что я не удержалась от хулиганства в заголовке.

Почему эта статья? – Она про прямое воздействие на внутренние механики модели, и это фокус моих исследований в последние несколько месяцев.

Для более полного погружения можно прочитать вот эти три поста:

Но я постараюсь сделать так, чтобы вам и без них стало всё понятно.

Суть вот в чём:

- любая языковая модель (любая вообще нейросеть) состоит из слоёв;

- информация проходит сквозь нейросеть послойно, и на каждом слое к ней применяется математическая операция;

- соответственно, на вход в каждый слой подаётся набор векторов, и на выходе тоже получается набор векторов, только уже изменённый.

Изо всех этих векторов можно извлечь много ценной информации. Например, можно передать модели на вход фразу «мандарин оранжевый». Она выдаст вам некоторый текст в ответ.

Это ChatGPT, GPT-5.2
Это ChatGPT, GPT-5.2

А что произошло внутри? Внутри фраза «мандарин оранжевый» сначала разбилась на кусочки (токены). Я использовала инструмент OpenAI для примера ниже.

Токены помечены разными цветами
Токены помечены разными цветами

Каждый токен превратился в вектор, и получилась матрица 8*1536 (допустим). И дальше на каждом слое с ней происходила некоторая математическая операция, матрица изменялась, и в конце получилось предсказание того, какой токен надо выдать в ответ (а потом ещё один, и ещё – и так пока не напечатался ответ целиком).

Так вот. Если вы после каждого слоя забирали новое состояние матрицы, вы теперь можете всю эту кучу матриц проанализировать и прикинуть, что в них отвечает за цвет, а что за фрукт.

Чтобы наверняка, вам нужно дать какой-то контрастный пример – что-то вроде «апельсин оранжевый». Тогда можно предположить, что полученная вами разница будет относиться к тому, как модель внутри себя описывает разницу между мандарином и апельсином.

Этот подход как раз и есть «зондирование», и его проводят на разных данных, разными способами и с разными целями. Авторы конкретно этой статьи взяли набор вопросов, для которых известны правильные ответы, прогнали через языковые модели и сравнили кучи матриц, из которых получились верные ответы, и кучи матриц, из которых получили галлюцинации. Для сравнения использовали нейросеть поменьше с усечённой архитектурой, в которой был модуль внимания и линейный блок. Подробнее про эти блоки и модули я писала здесь, можете глянуть, а мы пока дальше пойдём.

В общем, у авторов получилось найти разницу между галлюцинациями и не-галлюцинациями, которая может помочь их выявить ещё на матрицах, до того, как модель сгенерирует текст. Ну здорово же? Вот и я говорю, что здорово.

Лиричное обнаружение галлюцинаций через проекцию рассуждений

Статья «HARP: Hallucination Detection via Reasoning Subspace Projection» («HARP: Обнаружение галлюцинаций через проекцию подпространства рассуждений»). HARP – это лира.

Видите? Это не я тут с заголовками балуюсь, это в некотором роде отраслевой стандарт.

Здесь авторы шагнули чуть дальше и подумали: «А нельзя ли выделить во всех этих матрицах те, что отвечают чисто за текст и те, что отвечают за рассуждения?»

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

Логика за подходом авторов следующая: иногда и человек может с умным видом сказать что-то убедительное. Но, если его расспросить о том, как он пришёл к своему умозаключению, порой вскрывается совсем дикая логика. Раз уж языковые модели мы тренировали по образу и подобию своему, у них такая же ерунда может быть – надо смотреть не только на ответ, но и на то, как они к этому ответу пришли.

Результаты получились интересные, хотя авторы не сравнивали свой подход с тем, что мы рассмотрели в предыдущей части поста. Думаю, дело в том, что команды работали над своими подходами параллельно и друг о друге не знали. Но было бы здорово их совместить.

Оценка неопределённости

Авторы статьи «Estimating Semantic Alphabet Size for LLM Uncertainty Quantification» («Оцениваем размер семантического алфавита для конкретизации неопределённости в больших языковых моделях») решили использовать семантическую энтропию. Я когда это увидела, подпрыгнула на стуле, потому что использую очень похожий подход при работе с неопределённостью – но о нём сегодня не будем говорить.

Значит, что такое семантическая энтропия? Энтропия – это мера беспорядка. Более строго, это число способов, которыми может быть организована некая система. Например, можно взять молекулу. Молекула состоит из атомов, атомы движутся. На движение атомов влияет температура и давление окружающей среды, и молекула меняется. Вот чем больше вероятных состояний она может принять, тем больше энтропия. Высокая энтропия значит: «Да чёрт её знает, тут слишком много факторов». Низкая энтропия значит: «Скорее всего, молекула будет выглядеть так, но, если температура поднимется на пять градусов по Цельсию, то вот так ещё может выглядеть».

Семантика изучает смысл частей слов, слов целиком, фраз и предложений.

Семантическая энтропия показывает, насколько случайным по смыслу является ответ языковой модели. ChatGPT мне подсказал удачный пример:

Допустим, мы три раза спросили языковую модель: «Где находится Эйфелева башня?» Модель ответила: «В Париже», «Эйфелева башня находится в Париже», «Город, в котором находится Эйфелева башня – Париж, столица Франции».
Если взять просто энтропию, все три ответа будут выглядеть очень разными, но на самом деле они про одно и то же, поэтому семантическая энтропия будет низкой.
Если бы она ответила сначала: «В Париже», – потом: «В Риме», – потом: «В Челябинске», – семантическая энтропия была бы высокой, потому что ответ подбирается случайно.

Размер семантического алфавита – это число вариантов, которые модель может выдать, отвечая на вопросы, при этом семантически близкие ответы будут считаться за один вариант. То есть, в примере выше все ответы про Париж – это один вариант, а «Париж», «Рим» и «Челябинск» – три разных варианта.

Число вариантов оценивается приблизительно: генерируется некоторое (большое) число разных ответов, они объединяются в группы по смыслу. Потом ещё дают поправку на число групп, в которых оказалось по одному ответу, и число ответов в каждой группе, и получается достаточно точный результат.

Заключение

В области борьбы с галлюцинациями языковых моделей происходит много интересного, я за ними буду пристально следить.

Чтобы присоединиться ко мне и тоже пристально следить, подписывайтесь на меня в телеграме.

11