- BrainTools - https://www.braintools.ru -

16 и ещё 1 причина знать SHAP

Мы знаем его как “метод на основе теории игр”, “фреймворк” и чувствуем, что это он, видя красные и синие полоски. Но что сделало этот метод таким популярным? Как он родился и почему, после релиза в 2017 году, разные группы исследователей добавляли в него новые расширения? Куда этот инструмент шел и к чему пришел сейчас? И наконец, почему надо его знать?

Предлагаю впервые за долгое время потрогать от меня статью без кода — но с картинками. В ней вы узнаете ответы на вопросы и отроете для себя 15 расширений SHAP. Почему в названии 16 и ещё одна? Узнаете, если пройдете сквозь всю статью : )

16 и ещё 1 причина знать SHAP - 1
16 и ещё 1 причина знать SHAP - 2

Привет, друзья! Это вновь я, рада видеть вас впервые или снова. Все ещё Сабрина, всё ещё рисерчер и ладно, я не придумала что писать, так что перед читать! : )

И у меня закончились фотки. Поэтому в этом туториале с вами говорит фото из зала. Однако, из плюсов — мой генеративный коллега старался — и в статье “по теме” картинки красивые, а моих всего лишь две.

Дисклеймер: В блоках статьи есть много формул — с выводом и разбором. Но это справедливо только для блоков “исторических”, ибо это поможет (правда, поможет) вам потом, когда вы поймете, что вам надо разобрать расширение-причину номер X из 15.

Каждое же из 15 расширений (причин) я опишу словами, чтобы вы понимали, когда оно надо. Также у вас будут первоисточники. Моя задача была — сделать полезно, надеюсь, я пришла к оптимуму)

Напоминание: постановка метода

Про shap написано много хороших статей, в том числе на Хабр. Я начинала свой путь с этой [1] — это было в 2022 году, хрущу, так сказать, суставами — и фундаментальную постановку в ней рекомендую и сейчас. Но чтобы далеко не ходить, зафиксируем определение перед глазами. Опционально вы также можете прочитать блоки “Дань истории” — они показывают значения Шепли от математического метода до его адаптации к ML.

Базовая постановка

Интуиция [2]. Пусть у нас есть команда, которая вместе что-то заработала. Надо честно поделить выручку. «Честно» — значит по среднему вкладу: смотрим, насколько каждый участник улучшает результат, когда присоединяется к уже собравшейся группе, и усредняем по всем возможным порядкам сбора команды.

Пусть теперь игроки — это признаки, а «выручка» — предсказание модели на конкретном объекте. Таким хитрым ходом мы попадаем от задачи из жизни в задачу ML.

Формально. Обозначим за M — всё множество признаков, за S — его какое-то подмножество («коалиция»), v(S) — то, что модель предсказывает, зная только признаки из S. Тогда вклад признака i:

phi_i=sum_{S subseteq N setminus {i}} frac{|S|!,(M - |S| - 1)!}{M!}bigl[v(S cup {i}) - v(S)bigr]

Дробь — это доля перестановок, в которых признак i приходит именно после множества S. Мы перебираем все возможные S, это2^{|M|}и то удаляем признак, то добавляем, смотря, как меняется “выигрыш” (прогноз).

Ключевое свойство SHAP — эффективность:

phi_0 + sum_{i=1}^{M} phi_i=f(x)

Это формальная запись красно-синей полоски: базовое значение phi_0 плюс вклады, сумма ровно равна предсказанию.

16 и ещё 1 причина знать SHAP - 12

Также справедливы свойства:

  • симметрии [3] — два признака, которые в любой коалиции дают одинаковый прирост, получают равные вклады. Никаких бонусов за позицию в таблице или за то, что признак «главнее» по смыслу;

  • нулевого игрока (он же аксиома болвана) — признак, который не меняет прогноз ни в одной коалиции, получает ровно ноль. На полоске его просто не будет;

  • аддитивности — если предсказание собрано из двух моделей (скажем, ансамбль), вклады считаются по каждой отдельно и складываются.

Помимо этого SHAP любим за единственность — оптимальное значение дележа, при полном подсчете — единственно.

Аксиоматика — это причина знать SHAP №1. Единственный популярный (методы другие — могут быть, но они не обвешаны реализацией) метод объяснения, про который доказано, что альтернативы нет: либо мы жертвуем каким-либо свойством, либо рассматриваем Shap.

Постановка, которую вы скорее всего не видели

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

min_{phi} sum_{z in {0,1}^n} pi_x(z),big(v(z) - g(z)big)^2

