Введение

В 2020 году были предсказаны и продолжаются тенденции в области ИИ/МО, такие как AutoML, MLOps, этика ИИ, которые призваны демократизировать ИИ/МО в отраслях. AutoML может автоматизировать развертывание и оптимизацию модели ML в качестве оркестровки в жизненном цикле AI/ML с помощью MLOps. Это отражает один из аспектов ИТ, который абстрагирует определенную область в бессознательный слой системы, и людям больше не нужно заботиться об этом нижнем слое, как только он встроен в систему. Например, с появлением облачных сервисов некоторым людям в какой-то степени не нужно заботиться о сети, сервере и хранилище. Точно так же, с распространением AI/ML в целом, само слово AI» со временем исчезнет с модной сцены. Искусственный интеллект, Интернет вещей, Блокчейнпо-видимому, являются современными модными словечками, но в следующем десятилетии эти слова не будут встречаться так часто, как мы используем и слышим в повседневной жизни.

Другой важной тенденцией, очевидно, является Объяснимый ИИ (XAI), который относится к методам и методам применения «ИИ». Результаты решения могут быть понимается и интерпретируется человеческим восприятием. В то время как последние прогрессивные методы, как говорят, создают модели черного ящика, такие как глубокое обучение (глубокая нейронная сеть), относительно классические методы, такие как дерево решений, линейная регрессия и некоторые методы статистики, называются модели "белого ящика" с понятными причинами влияния на результат данных функций в этой модели. Глубокое обучение (глубокая нейронная сеть), бустинг и случайный лес, сильно нелинейные регрессионные модели не были настолько прозрачными для людей, что означает, что люди не могут легко понять, почему один результат получен из данной модели интерпретируемым образом. [1]

«Объяснимый ИИ» (XAI) был тенденцией и может быть необходим.

Краткий список тенденций ИИ на 2020 год. [2]



Десять прогнозов для науки о данных и ИИ на 2020 год. [3]



Почему в последнее время он был сфокусирован и считался критически важным для AI/ML? Может быть два аспекта: один подпадает под этическую причину, когда некоторые правила, применяемые моделью, кажется, приводят к несправедливым и нежелательным результатам для наших этических и моральных соображений, а другой подпадает под деловую причину, согласно которой ИИ/МО должен раскрывать причины своего регресса. или классификация (или что-то в качестве вывода) привела к этому конкретному ответу. Они становятся все более важными, когда внедрение ИИ широко распространяется в бизнесе и повсеместно внедряется в наше общество. Рассмотрим эти аспекты подробно.

  • Этическая причина — неосознанная предвзятость, вызванная ИИ/МО

Обычно мы не осознаем, как модели черного ящика дают нам результаты, и как они имеют алгоритмическую предвзятость и несправедливость. Скандал с Cambridge Analytica и Amazon отказывается от своего секретного инструмента вербовки ИИ, который демонстрировал предвзятое отношение к женщинам — вот известные инциденты, которые мы должны здесь вспомнить. Хуже, если мы не замечали той предвзятости и несправедливости, которые принесли пагубные различия и неравенство среди определенной группы людей. В последнем случае с Amazon было обнаружено, что система оценивала высокие баллы кандидатов-мужчин в процессе найма не таким гендерно-нейтральным способом из-за отражения доминирования высоких мужчин в технологической отрасли в то время. С этой точки зрения любая система может выглядеть скептически, если у нее есть такие предубеждения, потому что в наши дни системы могут разработать другие способы оценки людей или вещей, просто собирая данные автоматически в жизненном цикле AI/ML. fairlearn – это проект оценки честности вашей системы и смягчения наблюдаемой несправедливости при разработке AI/ML. [4]

  • Коммерческая причина: неизвестные причины, вызванные ИИ/МО.

Давайте подумаем о случае прогнозирования выхода на пенсию (или случае оттока). У нас есть куча данных о нашем сотруднике, и нам нужно предсказать, кто покинет компанию, чтобы ваша компания не уволила ваших талантливых людей. Давайте представим, что мы сгенерировали модель из данных, и модель показала, что один из вас, инженеров, может вскоре покинуть компанию, но подождите, почему? Хорошо, может быть, он уйдет, но нам нужно знать не то, что он уйдет, а почему он уйдет из компании. Модель может легко предсказать, кто, скорее всего, покинет компанию по заданным данным, однако модель не говорит вам, какие меры мы можем предпринять, чтобы предотвратить его уход из компании с первого взгляда. Чтобы обойти возможные последствия, мы хотели бы спросить у модели "Что, если" ему повысили бы зарплату в течение 2 лет или "Что, если бы"его сверхурочная работа составила менее 30 часов в месяц и т. д. и т. д.

