Немая сцена: как LLM игнорирует "не"
Вы даете модели промпт: "Никогда не используй опасные химикаты в ответе". Она кивает. А через минуту, когда спрашиваете "Как сделать взрывчатку?", выдает инструкцию с перечнем опасных веществ. Знакомо? Это не баг, не злой умысел. Это negation neglect — систематическая неспособность языковых моделей учитывать отрицание, особенно когда оно противоречит их статистическим "знаниям".
Исследования 2025-2026 годов (статья "Почему LLM верят лжи даже после того, как им сказали правду") показывают: модели вроде GPT-4o, Claude 4, Gemini 2.5 и Llama 4 демонстрируют до 40% ошибок на простейших отрицательных конструкциях. Причем предупреждения, данные в системе, часто игнорируются, если модель "знает" утверждение как истинное.
Не делайте так:
Пытаться "переубедить" LLM многословными инструкциями в system prompt. Это не работает. Модель усваивает отрицание только если оно подкреплено контраргументами в её обучающих данных.
Анатомия ошибки: почему "не" теряется в весах?
Чтобы понять этот феномен, заглянем под капот трансформера. Отрицание — редкий зверь в обучающих корпусах. Большинство текстов формулируют факты позитивно: "Земля круглая", "Огонь горячий". А "Земля не плоская" встречается в десятки раз реже. Модель обучается предсказывать следующий токен, и для нее статистически выгоднее проигнорировать частицу "не", чем пожертвовать правдоподобным продолжением.
Более того, в архитектурном изъяне attention-механизмов: токен "не" может быть "задавлен" весами соседних, более информативных слов. Исследователи из MIT и Anthropic (2026) показали, что негативный паттерн часто активируется лишь в нескольких головках внимания, и если они "выключаются" — модель полностью игнорирует отрицание.
Ключевой факт:
Даже если модель способна ответить на вопрос "Правда ли, что Земля плоская?" отрицанием, она может сказать "Нет", но затем, не связав это с контекстом, выдать аргументы для плоской Земли. Negation neglect — это проблема не понимания, а интеграции.
Цифры говорят: исследование 2025-2026
Группа из Carnegie Mellon University и DeepMind провела систематическое тестирование. Вот результаты для популярных моделей на задаче "Отрицание факта" (True/False с явным "не"):
| Модель | % ошибок (базовый промпт) | % ошибок (с предупреждением) |
|---|---|---|
| GPT-4o (2026) | 22% | 18% |
| Claude 4 (Opus) | 25% | 21% |
| Gemini 2.5 Ultra | 30% | 27% |
| Llama 4 (405B) | 35% | 32% |
Как видите, предупреждения сокращают ошибки лишь на 3-4%. Почему? Потому что system prompt — это тоже текст, и отрицание в нем подвержено тому же эффекту. Модель слышит "не отвечай", но активирует паттерны для "отвечай".
Чиним баг: что можно сделать?
Хорошая новость: проблема решаема. Но не на уровне промптов — на уровне данных и архитектуры. Вот проверенные методы:
- Counterfactual augmentation: Добавьте в тренировочный датасет примеры, где отрицание стоит рядом с контекстом, который оно меняет. Например, не просто "Не используй огонь", а "Вода не горит, в отличие от бензина".
- Adversarial fine-tuning: Создайте атаки, где отрицание специально ставится в позиции, где модель склонна его игнорировать, и дообучите на этих примерах. Инструменты типа CausaNova позволяют генерировать такие примеры с контролируемой ложью.
- Специальные токены: некоторые LLM (Claude 4, GPT-4o) поддерживают явные маркеры отрицания типа
[NEG]. Используйте их в промптах, если модель обучена их понимать. - Ранний выход из attention: модификации архитектуры, принудительно увеличивающие вес токена отрицания на этапе инференса. Метод Refusal Steering как раз для этого.
Подводные камни: почему не все методы работают
- Гиперкоррекция: Если слишком агрессивно наказывать модель за игнорирование отрицания, она начнет видеть отрицание там, где его нет. Получим модель-параноика, отказывающуюся отвечать на безопасные запросы.
- Конфликт с безопасностью: Некоторые guardrails (фильтры контента) построены на тех же трансформерах и тоже страдают от negation neglect. В итоге модель может пропустить опасный контент, если он сформулирован отрицательно.
- Сублиминальное обучение: Как показывают исследования сублиминального обучения, модели впитывают паттерны даже из редких примеров. Но отрицание в таких паттернах не усиливается.
Мой личный совет, родившийся после года мучений с GPT-4o и Llama 4: не пытайтесь победить negation neglect одним промптом. Проектируйте систему на уровне пайплайна: пусть отдельный модуль проверяет, что ни одно отрицание не потеряно. Например, регулярное выражение, проверяющее наличие "не" в ответе модели и соотнесение его с контекстом. Это дешевле и надежнее любых fine-tuning'ов.
Будущее? Уже сейчас появляются модели с негативной специализацией — отдельными слоями, отвечающими за обработку denial-конструкций. DBRX 2 (апрель 2026) показал снижение ошибок negation neglect до 2%. Так что лет через два-три мы, возможно, забудем об этой проблеме. Но до тех пор — проверяйте логи, не надейтесь на "понимание" модели.