где вес коалиции задаётся ядром Шепли:

pi_x(z)=frac{n-1}{binom{n}{|z|},|z|,(n-|z|)},

g(z) — то, что мы ищем, а v(z) — наши наблюдаемые значения в коалициях. Модуль: |z| — число “включённых признаков” — индикаторов, равных единице.

16 и ещё 1 причина знать SHAP - 15

Вес взрывается на пустой и полной коалиции и проседает на серединных. Эта постановка для нас важна в рамках статьи — на ней основаны бОльшее количество из 15 расширений.

1953, Lloyd S. Shapley (не люблю транскрибировать имена)

Контекст: дана коалиционная игра — функция $v(S)$ на всех подмножествах игроков. Надо: поделить выигрыш
Что предложено: единственное решение.

Дань истории: значения Шепли в 1953 и 1988.

Выводя формулу выше, Шепли также доказал, что если мы хотим решение, такое что оно:

  • эффективно — делим ровно то, что заработали, без остатка и без добавки (

    sum_{i} phi_i(v)=v(N));

  • симметрично — два игрока, неотличимые по вкладу, получают поровну (если v(S cup {i})=v(S cup {j})для всех $S$ без $i$ и $j$, то phi_i=phi_j);

  • не чувствительно к болванам — тот, кто ничего не добавляет ни одной коалиции, не получает ничего (v(S cup {i})=v(S)для всех S Rightarrow phi_i=0);

  • аддитивно — сыграли две игры подряд, делёж суммарной выручки равен сумме отдельных дележей (phi_i(v + w)=phi_i(v) + phi_i(w)),

то справедливо единственное решение —  формула выше.

Примечание о датах

Работа ходила в препринтах RAND до публикации: RM-670 «Notes on the n-person game II: the value of an n-person game» (1951) и P-295 «A Value for N-Person Games» [4](1952). Каноническая ссылка — публикация 1953 года в Contributions to the Theory of Games II (AM-28), с. 307–317. В литературе попадаются оба года, я ссылаюсь на 1953.

Цена решения задачи — экспонента. То есть мы получаем обвешанное аксиомами единственное решение, при условии, что можем считать. Аксиомы — то, ради чего проблему подсчета хочется решить.

1988, SHAP как решение МНК-задачи, скорее всего авторы Charnes, Golany, Keane, Rousseau. Показално что значение Шепли характеризуется как решение задачи взвешенного МНК с ограничением эффективности — наша вторая постановка. В статьях обычно ссылаются на журнал Econometrics of Planning and Efficiency [5].

Контекст и “надо”: те же.
Предложено: тут вернее сказать “показано”, что для поиска единственного и аксиматически вкусного решения можно не делать перебор, а решить оптимизационную задачу.

Тридцать лет это всё было только в теории игр.

Дань истории: кто пробовал перенести в ML, 2010 и 2014

Приравнять признаки к игрокам (или игроков к признакам) впервые предложили Štrumbelj & Kononenko [6]— в 2010. Вместо перебора 2^M коалиций они предложили брать перестановочную форму значения Шепли:

phi_i=frac{1}{M!}sum_{tau in mathcal{T}} bigl[, v(mathrm{Pre}^{tau}_i cup {i}) - v(mathrm{Pre}^{tau}_i) ,bigr]

где mathcal{T} — все M! порядков прихода признаков, а mathrm{Pre}^{tau}_i — признаки, пришедшие до i в порядке τ.

Это среднее по перестановкам — а среднее можно оценить по выборке, не считая всю сумму. Поэтому сюда применим метод Монте-Карло: взять R случайных перестановок равномерно и усреднить:

hat{phi}_i=frac{1}{R}sum_{r=1}^{R} bigl[, v(mathrm{Pre}^{tau^{(r)}}_i cup {i}) - v(mathrm{Pre}^{tau^{(r)}}_i) ,bigr], qquad mathbb{E}[hat{phi}_i]=phi_i

Оценка несмещённая: в среднем по многим запускам она попадает в истинное phi_i.

Toy-пример

Пусть модель оценивает квартиру в тысячах у.е., признаков три: П — площадь, Р — район, Э — этаж.

Модель обучена. Каждый прогноз строим так: известные признаки фиксируем на значениях нашей квартиры, а неизвестные подставляем от случайных чужих квартир из данных и усредняем предсказание. Пустое множество — просто средний прогноз по рынку.

S

П

Р

Э

П,Р

П,Э

Р,Э

П,Р,Э

