Почему LLM галлюцинируют
Думаю, каждый из нас, кто активно работает с LLM, хотя бы раз сталкивался с ее галлюцинациями.
Галлюцинации - это когда ИИ уверенно придумывает несуществующие факты или детали вместо того, чтобы честно сказать: я не знаю.
На днях у OpenAI вышла статья, которая популярно объясняет, откуда берется проблема, и как с ней пытаются бороться (все лучше, но все еще не слишком эффективно).
Вкратце, проблема возникает уже на предобучении, когда модель учится предсказывать следующий токен, и для редких сочетаний предсказание выходит не слишком точным. Затем механизм штрафов на дообучении поощряет скорее угадывать, чем отвечать «не знаю».
Допустим, языковой модели задают вопрос о чьём-то дне рождения, а она не знает ответ. Если она просто угадывает, например, 12 сентября, то шанс попасть в точку всего 1 из 365.
Так что, модели выгоднее гадать, чем признавать неосведомленность. Увеличение штрафов за неправильный ответ по сравнению с признанием неосведомленности решает проблему лишь частично.
Что в итоге?
Несмотря на то, что механизм галлюцинаций разработчикам LLM понятен и каждая следующая версия моделей врет меньше, окончательного решения проблемы нет. Кроме того, за снижение галлюцинаций приходится расплачиваться снижением точности.
Как я решаю проблему галлюцинаций, когда в задачах нужна фактура, а не полет фантазии: ◽️В первом/системном промпте указываю следующее: ▪️ничего не придумывай, ▪️если не знаешь ответ или нет такой информации, то отвечай «неизвестно».
◽️Прошу привести ссылки на источники сомнительных утверждений.
◽️Снижаю температуру до 0.3, когда есть возможность менять настройки.
◽️Вычитываю сама и фактчекую основные моменты.
◽️Прошу другую модель вычитать и проверить.
А как вы решаете проблему галлюцинаций? Какие фразы в промптах используете?