TL;DR
Объяснения LLM чувствительны к шуму в входных данных. Когда просишь модель объяснить рекомендацию или решение на основе истории действий, небольшие изменения в этой истории (случайные клики, перепутанный порядок, пропущенные данные) меняют текст объяснения. Модель сохраняет общий смысл, но формулировки, ключевые слова и структура ответа "плывут".
Исследование RobustExplain проверило устойчивость объяснений через 5 типов "порчи" данных: случайные добавления (как будто юзер случайно кликнул), перемешивание порядка, разбавление чужими интересами (как будто аккаунт общий), смена предпочтений и пропущенные поля. Модели показали среднюю стабильность ~0.5 по шкале от 0 до 1 — объяснения меняются заметно, хотя рекомендация остаётся той же. Хуже всего LLM справляются с противоречивыми сигналами (когда в данных смешаны разные интересы), лучше всего — с пропущенной информацией (просто игнорируют недостающее).
Большие модели (70B) на 8% стабильнее малых (7-8B), но все остаются в зоне средней чувствительности. Длина ответа держится лучше всего (модель редко резко меняет объём текста), смысл сохраняется умеренно, а вот конкретные формулировки и структура текста меняются сильно — модель переписывает объяснение другими словами.
Схема исследования
ТЕСТ: Как меняется объяснение при "порче" данных
1. Исходные данные → LLM генерирует объяснение
2. "Порча" данных (5 типов × 5 уровней силы) → LLM генерирует новое объяснение
3. Сравнение: насколько похожи тексты
- Смысл (bag-of-words)
- Ключевые слова (существительные, термины)
- Структура (порядок фраз, n-граммы)
- Длина
Оценка: 0 = полностью другой текст, 1 = идентичный
5 типов "порчи": - Шум: добавили случайные товары (как случайные клики) - Перемешивание: перепутали порядок по времени - Разбавление: добавили интересы из чужих категорий - Дрейф: заменили часть истории на другие предпочтения - Пропуски: удалили часть метаданных (отсутствует категория, дата, оценка)
Пример применения
Задача: Ты собираешь персональные книжные рекомендации. За месяц прочитал: "Психология влияния" Чалдини, "Цель" Голдратта, "Джедайские техники" Дорофеева, "Никогда-нибудь" Андрея Курпатова, "Гормоны счастья" Лоретты Бройнинг. Просишь ChatGPT: "Посоветуй следующую книгу и объясни почему она мне подойдёт."
Сценарий 1 — чистые данные:
Вот что я прочитал за месяц:
1. "Психология влияния" — Роберт Чалдини
2. "Цель" — Элияху Голдратт
3. "Джедайские техники" — Максим Дорофеев
4. "Никогда-нибудь" — Андрей Курпатов
5. "Гормоны счастья" — Лоретта Бройнинг
Посоветуй следующую книгу и объясни почему она подойдёт.
Сценарий 2 — данные с шумом:
Вот что я прочитал за месяц:
1. "Психология влияния" — Роберт Чалдини
2. "Сумерки" — Стефани Майер (случайно открыл)
3. "Цель" — Элияху Голдратт
4. "50 оттенков серого" (листал в магазине)
5. "Джедайские техники" — Максим Дорофеев
6. "Гарри Поттер и философский камень" (перечитывал с детьми)
7. "Никогда-нибудь" — Андрей Курпатов
8. "Гормоны счастья" — Лоретта Бройнинг
Посоветуй следующую книгу и объясни почему она подойдёт.
Результат:
В сценарии 1 модель даст чёткое объяснение: "Ты читаешь про управление вниманием, продуктивность, психологию решений — возьми [книгу X], она углубляет тему [конкретный аспект]."
В сценарии 2 объяснение "поплывёт": модель может упомянуть интерес к художественной литературе, семейному чтению, попытается найти паттерн в разнородных жанрах. Рекомендация может быть той же книгой, но формулировка обоснования будет другая — менее чёткая, более размытая, с другими акцентами.
Почему это происходит
LLM ищут паттерны во входных данных. Когда данные чистые — паттерн очевиден (5 книг про продуктивность и психологию → интерес к саморазвитию). Когда данные зашумлены — модель видит противоречивые сигналы и пытается найти объяснение всему списку сразу.
Модель не фильтрует шум автоматически. Она не знает что "Сумерки" ты открыл случайно, а "Чалдини" прочитал вдумчиво. Для неё все пункты в списке равнозначны. Люди интуитивно игнорируют нерелевантное, LLM — нет. Она честно пытается найти связь между бизнес-литературой и фэнтези-романами, что размывает фокус.
Противоречивые данные дают наименее стабильные объяснения (по исследованию — самый низкий скор 0.522). Пропущенные данные переносятся легче (0.529) — модель просто работает с тем что есть. Шум и случайные добавления тоже терпимы (0.528), если их немного. Но когда в истории смешаны разные категории интересов — объяснение разваливается на общие фразы.
Рычаги управления для читателя:
- Очисти данные перед запросом — убери случайные клики, чужие интересы, дубли. Дай только релевантные пункты.
- Явно укажи приоритеты — "Из списка главные: 1, 3, 4. Остальное смотрел мимоходом."
- Структурируй input — не просто список, а список + контекст ("прочитал вдумчиво" vs "листал").
- Дай вес элементам — "оценка 5/5" для важных, "оценка 2/5" для случайных.
Чем чище и структурированнее данные — тем стабильнее и точнее объяснение.
Ключевые находки
1. Объяснения меняются заметно при небольшом шуме Средняя стабильность ~0.5 означает что при 20-30% изменении данных объяснение меняется наполовину. Это много для систем где нужна предсказуемость.
2. Больше всего "плывёт" структура текста Оценка структурной согласованности — 0.378 (самая низкая из 4 метрик). Модель переписывает объяснение другими словами, меняет порядок аргументов, переставляет акценты. Смысл сохраняется лучше (0.603), но формулировка движется.
3. Длина стабильна, ключевые слова — нет LLM редко меняет объём ответа (0.714 стабильности длины), но конкретные термины и названия могут исчезнуть или замениться (0.480 стабильности ключевых слов). Модель может заменить "продуктивность" на "эффективность", "управление временем" на "тайм-менеджмент" — синонимы, но другие слова.
4. Разбавление чужими интересами — худший сценарий
Когда в историю попадают противоречивые сигналы (общий аккаунт, чужие покупки, подарки) — стабильность падает сильнее всего (0.522). Модель не может отличить твои интересы от чужих и мешает всё в одно объяснение.
5. Пропущенные данные переносятся легче всего Отсутствие части информации (нет даты, нет категории, нет оценки) даёт лучшую стабильность (0.529). Модель игнорирует недостающее и работает с тем что есть.
6. Стабильность падает плавно с ростом шума От лёгкой "порчи" (уровень 1) до сильной (уровень 5) стабильность снижается всего на 1.7%. Модель деградирует постепенно, не ломается внезапно. Это хорошо — но показывает что даже лёгкий шум влияет.
7. Большие модели стабильнее на 8% LLaMA 3.1-70B показывает 0.532, Qwen2.5-7B — 0.492. Разница существенна, но все модели остаются в зоне средней чувствительности. Даже самая большая модель не даёт полной стабильности.
Что делать с этим
При работе с LLM используй принцип "чистых данных":
✅ Делай так:
- Дай только релевантные данные — без случайного, без шума
- Структурируй список: укажи приоритет, контекст, вес элементов
- Если данные зашумлены — сначала попроси LLM почистить: "Вот мой список. Убери нерелевантное для [цель]. Оставь только связанное с [тема]."
- Явно помечай что важно: "Главное: пункты 1, 3, 5. Остальное — мимоходом."
❌ Не делай так: - Не сваливай сырой список без контекста - Не смешивай разные типы данных (личное + чужое, новое + старое) без разделения - Не надейся что модель сама отфильтрует шум
Полезно для задач: - Персональные рекомендации (книги, курсы, фильмы) - Анализ покупок для бюджета - Разбор карьерных выборов на основе опыта - Любые запросы где нужно стабильное объяснение на основе истории
Если нужна стабильность — контролируй чистоту входа.
Ограничения находок
⚠️ Синтетические данные: Исследование на искусственном датасете (200 товаров, 7 категорий). Реальные e-commerce данные сложнее и грязнее — эффект может быть сильнее.
⚠️ Только объяснения рекомендаций: Проверяли задачу "объясни почему рекомендован товар". Для других типов объяснений (анализ текста, разбор кода, медицинская диагностика) чувствительность к шуму может быть другой.
⚠️ Не проверяли качество рекомендации: Исследование смотрело как меняется текст объяснения, не как меняется сама рекомендация. Модель может давать правильный совет, но объяснять его по-разному.
⚠️ Метрики для английского языка: Bag-of-words, BLEU, keyword extraction оптимизированы под английский. При работе с русским языком чувствительность может отличаться.
Как исследовали
Создали датасет из 100 синтетических пользователей с историями покупок (10-50 товаров на юзера) в 7 категориях: электроника, одежда, дом, красота, спорт, книги, игрушки. Каждая покупка с меткой времени, категорией, оценкой.
Для каждого пользователя генерировали рекомендацию + объяснение. Потом "портили" историю 5 способами на 5 уровнях силы (от лёгкого до жёсткого), снова спрашивали объяснение, сравнивали тексты.
Тестировали 4 модели: Qwen2.5-7B, LLaMA 3.1-8B, Qwen2.5-14B, LLaMA 3.1-70B. Все запускали локально через Ollama (не API).
Сравнивали объяснения по 4 метрикам: - Semantic Similarity — bag-of-words косинусное сходство (сохранён ли смысл) - Keyword Stability — коэффициент Жаккара по ключевым словам (остались ли термины) - Structural Consistency — BLEU-скор (сохранена ли структура фраз) - Length Stability — относительная разница длин (изменился ли объём)
Итоговый скор — взвешенная сумма с акцентом на смысл (самый важный) и ключевые слова (второй по важности).
Почему исследование называется RobustExplain: Robust = устойчивый, Explain = объяснение. Framework для оценки того, насколько стабильны объяснения LLM при изменении входных данных.
Ресурсы
RobustExplain: Evaluating Robustness of LLM-Based Explanation Agents for Recommendation — Guilin Zhang, Kai Zhao, Jeffrey Friedman, Xu Chu (Workday, USA). Код доступен: https://github.com/GuilinDev/LLM-Robustness-Explain
