Галлюцинации LLM и когнитивные искажения - две стороны одной медали

Галлюцинации LLM и когнитивные искажения - две стороны одной медали

ReverendBayes

Если вы хотите лучше понять, что такое галлюцинации LLM, то можете поэкспериментировать с YaGPT(*). Заодно, вероятно, это позволит вам лучше понять, как изнутри выглядят разные интересные штуки в человеческом мозге вроде ложных воспоминаний и когнитивных искажений.

(*) Если у вас есть Яндекс Браузер, то можете сделать это здесь; если нет, то попробуйте какую-нибудь другую LLM среднего уровня.

Как галлюцинирует YaGPT

В последнее время я начал экспериментировать с YaGPT. Первую версию я смеха ради целенаправленно старался развести на галлюцинацию (что было несложно); на КДПВ вы видите, что она выдавала мне на запрос про космическую программу древних шумеров.

Однако, позже я попробовал извлечь какую-то реальную пользу уже из YaGPT2. Как поисковик-справка по простым HTML-тегам и их свойствам она отлично себя показала, и я решил попробовать добиться от нее чего-то большего.

Когда мне нужно было найти способ собрать некоторую информацию об ОС с помощью утилит командной строки, и я не смог нагуглить способ это сделать, я спросил у YaGPT: как мне решить мою задачу с помощью одной команды, которая выглядела наиболее многообещающей?

В ответ нейросеть услужливо рассказала мне, какой аргумент нужно использовать, чтобы получить требуемую информацию, и привела пример вызова команды. И этот аргумент определённо делал именно то, что мне было нужно! Вот только проблема заключалась в том, что на самом деле команда вовсе не знает о таком аргументе. Хотя в уверенном ответе YaGPT всё выглядело так, как будто она описывает реальный аргумент команды (как она ранее описывала свойства HTML-тегов), на самом деле описанного ею аргумента не существовало в природе.

Подобное происходило и когда я спросил YaGPT, поддерживается ли некоторый функционал в одной из конфигураций 1С. Я получил уверенный ответ: “Да, там есть для этого все необходимые инструменты”, хотя на самом деле именно в этой конфигурации их не было (хотя они были в других).

Затем я решил поэкспериментировать с обучением [себя] с помощью LLM, и на пробу попросил YaGPT сгенерировать мне план учебного курса по теории групп. В ответ я получил что-то, что выглядело вполне правдоподобно, по крайней мере, на первый взгляд. Тогда я пошел вглубь и попросил рассказать мне первый вводный раздел - “Определение группы и примеры групп”. В нескольких абзацах я получил довольно неплохой ответ.

Но дальше я попросил несколько конкретных упражнений для закрепления материала. И мне дали задание доказать, что множество четных чисел с операцией умножения образует группу, каковой оно очевидно не являлось (в отличие от множества целых четных чисел с операцией сложения). Тогда я спросил у YaGPT: а является ли оно группой? Мне тут же (корректно) ответили, что нет - однако обоснование этому было дано совершенно несуразное.

Откуда берутся галлюцинации

Итак, как хорошо известно, у LLM часто бывают галлюцинации; а не слишком большие модели страдают галлюцинациями с завидной регулярностью - например, такими, как показано выше.

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

И вот, с учетом этой оптики я бы феноменологически описал происхождение галлюцинаций YaGPT (и вообще любых LLM) примерно следующим образом (эпистемический статус этого объяснения таков: теоретизирования от человека, интересующегося ML на уровне научпопа и в общих чертах знакомого с его математическими основами).

Внутри весов LLM тем или иным образом концептуализированы, помимо всего прочего, во-первых, две доменные области, во-вторых - общий паттерн того, как подобные доменные области соединяются (некий аналог правил вывода вроде Modus ponens, теоремы Байеса и подобных). И когда конкретный запрос “активирует” нейроны этих доменных областей и паттерн их соединения, они все вместе порождают результат.

Что же в этом плохого? А то, что те правила вывода, которые сохранены в весах нейросети, далеко не так точны, как истинные (очень сложные) правила вывода, действующие в реальности. Правило вывода “сообщество + космическая программа”, конечно, содержит большое количество довольно универсальных общих подправил, но оно также должно содержать большое число частных подправил - что, когда и как произошло в космической программе конкретного сообщества. А если частных подправил для какого-то сообщества там не прописано, то к нему это правило вывода будет плохо применимо (некоторые общие предположения можно сделать путем экстраполяции частных правил для других сообществ - но они будут заведомо неточны, а иногда в корне неверны).

