Интерпретации чёрных ящиков

Машинное обучение, в основном, отвечает на вопросы КАКАЯ(ОЙ) / КТО(ЧТО) / СКОЛЬКО? «Что изображено?», «какая будет цена акции?» и т.п. Самый естественный следующий человеческий вопрос: ПОЧЕМУ? Кроме ответа чёрного ящика (будь то бустинг или нейросеть), нам хотелось бы получить аргументацию этого ответа… Ниже представляю обзор проблематики интерпретации (это одна из тем, которая есть в моём курсе для магистров ММП ВМК МГУ, и которой не уделяется время в любом другом курсе по машинному обучению и анализу данных).

Interpretations.jpg

Зачем нужны интерпретации

Точного определения интерпретации модели по понятным причинам нет, даже в последних обзорных работах «The Mythos of Model Interpretability» и «A Rigorous Science of Interpretable Machine Learning». Но к необходимости интерпретации приводят следующие проблемы:

  • Одна метрика качества (и даже набор) не описывает поведения модели, а лишь само качество на конкретной выборке
  • Использование ML в «критических областях» (медицине, криминалистике, юриспруденции, финансах, политике, транспорте) породили требования к безопасности модели, обоснование доверия ей, а также различные процедуры и документы по регуляции применения ML-моделей.
  • Естественное требование к ИИ, который способен отвечать на вопрос «ЧТО?» – обосновать «ПОЧЕМУ?». Например, дети начинают задавать этот вопрос ещё до получения каких-то глубоких знаний. Это естественный этап в познании: если понимаешь логику процесса, то становятся очевиднее его эффекты и последствия.

Интерпретации производятся для:

  • объяснения результатов. Как следует из анализа проблем выше, это основное назначение интерпретации.
  • улучшения качества решения. Если мы понимаем, как работает модель, то сразу появляются варианты по её улучшению. Кроме того, как увидим, некоторые этапы интерпретации, такие как оценка важности признаков, используются для решения ML-задач (в частности, для формирования признакового пространства).
  • понимания, как устроены данные. Хотя тут надо сделать много оговорок: интерпретируется модель, а не данные! Сама модель их описывает с какой-то погрешностью. Строго говоря, для интерпретации данные и не нужны, нужна уже построенная (обученная) модель.
  • проверка перед имплементацией, чтобы лишний раз убедиться, что «ничего не полетит», после внедрения в бизнес-процесс чёрного ящика.

Какими бывают интерпретации

  • визуализации (изображения, диаграммы и т.п.)
hands
Рис. 1. Пример синтеза изображения из блога Гугла.

Например, на рис. 1 приведены синтезируемые изображения, которые сеть уверенно относит к классу «гантель». Сразу видно, что на всех изображениях присутствует часть руки. Видимо, в обучающей выборке не было гантелей «без рук». Эту особенность данных мы выявили не просматривая весь датасет!

  • тесты
texts.jpg
Рис. 2. Объяснение изображений из [Hendricks и др. 2016]

На рис. 2 показаны интересные примеры т.н. объяснений изображений (Visual Explanations), когда мы учим связку CNN+RNN генерировать объяснение конкретной классификации.

  • числа, таблицы

Здесь можно привести пример важностей признаков, см. ниже.

  • объект(ы) / признаки / части данных
word2vec
Рис. 3. Главные компоненты пространства word2vec.

На рис. 3 показаны проекции кодировок слов (названий столиц и стран) метода word2vec на двумерное подпространство главных компонент 1000-мерного пространства кодировок. Видно, что первая компонента различает понятия (столица и страна),  по второй столицы и соответствующие им страны как будто упорядочены. Такие закономерности в пространстве кодировок вызывают доверие к методу.

Ещё один пример, когда интерпретация осуществляется с помощью частей генерируемого объекта, представлен на рис. 4. Решается задача генерации описания по изображению, для этого также используется связка CNN+RNN. Здесь визуализировано: какая часть изображения максимально повлияла на вывод конкретного слова во фразе-описании. Довольно логично, что когда выводилось «птица» нейросеть на неё «смотрела», когда выводилось «над» — то смотрелось, что под птицей, а когда «вода(ой)» — на воду.

bird.jpg
Рис. 4. Изменение области внимания при генерации тестового описания: широкого (верхний ряд) и узкого (нижний) [Xu и др. 2016]
  • аналитическая формула / простая модель

В идеале модель записывается в виде простой формулы типа:

formula

