Aivaro
  • Оглавление
  • Вопросы
  • Практика
  • Вики
  • Материалы сообщества
  • Тесты
  • Поиск
✈Telegram @ai_varo
RUEN中文
…
Оглавление/Вопросы/#943

Что такое Explainable AI (XAI) для NLP (LIME, SHAP, Attention Visualization)?

Краткий тезис

Объяснимый ИИ (XAI) в NLP решает проблему «чёрного ящика» моделей (BERT, GPT и др.) путём выявления причинно-следственных связей между входными токенами и предсказанием. Основные методы: локальная аппроксимация (LIME), кооперативная теория игр (SHAP) и визуализация весов Attention. Каждый имеет свою теоретическую базу, сильные стороны и ограничения.

--|----------| | 1 | Выбрать экземпляр $x$ для объяснения. | | 2 | Сгенерировать $N$ возмущённых копий $z_i$ (случайное удаление/маскирование слов). | | 3 | Получить предсказания $f(z_i)$ от чёрного ящика. | | 4 | Взвесить $z_i$ по близости к $x$ (ядро Гаусса). | | 5 | Обучить интерпретируемую модель $g$ (Lasso, Decision Tree) на ${(z_i, f(z_i))}$. | | 6 | Интерпретировать веса/важность признаков из $g$. |

1.2 Код (пример с lime)

import lime
import lime.lime_text
from sklearn.pipeline import make_pipeline

# pipeline: Vectorizer + model
pipeline = make_pipeline(vectorizer, classifier)
explainer = lime.lime_text.LimeTextExplainer(class_names=['neg','pos'])
exp = explainer.explain_instance(text, pipeline.predict_proba, num_features=10)
exp.show_in_notebook(text=True)

1.3 Сильные/слабые стороны

  • Плюсы: агностический, быстрый, работает с любым классификатором.
  • Минусы: нестабильность объяснений (разные семплирования → разные веса); локальная аппроксимация может не отражать глобальное поведение модели.

2. SHAP (SHapley Additive exPlanations)

Суть: Значение Шепли — математически корректный способ распределить «вклад» каждого признака в предсказание, основанный на теории кооперативных игр.

2.1 Принцип

Для множества признаков $F$ и модели $f$ вклад $i$-го слова вычисляется как среднее маргинального вклада по всем возможным подмножествам $S \subseteq F \setminus {i}$: $$\phi_i(f,x)=\sum_{S \subseteq F\setminus{i}} \frac{|S|!(|F|-|S|-1)!}{|F|!} \left[f(S \cup {i}) - f(S)\right]$$

2.2 Применение в NLP

  • KernelSHAP (LIME-подобный): аппроксимация для произвольной модели.
  • DeepSHAP (для нейросетей): использует градиенты (модификация DeepLIFT).
  • TreeSHAP (бустинг): точное вычисление для деревьев.

2.3 Код (DeepSHAP для BERT)

import shap
explainer = shap.Explainer(model, tokenizer, output_names=['neg','pos'])
shap_values = explainer(texts)
shap.plots.text(shap_values[0])

2.4 Сравнение с LIME

ХарактеристикаLIMESHAP
Теоретическая базаЛокальная аппроксимацияЗначения Шепли
СтабильностьНизкая (зависит от шума)Высокая (гарантирована единственность)
СкоростьБыстро ≈100 выборокМедленнее (экспоненциальный расчёт, но есть аппроксимации)
ИнтерпретируемостьВеса линейной моделиАддитивное разложение

3. Attention Visualization (тепловая карта весов)

Суть: Визуализация матрицы внимания в Transformer-моделях показывает, на какие токены модель «смотрит» при генерации следующего скрытого состояния.

3.1 Инструменты

ИнструментПример
bertvizИнтерактивные тепловые карты по головам внимания
exbertДашборд для анализа поведения BERT
captumAttention attributions для PyTorch

3.2 Пример с bertviz

from bertviz import model_view
from transformers import AutoTokenizer, AutoModel

model = AutoModel.from_pretrained('bert-base-multilingual-cased')
tokenizer = AutoTokenizer.from_pretrained('bert-base-multilingual-cased')

tokens = tokenizer.encode('Москва — столица России', return_tensors='pt')
attention = model(tokens).attentions

model_view(attention, tokens)  # отобразить в Jupyter

3.3 Интерпретация

  • Head importance: разные головы внимания могут фокусироваться на синтаксисе (зависимости) или семантике (анафора).
  • Layer depth: нижние слои – лексика/морфология, верхние – контекст/смысл.

4. Ограничения: Attention ≠ Explanation

Ключевой тезис Jain & Wallace (2019): веса внимания не являются надёжным объяснением. Почему?

4.1 Контр-аргументы

ПроблемаОписание
Размытие (non-unique)Разные наборы весов могут давать одинаковое предсказание.
МаскировкаВысокий вес у несущественных токенов при нулевом влиянии на выход.
Отсутствие причинностиВысокий вес → «посмотрел», но не обязательно «принял решение на основе»

4.2 Экспериментальные данные

  • При замене весов внимания на случайные (но с тем же распределением) модель сохраняет качество в 90% случаев (на GLUE).
  • Градиентные методы (Gradient×Input, Integrated Gradients) часто дают более осмысленные объяснения, чем raw attention.

4.3 Как правильно использовать attention?

  • Только для анализа, а не для обоснования предсказаний.
  • Дополнять другими методами (SHAP, LIME) для проверки.
  • Использовать attention attribution (например, Attention Rollout – усреднение по слоям).

5. Пет-проект для закрепления

Задача: Отладить интерпретируемый классификатор тональности для отзывов на русском языке (например, RuSentiment). Сравнить объяснения LIME, SHAP и attention-визуализации.

Инструменты

  • rubert-tiny2 (для русского)
  • lime, shap, bertviz
  • transformers, torch

Шаги

  1. Загрузить и предобработать датасет (500–1000 отзывов).
  2. Обучение RuBERT (FineTune) на 3–5 эпох.
  3. Для 5–10 примеров сгенерировать объяснения:
    • LIME (удаление слов)
    • SHAP (DeepSHAP)
    • Attention map (bertviz)
  4. Визуализировать и описать расхождения между методами:
    • Какие слова выделяет каждый?
    • Есть ли случаи, когда attention «неправ»?

Ожидаемый результат

  • Jupyter-ноутбук с анализом.
  • Вывод: в каких сценариях стоит доверять каждому методу, а когда лучше комбинировать.

Связь с другими вопросами

ВопросТема
287. ...Объяснимость временных рядов (аналогии LIME/SHAP)

Навигация

  • Предыдущий: 942
  • Следующий: 944
  • Индекс: 00. Индекс разборов