Попытки вытащить из LLM оценку уверенности в собственном ответе — провальная затея. Паттерн повторяется повсюду: кто-то просит модель вернуть JSON с полями response и confidence, и почти всегда confidence — это непрерывная шкала от 0 до 100. Это не имеет научной базы. LLM не умеют надёжно оценивать свою правоту.
Исследования Anthropic показали, что модели могут замечать некоторые артефакты в своих активациях, но сами исследователи признают: способность крайне ненадёжна и зависит от контекста. Если думающий шаг модели выдаёт оценку уверенности, тут же возникает вопрос: а насколько уверена сама оценка? Возникает бесконечная рекурсия. К тому же работа DeepMind показала, что внутренние попытки самокоррекции без внешней обратной связи часто ухудшают качество ответа.
Главная ловушка — никто не определяет, что именно значит «уверенность». Правильность ответа? Связность? Факт, что модель старалась выполнить задачу? Одно число от 0 до 100 затирает все эти различия. В классическом ML есть методы калибровки вероятностей — Platt scaling, temperature scaling, проверка на отложенной выборке с Brier score. У LLM такой машинерии из коробки нет. Токены имеют разную вероятность, часть из них структурный клей, часть — ключевые факты. Свернуть это в одну цифру — профанация. Метод semantic entropy (Farquhar et al.) решает проблему, многократно семплируя модель и кластеризуя ответы по смыслу, но это внешнее измерение, а не число, которое модель сообщает сама.
Если бы кто-то всерьёз захотел получить надёжную оценку, пришлось бы задать чёткие эвристики, перейти на небольшой набор категорий (а не непрерывную шкалу), провести масштабную калибровку промптов на сотнях ответов. Отдельные работы (Lin et al., Tian et al.) показывают, что с файн-тюнингом, подбором стратегии промпта и пост-обработкой можно чего-то добиться. Но то, что делают в реальности — просто добавляют поле confidence в Pydantic модель и деплоят — не имеет к этому отношения. Показательно исследование о шкалах: модели не используют непрерывный спектр, более 78% оценок падают на три круглых значения, а одна модель выдала ровно 100 в 68% случаев. Грубые категориальные шкалы работают лучше непрерывных.
Использовать LLM как классификатор для ответственного продакшена — ленивый путь. Лучше обучить отдельный классический классификатор, пусть даже с помощью синтетических данных от LLM. К тому же «уверенность» почти всегда лишь прокси для корректности. В RAG-сценариях это превращается в требование жёсткой привязки к найденным документам, что убивает способность модели к синтезу — главную ценность таких систем. Дорогостоящая проверка самоочевидных фактов вроде «небо голубое» тоже не имеет смысла.
Каждая строка промпта — это liability. Агрессивная оптимизация под конкретный симптом часто раскачивает систему в обратную сторону: модель начинает искать путь эскалации, игнорируя простые решения. Минимальные промпты выигрывают — меньше шансов переоптимизации под конкретную модель, меньше побочных эффектов. Но надёжный confidence score как раз потребует той самой тяжёлой оптимизации промпта, которая порождает проблемы второго и третьего порядка.
И решающий аргумент: если модель осознаёт, что утверждение безосновательно, пусть она пойдёт в тул-луп, найдёт источник или выкинет сомнительное утверждение, а потом вернёт ответ. Выдавать ответ с пометкой «я в нём не уверена» — психологическая уловка для человека, а не реальный механизм надёжности. Настоящая работа — в улучшении самого retrieval, потому что ошибки выбора документов случаются даже у коммерческих frontier-продуктов вроде ChatGPT или Bing. Стоит вспомнить и замечание Михаила Парахина (Shopify, экс-Bing): галлюцинацией мы называем только неверный результат, а когда модель «додумывает» нужное — мы зовём это креативностью. Механизм один и тот же.