В определенных случаях это работает очень хорошо. С одной стороны, то, что “приходило в голову” YaGPT (общие подправила), видимо, приходило в голову и создателям HTML, и они реализовали соответствующие параметры для тегов. С другой - не исключено, что сочетание доменов “HTML-теги и их параметры” и “конкретные задачи разметки текста” были хорошо представлены в обучающей выборке (и поэтому эвристические подправила в правиле вывода закрепились внутри нейросети в виде “примерно как в HTML”).

В других случаях нейросеть имела достаточно данных об обоих интересующих нас доменах, имела сравнительно неплохое представление о правилах вывода (ей попадалось достаточно сочетаний “домен, похожий на домен1” и “домен, похожий на домен2”), но все-таки слишком ограниченное. С одной стороны, в обучающей выборке явно было недостаточно данных, чтобы можно было уверенно вывести из них действительно релевантные подправила именно для этой пары доменов (”космическая программа”+”древние шумеры”, “понятие группы”+”конкретные примеры групп”); с другой - чтобы в весах нейросети закрепилось хотя бы понятие о границах применимости правила вывода (”все эти пары доменов [на которых основано правило вывода] имеют определенные общие свойства; для пар доменов, не обладающих этим свойствам, правило, вероятно, не слишком применимо”).

Когнитивные искажения и ложные воспоминания как галлюцинации биологических НС

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

Скорее всего, далеко не любое искажение можно описать в этих терминах, но некоторые - вполне. Рассмотрим, например, ошибку планирования. Мы довольно хорошо понимаем, что такое временная или финансовая оценка задачи/проекта, зачастую неплохо понимаем доменную область конкретной задачи, и у нас в голове есть довольно общий механизм “как дать оценку для задачи”. Так что наша Система 1 не испытывает никаких проблем с тем, чтобы наложить правило вывода на два домена и выдать результат: “на выполнение этой задачи нужно потратить примерно столько ресурсов”.

И, как мы знаем, для самых просто устроенных задач это будет, вероятно, довольно неплохая оценка; но для чего-то достаточно сложного - результат часто окажется далек от истины; вот только наш мозг не заметит подвоха точно так же, как не замечает его галлюцинирующая LLM.

В каком случае наша Система 1 может что-то заподозрить? Например когда мы плохо знаем одну из доменных областей: ”сколько времени нужно, чтобы построить космический корабль?” или “с какой скоростью может лететь африканская ласточка без груза?” Либо же обе доменные области нам могут быть мало-мальски знакомы, но у нас может не быть хорошего навыка давать оценку конкретного вида (не будет мало-мальски рабочих правил вывода): “сколько потребуется макарон для обеспечения суточной нормы калорий на троих людей в походе на три дня?”

Во всех подобных случаях Система 1 выдаст результат “Эээ…” (и мозг попробует подключить Систему 2). Вероятно, то же самое можно сказать и про LLM (за тем лишь исключением, что в базовом варианте таких нейросетей нет аналога Системы 2; но, возможно, плагины “поискать в Google” - это как раз один из таких запасных механизмов, активируемых по мере необходимости).

Ложные воспоминания у людей могут формироваться похожим образом: когда мозг реконструирует воспоминания, он может состыковать два или больше не связанных на самом деле образа, и объединить их как часть одного воспоминания. И затем он еще может подвязать на полученную картину дополнительные детали, заполняя пробелы.

Что дальше?

Итак, мы обсудили кое-какие шестеренки того, как, предположительно, могут формироваться галлюцинации в нейросетях (или, по крайней мере, как можно художественно описать соответствующие механизмы). Чем нам это может быть полезно?

Ну, во-первых, понимать шестеренки - это всегда хорошо с точки зрения эпистемической рациональности. А раз мы провели аналогии между биологическими и искусственными нейронными сетями, то тезисы “галлюцинации - это когнитивные искажения в ИНС” / “когнитивные искажения - это галлюцинации в БНС” могут улучшить ваше понимание той области, которую вы понимаете меньше благодаря знаниям в той, которую вы понимаете больше.

Во-вторых, аналогичным образом мы можем провести параллели между методиками улучшения результатов как мозга, так и LLM. Улучшить качество работы (и, в частности, снизить частоту галлюцинаций) в ИНС можно с помощью дообучения (fine tuning) на конкретную задачу. Подобным же образом может работать “дообучение” мозга на распознавание граничных ситуаций для применения (в целом скорее работающих) эвристик.

Наконец, это просто еще один пример того, какие параллели можно проводить между ИНС и БНС, что полезно для мета-навыка “рассуждать о нейросетях вообще”.


Этот пост в моем телеграм-канале: https://t.me/bayesian_little_list/39

Report Page