Это линейная модель и недаром её называют интерпретируемой. Каждый коэффициент здесь имеет определённый смысл. Например, мы можем сказать, что согласно модели, увеличение площади квартиры на 1 кв.м. увеличивает её стоимость на 50000 руб. Просто и понятно! Заметьте, что для логистической регрессии нет такой прямой связи с ответом, там связь с логарифмом правдоподобия…

Интерпретация формулой используется для решающих деревьев, случайных лесов и бустинга. Отдельный прогноз этих «монстров» легко записать в виде суммы с весами, аналогичной выше (она, правда, может содержать значительное число слагаемых). Этот подход реализован в библиотеке treeinterpreter (иногда подход называют Saabas по имени автора библиотеки из Микрософта). Суть (для одного дерева) показана на рис. 5. Конкретный прогноз дерева можно записать как сумму смещения (среднее целевого признака) и суммы по всем ветвлениям изменений среднего целевого признака в поддереве при переходе через эти ветвления. Если слагаемые пометить признаками, которые соответствуют ветвлениям, сложить слагаемые с одинаковыми пометками, то получим, насколько каждый признак «отклонил» ответ дерева от среднего при генерации конкретного ответа.

tree.jpg
Рис. 5. Превращение дерева в формулу [источник].

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

Интерпретации также бывают:

  • глобальными (описывается работа модели),
  • локальными (объясняется конкретный ответ модели).

Требования к интерпретациям

Если мы относимся к интерпретациям, как объяснениям работы (и конкретных решений ИИ), то это накладывает на них следующие требования (подробнее см. в обзоре Explanation in Artificial Intelligence: Insights from the Social Sciences):

  • сравнение / сопоставление (contrastive). Если человеку отказали в выдаче кредита, то его не сколько волнует вопрос «почему мне не дали?», сколько «почему мне не дали, а ему дали?» или «что мне не хватает, чтобы дали?»
  • краткость и конкретика (выборочность / selectivity). На примере того же кредита: странно перечислять сотню причин (даже если модель использует 100 признаков), очень желательно 1-3, самые весомые.
  • контентность. Объяснение поведения модели должно быть ориентировано на клиента: учитывать его язык, предметную область.
  • соответствие ожиданиям и правдивость. Странно услышать, что Вы не получили кредит, потому что у Вас слишком большие доходы. Хотя формально, некоторые модели, например, SVM с ядрами, могут области, не покрытые данными, считать принадлежащими к произвольным классам (это специфика геометрии разделяющих поверхностей, см. правый нижний угол на рис. 6). Это ключевой момент! Некоторые модели называют неинтерпретируемыми не из-за формальной или аналитической сложности, а, например, из-за описанных особенностей (немонотонном результате для монотонных данных).
pic_interpret01
Рис. 6. Разделяющая поверхность SVM с ядрами.

Правдивость означает, что объяснение модели должно соответствовать истине (на него нельзя привести контрпример).

Мы уже сказали, что всем требованиям удовлетворяет интерпретация коэффициентов линейной регрессии. Их можно также изобразить, см. рис. 7. Здесь 8 признаков изображено на оси «y«, ось «x» соответствует значениям признаков при настройке модели на бутстреп-подвыборках (сразу видно устойчивость весов), синие точки — веса модели, обученной на всей выборке.

pic_interpret02
Рис. 7. Веса линейной регрессии (Weight Plot).

Очевидно, что из-за разных масштабов признаков лучше смотреть не на веса, а на эффекты признаков. Эффект (Effect) на конкретном объекте конкретного признака это произведение значения признака на значение веса. См. рис. 8 — здесь показаны эффекты признаков при линейной регрессии, можно выделить эффекты признаков для конкретного объекта, в сумме они дают значение регрессии на нём. Для наглядности можно использовать ящик с усами (box-plot) или графики плотностей.

pic_interpret03
Рис. 8. Эффекты линейной регрессии (Effect Plot).

 

Интерпретация чёрных ящиков

  1. Анализ частичной зависимости (Partial Dependence)

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

pdp

(т.е. здесь мы всё-таки используем данные). Это формула для зависимости от конкретного признака, понятно, что предполагается независимость признаков. Например, для модели SVM, результат действия которой изображён на рис. 5 график частичной зависимости (PDP = Partial Dependence Plot) изображён на рис. 9.

pic_interpret04
Рис. 9. График частичной зависимости.

В работе Predicting pneumonia risk and hospital 30-day readmission представлен анализ с помощью таких графиков, в том числе двумерных.

Анализ зависимости пары признаков часто делают с помощью H-статистики (Фридмана и Попеску):

H2