v(S)

100

130

120

105

170

135

125

180

Теперь собираем «команду» в каком-то порядке и смотрим, сколько добавляет каждый в момент своего прихода:

Порядок τ

вклад П

вклад Р

вклад Э

сумма

П → Р → Э

30

40

10

80

П → Э → Р

30

45

5

80

Р → П → Э

50

20

10

80

Р → Э → П

55

20

5

80

Э → П → Р

30

45

5

80

Э → Р → П

55

20

5

80

среднее

41,7

31,7

6,7

80

Зафиксируем взгляд на столбце площади (можно на любом). Когда она добавлена первой — она добавила 30 единиц в прогноз, а когда последней, когда район и этаж уже известны, — добавила 55.

Разница уместна и возникает в подобных задачах: площадь и район связаны. Отсюда в задачу и числа вмешивается совместный эффект.

Перестановочная форма важна, так как у признака нет одного числа важности, пока не зафиксирован порядок. Разный порядок до — разный эффект от добавления и математических оригинал усреднял все возможные порядки. Перестановочная форма — только на части, но эффективным методом оценивания.

Как предложили «убрать признак»

Убирать признак предложили подстановкой из маргинального распределения — то есть из фонового набора, независимо от того, что стоит в известных координатах. Выглядит это так:

v(S)=mathbb{E}_{X_{bar{S}}}bigl[f(x_S, X_{bar{S}})bigr] approx frac{1}{K}sum_{k=1}^{K} fbigl(x_S,, z^{(k)}_{bar{S}}bigr)

где z(k) — случайные объекты из данных. На практике эта запись просто означает подстановку любых значений из фонового набора: часть координат от объясняемого объекта x, часть подменена значениями от чужого объекта z. Процесс сборки называют пертурбацией (perturbation).

Отсюда же берётся и  phi_0​  — это vv(∅), гипотетическое предсказание, когда не известно вообще ничего или среднее по выборке.

Обратите внимание [7] — в такой постановке оценивали только один признак.

В 2013-14 годах ту же идею расширить на подмножества. Здесь изменяли не по одному признаку, а сразу несколько, и важность подмножества считали как разницу Δ(S)=v(S)−v(∅).

Что попытались решить. 

Само применение Шепли к ML. Версия 2010 года считала вклады признаков поодиночке, и вопрос «а что даёт вот эта пара или группа вместе» отдельно не ставился. Версия 2014 года определила оценку сразу для любого подмножества — поэтому взаимодействия (пара работает не так, как сумма одиночек) и избыточность (два признака дублируют друг друга: по отдельности каждый важен, вместе — нет) стали видимыми.

Что сделали проблемой. 

Подмножеств осталось 2^M, так что честный расчёт всех Δ(S) возвращает экспоненту, от которой ушли в 2010-м.

Дань историии: Первая успешная и сильная адаптация метода к ML Lundberg & Lee, «A Unified Approach to Interpreting Model Predictions».

В этой статье [8], которую должен был видеть каждый, кто решился потрогать SHAP, первые введены и доказаны теорема и свойства, сделавшие ML-Shap близким к значениями у Lloyd-а Shapley.

Введенные свойства:

  • Local accuracy — сумма вкладов равна выходу модели:

    phi_0 + sum_i phi_i=f(x). Аналог эффективности из 1953-го.

  • Missingness — признак, которого в объекте нет, получает ноль. Свойство чисто техническое: оно фиксирует, что маска «признака нет» действительно означает «не участвует», а не «участвует со значением 0» (аналог аксиомы болвана)

  • Consistency — если мы поменяли модель так, что вклад признака не уменьшился ни в одной коалиции, его атрибуция не должна упасть.

Доказанная теорема — про единственность. Внутри класса аддитивных методов атрибуции — сюда попадает любой метод, чьё объяснение имеет вид

