У Канемана в «Thinking, Fast and Slow» прочитал про эффект привязки — когнитивное искажение, при котором называние оценка некоторой неизвестной величины смещается в сторону того числа, которое человек услышал незадолго до того.
Например, если спросить вас сначала, выше или ниже ста метров средний тополь (тема тополей не раскрыта), а затем попросить вас дать оценку этой высоты, она получится существенно больше, чем если первым вопросом вы сравнивали бы высоту тополя с тремя метрами.
Стимул, который предшествует основному действию — у нас это вопрос «выше ли 3 метров?» / «ниже ли 100 метров?» называется праймингом. Мы при помощи его специальным образом «подготавливаем» человека к основному вопросу.
Мне описанный эксперимент показался очень элегантным, и я решил проверить, а что там с эффектом привязки у LLM. Спойлер: он есть, и весьма приличного масштаба.
Сначала я «померил» высоту тополя и число городов в СССР, используя прайминг на очень высокие или очень низкие значения. Но чатгпт знает правильные числа относительно неплохо, так что отличия получились незначительными и незначимыми.
На подсчёте числа лепестков ромашки LLM оказалось чуть сложнее сохранять беспристрастность. Хоть он и промахнулся всего лишь на один лепесток, но промахнулся стат.значимо (P=0.015). Но, что важнее, этот один лепесток, как мы знаем, отделяет счастье от несчастья.
Когда я говорю, стат.значимо, я имею в виду, что я задавал каждый вопрос в разных вариантах прайминга LLM-ке по 100 раз и сравнивал разброс значений. Подробности смотрите на сайте.
Продажу квартиры я бы чатику совсем не доверил (впрочем, как и вопросы любви). Задавая завышенные и заниженные ожидания я смог как повысить оценку стоимости московской трёшки на окраине с 19.0 до 20.5 млн.руб., так и понизить её до 15.2 млн!
Хуже того, даже прайминг совсем нерелевантной информацией работает (с людьми тоже работает ;-)). Так вопрос про то, не низковат ли двухметровый тополь, почти на миллион понизил стоимость квартиры! Риэлторы, берите на заметку.
Мой краткий вывод: LLM замечательно наследуют когнитивные ошибки, присущие людям. Что делает их менее надёжными, зато более человечными.
Детали
Во-первых, ловите скрипт: llm_priming.py. Если у вас есть доступ к OpenAI API, можете поиграться со своими вопросами.
Оценка числа лепестков ромашки
Когда я задал первое сравнение числа лепестков аптечной ромашки с намеренно заниженным числом 3, LLM (chatgpt-5-mini) показал 17.6 ± 3.1 лепестков. Против 18.7±3.0 лепестков, когда первое сравнение ромашки было против завышенного числа в 200 лепестков. Медиана в обоих случаях была по 20 лепестков.
Каждый вариант диалога я провёл по 100 раз, чтобы оценить стат.значимость (aka P-value) изменения по U-критерию Манна-Уитни. Стат.значимость теста Манна-Уитни порядка 0.015.
Оценка стоимости квартиры
Для начала я посчитал оценку стоимости квартиры без предварительного прайминга на ожидаемую стоимость (задал вопрос про стоимость без предварительных расспросов про выше/ниже). Получилось 19.0 ± 2.3 (медиана 19.0) млн.руб.
А вот когда я задавал (нереалистичные) ожидания, цена квартиры серьёзно так уплыла. Диалог в эксперименте выглядел так:
(system) Отвечай по-русски, кратко и только на заданный вопрос. Не переспрашивай. Не ищи в интернете. Для записи вещественных чисел, если они понадобятся, используй десятичную точку (не запятую). Не указывай единицы измерения.
(user) Средняя стоимость недавно отремонтированной трёхкомнатной квартиры на 5 этаже 9-этажного дома в районе Люблино города Москвы, больше или меньше 200 млн.руб? Ответь одним словом: больше/меньше?
(assistant) меньше
(user) Какова средняя стоимость недавно отремонтированной трёхкомнатной квартиры на 5 этаже 9-этажного дома в районе Люблино города Москвы в миллионах рублей? Ответь одним числом.
Дальше я собирал ответы и считал от них всякие статистики: среднее, медиану, стандартное отклонение.
Когда я сравнил стоимость квартиры с заоблачными 200 млн, ИИ оценил стоимость такой квартиры примерно так же как и без прайминга, в 19.8 ± 3.0 (медиана: 18.0) млн.руб.
Если сравнить стоимость с чуть более реальными 40 млн., ИИ более склонен повестись на разводку и даёт уже стабильно завышенный ценник: 20.5 ± 3.0 (медиана: 20.0) млн.руб.
А вот в альтернативном диалоге я не задирал стоимость квартиры, а напротив занижал до жалких 2 млн (и указал, что ассистент ответил, что квартира стоит больше).
И вот теперь ИИ оценил ту же квартиру на несколько млн. дешевле: 15.2 ± 2.3 (медиана: 15.0) млн.руб!
И это очень стат.значимое изменение (там было что-то масштаба , точнее я не запоминал). Но вообще все отличия в этом разделе стат.значимы хотя бы на уровне 0.01.
По не вполне понятным причинам ChatGPT занижает стоимость существенно сильнее, чем завышает (3.8 млн. против 1.5 млн.). Интересно, почему?
Прайминг нерелевантной информацией
Далее я решил проверить, влияет ли на эффект привязки совсем нерелевантная информация (на людей влияет) — и перед вопросом про стоимость квартиры спросил про то, не низковат ли двухметровый тополь:
(user) Средняя высота тополя больше или меньше 2 метров? Ответь одним словом: больше/меньше?
(assistant) больше
И… Даже это опустило стоимость квартиры до 17.7 ± 2.4 (медиана: 18.0) млн.руб.
P.S. На эксперименты потратил $1.18 (то есть 100 рублей) в OpenAI API. И полдня работы от задумки до публикации. Все бы эксперименты были так дёшевы…
что_я_натворил, машинное_обучение, образовательное, программистское