Мы часто видим, как LLM уверенно генерирует вымышленные факты: «Препарат X одобрен FDA» — а препарата не существует, или RAG-цитата с несуществующей страницей. Это не случайность, а следствие авторегрессионной природы моделей: следующий токен предсказывается по распределению, а не по истине. Для бизнес-критичных систем такое недопустимо. Наша команда разработала многоуровневую систему обнаружения ложных утверждений — галлюцинаций, которая зарекомендовала себя в продакшене. Более 5 лет мы занимаемся NLP и MLOps, внедрили более 20 проектов RAG и детекции ошибок.
Почему стандартные методы не работают?
Проблема не в «незнании» модели — она в том, что GPT-4, Claude, Llama и их аналоги не имеют внутреннего механизма верификации. Модель не знает, что она не знает. Уверенность в ответе (confidence score из logprobs) слабо коррелирует с фактической точностью: можно получить logprob близкий к 0 для галлюцинированного факта. Основных источников галлюцинаций три. Первый — mismatch между retrieval и generation: chunk_size=512 без overlap, FAISS с L2-метрикой, слабая embedding-модель. Второй — temporal drift: модель обучена на данных до определённой даты. Третий — trade-off между полезностью и точностью при RLHF. Наш опыт показывает, что в 70% случаев проблема в первом источнике.
Как построить систему детекции галлюцинаций?
Детекцию галлюцинаций нельзя решить одним методом. На практике применяем многоуровневую архитектуру:
Self-consistency проверка
Генерируем N ответов на один вопрос с temperature > 0 (обычно N=5–10, temperature=0.7). Сравниваем ответы семантически через sentence-transformers (paraphrase-multilingual-mpnet-base-v2). Если вариативность высокая — факт ненадёжный. Self-consistency даёт в 3 раза более точную оценку достоверности, чем logprob-анализ.
Grounding score
Для RAG-систем: проверяем, поддерживается ли каждое утверждение в ответе извлечёнными чанками. Используем NLI-модель (cross-encoder/nli-deberta-v3-base) для оценки entailment между ответом и контекстом. Утверждение с entailment score < 0.6 помечается как непроверенное. Grounding score точнее, чем простая проверка по ключевым словам. NLI-верификация на 40% эффективнее для выявления галлюцинаций.
Retrieval faithfulness
Метрики RAGAS (RAGAS: Automated Evaluation of Retrieval Augmented Generation) Es et al., 2023: faithfulness, answer_relevancy, context_precision. Faithfulness < 0.7 при context_precision > 0.8 означает, что контекст был, но модель его проигнорировала.
External fact-checking
Для критичных доменов (медицина, право, финансы): верификация через поиск (Tavily, Bing Search API) или специализированные knowledge base (Wikidata SPARQL, PubMed API). Утверждения с именованными сущностями прогоняем через NER (spaCy + кастомная модель) и верифицируем каждую сущность отдельно.
Пошаговая инструкция внедрения
- Аудит текущего RAG-пайплайна: анализируем chunk strategy, embedding-модель, промпты. Собираем датасет ground truth из 100–200 реальных запросов.
- Baseline-замеры: общий hallucination rate, faithfulness, latency p99.
- Выбор методов: для простых сценариев достаточно self-consistency, для критичных — комбинация grounding score и внешней верификации.
- Интеграция детектора как middleware с логированием в Grafana.
- Мониторинг и калибровка порогов на датасете из 100–200 запросов.
Подробный чек-лист аудита
- Оценка качества ретривера: precision@k, recall@k
- Анализ chunk strategy: размер, overlap
- Проверка embedding-модели: размерность, косинусная близость
- Аудит промптов: наличие инструкций по точности
- Ручная разметка 100–200 запросов для ground truth
Практический кейс
Наш клиент — юридическая компания, внутренний ассистент по прецедентному праву. Модель: GPT-4-turbo с RAG на 50k документах (pgvector + LangChain). Проблема: 18% ответов содержали ссылки на несуществующие дела или неверные даты решений (выявлено ручным аудитом 200 запросов).
Решение: добавили двухуровневую проверку. На уровне retrieval — reranker cross-encoder/ms-marco-MiniLM-L-6-v2 поднял context_precision с 0.61 до 0.84. На уровне generation — NLI-верификация каждого юридического утверждения + regex-извлечение номеров дел с последующей проверкой по базе арбитражных решений через API. Доля галлюцинаций упала до 3.2% за 2 недели итераций. Экономия на ручной верификации составила более 1 млн рублей в год.
Метрики для оценки качества детекции
| Метрика |
Инструмент |
Целевое значение |
| Hallucination rate |
Ручной аудит + NLI |
< 5% для продакшена |
| Faithfulness (RAGAS) |
ragas library |
> 0.80 |
| Grounding score |
NLI deberta |
> 0.65 per claim |
| Self-consistency |
sentence-transformers |
cosine sim > 0.75 |
| Latency overhead |
— |
< 500ms на детекцию |
Сравнение методов детекции
| Метод |
Точность |
Задержка |
Домены применения |
| Self-consistency |
Средняя |
+200ms |
Любые |
| Grounding score |
Высокая |
+100ms |
RAG |
| External fact-checking |
Очень высокая |
+1–3s |
Медицина, право |
Что входит в работу
- Аудит текущего пайплайна: качество ретривера, chunk strategy, embedding-модель, промпты.
- Baseline-измерение: hallucination rate, faithfulness, latency.
- Выбор и настройка методов детекции под специфику домена.
- Интеграция детектора как middleware в production.
- Мониторинг: дашборд в Grafana, алерты при дрифте метрик.
- Документация и обучение команды.
Стоимость внедрения — от 150 000 до 500 000 рублей в зависимости от сложности домена.
Процесс внедрения
Аудит текущего состояния — анализируем существующий пайплайн: качество ретривера, chunk strategy, embedding-модель, промпты. Собираем датасет из 100–200 реальных запросов с проверкой по ground truth.
Baseline-измерение — получаем цифры: hallucination rate, faithfulness, latency. Без baseline непонятно, что улучшать.
Многоуровневая детекция — выбираем методы под специфику домена. Медицина требует внешней верификации; внутренние знания компании — достаточно grounding score.
Интеграция в пайплайн — детектор встраивается как middleware. Ответы с низким grounding помечаются предупреждением или отправляются на human review.
Мониторинг в продакшене — логируем все оценки, строим дашборд в Grafana. Drift в метриках — сигнал к переиндексации или смене промпт-стратегии.
Сроки: от 2 недель для добавления детекции в существующий RAG-пайплайн до 2 месяцев для полноценной системы верификации с внешними источниками в сложном домене. Устранение галлюцинаций в production сокращает затраты на ручную верификацию ответов.
Свяжитесь с нами, чтобы оценить ваш проект и получить предложение под ключ. Закажите внедрение детекции галлюцинаций уже сегодня.
Объяснимость ML: SHAP, LIME, Integrated Gradients и требования EU AI Act
Представьте: модель кредитного скоринга отклонила заявку. Клиент требует объяснение, compliance-офцер — развёрнутую документацию. Без встроенных методов объяснимости (XAI) соответствие современным регуляторным требованиям невозможно. Наш опыт — более 50 проектов по внедрению SHAP, LIME, Integrated Gradients в продакшн. Мы гарантируем, что ваше AI-решение станет прозрачным, интерпретируемым и пройдёт аудит с первого раза. Средний срок внедрения базового объяснения — 2-4 недели, полное compliance-решение — от 6 до 14 недель. Свяжитесь с нами для предварительной оценки вашего проекта.
Почему объяснимость AI критична для бизнеса и compliance?
Объяснимость — не одна задача, а три разных требования. Global explainability показывает, как модель работает в целом: какие признаки важны, как они влияют на предсказание в среднем. Инструменты — SHAP summary plots, partial dependence plots (PDP), permutation importance. Local explainability объясняет конкретное предсказание: почему этот кредит отклонён, какие пиксели привели к классификации «кот». Инструменты — SHAP waterfall, LIME, Integrated Gradients. Contrastive/counterfactual отвечает на вопрос, что нужно изменить для другого результата: «Если бы доход был на $10k выше, одобрили бы кредит?» Инструменты — DiCE (Diverse Counterfactual Explanations), alibi.
Как SHAP помогает объяснять табличные модели?
SHAP (SHapley Additive exPlanations) — стандарт для табличных данных. Основан на теории кооперативных игр: каждому признаку присваивается вклад в отклонение предсказания от среднего по датасету. Математически корректен — выполняет свойства efficiency, symmetry, dummy, additivity.
import shap
explainer = shap.TreeExplainer(lgbm_model)
shap_values = explainer.shap_values(X_test)
# Waterfall plot для одного предсказания
shap.plots.waterfall(explainer(X_test)[0])
# Summary для всей выборки
shap.summary_plot(shap_values, X_test, feature_names=feature_names)
TreeExplainer — быстрый точный алгоритм для tree-based моделей (LightGBM, XGBoost, Random Forest, CatBoost). Вычисляет точные SHAP значения за O(TLD²), где T — деревья, L — листья, D — глубина. На модели с 1000 деревьев глубины 6 — миллисекунды на объяснение. LinearExplainer — для линейных моделей (логистическая регрессия, Ridge) — аналитическое решение мгновенно. KernelExplainer — model-agnostic, работает с любой моделью, но медленнее: O(2^M) сэмплов для M признаков. На практике используем nsamples=1000–5000 как приближение. Для нейросетей — DeepExplainer или GradientExplainer.
Типичная ошибка: SHAP значения для коррелированных признаков распределяются равномерно между ними — это математически корректно, но визуально запутывает. Признаки income и income_log имеют похожий SHAP, хотя используется только один. Решение — убрать дубли признаков до обучения.
Когда LIME незаменим?
LIME (Local Interpretable Model-Agnostic Explanations) строит локальную линейную аппроксимацию вокруг объясняемого примера. Быстрее SHAP для сложных нейросетей, но нестабилен: два запуска на одном примере могут дать разные объяснения. Сильная сторона LIME — объяснения для текста. LimeTextExplainer показывает, какие слова повлияли на классификацию. Для быстрого debugging классификатора текста — удобный инструмент.
from lime.lime_text import LimeTextExplainer
explainer = LimeTextExplainer(class_names=['neg', 'pos'])
exp = explainer.explain_instance(text, classifier.predict_proba, num_features=10)
exp.show_in_notebook()
Что даёт Integrated Gradients для нейросетей?
Для deep learning моделей (CNN, Transformer) ни SHAP KernelExplainer, ни LIME не дают удовлетворительного объяснения: оба слишком медленные или неточные. Integrated Gradients (IG) — gradient-based метод, теоретически обоснованный (axioms completeness, sensitivity, implementation invariance). IG вычисляет интеграл градиентов вдоль прямой линии от базового ввода (baseline, обычно нули или средние значения) до реального ввода. Результат — attribution map, показывающая вклад каждого пикселя/токена.
from captum.attr import IntegratedGradients
ig = IntegratedGradients(model)
attributions = ig.attribute(
inputs=input_tensor,
baselines=baseline_tensor,
target=predicted_class,
n_steps=300,
)
Библиотека captum от Meta — стандарт для PyTorch. Включает IG, GradCAM, SHAP DeepLift, LayerConductance. GradCAM — проще, быстрее, хуже теоретически. Визуализирует, на какие области изображения смотрит CNN. Достаточен для debugging CV-моделей, недостаточен для compliance-документации.
Сравнение методов объяснимости
| Метод |
Тип данных |
Скорость |
Точность |
Стабильность |
| SHAP (TreeExplainer) |
Табличные |
Высокая |
Очень высокая |
Стабилен |
| SHAP (KernelExplainer) |
Любые |
Низкая |
Высокая |
Стабилен |
| LIME |
Текст, табличные |
Средняя |
Средняя |
Нестабилен |
| Integrated Gradients |
Изображения, текст |
Средняя |
Высокая |
Стабилен |
| GradCAM |
Изображения |
Высокая |
Средняя |
Стабилен |
EU AI Act: что нужно на практике
Вступивший в силу EU AI Act (внедряется поэтапно) требует для high-risk систем (кредитный скоринг, медицинские AI, системы подбора персонала, правоохранительные): техническую документацию модели, логирование всех решений с возможностью аудита, объяснение каждого индивидуального решения по запросу пользователя, оценку рисков и меры по их снижению, человеческий надзор (human oversight). Технически это означает: каждое предсказание должно сохраняться с input features, output, timestamp, model version и pre-computed объяснением. SHAP значения вычисляются при инференсе и сохраняются вместе с предсказанием.
Для LLM-систем требования сложнее: нет стандартного метода объяснения, attention weights не являются надёжными атрибуциями. Текущая практика — логирование полного контекста, retrieved chunks в RAG, chain-of-thought reasoning как прокси-объяснение. Мы помогаем определить, подпадает ли система под high-risk категорию по Annex III EU AI Act, разрабатываем технический паспорт модели (архитектура, данные обучения, метрики качества, ограничения), настраиваем систему логирования решений с retention period (минимум 10 лет для некоторых категорий), интегрируем механизм объяснений в production pipeline, внедряем процедуру оспаривания решений пользователями.
Как мы внедряем объяснимость: пошаговый процесс
-
Аудит и регуляторная оценка — определяем, подпадает ли система под high-risk категорию (EU AI Act, GDPR ст. 22, отраслевые требования Basel IV, MDR). 2-5 дней.
-
Интеграция объяснений в inference pipeline — подключаем SHAP, LIME или IG к существующему сервису. Настраиваем асинхронное вычисление с кэшированием. 1-2 недели.
-
Разработка UI для объяснений — если нужен клиентский интерфейс (веб-дашборд, экспорт PDF). 2-4 недели.
-
Настройка логирования и аудита — сохраняем все входы, выходы, pre-computed объяснения, model version, timestamp. 1-2 недели.
-
Подготовка документации model card — по стандарту Model Card Toolkit от Google с разбивкой по demographics/subgroups. 1 неделя.
-
Обучение команды и поддержка — передача документации, обучение инженеров, SLA-поддержка на 3 месяца.
Что входит в результат работы
- Техническая документация модели (model card) с указанием intended use, evaluation results по subgroups, ограничений, ethical considerations.
- Интегрированный в production pipeline механизм объяснений (SHAP/LIME/IG) с автоматическим сохранением при инференсе.
- UI для просмотра объяснений (веб-интерфейс или API) с возможностью экспорта.
- Система логирования с retention полем, настроенная под требования EU AI Act.
- Инструкция по оспариванию решений пользователями (для клиентского портала).
- Обучение команды заказчика (2-3 воркшопа) и документация для поддержки.
Типичные ошибки при внедрении XAI (и как их избежать)
Чек-лист проверки готовности
- Использование KernelExplainer на больших датасетах без уменьшения выборки (решение: TreeExplainer для деревьев, Feature Perturbation для моделей с малым числом фич).
- Игнорирование корреляции признаков (SHAP распределяет вклад равномерно — удалите дубли до обучения).
- Отсутствие baseline в Integrated Gradients (нулевой baseline не всегда корректен для изображений — используйте средний или зашумлённый).
- LIME без проверки стабильности (запускайте 5-10 раз на одном примере и оценивайте разброс).
- Неучёт latency: вычисление SHAP на каждый запрос может увеличить p99 на 50-200 мс (используйте асинхронные пайплайны или предвычисление для batch).
- Отсутствие model versioning в логах объяснений (без версии невозможно ретроспективно проверить, какая модель дала объяснение).
Обратная связь и дальнейшие шаги
Если вам нужно внедрить объяснимость под EU AI Act, получить сертифицированное решение или просто оценить текущий уровень прозрачности вашей модели — закажите консультацию. Мы готовы предложить индивидуальный план внедрения с учётом вашего стека (PyTorch, TensorFlow, XGBoost, LLM) и регуляторных требований. Свяжитесь с нами для детальной оценки стоимости и сроков вашего проекта.