⬅️ #3: Аналитические модели | #5: Интервью Кали ➡️

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

Сегодня давайте устроим небольшую паузу, во время которой мы не будем напрямую работать над проектом AI & Art с Кали Резо, а вместо этого поразмышляем над некоторыми проблемами, которые он поднял и которые в настоящее время исследуются исследовательскими группами ИИ.

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

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

А. Объяснимость

Что означает, что модель объяснима?

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

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

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

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

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

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

2 простые объяснимые модели: линейная и логистическая регрессии

Линейная регрессия

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

Математически для N элементов в вашем наборе данных и K объектов вы получите формулу, подобную этой:

где yi — прогнозируемое выходное значение, ß — точка пересечения, а αkкоэффициенты каждую функцию. Самое замечательное в линейной регрессии то, что после того, как вы обучили свою модель, просто взглянув на значения коэффициента и точки пересечения, вы можете интуитивно понять, какие функции релевантны, насколько каждая из них влияет на прогноз, и даже если они вносят положительный или отрицательный вклад.

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

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

  • среднее артериальное давление (АД)
  • измерение холестерина ЛПВП (ЛПВП)

Если мы используем замечательную библиотеку ML Python scikit-learn для обучения линейной регрессии на этом наборе данных, мы получим 3 ценные части информации: коэффициент для 1-го признака (ABP), коэффициент для 2-го признака (HDL) и точка пересечения. . Другими словами, если мы обратимся к приведенному выше уравнению, у нас есть значения для α0, α1 и ß.

Вот какие значения мы получаем:

Из этого мы можем вывести несколько вещей:

  • 1-й признак (ABP) положительно влияет на прогноз, а 2-й признак (HDL) отрицательно
  • функция ABP примерно в два раза важнее, чем функция HDL в нашем прогнозе

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

По сути, это сводится к тому же выводу: если у вас высокое АД и низкий уровень ЛПВП, то прогнозируемое значение высокое (красный цвет на графике). И наоборот, чем больше вы увеличиваете значение ЛПВП и чем больше вы уменьшаете значение АД, тем меньше становится прогноз (синий цвет — самый низкий прогнозируемый результат).

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

Логистическая регрессия

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

Давайте посмотрим, как это работает на наборе данных по радужной оболочке — обычном игрушечном наборе данных для классификации. В этом наборе данных у нас есть 150 растений, разделенных на 3 класса (по 50 цветков в каждом), для которых мы знаем длину лепестков, ширину лепестков, длину и ширину чашелистиков. Как и прежде, мы будем придерживаться двух первых функций; после обучения нашей логистической регрессии мы можем построить наши прогнозы, как мы делали в последних статьях (здесь прогнозы — это цвет фона, а реальные классы для наших обучающих данных — это внутренние цвета кругов):

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

Но как мы можем объяснить нейронные сети?

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

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

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

SHAP: инструмент для визуализации важности функций

SHAP (Shapley Additive exPlanations) – отличный инструмент Python для объяснения моделей черного ящика, таких как сети. Проект Github в основном опирается на статьи Скотта М. Лундберга, Габриэля Г. Эриона и Су-Ин Ли и датируется концом 2016 года. Теперь он предлагает различные функции для визуализации информации о наших функциях и как они влияют на вычисление прогноза.

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

Просто ради аргумента мы попытаемся использовать простую сеть прямой связи для прогнозирования среднего значения в тестовом поднаборе данных. Модель (архитектура которой, кстати, основана на этой статье Kaggle) имеет входной слой, затем 2 плотных скрытых слоя по 64 нейрона и, наконец, выходной слой только с 1 нейроном для прогнозируемого значения. Итак, после обучения у нас есть два варианта:

  • либо мы смотрим на 64 веса и 64 смещения каждого плотного слоя (всего 256 переменных) и пытаемся разобраться во всех этих, казалось бы, «случайных» числах, по крайней мере, для человеческого глаза:
[[-3.28192651e-01,  3.82912830e-02,  2.34939635e-01,
  -2.27540042e-02,  2.54860818e-01, -3.68398190e-01,
  -4.40444089e-02, -2.81749070e-01, -1.13208875e-01,
  -2.20769420e-01, -2.36565366e-01, -2.64305808e-02,
  3.38688716e-02, -2.41030738e-01, -1.03570826e-01,
  -2.87916511e-01, -1.57831654e-01, -3.80972087e-01,
  6.80320337e-02,  7.76103325e-03, -2.12798198e-03,
  6.33590668e-02, -9.92115587e-02, -7.58485496e-02,
  -2.61139691e-01,  2.09142372e-01, -9.90124345e-02,
  9.33903642e-03,  4.01112027e-02, -9.71766538e-04,
  -8.53452533e-02, -5.74095920e-02, -9.29129422e-02,
  1.56749472e-01, -2.88513958e-01, -6.89019784e-02,
  -1.27268627e-01, -8.14093351e-02, -2.41435781e-01,
  2.29337253e-02, -3.02231818e-01, -4.38865155e-01,
  2.54781339e-02, -3.80360037e-01, -3.48593965e-02,
  -1.34712592e-01, -2.67993897e-01, -8.63134414e-02,
  -1.10942155e-01, -1.19430967e-01,  2.53207773e-01,
  -3.27741385e-01,  6.96226805e-02, -8.09423029e-02,
  -3.11290473e-01,  1.51000217e-01, -4.57243592e-01,
  -3.28150272e-01, -2.38340870e-01,  3.36692661e-01,
  -3.31284314e-01,  2.09829345e-01, -4.06932354e-01,
  -2.68316090e-01],
...
  • или мы используем библиотеку SHAP, чтобы лучше понять, что происходит

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

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

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

Еще одно интересное изображение, которое мы можем получить, — это для одного тестового примера график, показывающий, как каждая функция изменила прогноз модели по сравнению с базовым значением (21,21) для этого конкретного элемента. Красным цветом вы можете увидеть функции, которые увеличили выходное значение, а красным — те, которые его снизили — до окончательного прогнозируемого балла 7,03:

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

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

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

Б. Неопределенность

Примечание. Большое спасибо Эялю Казину, специалисту по данным в LabGenius (и моему наставнику на стажировке, когда я был там в 2019 году!), за то, что привлек мое внимание к этой теме и откопал действительно интересные ресурсы, такие как эта статья Алекс Кендалл и Ярин Гал: Какие неопределенности нам нужны в байесовском глубоком обучении для компьютерного зрения? (опубликовано на Arxiv в 2017 г.), которые будут служить ориентиром при обсуждении в этом разделе.

Неопределенность в ИИ: что это такое и почему это важно?

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

Как упоминалось в моей прошлой статье, предположим, что ваша сеть должна выбирать между двумя категориями изображения. Совсем другое дело, если он говорит вам, что это категория № 1 с уверенностью 99%, или если вероятность того, что это одна из категорий, составляет около 50–50%, а сеть просто выбрала одну наугад — потому что вы заставили ее принять решение. только для одной категории, верно?

В первом случае у вас будет очень низкая неопределенность (или, наоборот, очень высокая достоверность), а во втором случае у вас будет очень высокая неопределенность.

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

  • в мае 2016 года автономный автомобиль перепутал яркое небо с белым бортом трейлера, что привело к столкновению и гибели водителя; с тех пор отчет NHTSA стал весьма (не)известен
  • версия приложения Google Photos 2015 года идентифицировала двух афроамериканцев как горилл, что вызвало этические вопросы и много опасений по поводу лежащей в основе расовой дискриминации в алгоритме (вот статья Дж. Гайна об этом событии)

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

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

Как объясняется в Тезисе Ярина Галя (стр. 9–13), неопределенность модели может стать решающей для безопасности ИИ или эффективного исследования в обучении с подкреплением.

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

С другой стороны, обучение с подкреплением (RL) — это область машинного обучения, в которой агент тренируется для выполнения конкретной задачи, исследуя окружающую среду и постепенно изучая лучший ход. Чтобы агент мог развиваться, он должен иметь возможность рисковать и допускать некоторую неопределенность в своих решениях, отсюда и необходимость этой меры в RL.

Эпистемические и алеаторические неопределенности

Теперь вопрос: откуда может взяться эта неопределенность в вашей модели? Что может сделать ИИ неуверенным в своих прогнозах?

В своей статье Кендалл и Гэл упоминают два типа неопределенностей, которые объединяются в прогностическую неопределенность модели:

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

Их статья посвящена анализу изображений с помощью классических наборов данных CIFAR10, CamVID и NYUv2. Вот некоторые из их результатов на более позднем этапе, который содержит более 1400 изображений с 40 различными классами объектов для идентификации:

Мы заметили несколько интересных вещей, которые помогают нам понять эти 2 типа неопределенности:

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

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

Для любопытных: некоторые технические детали вычисления неопределенности

Для тех, кто немного больше разбирается в математике, вот некоторые подробности о том, как Кендалл и Гэл предлагают на самом деле вычислять неопределенность. Идея, которую они развивают в статье (и это уже было основным вкладом в диссертацию Гала, см. стр. 47–54), состоит в том, чтобы выполнить заданное количество независимых стохастических вычислений (т. е. применить к случайному подмножеству весов в модели) проходит вперед по сети и усредняет результаты.

  • Таким образом, для регрессии мы выполняем аппроксимацию Монте-Карло для интегралов, которые появляются в наших функциях потерь (в частности, в логарифмической функции правдоподобия, которая теперь является обычным инструментом для регрессии в сетях), так что у нас есть оценка среднего и дисперсия.
  • Для классификации мы можем:
  1. оценить коэффициенты вариации, которые говорят нам, насколько «распределены» результаты по конкретному ярлыку.
  2. или пойти по пути теории информации и вычислить энтропию прогнозирования (равную 1, если все классы равновероятны — модель очень неопределенна — или 0, если был предсказан только 1 класс — модель очень надежна) или взаимную информацию (что максимально для входных данных, где модель в среднем очень неопределенна)

Примечание: чтобы лучше понять эти различные меры неопределенности, я предлагаю вам взглянуть на Тезис Ярина Галя, с. 54.

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

И в целом этот подход удобен, потому что его легко реализовать. Однако Гал предупреждает нас о некоторых проблемах с этим в своей диссертации: во-первых, несмотря на распараллеливание, это может привести к увеличению времени обучения модели; во-вторых, неопределенность не «откалибрована», что означает, например, что она может быть больше для входных данных, которые имеют большие значения по сравнению с остальной частью набора данных; в-третьих, несмотря на то, что они хорошо работают на практике, эти формулы могут недооценивать прогностическую неопределенность.

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

Вывод

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

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

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

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

⬅️ #3: Аналитические модели | #5: Интервью Кали ➡️

Если вам понравилась эта статья, вы можете найти другие записи в блоге о технологиях, искусственном интеллекте и программировании на мой сайт :)