Интегрирование здесь — суммирование по всем элементам выборки. Такая статистика описывает, как много взаимодействие признаков привносит в модель, но её достаточно долго вычислять на практике.

2. Индивидуальное условное ожидание

Частичная зависимость слишком агрегированная информация, можно посмотреть, как меняется ответ модели на каждом объекте при варьировании конкретного признака. Для нашего модельного примера такие графики показаны на рис. 10. Синим выделен график для одного из объектов. Рассматриваемые функции часто называют Individual Conditional Expectation (ICE), понятно, что среднее арифметическое ICE по всем объектам даёт PD.

pic_interpret05
Рис. 10. Ответы модели при варьировании значения 1го признака.

3. Важности признаков (Feature Importance)

Одна из возможностей проанализировать модель — оценить, насколько её решение зависит от отдельных признаков. Многие модели оценивают т.н. важность признаков (Feature Importance). Простейшая идея оценки важности: померить, как ухудшится качество, если испортить значения конкретного признака. Портят обычно перемешиванием значений (если данные записаны в матрицу объект-признак достаточно сделать случайную перестановку конкретного столбца), поскольку

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

Описанный выше способ оценки важности признаков простой и обладает многими замечательными свойствами, например, т.н. согласованностью (Consistency, если модель изменить так, что она более существенно начинает зависеть от какого-то признака, то его важность не убывает). Многие другие, в том числе описанный выше  treeinterpreter, им не обладают.

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

  • это не важность признака для решения задачи, а лишь для настройки конкретной модели,
  • легко построить примеры типа «исключающее ИЛИ«, в которых из двух одинаковых (!) признаков большую важность получает тот, который используется на нижних уровнях дерева (см. ещё аргументацию здесь),
  • эти методы не обладают согласованностью!

Интересно, что есть посты в блогах и статьи, в которых сравниваются реализации случайного леса в разных средах. При этом стараются использовать идентичные параметры, в частности, включают вычисления важностей. Никто из авторов таких сравнений не продемонстрировал понимания, что важности в разных реализациях вычисляются по-разному, например, в R/randomForest — с помощью перемешиваний значений, а в sklearn.ensemble.RandomForestClassifier — как мы описали сейчас. Ясно, что последняя реализация будет существенно быстрее (и дело не в языке программирования, а в сложности алгоритма).

Нетривиальным согласованным методом, является метод реализованный в библиотеке SHAP (SHapley Additive exPlanations). Важность i-го признака здесь вычисляется по такой формуле

formula3

где f(S) — ответ модели, обученной на помножестве S множества n признаков (на конкретном объекте — вся формула записывается для конкретного объекта). Видно, что вычисление требует переобучения модели на всевозможных подмножествах признаках, поэтому на практике применяют приближения формулы, например с помощью метода Монте-Карло.

Оценка важностей признаков это отдельная большая тема, заслуживающая отдельного поста, самое главное понимать следующее:

  • нет идеального алгоритма оценки важности признаков (для любого можно подобрать пример, когда он плохо работает),
  • если много похожих (например, сильно коррелированных признаков), то важность может «делиться между ними», поэтому не рекомендуется отбрасывать признаки по порогу важности,
  • есть старая рекомендация (впрочем, без теоретического обоснования): модель для решения задачи и оценка важности должны основываться на разных парадигмах (например, оценивать важность с помощью RF и потом настраивать его же на важных признаках не рекомендуется).

4. Глобальные суррогатные модели (Global Surrogate Models)

Обучаем простую интерпретируемую модель, которая моделирует поведение чёрного ящика. Заметим, что для её обучения не обязательно иметь данные (можно узнать ответы чёрного ящика на случайных объектах и таким образом собрать обучающую выборку для суррогатной модели).

Очевидная проблема здесь в том, что простая модель может не очень хорошо моделировать поведение сложной. Применяют различные приёмы, для более качественной настройки, некоторые можно узнать из работы (и ссылок в ней) «Interpreting Deep Classifiers by Visual Distillation of Dark Knowledge». В частности, при интерпретации нейросетей надо использовать не только класс, предсказанный сетью, но и все вероятности принадлежности к классам, которые она получила, т.н. темное знание (Dark Knowledge).

5. Локальные суррогатные модели (Local Surrogate Models)

