Среди статей, которые привлекли мое внимание в NIPS, была статья, в которой делалось возвышенное заявление об открытии структуры, объединяющей почти все существующие методы для объяснения моделей. На предыдущей работе у меня возник небольшой интерес к области объяснения моделей из-за правил, которые требовали, чтобы мы объясняли, почему наши модели пришли к такому решению. Итак, я был заинтригован.

В этой статье предлагается альтернативное ядро ​​для хорошо принятого метода LIME, выпущенного в прошлом году, и утверждается, что только его подход может удовлетворить трем ключевым аксиомам интерпретируемости.

Но прежде чем мы перейдем ко всему этому, давайте начнем с самого начала, которое в данном случае находится в области теории игр.

Если мы все будем сотрудничать, как мы разделим выигрыш?

Несмотря на то, что они используются здесь в контексте функций, ценности Шепли изначально возникли из основного вопроса теории игр: в коалиции, состоящей из нескольких игроков с разными наборами навыков, что приводит к некоторому коллективному вознаграждению, что является наиболее справедливым. как разделить выигрыш между игроками?

Один из способов решения этой проблемы - это представить, что члены группы присоединяются последовательно, и отслеживать предельный вклад каждого игрока. На первый взгляд это разумное предложение, поскольку оно означает, что в самом буквальном смысле каждый игрок получает вознаграждение за то, что он привносит в общий результат группы. (Примечание: здесь мы предполагаем, что можем рассчитать общий выигрыш в игре для подмножеств игроков любого размера). Идея здесь в том, что если Ава была первым членом группы с выигрышем 5, и Билл присоединился, чтобы довести выигрыш до 9, а позже присоединилась Кристина, чтобы довести выигрыш до 11, то соответствующие выплаты игроков будут быть (5, 4, 2).

Но у нас есть проблема. Что, если у Кристины и Билла очень похожие навыки? Тогда может случиться так, что Кристина будет иметь более высокий предельный вклад, если она присоединится к группе до Билла, потому что она будет первой, кто предоставит их совпадающий набор навыков, а затем, когда он присоединится, его предельный вклад будет ниже; представьте себе другой вектор выигрыша для (Авы, Билла, Кристины) из (5, 1, 5). Если на практике все присоединились к группе одновременно, как мы должны решить, какое из этих двух распределений выплат является наиболее правильным или справедливым?

Именно эта дилемма подтолкнула к формулированию ценностей Шепли, которые на высоком уровне можно понять как «определение предельного вклада каждого игрока, усредненного по каждой возможной последовательности, в которой игроки могли быть добавлены в группу». Итак, в описанном выше случае вы должны смоделировать последовательности прибытия: ABC, ACB, BCA, BAC, CAB и CBA, и для каждой последовательности зафиксировать предельный выигрыш, выплачиваемый каждому игроку. Затем усредните все эти выплаты вместе, и вы получите значения Шепли для каждого игрока.

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

Здесь, вместо того, чтобы работать напрямую с последовательностями, этот подход работает с разными подмножествами игроков и взвешивает эти подмножества в зависимости от того, какую часть всех последовательностей они представляют. Например, представьте, что у вас 5 игроков, ABCDE. Представьте также, что ваша текущая цель - вычислить предельный вклад игрока C в различных точках последовательности. С этой точки зрения нет смысла оценивать и (A ›B› C), и (B ›A› C), потому что с точки зрения C не имеет значения, какой заказаны A и B. Итак, мы можем просто оценить функцию выигрыша один раз для f (AB) и f (ABC) и отследить, сколько было добавлено, когда появился C.

Однако, поскольку весь смысл этого метода заключается в усреднении предельного вклада по всем последовательностям, вам необходимо взвесить это вычисление подмножества в зависимости от того, сколько последовательностей оно представляет. Как мы уже упоминали, этот расчет применяется как к ABC, так и к BAC. Однако нам также необходимо учитывать различные последовательности, которые могут быть в конце цепочки. В частности, в этом случае вы можете добавить DE или ED после добавления C. Итак, в целом этот расчет «взять разность f (ABC) - f (A)» учитывается для четырех последовательностей: ABCDE, ABCED, BACDE и BACED.

С этой интуицией приведенное ниже уравнение будет немного менее пугающим. S! соответствует количеству перестановок набора S или количеству способов, которыми A и B могли быть добавлены, ведущие к этой точке (2! = 2 * 1 = 2). Поскольку | F | - общее количество плательщиков в коалиции, | F | - | S | - 1 соответствует количеству игроков, которые должны быть добавлены после игрока i, что в нашем примере соответствует D и E. Опять же, мы берем факториал этого значения, чтобы получить количество возможных способов эти игроки могут быть добавлены. Эти две величины умножаются вместе, а затем делятся на общее количество последовательностей перестановок полной последовательности: в данном случае 5 !,. Итак, из 5! последовательностей, это конкретное подмножество захватывает 4 из них, поэтому мы соответствующим образом взвешиваем его вычисления. Это просто означает, что вместо оценки этих 4 различных последовательностей (которые, как мы знаем, все дадут одинаковый результат) и послушного добавления каждой из них с точностью до 1/5! веса, мы добавляем их все сразу, с соотношением 4/5! масса.

