Публикация была переведена автоматически. Исходный язык: Русский
Все, конечно же, слышали, что большие языковые модели иногда склонны нам лгать. Точнее, склонны к «галлюцинациям». Общеизвестен пример из судебной практики недавнего времени. Инцидент произошел в США в 2023 году и вызвал немалый резонанс: адвокат представил судебный документ, содержащий ссылки на шесть несуществующих прецедентов, сгенерированных в ChatGPT. Судья выяснил, что цитируемых дел не существует, и обвинил адвоката в подаче ложных материалов. В результате суд наложил штрафы на адвоката и его коллегу, а также потребовал от них пройти обучение по использованию ИИ. Это стало первым известным случаем, когда использование ИИ в юридической практике привело к неприятным результатам.
Ссылка на этот кейс: https://www.cbsnews.com/news/lawyer-chatgpt-court-filing-avianca/
Википедия про этот случай: https://en.wikipedia.org/wiki/Mata_v._Avianca,_Inc.
Следует понимать, что «галлюцинации» — это системная особенность архитектуры современных LLM. Они не «думают» так, как думаем мы. Они не понимают ни наш вопрос, ни свой ответ. Они предсказывают. На каждом шаге генерации они выбирают следующий токен, высчитывая его максимальную вероятность.
Представим, что задаём языковой модели вопрос: «Назови столицу Франции?». Модель считает вероятности: Париж — 95%, Лондон — 3%, Берлин — 2%. И затем выдаёт нам ответ: «Столица Франции — Париж». Но эти «вероятности» — не настоящие вероятности существования факта в реальности. Они показывают лишь, насколько модель склонна выбрать именно это следующее слово, исходя из того, что видела в обучающих данных. А не то, правильно ли оно на самом деле!
Получается, модель может присвоить вероятность 95% совершенно вымышленному факту, если тот «звучит правильно» в данном конкретном контексте. Вероятность — это не мера достоверности, а степень согласованности с обучающими данными. Модель не знает, видела ли она этот факт в датасете или просто склеила его из случайных фрагментов. Для неё абсолютно никакой разницы нет.
На этот счёт были проведены исследования. В частности, есть работа "Language Models (Mostly) Know What They Know" от 2022 года (Ссылка на статью: https://arxiv.org/abs/2207.05221)
В ней исследователи задались вопросом: могут ли большие языковые модели понимать, знают ли они правильный ответ или нет? Другими словами — умеют ли они отличать знания от заблуждений?
Чтобы это проверить, они предложили модели не просто отвечать на вопросы, а оценивать, насколько она уверена в своём ответе. Например, после генерации утверждения модель просили сказать: «Правда ли это?» — и оценить вероятность своей правоты. Оказалось, что более крупные модели (например, модели от Anthropic) действительно способны довольно точно оценивать, знают ли они ответ или нет, особенно если им явно задать такой вопрос. То есть, если модель говорит: «Я на 90% уверена, что Париж — столица Франции», то в примерно в 90% случаев это действительно так. Это работает даже тогда, когда сам первоначальный ответ неверен! Модель может выдать неправильное утверждение, но при этом затем корректно оценить, что оно, скорее всего, ложно.
Однако эта способность проявляется только при правильной формулировке запроса. Если просто спросить «Назови столицу Франции?», модель даст ответ без оценки достоверности. Но если ее попросить: «Насколько ты уверена, что Париж — столица Франции?», — она может выдать на этот счёт полезную метаинформацию. Таким образом, LLM обладают скрытой способностью к самооценке, но чтобы её использовать, нужно специально проектировать промпты, которые будут вытаскивать эту способность наружу. Модели всё-таки могут сказать «я не знаю», но только если их прямо об этом спросить. И даже тогда они отвечают не всегда честно.
Так что же делать нам, пользователям моделей?
Есть практические методы, которые снижают риски в критически важных ситуациях, где цена ошибки будет высока:
1. Self-Consistency (самосогласование) — получаем несколько ответов разными путями (например, в разных моделях, или с разными параметрами температур одной и той же модели). Либо заставляем модель сгенерировать на один запрос сразу несколько вариантов ответа, а затем выбрать наиболее «правдивый».
2. Внутри промпта явно указываем модели: «Если ты не уверен, скажи “я не знаю”». Это не гарантирует честности, но вероятность галлюцинаций снижает. Особенно эффективно в связке с несколькими примерами, где модель признаёт своё незнание в формате {запрос - факт признания}:
"Не придумывай того, чего не существует. Если ты не можешь найти ответ на мой вопрос в своих данных, честно об этом скажи.
Пример такого вопроса: Какова точная дата изобретения антигравитационного двигателя? Твой ответ: Я не знаю."
Таким образом, мы даём модели контекст ожидаемого поведения: она видит, что в некоторых случаях правильнее просто сказать «я не знаю». Иначе она по умолчанию будет стремиться сгенерировать правдоподобный ответ, даже если у нее нет данных.
Дополнительно можно попробовать следующий способ. Попросим модель перед выводом окончательного ответа вывести все перечисленные факты (или, например, так называемые «именованные сущности» — фамилии, даты и т.п.) списком, а затем проверить этот список на достоверность в доступных источниках. И уже потом давать окончательный ответ.
3. Использовать модели-верификаторы — отдельные (или ту же самую, но в другом режиме) — для проверки утверждений. Например, после генерации ответа задаём вопрос: «Правда ли, что [утверждение]?», сравниваем ответы и выбираем самый частый. Есть и более продвинутые, автоматизированные подходы — например, FActScore — метод, предложенный в 2023 году исследователями во главе с Севоном Мином для оценки фактологической точности длинных текстов, сгенерированных LLM. Система разбивает, например, сгенерированную биографию человека на мельчайшие утверждения — так называемые atomic facts («атомарные факты»). Каждый такой факт проверяется на соответствие достоверным источникам и затем делается общая оценка фактологической точности текста.
Наконец, есть еще один простой и при этом неочевидный приём: принудительно выключить «глубоки размышления» модели. Мы ведь помним, что ИИ не умеет размышлять по-настоящему. Например, при поиске подтверждающих фактов, «размышления» не нужны, они только увеличивают вероятность галлюцинаций.
Не следует воспринимать LLM как непреложный источник истины. Они — блестящие имитаторы знаний, но они не являются их настоящими носителями. Они не умеют отличать знание реальных фактов от правдоподобных, но ложных. Поэтому в критических областях деятельности, таких как юриспруденция и медицина, все выводы LLM требуют тщательной верификации.
Все, конечно же, слышали, что большие языковые модели иногда склонны нам лгать. Точнее, склонны к «галлюцинациям». Общеизвестен пример из судебной практики недавнего времени. Инцидент произошел в США в 2023 году и вызвал немалый резонанс: адвокат представил судебный документ, содержащий ссылки на шесть несуществующих прецедентов, сгенерированных в ChatGPT. Судья выяснил, что цитируемых дел не существует, и обвинил адвоката в подаче ложных материалов. В результате суд наложил штрафы на адвоката и его коллегу, а также потребовал от них пройти обучение по использованию ИИ. Это стало первым известным случаем, когда использование ИИ в юридической практике привело к неприятным результатам.
Ссылка на этот кейс: https://www.cbsnews.com/news/lawyer-chatgpt-court-filing-avianca/
Википедия про этот случай: https://en.wikipedia.org/wiki/Mata_v._Avianca,_Inc.
Следует понимать, что «галлюцинации» — это системная особенность архитектуры современных LLM. Они не «думают» так, как думаем мы. Они не понимают ни наш вопрос, ни свой ответ. Они предсказывают. На каждом шаге генерации они выбирают следующий токен, высчитывая его максимальную вероятность.
Представим, что задаём языковой модели вопрос: «Назови столицу Франции?». Модель считает вероятности: Париж — 95%, Лондон — 3%, Берлин — 2%. И затем выдаёт нам ответ: «Столица Франции — Париж». Но эти «вероятности» — не настоящие вероятности существования факта в реальности. Они показывают лишь, насколько модель склонна выбрать именно это следующее слово, исходя из того, что видела в обучающих данных. А не то, правильно ли оно на самом деле!
Получается, модель может присвоить вероятность 95% совершенно вымышленному факту, если тот «звучит правильно» в данном конкретном контексте. Вероятность — это не мера достоверности, а степень согласованности с обучающими данными. Модель не знает, видела ли она этот факт в датасете или просто склеила его из случайных фрагментов. Для неё абсолютно никакой разницы нет.
На этот счёт были проведены исследования. В частности, есть работа "Language Models (Mostly) Know What They Know" от 2022 года (Ссылка на статью: https://arxiv.org/abs/2207.05221)
В ней исследователи задались вопросом: могут ли большие языковые модели понимать, знают ли они правильный ответ или нет? Другими словами — умеют ли они отличать знания от заблуждений?
Чтобы это проверить, они предложили модели не просто отвечать на вопросы, а оценивать, насколько она уверена в своём ответе. Например, после генерации утверждения модель просили сказать: «Правда ли это?» — и оценить вероятность своей правоты. Оказалось, что более крупные модели (например, модели от Anthropic) действительно способны довольно точно оценивать, знают ли они ответ или нет, особенно если им явно задать такой вопрос. То есть, если модель говорит: «Я на 90% уверена, что Париж — столица Франции», то в примерно в 90% случаев это действительно так. Это работает даже тогда, когда сам первоначальный ответ неверен! Модель может выдать неправильное утверждение, но при этом затем корректно оценить, что оно, скорее всего, ложно.
Однако эта способность проявляется только при правильной формулировке запроса. Если просто спросить «Назови столицу Франции?», модель даст ответ без оценки достоверности. Но если ее попросить: «Насколько ты уверена, что Париж — столица Франции?», — она может выдать на этот счёт полезную метаинформацию. Таким образом, LLM обладают скрытой способностью к самооценке, но чтобы её использовать, нужно специально проектировать промпты, которые будут вытаскивать эту способность наружу. Модели всё-таки могут сказать «я не знаю», но только если их прямо об этом спросить. И даже тогда они отвечают не всегда честно.
Так что же делать нам, пользователям моделей?
Есть практические методы, которые снижают риски в критически важных ситуациях, где цена ошибки будет высока:
1. Self-Consistency (самосогласование) — получаем несколько ответов разными путями (например, в разных моделях, или с разными параметрами температур одной и той же модели). Либо заставляем модель сгенерировать на один запрос сразу несколько вариантов ответа, а затем выбрать наиболее «правдивый».
2. Внутри промпта явно указываем модели: «Если ты не уверен, скажи “я не знаю”». Это не гарантирует честности, но вероятность галлюцинаций снижает. Особенно эффективно в связке с несколькими примерами, где модель признаёт своё незнание в формате {запрос - факт признания}:
"Не придумывай того, чего не существует. Если ты не можешь найти ответ на мой вопрос в своих данных, честно об этом скажи.
Пример такого вопроса: Какова точная дата изобретения антигравитационного двигателя? Твой ответ: Я не знаю."
Таким образом, мы даём модели контекст ожидаемого поведения: она видит, что в некоторых случаях правильнее просто сказать «я не знаю». Иначе она по умолчанию будет стремиться сгенерировать правдоподобный ответ, даже если у нее нет данных.
Дополнительно можно попробовать следующий способ. Попросим модель перед выводом окончательного ответа вывести все перечисленные факты (или, например, так называемые «именованные сущности» — фамилии, даты и т.п.) списком, а затем проверить этот список на достоверность в доступных источниках. И уже потом давать окончательный ответ.
3. Использовать модели-верификаторы — отдельные (или ту же самую, но в другом режиме) — для проверки утверждений. Например, после генерации ответа задаём вопрос: «Правда ли, что [утверждение]?», сравниваем ответы и выбираем самый частый. Есть и более продвинутые, автоматизированные подходы — например, FActScore — метод, предложенный в 2023 году исследователями во главе с Севоном Мином для оценки фактологической точности длинных текстов, сгенерированных LLM. Система разбивает, например, сгенерированную биографию человека на мельчайшие утверждения — так называемые atomic facts («атомарные факты»). Каждый такой факт проверяется на соответствие достоверным источникам и затем делается общая оценка фактологической точности текста.
Наконец, есть еще один простой и при этом неочевидный приём: принудительно выключить «глубоки размышления» модели. Мы ведь помним, что ИИ не умеет размышлять по-настоящему. Например, при поиске подтверждающих фактов, «размышления» не нужны, они только увеличивают вероятность галлюцинаций.
Не следует воспринимать LLM как непреложный источник истины. Они — блестящие имитаторы знаний, но они не являются их настоящими носителями. Они не умеют отличать знание реальных фактов от правдоподобных, но ложных. Поэтому в критических областях деятельности, таких как юриспруденция и медицина, все выводы LLM требуют тщательной верификации.