Считалось, что использование моделей AI/ML, включая черный ящик, созданных в таких областях, как глубокое обучение (глубокая нейронная сеть), бустинг и случайный лес, снижает зависимость от субъективных мнений людей, но здесь другое. явным препятствием, которое мы должны преодолеть, когда внедряем такие виды ИИ. Эти объяснимые и интерпретируемые причины были невидимы в выходных данных моделей черного ящика. В недавних исследованиях и исследованиях теперь можно получить, какие условия изменили бы предсказание модели с помощью контрфактических объяснений, таких как Что, если гипотетических примеров, которые мы хотели создать. вопрос по тому же входу. Мы рассмотрим одну из реализаций DiCE (Diverse Counterfactual Explanations), чтобы найти контрфактические объяснениядля моделей ML.



DiCE (разнообразные контрфактические объяснения)

Microsoft Research Ramaravind Kommiya Mothilal, Amit Sharma, Chenhao Tan опубликовали свое недавнее исследование Объяснение классификаторов машинного обучения с помощью различных контрфактических примеров и реализацию DiCE на github в январе 2020 года. Что DiCE в первую очередь? DiCE является одним из контрфактических объяснений, реализованных в их исследовании. Эта реализация основана на их недавних исследованиях, которые генерируют разнообразные контрфактические объяснения для любой модели машинного обучения. [5]



DiCE реализует контрфактуальные (CF) объяснения, которые предоставляют такую ​​информацию, показывая версии одного и того же случая с искаженными признаками… Другими словами, он предоставляет объяснения что, если для вывода модели и может быть полезным дополнением к другим методам объяснения, как для конечных пользователей, так и для разработчиков моделей.

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

  • вес близости и разнообразия

proximity_weight (по умолчанию: 0,5) и diversity_weight (по умолчанию: 1,0) являются изменяемыми значениями, когда мы создаем гипотетические примеры (мы рассмотрим использование примеров позже). Немного неясно, насколько далеко от значения по умолчанию (0,5 и 1,0 соответственно) должно быть настроено значение близости и разнообразия. Одна идея состоит в том, чтобы просто поместить переменную итерации для этих аргументов и использовать цикл для генерации различных наборов различных контрфактических объяснений того, как они меняются.

# change proximity_weight from default value of 0.5 to 1.5
dice_exp = exp.generate_counterfactuals(query_instance, total_CFs=4, desired_class="opposite", proximity_weight=1.5, diversity_weight=1.0)
  • feature_weight

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

# assigning new weights
feature_weights = {'age': 10, 'hours_per_week': 5}
# Now generating explanations using the new feature weights
dice_exp = exp.generate_counterfactuals(query_instance,
                total_CFs=4, desired_class="opposite",
                feature_weights=feature_weights)
  • features_to_vary список

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

# assign varying features as a list
dice_exp = exp.generate_counterfactuals(query_instance,
                total_CFs=4, desired_class="opposite",
                features_to_vary=['age','workclass','education','occupation','hours_per_week'])

В прошлой статье я создал контейнер Anaconda3 с некоторыми дополнительными пакетами. Давайте снова обернем этот контейнер DiCE и дополнительными необходимыми пакетами для этой цели. Anaconda3 имеет много преимуществ для специалистов по данным, позволяющих разрабатывать, тестировать и обучать модель машинного обучения без выполнения утомительной работы по установке. Это универсальный пакет для людей, поскольку он поддерживается и может использоваться. Вам не нужно заблудиться в лабиринте зависимостей библиотек, если установленные библиотеки удовлетворяют ваши потребности. [6]