Этот метод является доказуемо единственным, который удовлетворяет трем аксиомам кредитного приписывания:

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

Подождите, разве этот пост не об атрибуции функций?

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

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

Чтобы получить некоторое представление о ситуациях, когда это не так, давайте представим простую нелинейность ReLu с двумя особенностями.

Затем представьте, что в среднем наблюдение будет иметь входное значение 5. У нас есть две двоичные характеристики, X1 и X2, каждая из которых имеет вес -4, входящий в эту нелинейность. Если обе функции установлены на 0, выход этой нелинейности будет равен 5. Если X1 переключается с 0 на 1, это смещает выход на 1 (max (0, (5–4)). Затем, если X2 также переключается на 0, выходной сигнал переходит в 0 (max (0, 1–4)), что означает, что добавление двух функций по-разному повлияло на результат, даже если они обе имели одинаковый вес, входящий в нелинейность. вы меняете порядок, в котором вы их представляете, затем X2 сдвигает результат на 4 единицы, а X1 на 1. По мере того, как мы добавляем больше функций и получаем более скомпонованные нелинейности, эти усложняющие эффекты усиливаются, а это означает, что иметь метод ценно. , как и ценности Шепли, который учитывает и взвешивает все эти различные предельные значения.

Итак, мы получаем формулу этого подхода, которая почти идентична формуле игрока / коалиции. Здесь M - полное количество функций, z ’- вектор, в котором присутствует некоторое подмножество функций, представленных в описываемом примере. (Не волнуйтесь: мы немного поговорим о том, что значит «присутствовать»). И вместо вознаграждения мы вместо этого оцениваем ценность модели с функцией и без нее, которую я добавил к некоторому подмножеству других функций, а затем взвешиваем это подмножество в зависимости от того, сколько последовательностей оно представляет.

Есть несколько тонких вопросов, которые стоит задать об этом уравнении.

  1. Что делают эти маленькие штрихи (например, x ’)? В этом документе обозначение чего-либо с помощью основного маркера означает, что это «упрощенная» версия вектора признаков, которая показывает, «присутствует» ли объект или «нет». Так, например, если у вас есть упрощенный вектор [0, 1, 1], и вы хотите передать его в модель, это будет означать «оценивать модель так, как если бы у вас были только функции x_1 и x_2, а x_0 отсутствовал. . (Примечание: в документе это формулируется в терминах функции отображения h (x ’) = x, которая сопоставляет упрощенную и неупрощенную версию вектора)
  2. Что на самом деле означает «оценить модель, как если бы функция x_0 отсутствовала»? Да, это немного странно. Большинство моделей не могут изначально обрабатывать отсутствующие данные - они имеют дело с числами с плавающей запятой и не могут работать с буквальными значениями NULL - вместо этого в документе предлагается, чтобы в случаях, когда функция «отсутствует» в упрощенном векторе, мы представляем это модели как эта функция принимает ожидаемую ценность для всего набора данных. Идея здесь в том, что если вы хотите смоделировать ситуацию, в которой модель не имеет доступа к информативному значению данной функции, разумно показать модели только то значение, которое представляет собой неосведомленное наилучшее предположение о значении этой функции.
    Пример этой идеи: в случае, когда вы не знаете чей-то рост, замените его средним ростом среди населения, поскольку это ваше лучшее безинформативное предположение об их росте на самом деле. Хотя это приближение включает в себя некоторые математические допущения, которые, как мы знаем, могут оказаться ложными (например, линейность модели), и поэтому, безусловно, не идеальна на практике, это разумная базовая линия, которую легко вычислить.

Радости приближения

Все, что мы описали выше, концептуально великолепно, но в нем есть небольшая проблема: выборка всех возможных подмножеств функций из длинного списка функций невероятно трудоемка, особенно с большим количеством функций. Стремление к более разумному с точки зрения вычислений подходу побудило найти приближение, и именно здесь мы вернемся к LIME.

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

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

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

Этот механизм взвешивания является ключом к соединению подхода Shapley Values ​​с подходом LIME. Помните, ранее, когда мы формулировали оценку значений Шепли как вычисление изменения в вашей комплексной оценке модели, как функцию добавления функции i к подмножеству, взвешенной по количеству последовательностей, которые представляет подмножество. Аналогичным образом мы можем взвесить наши образцы LIME, которые содержат подмножества функций, присутствующих в любом случае, который мы пытаемся предсказать, на основе ядра, которое представляет количество последовательностей добавления функций, которые учитывает данное подмножество. В рамках этой системы регрессии мы оцениваем значения на основе некоторого набора выборок, а не вычисляем их точно. Это не идеальная оценка, но она требует гораздо меньше вычислений, чем попытка полной выборки области всех подмножеств, что делает ее весьма привлекательной.

В документе утверждается, что по сравнению с LIME этот метод дает результаты, которые в большей степени соответствуют интуиции человека о том, как следует разделять доверие между функциями в данной модели. Очевидно, это небольшая выборка примеров, но мне любопытно посмотреть, обладают ли эти объяснения желательными свойствами для более широкого диапазона наборов данных. Код здесь, если вы хотите поэкспериментировать со своими данными!