English translation is not available yet. Showing Russian content.

Как работает градиентный анализ для объяснения решений LLM?

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

Градиентный анализ — это семейство методов интерпретируемости, которые используют производные выхода модели по входным признакам (токенам, эмбеддингам, внутренним представлениям) для оценки их вклада в предсказание. Основные подходы: Saliency Maps, Gradient × Input, Integrated Gradients и SHAP с градиентным приближением. В контексте RAG градиентный анализ позволяет определить, какой чанк из retrieval сильнее всего повлиял на генерацию ответа, что повышает прозрачность и доверие к системе.


1. Термин: Градиентный анализ (Gradient-based attribution)

Градиентный анализ — это метод объяснения решений нейронных сетей, основанный на вычислении частных производных целевой функции (например, вероятности предсказанного токена) по входным признакам. Идея: если небольшое изменение входного признака сильно меняет выход, то этот признак важен для решения.

Математическая основа
Для модели ( F(x) ) с входом ( x \in \mathbb{R}^d ) и выходом ( y ) (логит или вероятность) градиент ( \nabla_x F(x) ) показывает направление наибольшего роста функции. Атрибуция признака ( i ) — это ( \frac{\partial F}{\partial x_i} ) или его модификации.

Зачем это нужно для LLM

  • Отладка: понять, почему модель сгенерировала конкретный токен или ответ.
  • Доверие: пользователь видит, на какие части запроса или контекста модель опиралась.
  • Улучшение RAG: выявить, какие чанки из базы знаний действительно повлияли на ответ, а какие были проигнорированы.

2. Основные методы градиентного анализа

2.1 Saliency Maps (Vanilla Gradient)

Самый простой метод: атрибуция = градиент выхода по входу.
( A_i = \frac{\partial F(x)}{\partial x_i} )

Плюсы простота, быстрота.
Минусы градиенты могут быть зашумлены; не учитывают масштаб входа (большой градиент на маленьком входе может быть незначительным).

2.2 Gradient × Input

Умножение градиента на значение входа:
( A_i = x_i \cdot \frac{\partial F(x)}{\partial x_i} )

Идея если признак имеет нулевое значение, его вклад равен нулю, даже если градиент большой. Учитывает и направление, и величину.

Пример: для текстовых токенов ( x_i ) — это эмбеддинг токена. Атрибуция показывает, какие токены в запросе или контексте наиболее важны.

2.3 Integrated Gradients (IG)