Даже если простая модель не сможет смоделировать сложную во всём пространстве, в окрестности конкретной точки это вполне возможно. Локальные модели объясняют конкретный ответ чёрного ящика. Эта идея показана на рис. 11. У нас есть чёрный ящик (ЧЯ), который построен на данных. В некоторой точке он выдал ответ, мы генерируем выборку в окрестности этой точки, узнаём ответы ЧЯ и настраиваем обычный линейный классификатор. Он описывает ЧЯ в окрестности точки, хотя во всём пространстве он сильно отличается от ЧЯ. Из рис. понятны достоинства и недостатки такого подхода.

pic_interpret06
Рис. 11. Построение локальной суррогатной модели.

На описанной идее основан популярный интерпретатор LIME (Local Interpretable Model-agnostic, есть также реализация в библиотеке eli5). В качестве иллюстрации его применения на рис. 12 показаны суперпиксели, ответственные за высокие вероятности классов при классификации изображения (вначале выполняется суперпиксельная сегментация).

dog
Рис. 12. Суперпиксели, ответственные за top-3 класса (Electric Guitar p=0.32, Acoustic guitar p=0.24, Labrador p=0.21).

6. Исследование отдельных блоков модели

Если модель естественным образом делится на блоки, можно интерпретировать каждый блок по отдельности. В нейронных сетях исследуют, какие входы вызывают максимальную активацию конкретного нейрона / канала /слоя, см. рис. 13, который взят из блога distill.pub. Эти иллюстрации намного приятнее рис. 1, поскольку при их создании использовались различные регуляризаторы, идеи которых следующие

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

Подробнее см. distill.pub.

nn
Рис. 13. Изображения, которые вызывают максимальную активацию блоков нейросети.

Интерпретации на примерах

Отдельный и эффективный вид интерпретаций — выделение конкретных объектов, на которых модель показывает то или иное поведение.

1. Конфликтные примеры (Counterfactual explanations)

— это объекты, которые отличаются незначительно, при этом ответ модели на них отличается существенно, см. рис. 14. Естественно, это могут быть не объекты обучающей выборки. Поиск для конкретного объекта конфликтной пары позволит ответить на вопрос типа «что надо сделать, чтобы выдали кредит?» Из рис. 14 понятна геометрия таких примеров (мы ищем точку/точки около поверхности разделяющей классы). В работе «Explaining Data-Driven Document Classifications» приводится конкретный пример объяснения с помощью конфликтных примеров в одной задаче классификации текстов: «If words (welcome, fiction, erotic, enter, bdsm, adult) are removed, then class changes for adult to non-adult».

pic_interpret07
Рис. 14. Пример конфликтных объектов.

Для нахождения конфликтных примеров решают задачи оптимизации типа

formula2

т.е. требуют определённый ответ модели в искомой точке и небольшое расстояние её до фиксированной. Есть также специальный метод растущих сфер (Growing Spheres).

В работе “Anchors: High-precision model-agnostic explanations” рассмотрели, в определённом смысле, противоположное понятие — не то, что путает и мешает правильной классификации, а что, наоборот, заставляет объект классифицировать определённым образом, т.н. якоря (Anchors), см. рис. 15.

anchors
Рис. 15. Якоря — участки изображения, которые вызывают определённую классификацию.

Родственное понятие к конфликтным примерам т.н. примеры атак на сеть / обмана сети (Adversarial Examples). Отличие, пожалуй, лишь в контексте. Первые используются для объяснения работы чёрного ящика, вторые для его умышленного обмана (неправильной работы на «очевидных» объектах).

2. Влиятельные объекты (Influential Instances)

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

pic_interpret10.png
Рис. 16. Модель настроенная на все выборке и после удаления выброса.

Понятно, что самый естественный алгоритм поиска влиятельных объектов — перебор объектов и настройка модели на выборке без перебираемого, но есть и хитрые методы, которые обходятся без перебора с помощью т.н. функции влияния (Influence Function).

3. Прототипы и критика (Prototypes and Criticisms)

Прототипы (или эталоны, или типичные объекты) — объекты выборки, которые в совокупности хорошо её описывают, например, являются центрами кластеров, если объекты образуют кластерную структуру.

Критика — объекты, которые сильно отличаются от прототипов. Аномалии являются критикой, но также критикой могут быть и достаточно типичные объекты из-за неправильного выбора набора прототипов, см. рис. 17.

pic_interpret08
Рис. 17. Примеры критики и прототипов в модельной задаче.

Понятно, что критика и прототипы нужны для интерпретации данных, а не модели, но они полезны тем, что по ним можно понять, с какими сложностями может столкнуться модель при настройке и на каких примерах лучше проверить её работу. Например, в работе «Examples are not Enough, Learn to Criticize! Criticism for Interpretability» приводятся следующие примеры, см. рис. 18: изображениям определённых пород собак, сильно отличающимся от других, свойственны: неестественные позы животного, большое число объектов съёмки, костюмы на животных и т.п. Всё это может понижать эффективность определения породы по фотографии.

