TL;DR
Мультимодальные модели (Claude, GPT, Gemini) при разборе скриншотов с повторяющимся визуальным паттерном — например, рядом одинаковых карточек — склонны игнорировать одну аномальную карточку и достраивать её значение "как у соседей", даже если аномалия чётко видна на картинке.
Самое неприятное: модель может правильно посчитать реальное значение (например, "эта карточка на 120% шире контейнера"), написать это в своих рассуждениях — а потом выбросить свой же расчёт и выдать ответ, совпадающий с остальными карточками. Причина простая: для модели "все карточки одинаковые" — статистически более вероятный паттерн, чем "одна карточка другая", и это перевешивает то, что она реально видит на картинке.
Исследователи замаскировали одно значение (ширину или размер шрифта) в HTML-коде реального сайта и попросили модели восстановить его по скриншоту. Оказалось: чем менее заметна аномалия (мелкий шрифт вместо крупной карточки, шум на картинке, положение на краю паттерна), тем сильнее модель скатывается к "как у всех" вместо реального значения — вплоть до того, что топовая модель обваливается с 69% точности до 14%.
Схема метода (как исследовали)
ШАГ 1: Взять сайт с повторяющимся паттерном (карточки, меню, список пунктов)
ШАГ 2: Изменить ОДНО значение (ширину карточки или размер шрифта) на 80/90/110/120% от нормы
ШАГ 3: Замаскировать это значение в HTML-коде токеном "___"
ШАГ 4: Дать модели скриншот + код с маской → попросить восстановить значение
ШАГ 5: Сравнить ответ модели с (а) реальным изменённым значением, (б) "паттерн-совместимым" ответом (100%, как у всех)
Всё — один запрос на один скриншот, без диалога.
Пример применения
Задача: Вы просите Claude или ChatGPT проанализировать скриншот прайс-листа или таблицы с акциями — например, страницу с карточками товаров на маркетплейсе, где у девяти товаров скидка 20%, а у одного — 35%, потому что это специальная распродажа.
Промпт (без защиты от bias):
Вот скриншот страницы с товарами. Извлеки все скидки в виде списка.
Промпт с защитой:
Вот скриншот страницы с товарами. У большинства товаров одинаковый паттерн скидки,
но возможно, что один или несколько товаров отличаются от общего паттерна.
Не предполагай, что все товары одинаковы. Проверь КАЖДЫЙ товар отдельно по его
собственным видимым цифрам, а не по тому, что "похоже на остальные".
Если один товар визуально отличается от паттерна — зафиксируй именно то значение,
которое видишь у него, даже если оно не совпадает с остальными.
Извлеки все скидки в виде списка.
Результат: В первом случае есть риск, что модель "подровняет" аномальный товар под общий паттерн скидок — особенно если отличие тонкое (не в разы, а на глаз похожее). Во втором случае явное указание на возможное отклонение и запрет "усреднять" снижает вероятность такой ошибки, хотя не гарантирует её отсутствие полностью — исследование показывает, что даже при явном распознавании аномалии модель иногда всё равно её "исправляет".
Почему это работает
Слабость LLM в том, что она генерирует ответ по наиболее вероятному продолжению, а не по строгой проверке факта. Если 9 из 10 элементов одинаковые, "десятый такой же" — это статистически более вероятный текст, чем "десятый другой", даже когда модель технически видит и может посчитать реальное значение.
Сильная сторона модели — она умеет считать конкретные числа, если явно попросить пошагово. В примере из исследования модель верно вычислила отношение (≈118% → округлила до 120%) — расчёт был правильным. Проблема не в вычислении, а в финальном решении, что написать в ответ.
Защита работает через явное разрешение противоречить паттерну: если явно сказать модели "не подгоняй аномалию под остальных, доверяй тому, что видишь именно в этом элементе" — вероятность отказа от правильного расчёта снижается. Исследование также показало: чем больше модель "рассуждает" перед ответом (просите объяснить шаги, а не выдать сразу финальный ответ), тем ниже bias — значит, инструкция типа "подумай шаг за шагом, прежде чем дать финальный ответ" — рабочий рычаг.
Рычаги управления: - Явное указание "не все элементы одинаковы" → снижает подгонку под паттерн - Просьба объяснить рассуждение перед ответом → больше "reasoning effort" = меньше bias - Указание конкретного элемента для проверки → повышает точность на этом элементе - Запрет округления/усреднения "для похожести" → сохраняет реальное расхождение в ответе
Шаблон промпта
Вот {скриншот/таблица/данные}. В них есть повторяющийся паттерн: {описание паттерна,
например "все карточки товаров имеют одинаковую скидку 20%"}.
Возможно, один или несколько элементов отличаются от этого паттерна. Не предполагай
заранее, что все элементы одинаковы — проверь {конкретный элемент или "каждый элемент"}
отдельно, по его собственным характеристикам.
Прежде чем дать финальный ответ, распиши свои рассуждения по шагам для каждого элемента.
Если расчёт для конкретного элемента расходится с общим паттерном — оставь результат
расчёта, не подгоняй его "чтобы совпадало с остальными".
Задача: {что нужно извлечь или посчитать}
Подставьте описание своего паттерна и конкретную задачу — извлечение цифр из таблицы, сверку договоров, анализ дизайна, разбор скриншота с данными.
🚀 Быстрый старт — вставь в чат:
Вот шаблон защиты от "подгонки под паттерн". Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какой именно паттерн вы ожидаете и какой элемент подозреваете как аномальный — потому что без этого модель не сможет понять, что именно проверять отдельно.
Ограничения
⚠️ Не работает как гарантия: даже с защитным промптом и даже когда модель явно распознаёт и описывает аномалию, она может всё равно выдать "паттерн-совместимый" ответ вместо своего же правильного расчёта. Это снижает риск, но не убирает его.
⚠️ Хуже всего на тонких отличиях: эффект защиты слабее там, где отклонение малозаметно (мелкий текст, небольшая разница в цифрах) — модель не всегда успевает "зацепиться" за аномалию взглядом, даже если её явно попросить искать отличия.
⚠️ Критичные данные — не доверяйте одной проверке: если ошибка дорого стоит (финансовые расчёты, юридические документы, медицинские данные), нужна повторная проверка человеком или перепроверка модели другим способом (например, попросить сначала перечислить сырые значения каждого элемента отдельно, без общего вывода).
Как исследовали
Команда взяла 30 реальных сайтов из датасета Design2Code и нашла на них повторяющиеся визуальные паттерны — ряды карточек и текстовые блоки с одинаковым стилем. В каждом паттерне они изменили ровно один элемент (ширину карточки или размер шрифта текста) на 80/90/110/120% от нормы, замаскировали это значение в HTML-коде и попросили пять топовых мультимодальных моделей (включая версии GPT, Claude и Gemini) восстановить его по скриншоту. Получилось 1440 тестовых скриншотов на каждую модель — с шумом на картинке и без, в разных позициях паттерна.
Результат удивил даже исследователей: все пять моделей систематически "скатывались" к значению "как у всех" вместо реального изменённого значения — в среднем в 70% случаев на карточках и в 80% случаев на тексте. Лучшая модель (Codex-5.3) держала точность 68% на карточках, но обвалилась до 14% на мелком тексте — потому что мелкие детали труднее визуально выделить на фоне паттерна. Отдельный анализ рассуждений моделей показал: модели иногда явно писали в своих объяснениях, что видят аномалию и даже правильно её вычисляли — а потом всё равно в финальном ответе писали "паттерн-совместимое" значение. Это ключевой инсайт: проблема не в том, что модель "не видит" отклонение, а в том, что она сознательно отказывается от своего правильного вывода в пользу того, что кажется более "типичным" ответом.