Метод, удовлетворяющий аксиомам чувствительности и инвариантности к реализации. Вычисляется как интеграл градиентов вдоль прямого пути от baseline (нулевой вход, например, пустой текст или токен [Вики/padded sequences|PAD) до реального входа:

[ A_i = (x_i - x_i') \int_{[alpha](/wiki/alpha)=0}^{1} \frac{\partial F(x' + [alpha](/wiki/alpha) (x - x'))}{\partial x_i} d[alpha](/wiki/alpha) ]

На практике интеграл аппроксимируется суммой по ( m ) равномерно распределённым точкам ( \alpha_k ).

Плюсы теоретически обоснован, даёт стабильные атрибуции.
Минусы требует выбора baseline (для текста часто — нулевой эмбеддинг или токен [PAD]); вычислительно дороже (нужно ( m ) forward+backward проходов).

2.4 SHAP с градиентным приближением (GradientSHAP)

SHAP (SHapley Additive exPlanations) — метод из теории игр, вычисляющий вклад каждого признака как среднее по всем подмножествам признаков. Для нейросетей точный SHAP непрактичен, поэтому используют аппроксимации: GradientSHAP (комбинация SHAP и Integrated Gradients) или KernelSHAP (линейная аппроксимация).

GradientSHAP: атрибуция = ожидание Gradient × Input по случайным подмножествам признаков (сэмплирование baseline).

Плюсы согласованность с теорией Шепли.
Минусы всё ещё вычислительно затратно.

2.5 Attention Attribution

Для трансформеров можно анализировать градиенты по attention weights (весам внимания). Методы:

  • Attention Rollout: распространение весов внимания по слоям.
  • Grad-CAM для трансформеров: градиенты по attention scores, взвешенные на активации.

Идея важность токена определяется тем, насколько сильно attention на него влияет на выход через градиенты.


3. Как градиентный анализ применяется к LLM

3.1 Токен-уровень

Для каждого токена входа (запрос + контекст) вычисляется атрибуция. Результат — тепловая карта: красные токены — положительный вклад в генерацию ответа, синие — отрицательный.

Пример:
Запрос: «Какая столица Франции?»
Контекст: «Париж — столица Франции.»
Атрибуция покажет, что токены «Париж» и «Франции» имеют высокий положительный вклад.

3.2 Слой-уровень и head-уровень

Можно анализировать градиенты по промежуточным представлениям (скрытые состояния) или по attention heads. Это помогает понять, какие слои и головы отвечают за извлечение фактов, а какие — за синтаксис.

3.3 Для RAG: attribution по чанкам

В RAG-системе контекст состоит из нескольких чанков. Чтобы определить, какой чанк повлиял на ответ:

  1. Вычислить атрибуцию для всех токенов контекста.
  2. Агрегировать атрибуции по чанкам (сумма, среднее, максимум).
  3. Чанк с наибольшей агрегированной атрибуцией считается наиболее важным.

Проблема атрибуция на уровне токенов может быть шумной. Лучше использовать Integrated Gradients или Gradient × Input с усреднением по нескольким запускам.


4. Проблемы и ограничения градиентного анализа

ПроблемаОписаниеРешение
Шум градиентовГрадиенты могут быть большими по модулю, но случайными.Сглаживание (SmoothGrad): усреднение по нескольким копиям входа с малым шумом.
НасыщениеДля функций с насыщением (например, softmax) градиенты могут быть близки к нулю даже для важных признаков.Integrated Gradients частично решает эту проблему.
Зависимость от baselineДля IG выбор baseline влияет на результат.Использовать несколько baseline (нулевой эмбеддинг, [PAD], случайный текст) и усреднять.
Вычислительная стоимостьIG требует ( m ) проходов (обычно 50–200).Использовать меньше шагов (20–50) или аппроксимации.
Интерпретируемость для человекаАтрибуции — это числа, их нужно визуализировать.Тепловые карты, диаграммы важности.

5. Инструменты для градиентного анализа LLM

  • Captum (PyTorch): поддерживает Integrated Gradients, Gradient × Input, SHAP, SmoothGrad. Есть модуль для текстовых моделей.
  • Transformers Interpret: обёртка над Captum для моделей Hugging Face.
  • LIT (Language Interpretability Tool) от Google: визуальный инструмент для анализа атрибуций.
  • Ecco: библиотека для интерпретации GPT-2 и BERT.

Пример кода с Captum

from captum.attr import IntegratedGradients
from transformers import AutoTokenizer, AutoModelForCausalLM

model_name = "mistralai/Mistral-7B-v0.1"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name, torch_dtype=torch.float16)

# Подготовка входа
prompt = "Столица Франции —"
inputs = tokenizer(prompt, return_tensors="pt")
input_ids = inputs["input_ids"]

# Integrated Gradients
ig = IntegratedGradients(model)
attributions, delta = ig.attribute(input_ids, target=0, n_steps=50, return_convergence_delta=True)

# Визуализация
tokens = tokenizer.convert_ids_to_tokens(input_ids[0])
for token, attr in zip(tokens, attributions[0]):
    print(f"{token}: {attr:.4f}")

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

Задача Построить систему объяснения для RAG-пайплайна, которая показывает, какой чанк из retrieval больше всего повлиял на ответ LLM.

Инструменты

Шаги:

  1. Создать простую RAG: загрузить несколько документов (например, статьи из Википедии), разбить на чанки, построить FAISS-индекс.
  2. Написать функцию retrieval: по запросу ищет top-3 чанка.
  3. Сформировать полный контекст: объединить чанки в один текст.
  4. Вычислить Integrated Gradients для каждого токена контекста относительно генерации первого токена ответа.
  5. Агрегировать атрибуции по чанкам (сумма абсолютных значений).
  6. Визуализировать: вывести чанки с их атрибуциями в виде гистограммы.

Ожидаемый результат
Для запроса «Какая столица Франции?» система покажет, что чанк, содержащий «Париж — столица Франции», имеет атрибуцию 0.85, а чанк про «Франция — страна в Европе» — 0.15. Это подтверждает, что LLM опиралась на первый чанк.


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

ВопросТема
286Как работают attention weights в RAG?
288Как использовать SHAP для объяснения RAG?
289Как интерпретировать эмбеддинги в RAG?
290Как детектировать галлюцинации в RAG?
291Как оценивать faithfulness (фактологичность) ответов?

8. Навигация


Навигация