g(z')=phi_0 + sum_{i=1}^{M} phi_i z'_i, qquad z' in {0,1}^M

«каждому признаку — по одному числу, и они складываются — только одно значение удовлетворяет трем описанным аксиомам (значения Шепли).

Как считали: А считали, используя KernelSHAP. На ядро мы с вами смотрели и именно тут использовали регрессионную форму значений Шепли.
Вклады получаются как решение задачи взвешенного МНК:

phi ;=; argmin_{phi_0,dots,phi_M};sum_{S subseteq N} pi(S),Bigl(v(S) - phi_0 - sum_{i in S} phi_iBigr)^2, qquad pi(S)=frac{M-1}{binom{M}{|S|},|S|,(M-|S|)}

Мы приближаем v(S) линейной функцией от «кто в коалиции», но с хитрым весом. Вес работает как штраф:

  • если коалиция состоит из одного признака или лишена одного признака, из неё видно вклад именно этого признака в чистом виде — такие наблюдения самые информативные

  • Серединные коалиции размазаны и вносят меньше веса дёшево

В 2017 мы, счастливое сообщество, забрали метод и получили:

  • (а) аксиомы — есть чем ответить на «почему я должен вам верить»;

  • (б) удобную визуальную и аддитивную форму для восприятия [9];

  • (в) одну библиотеку, работающую с любой моделью.

Что мы не ришили. В теории v(S)=mathbb{E}[f(X) mid X_S=x_S], что значит, что вклад должен покзаать, что есть «что модель предсказывает в среднем среди объектов, похожих на наш по признакам из S.

Но на первой реализации другие признаки брали рандомно — что нарушает много условий. Когда мы рандомно выбираем признаки, то такие объекты могут и в природе не существовать, а на прогноз они влияют. Это поставило нам задачу 2 в списке ниже. Но она противная, и первое, что люди начали решать — ускорение.

Триггеры развития SHAP

В классической постановке справедливо следующее:

  1. Идею 1953 легко уложить на табличные данные, но в какой-то момент мы стали пользоваться DL, где на входе токены, пиксели, последовательности и даже геном.

  2. Имитировать отсутствие признака нужно на основе предпосылок, ибо обученная модель (а все методы интерпретации работают чаще на обученных моделях) требует ВСЕ признаки с какими-то значениями.

  3. Перебор 2^M признаков невозможен — его надо заменять, не теряя точность метода.

Отсюда, у исследовательского сообщества были и есть 3 вопроса:

Вопрос

Задача

1

Кто игроки

Решить, как вычислять значения, когда “игроки”: признаки, токены, объекты на картинке, инструменты агента

2

Что значит «игрока нет»

Решить, чем определить v(S), если модель требует все входы и что статистически корректно

3

Как посчитать

Убрать необходимость перебора 2^M, не потеряв в точности

Задача 3 — инженерная, самая популярная под решение. Задача 2 — сложная и зависит от данных, вокруг неё споры и сейчас. Задача 1 — решаема и поэтому метод всё ещё с нами. Применим даже на агентах (об этом — ниже).

Решение задач дало X надстроек (наших причин) над SHAP, которые делают его универсальным и важным на сегодня. Посмотрим на них.

Решение задачи 3: считать надо быстро и причины знать SHAP 2-6

Зачем. Для нейросети любой тип SHAP — это много прямых проходов на один объяснённый пример. Можно решить это — и заменить на один обратный проход.

Что формально. Берётся DeepLIFT — градиентный метод, который распространяет вклады назад по сети, сравнивая каждую активацию с её значением на опорном входе (reference) и деля «разницу на выходе» между «разницами на входах».

DeepSHAP [8]переопределяет правила так, чтобы для каждого простого блока сети вклады были значениями Шепли, а затем композирует их по слоям. То есть Shap на кусках нейронной сети.

Нюанс. Результат — эвристическая аппроксимация, чувствительная к выбору reference в DeepLift.

Реализовано ли? Да: shap.DeepExplainer в основной библиотеке [10] (shap). На практике можно и иногда проще брать GradientExplainer — DeepSHAP считается рабочим, но багованным.

Причина №2. SHAP умеет в нейросети, не раздувая вычисления на вызовах модели несколько раз. Хоть и с нюансами.

2 — TreeSHAP, 2018-2020

Зачем. Деревья и бустинги — частая модель табличного ML. Для них объяснение надо строить по другому, ибо деревья используют не всегда все признаки. Но это не проблема — структура дерева содержит достаточно.

Что формально. Точное вычисление SHAP на деревьях за полиномиальную сложность, вместо 2^M . Плюс в той же статье [11] предложили красивые картинки глобальные инструменты: summary plot, dependence plot, кластеризация объектов по объяснениям. Глобальная картина собирается из множества локальных.

Нюанс. «Path-dependent» вариант считает условное ожидание, подразумеваемое структурой дерева, — не настоящее условное распределение данных.

Побочный эффект — атрибуция может оказаться ненулевой у признака, которого модель вообще не использует.Реализовано ли?  Да. Это очень используемое расширение SHAP. shap.TreeExplainer, поддержка в XGBoost / LightGBM / CatBoost / sklearn, GPU-реализация GPUTreeShap [12], алгоритмические ускорения Fast TreeSHAP, и R-обёртки treeshap и shapper. Если в отрасли говорят «мы сделали SHAP», в 9 случаях из 10 это TreeSHAP.

Причина №3. На бустинге SHAP считается точно и быстро, и без приближений.

3 — Unbiased KernelSHAP, 2021

Зачем. KernelSHAP — оценка методом наименьших квадратов. Вылезает практический вопрос «Насколько вообще успешно решилась задача? Сошлась ли?» — до 2021 года оставался без ответа: считали фиксированное число коалиций и надеялись.

Что формально. Выведена [13]несмещённая версия KernelSHAP, показано, что исходная версия платит пренебрежимым смещением за существенно меньшую дисперсию, добавлены детекция сходимости, оценки неопределённости и парное (антитетическое) сэмплирование для снижения дисперсии.

Реализовано ли? Да: приёмы вошли в оптимизированный KernelSHAP библиотеки shap, есть отдельный пакет shapley-regression [14], а в R — CRAN-пакет kernelshap [15], который итерирует до заданной точности по стандартным ошибкам.

Причина №4. Можно в числовом виде узнать, насколько посчитанные значения близки к истинным, и остановиться, когда точности достаточно.

4 — FastSHAP, 2021-2022

Зачем. Даже весьма быстрый KernelSHAP — это отдельный расчёт на каждый объект. Если объяснять надо много запросов в проде или каждый кадр видео, ничего не работает.

Что формально. Предложена амортизация: [16] обучается отдельная модель-объяснитель, которая выдаёт вектор значений Шепли за свой forward pass. Обучающая функция потерь — МНК-характеризация 1988 года, поэтому ground-truth значения Шепли для обучения [17] не нужны.

Нюанс. Приближение приближения. Отдельная забота, поднятая самими авторами в смежной работе: не начал ли объяснитель кодировать в «объяснении» сам ответ модели.

Реализовано ли? Да: PyTorch (iancovert/fastshap [18]) и TensorFlow (neiljethani/fastshap [19]). Осторожно с неймингом: под именем fastshap на CRAN и на GitHub живут ещё как минимум два несвязанных пакета про быстрый KernelSHAP. Я даже потерялась.

Причина №5. SHAP можно ускорить и он вполне переносится в прод, когда объяснения нужны в реальном времени.

5 — Leverage SHAP, 2024

Зачем. У KernelSHAP, при всей его популярности, до 2024 года не было сильных гарантий точности. Метод работал, но «почему именно столько коалиций хватает» — вопрос.

Что формально. Предложена модификация KernelSHAP: коалиции выбираются сэмплированием по leverage scores (инструмент из рандомизированной линейной алгебры), решение считается через проектированную регрессию вместо «бесконечного веса» на пустой и полной коалиции. Результат — доказанная точность за O(Mlog M) вызовов модели.

Реализовано ли? Да: пакет leverageshap (rtealwitter/leverageshap [20]), а элементы подхода — проектированное решение и схема сэмплирования — вошли в реализацию KernelSHAP в библиотеке shapiq.

Причина №6. У приближений есть гарантии того, что они достаточно близки к истине.

Задача 2: спор об имитации признаков, которых нет и причины 7-8

Что мы делаем с признаком, которого нет в коалиции? Модель требует полный вектор входов. Значит, что-то надо подставить. Варианта два.

  • Маргинальная (интервенционная) подстановка — подменяем значением из фонового набора, игнорируя корреляции. Объясняем функцию модели.

  • Условная (обсервационная) — берём mathbb{E}[f(X)mid X_S], так сказать “уважая” корреляции. Объясняем данные так, как их видит модель.

Разница такова. Например, пусть в модели есть «рост» и «вес», сильно скоррелированные, а модель реально использует только рост. Маргинальный подход отдаст весь вклад росту (корректно про модель, но странно на вид). Условный подход размажет вклад между ростом и весом (корректно про данные, но не совсем про модель).

Из двух способов выросли два расширения.

6 — Interventional TreeSHAP , 2020

Зачем. Чтобы TreeSHAP перестал приписывать вклад признакам, которых модель не использует.

Что формально. Вместо условного ожидания, подразумеваемого [21] структурой дерева, берётся честное маргинальное ожидание по явному фоновому набору. Сложность становится линейной по размеру фоновой выбор.

Реализовано ли? Да, очень недооцененная строчка в коде: в shap.TreeExplainer за это отвечает параметр feature_perturbation, у которого два значения — "tree_path_dependent" и "interventional".

Причина №7. Можно выбрать, объяснять модель или данные.

16 и ещё 1 причина знать SHAP - 44

7 — Условный KernelSHAP для зависимых признаков, 2019-2021

Зачем. Практическая ветка условного лагеря: если признаки зависимы, а нам нужна правда про данные, то маргинальную подстановку надо заменить настоящей условной.

Что формально. KernelSHAP расширен на зависимые признаки [22]через явную оценку условного распределения — гауссовскую, эмпирическую, а также подходы для смешанных данных.

Нюанс. Оценка условного распределения в высокой размерности — самостоятельно тяжёлая задача, и она влияет на ошибки [23] и устойчивость объяснения.

Реализовано ли? Да, есть свой инструмент: пакет shapr [24] для R и Python.

Причина №8. Есть корректный вариант даже на коррелированных/зависимых иначе данных.

Задача 1: кто игроки и какие вклады (расширения #8–#9) и причины 9-10

8 — SHAP interaction values, примерно 2020

Зачем. Аддитивные распределение по определению не может выразить взаимодействие. Если эффект «возраст × давление» существует только совместно, вектор из M чисел его не покажет — он размажет эффект по обоим признакам, и вы никогда не узнаете, что он был совместным.

Что формально. Вклад раскладывается на «собственный» эффект признака и попарные эффекты, на основе индекса взаимодействия Шепли. Для деревьев считается тоже за полиномиальное время.

Реализовано ли? Да: shap_interaction_values() в TreeExplainer. А дальше выросло целое направление индексов взаимодействия высших порядков со своей библиотекой — shapiq [25], где живут ещё Shapley–Taylor, Faith-Shap

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

Причина №9. Если объяснение выглядит странно, вы можете проверить, не в неаддитивности ли дело.

9 — SAGE, 2020

Зачем. SHAP объясняет одно предсказание. Вопрос «на какие признаки модель опирается вообще» решался усреднением модулей SHAP-значений — костыль, который никаких гарантий не даёт.

Что формально. Идея оценивать значение Шепли не по прогнозу на значении, а по качеству на множестве. [26]То есть v(S) — это теперь не то, что модель отдала, а то, насколько хорошо отданное значение при использовании — только S. Отсюда глобальная важность с учётом взаимодействий.

Релазиовано ли? Да: пакет sage-importance [27] от авторов.

Причина №10. Глобальную важность признаков можно посчитать не только усреднением.

Задача 1 в эпохе генеративных моделей и причины 11-16

16 и ещё 1 причина знать SHAP - 45

Генеративные модели вынудили SHAP развиваться, ибо классический SHAP всегда действует из того что f(x) — скаляр.

У генеративной модели выход — распределение. Скаляра нет. В текущем развитии значения Шепли решают это пересмотром v(S): функцией ценности становится не выход модели, а мера похожести двух выходов.

У данного блока есть общая проблема (хотя блок рабочий и даже используемый):
Когда v(S) определяется как косинусная близость, аксиоматика классического метода 2017 года теряет смыслLocal accuracyбольше не значит «сумма вкладов равна предсказанию» — она значит «сумма равна единице похожести объекта на самого себя», и интерпретировать это нечем. Хотя значения по-прежнему считаются, полоски по-прежнему рисуются, но не так вкусно.

Плюс методологическая оговорка: заметная часть этой ветки — препринты без рецензирования (AgentSHAP — декабрь 2025, SGPA — февраль 2026).

10 — TextGenSHAP , 2023

Зачем. Длинные документы в RAG-сценариях: вход — много токенов, выход — сгенерированный текст. Ни то ни другое в исходную схему не лезет.

Что формально. Значения Шепли адаптированы [28] под иерархически структурированный вход (документ → абзац → предложение) и авторегрессионный выход, плюс архитектурные ускорения под трансформер.

Реализовано ли? Идея жива пока как исследовательский приём; отдельного широко используемого пакета у неё нет.

Причина №11. SHAP можно теоретически приложить к RAG-пайплайнам, где надо понять, какой кусок контекста сработал. И это надо исследовать!

11 — TokenSHAP , 2024

Зачем. Для решение базового практического вопроса : какая часть промпта управляет ответом?

Что формально. Игроки — токены [29] или подстроки промпта; коалиция — промпт с выкинутыми кусками; v(S) — косинусная близость эмбеддингов ответа на S и полного ответа; оценка —метод Монте-Карло.

Реализовано ли? Да, пакет token-shap, репозиторий GenAISHAP. [30]

Причина №12. Метод применим к текстовым данным.

12 — PixelSHAP, 2025

Зачем. Перенос на vision-language модели. Ключевое наблюдение: пиксель не имеет самостоятельного смысла, а объект — имеет.

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

Реализовано ли? Да, в том же репозитории GenAISHAP. [30]

Причина №13. Метод применим для VLM.

13 — MultiSHAP, 2025

Зачем. Мало знать, «сколько дал текст и сколько картинка». Интересно, что дала их пара.

Что формально. Атрибуция кросс-модальных взаимодействий  [32]— по сути, идея #8 (interaction values), пересаженная в мультимодальность.

Реализовано ли. Публичной реализации, которая бы вошла в обиход, я не нашла; работа существует прежде всего как препринт. Ждем.

Причина №14. Метод адаптируем под анализ кросс-модального использования в модели. И это тоже нужно исследовать!

14 — AgentSHAP, 2025

Зачем. У агента есть траектория с вызовами инструментов. Вопрос «какие инструменты вообще повлияли на ответ» до этого не имел метода. Хотя переход, после всей статьи, у вас наверное прям просится.

Что формально. Игроки — инструменты агента; [33] коалиция — подмножество доступных tools; $v(S)$ — семантическая близость ответа агента с набором $S$ к базовому ответу. Эксперименты на API-Bank: показана устойчивость оценок между прогонами и способность отделять релевантные инструменты от нерелевантных.

Реализовано ли. Реализация есть в GenAISHAP [30], а сама статья — препринт без рецензирования (декабрь 2025). Там же, кстати, лежит VideoSHAP — расширение на видео с трекингом объектов между кадрами, у которого статьи пока нет. Видимо, ребята активно растут!

Причина №15. Метод работает на агентах (хотя и спорно).

15 — SGPA, 2026

Зачем. Аудио-LLM в целом не было вписываемы в SHAP.

Пайплайн из четырёх шагов, который режет аудио не на кадры, а на слова.

Что формально. Пайплайн из четырёх шагов, [34]который режет аудио на слова. Для этого используюи выравнивание (forced alignment, через механизм CTC; акустическая модель — Wav2Vec2-XLSR-53). На выходе — примерные отметки начала и конца каждого слова. Отметки получаются грубые и часто попадают в середину звука. Поэтому их подправляют: смотрят на спектрограмму рядом с каждой отметкой и сдвигают границу туда, где в звуке действительно есть шов — провал громкости или резкая смена спектра (в статье это называют уточнением по локальной энергии и спектральному потоку).

Зачем возня с границами. Граница определяет игрока. Если она плохая, то при маскировании от слова останется “огрызок” — и модель услышит нечто, чего в живой речи не бывает. Тогда v(S) измеряет реакцию [35] на мусор,

Нюанс. SGPA не является нейтральным преобразованием. Когда игроками становятся слова вместо кадров, вклады распределяются ровнее: раньше почти вся масса собиралась в нескольких точках, теперь она размазана по словам (авторы меряют это концентрацией атрибуций, Cohen’s d до −1.37, и нормализованной энтропией, d = 0.86). Общая картина «сколько всего набралось» при этом сохраняется.

Нюанс: SGPA не является нейтральным преобразованием: он значимо меняет концентрацию атрибуций и делает их ровными. Это усложняет интерпретацию.

Реализовано ли. Да: авторы выпустили открытый Python-пакет mllm-shap [36]. Статья — препринт, но подана на Interspeech 2026.

Причина №16. Метод аппроксимируем и на речь.

Выводы

И так, если нанести все годы и посмотреть на эту эволюцию [37], выйдет очень четко. Да, в том смысле “четко”, как говорили имея ввиду “круто”:

Эпоха

Задача

Что добавили

Нюансы

1953

единственность, делим вклад из аксиом

экспонента

1988

3

разделение — не перебор, а взвешенный МНК

— (отложенная выгода)

2010–2014

1, 3

перенос в ML + сэмплинг

независимость признаков

2017

аксиоматика + единственность

вопрос подстановки грубо закрыт

2017–2025 (#1–#5)

3

скорость, гарантии

приближения поверх приближений

2020–2021 (#6–#7)

2

подсветили выбор: модель или данные

не нашли один верный ответ

2020 (#8–#9)

1

взаимодействия и глобальная важность

сложность интерпретации растёт

2023–2026 (#10–#15)

1

генеративные и агентные игроки

утрата смысла исходных аксиом, получили щепотку шума

Каждое поколение решало задачи 1 и 3 и почти никогда не дорешивало задачу 2. Вопрос «что значит убрать признак» задан в 2010-м неявно, в 2017-м отложен, в 2020-м вскрыт — и не закрыт. Как сделать это верно, тем более сейчас, где надо убирать токен, объект, инструмент, звук — открытый вопрос, заставляющий быть аккуратным при использовании метода.

Какая была причина номер 17? Красота, друзья. SHAP — иллюстрация того, что старая теория, фундамент не отменяются новым, а становятся новым. Красно-синяя полоска, которую мы узнаём издалека, — это 1953 год.

От этого я его безумно люблю. Спасибо Lloyd-у Shapley!

16 и ещё 1 причина знать SHAP - 49

И спасибо вам! Спасибо, что читаете! Всегда рада видеть у себя на канале и до новых встреч!

Ещё прикольная статья-гайд https://arxiv.org/pdf/2207.07605 [38] — если нужно выбрать оценщик и хочется прямо глубоко зайти — можно почитать ее.

Мой канал в тг (там я пишу про explanaible AI, если что) [39]

Автор: sad__sabrina

Источник [40]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/34135

URLs in this post:

[1] этой: https://habr.com/ru/companies/ods/articles/599573/

[2] Интуиция: http://www.braintools.ru/article/6929

[3] симметрии: http://www.braintools.ru/article/3088

[4] «A Value for N-Person Games» : https://www.rand.org/pubs/papers/P295.html

[5] Econometrics of Planning and Efficiency: https://link.springer.com/book/10.1007/978-94-009-3677-5

[6] Štrumbelj & Kononenko : https://jmlr.org/papers/volume11/strumbelj10a/strumbelj10a.pdf

[7] внимание: http://www.braintools.ru/article/7595

[8] этой статье: https://arxiv.org/pdf/1705.07874

[9] восприятия: http://www.braintools.ru/article/7534

[10] библиотеке: https://github.com/shap/shap

[11] в той же статье: https://arxiv.org/abs/1802.03888

[12] GPUTreeShap: https://github.com/rapidsai/gputreeshap

[13] Выведена : https://arxiv.org/pdf/2012.01536

[14]  shapley-regression: https://github.com/iancovert/shapley-regression

[15] kernelshap: https://github.com/ModelOriented/kernelshap

[16]  Предложена амортизация:: https://arxiv.org/pdf/2107.07436

[17] обучения: http://www.braintools.ru/article/5125

[18] iancovert/fastshap: https://github.com/iancovert/fastshap

[19] neiljethani/fastshap: https://github.com/neiljethani/fastshap

[20] rtealwitter/leverageshap: https://arxiv.org/pdf/2410.01917

[21] подразумеваемого: https://arxiv.org/abs/2006.16234

[22] KernelSHAP расширен на зависимые признаки : https://arxiv.org/pdf/1903.10464

[23] ошибки: http://www.braintools.ru/article/4192

[24] shapr: https://github.com/NorskRegnesentral/shapr

[25] shapiq: https://github.com/mmschlk/shapiq

[26] Идея оценивать значение Шепли не по прогнозу на значении, а по качеству на множестве. : https://arxiv.org/abs/2004.00668

[27] sage-importance: https://github.com/iancovert/sage

[28] Значения Шепли адаптированы: https://arxiv.org/pdf/2312.01279

[29] Игроки — токены: https://arxiv.org/pdf/2407.10114

[30] GenAISHAP.: https://github.com/GenAISHAP/TokenSHAP

[31] Игроки — объекты после сегментации, : https://arxiv.org/pdf/2503.06670

[32] Атрибуция кросс-модальных взаимодействий : https://arxiv.org/pdf/2508.00576

[33] Игроки — инструменты агента;: https://arxiv.org/abs/2512.12597

[34] Пайплайн из четырёх шагов, : https://arxiv.org/pdf/2603.02250

[35] реакцию: http://www.braintools.ru/article/1549

[36] mllm-shap: https://pypi.org/project/mllm-shap/

[37] эволюцию: http://www.braintools.ru/article/7702

[38] https://arxiv.org/pdf/2207.07605: https://arxiv.org/pdf/2207.07605

[39] Мой канал в тг (там я пишу про explanaible AI, если что) : https://t.me/jdata_blog

[40] Источник: https://habr.com/ru/articles/1067656/?utm_campaign=1067656&utm_source=habrahabr&utm_medium=rss

www.BrainTools.ru

Rambler's Top100