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

Почему важна интерпретация моделей

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

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

Возьмем, к примеру, банковское дело. Анализ рисков использует модели ИИ для присвоения кредитных баллов заявителям и, таким образом, принятия решения о том, давать им деньги взаймы или нет — заявки с низкими баллами отклоняются, а заявки с высокими баллами принимаются. Эти баллы генерируются путем обработки данных заявителя, таких как возраст, заявленный доход, существующие кредиты в истории и многое другое.

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

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

Независимо от отрасли, аналитики заинтересованы в объяснении того, как модели ИИ делают прогнозы, чтобы определить, можно ли им доверять. Методы, представленные в этой статье, помогут вам разобраться в логике любой модели, независимо от того, использует ли она язык, изображения или табличные данные для прогнозирования. Кроме того, вы узнаете, как применять эти методы с помощью Python. Код, представленный в этой статье, также можно найти в этом репозитории GitHub.

Компромисс между точностью прогнозирования и интерпретируемостью модели

Вообще говоря, сложные модели, как правило, дают более точные прогнозы, чем более простые модели. Однако понимание логики прогнозов модели становится все труднее по мере увеличения ее сложности.

Легко понять, как незначительное увеличение одной из входных переменных влияет на прогнозы, сделанные моделью линейной регрессии (1). К сожалению, бывают случаи, когда связь между признаками и результатом не может быть точно предсказана линейной моделью, поэтому приходится переходить к более сложным алгоритмам. Хотя прогнозы, сделанные, скажем, ансамблем деревьев с градиентным усилением (2), могут точно моделировать нелинейную зависимость, понять, почему прогноз оказался именно таким, не так просто, как раньше.

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

Что такое ЛАЙМ?

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

Объяснения, не зависящие от локальной интерпретируемой модели, также известные как LIME, были предложены Марко Тулио Рибейро в 2016 году. Как следует из названия, это процедура, которая использует локальные модели для объяснения прогнозов, сделанных любой моделью.

Чтобы использовать LIME, нам нужно:

  1. Модель, которую мы можем исследовать столько раз, сколько нам нужно; и
  2. Модель с методом predict_proba (для совместимости с LIME).

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

Набор данных создается путем взятия всех признаков из одного наблюдения, а затем итеративного удаления некоторых его компонентов для создания нового набора «возмущенных» наблюдений. Модель обрабатывает наблюдения в наборе возмущенных данных, а затем интерпретируемая модель соответствует последним данным.

Например, представьте себе модель обработки естественного языка (NLP), которая берет предложение и предсказывает его негативный тон. LIME создает набор возмущенных данных, используя процедуру, описанную выше (3).

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

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

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

ЛАЙМ на Питоне

Теперь мы будем использовать LIME для объяснения модели vaderSentiment. Сначала установите и импортируйте оба модуля:

Для каждого текста Vader возвращает словарь с отрицательными, положительными, нейтральными и составными оценками текста. Хотя LIME не зависит от модели (то есть он будет работать с любой моделью), он требует, чтобы модель была похожа по структуре на объект sklearn. В частности, модель должна иметь метод predict_proba, поэтому мы сначала изменим Vader, чтобы он напоминал экземпляр sklearn.

ПРИМЕЧАНИЕ. Этот шаг можно пропустить, если в вашей модели уже есть векторизованный метод predict_proba!

Давайте теперь сделаем прогноз по следующему тексту:
Я НЕНАВИЖУ понедельники! Я опоздал на автобус и забыл пообедать…

Если вы работаете с блокнотом, используйте explanation.show_in_notebook(). В противном случае используйте explanation.as_pyplot_figure(). Вот как результаты выглядят в блокноте Google Colab:

Основываясь на этом выводе, вы можете сказать, что слово, которое больше всего влияет на отрицательную оценку текста, — это НЕНАВИСТЬ, за которым следует пропущенное. Слова, которые больше всего влияют на неотрицательную оценку текста, — это I и the.

Что такое ШАП?

SHAP был предложен в 2017 году компаниями Lundberg и Sun-In. Как и LIME, он дает локальные объяснения предсказаний, сделанных моделями черного ящика. Основное отличие состоит в том, что SHAP использует теорию игр (раздел экономики) для локальных объяснений.

SHAP расшифровывается как Shapley Additive exPlanations и основан на суммировании значений Шепли (значения Шепли — это решения для кооперативных игр, введенных Ллойдом Шепли в 1951 году). Короче говоря, значение Шепли представляет собой ожидаемую ценность вклада одного игрока в игру. Чтобы связать теорию игр с машинным обучением, мы должны думать о модели как о правилах игры, а о функциях — как об игроках, которые могут либо присоединиться к веселью (т. наблюдаться).

Чтобы вычислить значения SHAP, нам нужно:

  1. Модель, которую мы можем исследовать столько раз, сколько нам нужно;
  2. Образец наблюдений; и
  3. Очень специфическая структура модели (для совместимости с SHAP).

ПРИМЕЧАНИЕ. С LIME нам нужно было одно наблюдение, чтобы получить объяснение. Из-за того, как рассчитываются значения Шепли, нам понадобится целая выборка, чтобы объяснить одно наблюдение с использованием SHAP.

Предположим, у нас есть подогнанная модель f, которая использует входные переменные X = (X1, X2, …, Xp) для предсказания f(X). Цель SHAP — объяснить предсказание f(X = x) путем измерения вклада каждой функции в результат модели при X = x.