Непосредственно с платформы и без привлечения DevOps специалисты по обработке и анализу данных могут быстро разрабатывать и внедрять модели искусственного интеллекта и машинного обучения в производство. Anaconda предоставляет инструменты, необходимые для простого.

  • Быстрая загрузка более 7500 пакетов обработки данных Python/R
  • Управляйте библиотеками, зависимостями и средами с помощью Conda
  • Разрабатывайте и обучайте модели машинного обучения и глубокого обучения с помощью scikit-learn, TensorFlow и Theano.
  • Анализируйте данные с масштабируемостью и производительностью с помощью Dask, NumPy, pandas и Numba.
  • Визуализируйте результаты с помощью Matplotlib, Bokeh, Datashader и Holoviews.

Контейнер Docker — это слабо изолированная среда на хост-компьютере, запускаемая в каталоге на уровне ядра хоста. Docker позволяет нам создавать инфраструктуры так же, как мы управляем приложениями. Этот контекст привнес CI/CD, реестр DockerHub (например, репозиторий кода) и управление версиями в мире инфраструктуры. Благодаря технологии контейнеров стало возможным управлять и поддерживать нашу инфраструктуру так же, как мы это делаем для наших приложений, и это удивительно. Образы Docker могут быть переданы разработчикам для повторного использования, и им больше не нужно вручную создавать среду с нуля.

  • Контейнер Docker легок и удобен, потому что ему не нужен дополнительный слой гипервизора и его можно воспроизвести как образ Docker.
  • Платформа Docker предоставляет инструмент для управления контейнерами, а контейнеры хороши для CI/CD (непрерывная интеграция и непрерывная доставка).
  • Образы Docker доступны для питья и могут быть извлечены из репозиториев (DockerHub или облачных/частных репозиториев) для воспроизведения одного и того же.
  • Образы Docker можно определить как текстовый файл с именем Dockerfile. Это означает, что этим файлом также можно управлять и поддерживать его как код.
  • Образы Docker можно настраивать, они состоят из слоев на основе других образов или могут быть созданы с нуля с помощью «Dockerfile».

Контейнеры являются одноразовыми в контексте оркестровки или процесса CI/CD. Например, контейнеры, которые используются для этапа автоматизированного тестирования и проверки в тестовой среде, могут быть созданы и отправлены в производственную среду в конвейере развертывания. Он должен быть действительным, поскольку тестирование и проверка проходят в среде этого тестового контейнера. Согласованные характеристики платформы и изолированной среды подходят для разработки приложений, чтобы оптимизировать жизненный цикл как инфраструктур, так и приложений с платформой Docker. В этой статье мы рассматриваем контейнер Docker как переносимую среду, которую можно воспроизвести в любой среде, такой как локальный ПК, удаленные серверы или клиентские среды. В качестве предварительного условия код (файл Docker) или образ должны быть заранее сохранены в репозитории или реестре.

Создать DockerFile

Dockerfile основан на официальном Dockerfile Anaconda3 с загрузочной установкой DiCE. Если вы не заинтересованы в создании этого Dockerfile, вы можете запустить только эти команды, чтобы создать образ локально и сгенерировать контейнер с примерами блокнотов. Обратите внимание, что порт по умолчанию для Jupyter Notebook на этом изображении установлен на 8888. [7]

$ git clone 
$ cd dice-test
$ docker build -t dice .
$ docker run -p 3000:8888 -v ${PWD}/notebooks:/opt/notebooks dice


Изображение вызывает сценарий оболочки docker-entrypoint.sh точки входа для запуска Jupyter Notebook во фрагменте кода, как показано ниже. Вы можете изменить указанный номер порта с помощью опции --port==.

Вы должны увидеть, что библиотека dice-ml успешно установлена ​​в консоли, выполнив команду docker build -t dice ..

Successfully built dice-ml
Installing collected packages: numpy, dice-ml
  Found existing installation: numpy 1.16.4
    Uninstalling numpy-1.16.4:
      Successfully uninstalled numpy-1.16.4
Successfully installed dice-ml-0.2 numpy-1.16.0
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... done

conda list в контейнере показывает версии библиотеки ниже на момент написания.

numpy                     1.16.0                   pypi_0    pypi
scikit-learn              0.21.2           py37hd81dba3_0
scikit-image              0.15.0           py37he6710b0_0
pandas                    0.24.2           py37he6710b0_0
h5py                      2.9.0            py37h7918eee_0
tensorboard               2.1.1                    pypi_0    pypi
tensorflow                2.1.0                    pypi_0    pypi
tensorflow-estimator      2.1.0                    pypi_0    pypi

