LLM знают, чего именно они не знают
Эх, когда-нибудь я допишу большой хабр про механистическую интерпретируемость и
Sparse Auto-Encoders (SAE), а пока, будет только небольшой разбор крутейшей свежей статьи от отцов-основателей этой области Javier Ferrando, Neel Nanda, et al. про самоконтроль галлюцинаций в LLM.
Можно ли определить заранее, выдаст модель галлюцинацию на какой-то промпт или ответит осознанно? Похоже, иногда это возможно. Авторы обнаружили, что когда LLM видит какую-то сущность в запросе (имя человека, название песни и тп), то внутри неё активируются механизмы для проверки своих же знаний, что-то вроде «а есть ли у меня в весах что-то про Steve Jobs или нет?». И обычно у LLM это работает довольно неплохо, в активациях есть линейные направления (латенты SAE), которые отвечают за это разделение «известная/ неизвестная» сущность. На картинке к посту можно видеть, как активируются признаки на реальном и вымышленном текстах.
Оказалось, что этот же латент отвечает и за «refusal» поведение, когда модель/ассистент отказывается отвечать на запрос и бросается заглушкой вроде «As a large language model I don’t have knowledge about blablabla». Подавление неправильного ответа происходит через блокирование специализированной головы внимания, отвечающей за извлечение знаний о сущностях (да, у каждой LLM есть отдельная голова на каком-то конкретном слое для этого). А главное, контролируя это латентное направление в языковых моделях, можно вручную регулировать баланс между галлюцинациями и отказами отвечать.
Все эксперименты проводились на Gemma 2B и 9B, так как для каждого их слоя обучены и опубликованы SAE —
Gemma Scope.
Статья