SHAP в Python (пример линейной регрессии)

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

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

Затем мы подгоняем модель линейной регрессии к данным.

Теперь мы возьмем выборку из данных (200 наблюдений), чтобы создать частичный график зависимости для функции индекса массы тела (ИМТ или также ИМТ для этой статьи). Этот шаг поможет нам визуализировать, что такое ценности Шепли и откуда они берутся.

Вертикальная красная линия представляет разницу между E[f(x) | bmi = 0,015] и безусловное ожидаемое значение E[f(x)]. Это значение SHAP для ИМТ, когда ИМТ = 0,015. Как только мы рассчитали значения SHAP для всех оставшихся признаков, мы можем использовать значение, представленное красной линией, чтобы понять важность ИМТ в 42-м наблюдении.

Мы можем объяснить важность каждого признака для прогноза, сделанного по 42-му наблюдению, используя каскадный график.

Приведенный выше заговор читается снизу вверх. На оси X представлены прогнозируемые значения для цели (тяжесть диабета пациента), а на оси Y представлены все характеристики. Начнем с безусловного ожидаемого значения прогнозов, сделанных моделью в выборке (141,2). Каждая горизонтальная полоса представляет значение SHAP для каждой функции, отсортированное по величине в порядке возрастания. Это означает, что наименее важной характеристикой для 42-го предсказания является возраст, за которым следует s4, затем s3 и так далее. Примечательно, что наиболее важным признаком является s5, и он оказал положительное влияние на прогнозируемую тяжесть заболевания пациента. В этом примере s5 представляет собой уровень триглицеридов в сыворотке пациента, который, как известно, увеличивает риск инсультов и сердечных заболеваний.

Как указывалось ранее, график начинается с E[f(X)]. Обратите внимание, что график заканчивается на f(x) = 171,3, предсказанном значении для 42-го наблюдения!

Тот факт, что график водопада начинается с E[f(X)] и заканчивается на E[f(x)], не является совпадением. Скорее, значения SHAP являются аддитивными, и они всегда суммируются с разницей между прогнозом, сделанным на основе наблюдения, которое мы пытаемся объяснить (E[f(x)]), и безусловным ожидаемым значением (E[f(X)]). (4). Это желательное свойство, потому что оно позволяет нам интерпретировать сумму всех значений SHAP как разницу между прогнозом, когда признаки отсутствуют, и прогнозом, когда присутствуют все признаки. В этом контексте значение SHAP каждой функции представляет ее вклад в прогноз, сделанный моделью.

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

Основные выводы

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

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

На практике мы можем ожидать, что LIME и SHAP дадут аналогичные результаты, поэтому выбор метода в конечном итоге зависит от личных предпочтений. В любом случае мы можем использовать оба метода одновременно для проверки объяснений друг друга. Обобщить:

  • LIME генерирует искаженный набор данных, чтобы соответствовать объяснимой модели, в то время как SHAP требует всей выборки для расчета значений SHAP. Это означает, что для LIME требуется только одно наблюдение, а для SHAP требуется несколько наблюдений.
  • Значения SHAP относятся к среднему прогнозируемому значению выборки, а это означает, что разные выборки дадут несколько разные значения SHAP.
  • Хотя LIME и SHAP не зависят от модели, обе библиотеки Python требуют, чтобы модели имели определенную структуру. LIME немного более гибок, потому что для него требуется только метод predict_proba. Несмотря на то, что SHAP требует более конкретной структуры, этот метод работает с наиболее популярными библиотеками ИИ, включая sklearn, xgboost, tensorflow и многие другие.

В Светле у нас есть опытные специалисты по данным и инженеры по машинному обучению с подтвержденным опытом обучения и создания моделей ИИ. Наш персонал состоит из ученых-компьютерщиков, инженеров, математиков и экономистов со всего мира. Мы успешно создали комплексные решения на основе искусственного интеллекта для некоторых крупнейших технологических, финансовых и медицинских компаний. Работа, представленная в этой статье, является кульминацией многолетнего опыта работы с моделями ИИ и объяснения их процесса принятия решений для наших клиентов, чтобы получить четкое представление о продуктах и ​​решениях, которые мы предоставляем. Свяжитесь с одним из наших представителей, чтобы мы могли помочь вам принять лучшее решение для вашего проекта.

Весь код, использованный в этой статье, можно найти в этом репозитории GitHub.

Слова предостережения

LIME или SHAP не могут заменить показатели производительности.

Среднеквадратическая ошибка, средняя абсолютная ошибка, площадь под ROC-кривой, показатель F1, точность и другие показатели производительности оценивают соответствие модели. С другой стороны, LIME и SHAP дают локальные объяснения предсказаний модели. Другими словами, эти методы не предназначены для учета качества прогноза, а скорее сообщают нам, почему прогноз был сделан.

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

LIME или SHAP не подразумевают причинно-следственную связь

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

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

_

1. Линейная регрессия — это простой алгоритм обучения, который восходит к 1800-м годам. По сути, он находит линию, которая лучше всего соответствует набору данных, чтобы делать прогнозы.

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

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

4. Значения Шепли основаны на аксиомах эффективности, симметрии, фиктивности и аддитивности. Как следствие, значения SHAP естественным образом складываются. Зима (2022) предлагает всесторонний обзор аддитивного свойства значений Шепли.