dogs.png
Рис. 18. Примеры критики и прототипов в реальной задаче.

Ссылки

отличная статья-обзор

большая книга-справочник

блог, целью которого является сделать науку доступной и наглядной

обзорная публикация  в блоге

Как всегда, приветствуются комментарии и замечания. По ним автор оценивает, сколько людей читают весь текст поста;) Иллюстрация к заметке взята здесь, она символизирует сложную и суррогатную модели.

Интерпретации чёрных ящиков: 11 комментариев

  1. Дочитал весь текст:)
    Как всегда, спасибо большое за хороший пост. Многое почерпнул для себя.

    > Некоторые модели называют интерпретируемыми не из-за формальной или аналитической сложности, а, например, из-за описанных особенностей (немонотонном результате для монотонных данных).
    Называют НЕинтерпретируемыми? А иначе я не очень понял)

    Также могу поделиться опытом. Работаю с врачами и химиками/биологами. С врачами, естественно никогда не получится просто прийти и сказать: «у меня получилась модель с 90% точностью», там сразу засыпят вопросами «а почему», «а что влияет» и т.п. И правильно сделают:) Ну еще они очень привыкли к «калькуляторам» и шкалам, где указан парметр и балл/скор за него, т.е. типа «Возраст больше 60 (20 баллов)». Так им очевиднее какие факторы влияют и как.
    С химиками/биологами мы анализируем (ИК-Фурье и Раман) спектры биологических объектов. Обычно нужно по спектрам разделить, например разные виды бактрий. Там у нас обычно в два этапа работа строится: сначала я строю модель и показываю какие участки спектра вносят большой вклад в дискриминацию, а потом спектроскопист перепроверяет, что это действительно физически обосновано, т.к. есть большой риск, что в пробу одного класса попал «мусор» и мы видим его, а не интересующий объект.

    Наверное Вы это и так все знаете. Но решил поделиться для тех кто не только дочитал до конца, но еще и до комментариев дошел:)

    • Да, замечание верное. Спасибо большое!

      С врачами тоже был случай… не надо цифр, сделайте «светофор», красный — опасное состояние, зелёный — всё в порядке, жёлтый — не знаем.
      Ну и много с ними заморочек. Например, они против формулировок типа «диагностика пациента» — это что такое? это только врач может ставить диагноз, а не чёрный ящик!

      Про спектры биологических объектов интересно. У меня в этой области опыта нет.

  2. Заинтересовала подход к определению важности признаков путем случайного перемешивания данных этого признака. Если говорить о его реализации, представляется разумным рассчитать качество для каждого признака после перемешивания несколько раз для получения более устойчивого результата. Будет ли корректно построить процесс отбора «полезных» признаков, отбрасывая признаки, у которых среднее значение качества на перемешанных данных не хуже качества на изначальных данных?

  3. > представляется разумным рассчитать качество для каждого признака после перемешивания несколько раз для получения более устойчивого результата.
    На самом деле, обычно так не делают. Метод и так получится долгим (на современных данных). И если подумать, самое страшное, что может произойти при одном перемешивании — Вы оставите плохой признак. Но за счёт того, что признаки разумно удалять порциями, после удаления очередной модель обучаем заново, поэтому перемешиваний у Вас будет и так много. И плохой признак рано или поздно удалится.

    > Будет ли корректно…
    Ну, с поправками, о которых я написал: если у Вас много коррелированных хороших признаков, то Вы почти все удалите. Есть много подходов, основанных на этой идее. Например, метод Boruta (есть реализация в R).

  4. В случае использования многослойного персептрона (FC-ReLU-FC-ReLU-FC) в качестве регрессионной модели допустимо ли использование дифференциальных свойств для анализа влияния значения признаков на результат?

  5. Спасибо за подробную статью, особенно за наглядные примеры. И комментарии, как обычно, дополняют материал)

  6. Полезный обзор пакетов/библиотек с реализацией описанных методов

    https://towardsdatascience.com/explainable-ai-xai-a-guide-to-7-packages-in-python-to-explain-your-models-932967f0634b

    Еще стоит обратить внимание на вот такую электронную книгу https://ema.drwhy.ai/preface.html
    Мне она понравилась даже больше, чем труд Christoph Molnar, правда ebook Molnar постоянно обновляется, а эта похоже нет.

Оставьте комментарий