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

Если работает, значит, работает?

Я помню, как сидел сложа руки после завершения моего первого соревнования Kaggle по машинному обучению, поражаясь тому, что, по сути, сводилось к кускам непонятной линейной алгебры и нескольким статистическим данным, описывающим, насколько хорошо результат соответствовал нашим ожиданиям. Я думал, что знаю, что он делает - могу объяснить, как работает дрянная нейронная сеть (ну, по крайней мере, теоретически), или просмотреть документацию TensorFlow и, по крайней мере, распознать большинство параметров и их роль в процессе.

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

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

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

Моделирование черного ящика

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

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

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

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

Решение? Интерпретируемое машинное обучение

Чего мы хотим и на что обращать внимание

Что именно мы хотим, когда говорим, что хотим иметь возможность интерпретировать решение алгоритма машинного обучения? Согласно Доши-Велес и Ким (2017), следующие черты являются основными мотивами для разработки решений интерпретируемого машинного обучения (IML):

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

При этом, как выглядят эти свойства? Другими словами, как мы можем узнать, что предложенный метод интерпретируемости действительно может быть использован при оценке модели? Я перефразирую здесь Кристоф Мольнар:

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

Есть также несколько соображений относительно индивидуальных прогнозов.

  • Точность. Насколько хорошо наше объяснение предсказывает новые данные? Например, если мы сгенерировали дерево решений в качестве объяснения, как часто это дерево решений будет точно предсказывать результат при наличии новых данных?
  • Верность. Насколько хорошо наше объяснение может воспроизвести поведение модели черного ящика?
  • Последовательность. Насколько объяснения различаются в разных моделях? Предполагая, что мы загрузили в каждую модель одни и те же данные,
  • Важность. Как и в какой степени каждая переменная считается важной для модели? Какие из них имеют больший вес при определении производительности модели?
  • Репрезентативность. К скольким наблюдениям можно применить это объяснение? Коэффициенты наклона линейной регрессии могут применяться ко всем наблюдениям в наборе данных, в то время как более сложные модели, такие как SVM, могут потребовать уникальных объяснений для каждого наблюдения.

TL; DR Словарь *

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

  • Глобальные и Локальные. Когда мы говорим о кадре, подумайте о том, насколько обобщаемыми могут быть объяснения по отношению к различным наблюдениям в наборе данных. Как вы можете догадаться, глобальная интерпретируемость означает, что объяснения применимы ко всем наблюдениям, а локальные объяснения относятся только к этой одной точке и не могут применяться где-либо еще.
  • Внутренние и постфактум: некоторые модели просто по своей природе интерпретировать гораздо проще. У моделей линейной регрессии есть бета-коэффициенты, которые легко найти и интерпретировать («мы ожидаем, что Y увеличится на 1,34 единицы, когда X увеличится на 1 единицу»), и поэтому называются внутренне интерпретируемыми. С другой стороны, некоторые модели слишком сложны для интерпретации, даже если открыть капот и заглянуть внутрь. Просто подумайте обо всех весах, смещениях, узлах, нейронах и слоях, которые мы должны были бы учитывать для модели глубокого обучения, поэтому вместо этого мы бы выбрали здесь апостериорную интерпретацию или одну в котором мы вносим небольшие изменения в X и исследуем влияние на Y, чтобы понять, что происходит.
  • Специфичные для модели по сравнению с не зависящей от модели: если метод, используемый для получения объяснения, можно легко обобщить для разных типов моделей, от логистических регрессоров до нейронных сетей, мы говорим, что метод не зависит от модели. С другой стороны, если интерпретация работает только для этой одной модели («мы ожидаем, что Y увеличится в 1,34 раза, когда X увеличится на 1 единицу»), интерпретация будет специфичной для модели.

Методы интерпретируемости

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

Обходные пути для сложных моделей

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

  • Суррогатные модели. Как поясняется на рисунке ниже, идея суррогатных моделей заключается в том, что сложная модель, например нейронная сеть, обучается нормально, но используется для вычисления вероятностей прогнозируемых классов вместо меток (подумайте о P (X = 1) = 0,93 вместо 1). Затем мы можем подогнать внутренне интерпретируемую модель, скажем, линейную регрессию или дерево решений к этим данным, и использовать ее для объяснения наших решений, в данном случае независимо от того, одобрена или отклонена заявка на получение кредита.

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

Глобальные объяснения

Есть несколько визуализаций, которые можно использовать для ответа на общий вопрос: «Что происходит с моим предсказанным Y, когда я изменяю одну функцию X, сохраняя остальные функции постоянными. ” Хотя последнюю часть утверждения трудно контролировать во многих моделях, это хорошее начало, и его довольно легко понять.

  • Графики частичной зависимости (PDP). Если вы вспомните свой первый курс регрессионного анализа, что именно означает коэффициент наклона для переменной X_i? Это предельное влияние X на Y или частная производная переменной отклика Y по независимой переменной X. Если мы усредним этот предельный эффект для каждого наблюдения (для всех других значений характеристик), мы можем получить набор прогнозы при изменении одной переменной признака. Когда мы делаем это для сложных нелинейных моделей, мы можем получить невероятно полезные визуализации. Однако самая большая ошибка PDP - это предположение о независимости между переменными (подумайте, что «бета - это изменение Y при изменении X, сохранение всех остальных переменных постоянными»), поэтому, если X оказывается равным связанный с другой переменной, наш PDP может вводить в заблуждение.

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

Локально интерпретируемые алгоритмы

Есть несколько алгоритмов, набравших довольно большую популярность в последние несколько лет, которые помогают разбить вклад каждой модели в контексте одного прогноза. Каждый из них соответствует аддитивной линейной форме, где мы начинаем с одного базового значения phi_0, затем добавляем вклад каждой переменной z, умноженный на вес phi_i, образует g (z '), общее объяснение каждого наблюдения. Основное различие между каждым из них заключается в его способности преобразовывать переменные функции X во входные данные функции z ', а также в способе, с помощью которого phi_i значения рассчитываются.

  • SHAP: Аддитивные объяснения Шэпли, также известные как SHAP, генерируются с использованием значений Shapely, разработанных для теории экономических игр Ллойдом Шепли в 1953 году. В 2018 году компания Lundberg & Lee также из Вашингтонского университета , разработал метод реализации этих значений в машинном обучении с использованием той же аддитивной линейной формы. Как и LIME, их можно использовать для построения объяснений задач контролируемого обучения как с классификацией изображений, так и с табличными данными. Это репозиторий GitHub - еще один отличный ресурс для начала работы с SHAP в Python (и для создания невероятных визуализаций).

Заключительные комментарии

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

Дальнейшее чтение и реализация

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

Общие IML:

Книга по интерпретируемому машинному обучению Кристофа Мольнара (подробные объяснения и визуализации): https://christophm.github.io/interpretable-ml-book/index.html

Обзор IML от H2O.ai (Классные визуализации и нетехнические описания): https://www.youtube.com/watch?v=3uLegw5HhYk

Реализация на Python:

LIME на Python (простой в использовании API, основанный на оригинальной статье LIME): https://github.com/marcotcr/lime

SHAP на Python (простой в использовании API, основанный на оригинальном документе SHAP): https://github.com/slundberg/shap

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