Объяснимость ML: SHAP, LIME, Integrated Gradients и требования EU AI Act
Модель предсказывает кредитный скоринг 340 (отказ). Клиент спрашивает: «Почему?» Compliance-офицер спрашивает: «Покажите документацию системы и объяснение каждого решения». EU AI Act с 2025 года требует explainability для high-risk AI систем. «Модель так решила» больше не принимается как ответ.
Три уровня объяснимости
Объяснимость — не одна задача, а три разных требования:
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: быстрее, менее точный, хорош для NLP
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-документации.
EU AI Act: что нужно на практике
EU AI Act (вступает в силу поэтапно 2024–2026) требует для 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 AI:
- Оценка: подпадает ли система под high-risk категорию по Annex III EU AI Act
- Технический паспорт модели: архитектура, данные обучения, метрики качества, ограничения
- Система логирования решений с retention period (минимум 10 лет для некоторых категорий)
- Механизм объяснений, интегрированный в production pipeline
- Процедура оспаривания решений пользователями
Model cards и документация
Model Card Toolkit от Google — стандарт документирования ML-моделей. Фиксирует: intended use, evaluation results разбитые по demographics/subgroups, ограничения, ethical considerations.
Для sklearn/LightGBM моделей — skorecard и ydata-profiling генерируют базовую документацию автоматически. Для production — custom документация в формате organization.
Процесс работы
Начинаем с оценки регуляторной применимости: подпадает ли ваша система под EU AI Act high-risk, GDPR ст. 22 (автоматизированные решения), отраслевые требования (Basel IV для банков, MDR для медицины).
Дальше: интеграция SHAP в inference pipeline, разработка UI для объяснений (если нужен клиентский интерфейс), настройка логирования, подготовка документации модели.
Сроки: добавление SHAP-объяснений к готовой модели — 1–2 недели. Полное compliance-решение с документацией, UI и логированием — 6–14 недель.