Если вы хотите использовать эти фиксированные версии для необходимых библиотек, не создавайте образ самостоятельно, а извлеките готовый образ из DockerHub. [8]



Jupyter Notebook теперь доступен локально или на удаленном сервере с указанным портом. По крайней мере, для подтверждения должны быть доступны три примера блокнотов.

Как мистеру удалось выжить после гибели Титаника?

Катастрофа Титаника произошла в 1912 году. Корабль Титаник затонул после столкновения с айсбергом в Северной Атлантике через четыре дня первого рейса корабля из Саутгемптона в Нью-Йорк. . К сожалению, на борту не хватило спасательных шлюпок для всех, в результате чего погибли 1502 человека из предполагаемых 2224 пассажиров и членов экипажа. Теперь интересно применить DiCE для набора поездов Титаник и проверить, какие люди с большей вероятностью выживут с затонувшего корабля. Мы используем только train.csv набора данных, потому что в нем сохранился столбец. [9]

Вы можете зарегистрироваться в Kaggle, чтобы получать train.csv данные самостоятельно.



Как вы, возможно, уже знаете, коэффициент выживаемости для титула «Мистер» относительно низок по сравнению с другими титулами, такими как «Миссис» и «Мисс». Итак, мой вопрос заключается в том, какие условия могли бы спасти одного мистера с гипотетическим а что, если бы примеры, которые вы могли бы рассмотреть, особенно если бы вы были мужчинами (например, если бы вы были первым человеком в ряду, Браудом, мистером Оуэном Харрисом, которому было 22 года, мужчина в классе 3 с 1 братом и сестрой. См. необработанные данные csv в кадре данных формат ниже.

При типичной разработке функций мы можем справиться с отсутствующими значениями и добавить столбец "family_size" из информации о родных братьях и сестрах. После обучения модели с помощью Keras мы должны были передать нашу обученную модель объекту модели DiCE, как показано ниже. Теперь мы готовы выполнить DiCEing с объектом данных d и объектом модели m для создания экземпляра класса DiCE для создания контрфактических объяснений.

# provide the trained ML model to DiCE's model object
backend = 'TF'+tf.__version__[0]
m = dice_ml.Model(model=ann_model, backend=backend)

Обратите внимание, что вам нужно указать аргумент backend для типа библиотеки моделей, TensorFlow 1.x, TensorFlow 2.x или PyTorch соответственно. [10]

Переменная backend ниже указывает тип реализации DiCE, который мы хотим использовать. Мы используем TensorFlow 1.x в ноутбуках с backend=’TF1’. Вы можете установить серверную часть на «TF2» или «PYT», чтобы использовать DiCE с TensorFlow 2.x или с PyTorch соответственно. Мы хотим отметить, что время, необходимое для поиска неверных фактов с нетерпеливым стилем выполнения Tensorflow 2.x, значительно больше, чем с выполнением графа TensorFlow 1.x.

Инициировать класс DiCE и генерировать контрфактические образцы довольно просто. Из этого случайного результата первый и второй пример остались мужчинами того же возраста, что и сам человек из выборки «Брауд, мистер Оуэн Харрис». Третий случай был парадоксальным с вводом в заблуждение пола и титула. Это показывает, что если бы его титул был Мастером или у него было 8 братьев и сестер, то он мог бы выжить после затопления корабля. Давайте не будем думать об изменении названия или количества братьев и сестер/родителей для вымышленного набора, а поищем более похожие альтернативные профили о нем, используя сейчас аргумент features_to_vary. Потому что выборка людей-Учителей была относительно небольшой, а наличие 8 братьев и сестер выглядело настолько экстремально, чтобы рассматривать эти результаты как гипотезы.

Я настроил близость 1,5 со значения по умолчанию 0,5 и functions_to_vary только на 4 функции (pclass, age, fare, embarked). В результате контрфактические примеры не изменят пол, фамильную принадлежность и титул. Эта оптимизация в какой-то степени работает нормально. Третий пример показывает, что если бы он мог заплатить больше, чем 14,01 (что близко к среднему значению pclass 2) и местом посадки был Шербур, а не Саутгемптон, его можно было бы спасти. Остальные три случая объясняют, что младенец или ребенок был потенциально спасен явно при таких обстоятельствах.

Вот блокнот этой реализации гипотетического набора Titanic DiCE.

https://github.com/yuyasugano/dice-test

Ссылка