Эта статья основана на разговоре, который я провел с Ханнесом Хапке на PyData Global в ноябре 2020 года.

Развертывание вашей модели машинного обучения в производственной системе - критический момент: ваша модель начинает принимать решения, которые влияют на реальных людей. Это идеальный момент, чтобы подумать о многих аспектах, которые составляют ответственное машинное обучение: проверка на наличие вредоносной систематической ошибки в прогнозах, возможность объяснить прогнозы модели, сохранить конфиденциальность пользователей и отслеживать происхождение модели для аудита. Хотя вам следует учитывать все эти аспекты на экспериментальной фазе проекта машинного обучения, развертывание модели в производственной среде может оказаться для них наиболее важным моментом. Именно в этот момент прогнозы вашей модели достигают реальных людей, а не только массивов с именами X_test и y_test, и могут стать очевидными вредные последствия.

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

Какие шаги в конвейере машинного обучения?

Более подробный обзор всех этапов конвейера машинного обучения см. В разделе Построение конвейеров машинного обучения (O’Reilly Media, 2020). Здесь мы будем проще и скажем, что конвейер содержит следующие шаги, как показано на изображении вверху:

  1. Добавить данные в конвейер
  2. Убедитесь, что данные соответствуют нашим ожиданиям
  3. Обучить модель
  4. Проанализируйте производительность модели
  5. Проверить модель
  6. Разверните модель в производство

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

Предвзятость данных

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

  • Усиливает ли моя модель какое-то пагубное человеческое предубеждение? Например, в случае с инструментом найма Amazon, который оказался предвзятым против женщин, модель увидела больше информации от кандидатов-мужчин, чем от кандидатов-женщин. Это усилило гендерное неравенство при найме на технические должности.
  • Является ли мой набор данных репрезентативным для моих целевых пользователей? Часто это скорее вопрос производительности модели, но мы хотим, чтобы все получили хорошее впечатление от модели, которую мы запускаем в производство.

TensorFlow Data Validation (TFDV) может помочь нам ответить на эти вопросы. TFDV - это инструмент визуализации, который подключается непосредственно к нашему конвейеру TFX, и мы можем использовать его для визуализации статистики наших функций и распределения наших входных данных в модели. В приведенном выше примере мы исследуем категориальную особенность штата США и видим, что у нас гораздо больше данных из Калифорнии, чем из других мест. Возможно, это приемлемо для нашего продукта, но это может привести к смещению нашей модели в сторону предпочтений жителей Калифорнии.

TFDV также использует схему, чтобы гарантировать, что данные, входящие в модель, соответствуют параметрам, которые мы определяем, что позволяет нам остановить смещенные данные, поступающие в модель. Если нам известно о чем-то, что может усилить опасную предвзятость в реальном мире, мы можем установить параметры для этих данных в TFDV. Затем, если наши входные данные находятся за пределами этих параметров, конвейер остановится на этом этапе, и модель не будет обучена. Например, мы могли бы указать в нашей схеме, что должно быть одинаковое количество обучающих примеров из всех 50 штатов США.

Конфиденциальность при обучении моделей

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

TensorFlow Privacy обеспечивает дифференцированную конфиденциальность в экосистеме TensorFlow. Он добавляет к модели два гиперпараметра: отсечение градиента (чтобы градиенты не пересекались с данными одного человека) и добавление некоторого случайного шума в алгоритм градиентного спуска. Он защищает модель от воздействия выбросов, которые могут быть связаны с отдельным лицом. Библиотека также содержит функции для простого измерения эпсилон, параметра дифференциальной конфиденциальности, который измеряет, как включение или исключение какой-либо конкретной точки в обучающих данных может изменить вероятность того, что мы узнаем какой-либо конкретный набор параметров. Более низкие значения epsilon обеспечивают большую конфиденциальность, но приводят к более шумным моделям, тогда как более высокие значения epsilon могут дать вам лучшие результаты с риском раскрытия личных данных ваших пользователей. Это дает нам компромисс между конфиденциальностью и точностью - чем мы уменьшаем эпсилон, точность может снижаться. По нашему опыту, это часто бывает нелинейным: вы получаете определенное значение эпсилон, а затем точность резко снижается. Мы обеспечиваем большую конфиденциальность пользователям только тогда, когда значение epsilon низкое.

Модель справедливости

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

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

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

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

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

Объяснимость модели

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

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

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

Человеческий обзор

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

Важность метаданных

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

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

Следующие шаги

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

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

Спасибо Роберту Риду, Крису Исмаилу, Ханнесу Хапке и остальной команде Concur Labs за их помощь в написании этого сообщения!