Объяснение прогнозов модели классификации текста с помощью Amazon SageMaker Clarify

Объяснение прогнозов модели классификации текста с помощью Amazon SageMaker Clarify

Объяснимость модели относится к процессу связывания прогноза модели машинного обучения (ML) с входными значениями признаков экземпляра в понятных человеку терминах. Это поле часто называют объяснимый искусственный интеллект (ХАИ). Amazon SageMaker Уточнить это особенность Создатель мудреца Амазонки это позволяет специалистам по данным и инженерам машинного обучения объяснять прогнозы своих моделей машинного обучения. Он использует независимые от модели методы, такие как SHAPELY аддитивные объяснения (SHAP) для атрибуции функций. Помимо поддержки объяснений табличных данных, Clarify также поддерживает объяснимость как для компьютерного зрения (CV), так и для обработки естественного языка (NLP) с использованием одного и того же алгоритма SHAP.

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

Мы также предоставляем общий шаблон проектирования, который вы можете использовать при использовании Clarify с любым из Алгоритмы SageMaker.

Обзор решения

Алгоритмы SageMaker имеют фиксированные форматы входных и выходных данных. Например, контейнер алгоритма BlazingText принимает входные данные в формате JSON. Но клиентам часто требуются определенные форматы, совместимые с их конвейерами данных. Мы представляем несколько вариантов, которым вы можете следовать, чтобы использовать Clarify.

Вариант А

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

Задание Clarify вызывает конвейер вывода, в котором один контейнер обрабатывает формат данных, а другой контейнер содержит модель.

Вы можете использовать конвейеры логического вывода для развертывания комбинации собственных пользовательских моделей и встроенных алгоритмов SageMaker, упакованных в разные контейнеры. Для получения дополнительной информации см. Размещение моделей вместе с логикой предварительной обработки в виде конвейера последовательного вывода за одной конечной точкой. Поскольку Clarify поддерживает только строки CSV и JSON в качестве входных данных, вам необходимо выполнить следующие шаги:

  1. Создайте модель и контейнер для преобразования данных из CSV (или строк JSON) в JSON.
  2. После этапа обучения модели с помощью алгоритма BlazingText непосредственно развернуть модель. Это развернет модель с использованием контейнера BlazingText, который принимает JSON в качестве входных данных. При использовании другого алгоритма SageMaker создает модель, используя контейнер этого алгоритма.
  3. Используйте предыдущие две модели для создания Модель трубопровода. Это объединяет две модели в линейную последовательность и создает единую модель. Для примера см. Конвейер логических выводов с помощью Scikit-learn и Linear Learner.

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

Вариант B

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

Объясните прогнозы модели классификации текста с помощью Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Эти шаги заключаются в следующем:

  1. Используйте алгоритм BlazingText через SageMaker Estimator для обучения модели классификации текста.
  2. После обучения модели создайте пользовательский контейнер Docker, который можно использовать для создания модели SageMaker, и при необходимости разверните модель в качестве конечной точки модели SageMaker.
  3. Настройте и создайте задание Clarify, чтобы использовать контейнер размещения для создания отчета об объяснимости.
  4. Пользовательский контейнер принимает запрос на вывод в формате CSV и позволяет Clarify генерировать пояснения.

Следует отметить, что это решение демонстрирует идею получения офлайн-объяснений с помощью Clarify для модели BlazingText. Для получения дополнительной информации об интерактивных объяснениях см. Объяснимость онлайн с помощью SageMaker Clarify.

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

Обучить модель BlazingText

Сначала мы обучаем модель классификации текста, используя алгоритм BlazingText. В этом примере мы используем Набор данных DBpedia Ontology. DBpedia — это краудсорсинговая инициатива по извлечению структурированного контента с использованием информации из различных проектов Викимедиа, таких как Википедия. В частности, мы используем набор данных онтологии DBpedia, созданный Чжан и др.. Он создается путем выбора 14 непересекающихся классов из DBpedia 2014. Поля содержат реферат статьи из Википедии и соответствующий класс. Целью модели классификации текста является предсказание класса статьи по ее реферату.

Подробный пошаговый процесс обучения модели доступен в следующем ноутбук. После того, как вы обучили модель, обратите внимание на Простой сервис хранения Amazon (Amazon S3) Путь URI, по которому хранятся артефакты модели. Пошаговое руководство см. Классификация текста с помощью SageMaker BlazingText.

Разверните обученную модель BlazingText с помощью собственного контейнера в SageMaker.

В Clarify есть два варианта предоставления информации о модели:

  • Создайте модель SageMaker, не развертывая ее на конечной точке – Когда Clarify предоставляет модель SageMaker, она создает эфемерную конечную точку с использованием этой модели.
  • Создайте модель SageMaker и разверните ее на конечной точке. – Когда конечная точка становится доступной для Clarify, она использует конечную точку для получения объяснений. Это позволяет избежать создания эфемерной конечной точки и может сократить время выполнения задания Clarify.

В этом посте мы используем первый вариант с Clarify. Мы используем SDK для SageMaker Python для этой цели. Другие варианты и дополнительные сведения см. Создайте свою конечную точку и разверните свою модель.

Принесите свой собственный контейнер (BYOC)

Сначала мы создаем собственный образ Docker, который используется для создания Модель SageMaker. Вы можете использовать файлы и код в исходный каталог нашего репозитория GitHub.

Dockerfile описывает образ, который мы хотим создать. Мы начинаем со стандартной установки Ubuntu, а затем устанавливаем Scikit-learn. Мы также клонируем быстрый текст и установить пакет. Он используется для загрузки модели BlazingText для прогнозирования. Наконец, мы добавляем код, реализующий наш алгоритм, в виде предыдущих файлов и настраиваем среду в контейнере. Целиком Dockerfile предоставляется в нашем репозитории, и вы можете использовать его как есть. Ссылаться на Используйте свой собственный код логического вывода с услугами хостинга для получения более подробной информации о том, как SageMaker взаимодействует с вашим контейнером Docker и его требованиях.

Кроме того, предиктор.py содержит код для загрузки модели и создания прогнозов. Он принимает входные данные в формате CSV, что делает его совместимым с Clarify.

Получив Dockerfile, создайте контейнер Docker и загрузите его в Реестр Amazon Elastic Container (Амазон ЭКР). Вы можете найти пошаговый процесс в виде скрипт в нашем репозитории GitHub, который можно использовать для создания и загрузки образа Docker в Amazon ECR.

Создайте модель BlazingText

Следующим шагом является создание объекта модели из SageMaker Python SDK. Класс модели который можно развернуть на конечной точке HTTPS. Мы настраиваем Clarify для использования этой модели для создания пояснений. Код и другие требования для этого шага см. Разверните обученную модель SageMaker BlazingText с помощью собственного контейнера в Amazon SageMaker..

Настроить Уточнить

Clarify NLP совместим с моделями регрессии и классификации. Это поможет вам понять, какие части входного текста влияют на прогнозы вашей модели. Clarify поддерживает 62 языка и может обрабатывать текст на нескольких языках. Мы используем SageMaker Python SDK для определения трех конфигураций, используемых Clarify для создания отчета об объяснимости.

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

import sagemaker
sagemaker_session = sagemaker.Session()
from sagemaker import clarify
clarify_processor = clarify.SageMakerClarifyProcessor(
role=role,
instance_count=1,
instance_type="ml.m5.xlarge",
sagemaker_session=sagemaker_session,
)
file_path = "<location of the input dataset>"

ДатаКонфиг

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

explainability_output_path = "s3://{}/{}/clarify-text-explainability".format(
sagemaker_session.default_bucket(), "explainability"
) explainability_data_config = clarify.DataConfig(
s3_data_input_path=file_path,
s3_output_path=explainability_output_path,
headers=["Review Text"],
dataset_type="text/csv",
)

Конфигурация модели

С помощью ModelConfig вы должны указать информацию о вашей обученной модели. Здесь мы указываем имя модели BlazingText SageMaker, которую мы создали на предыдущем шаге, а также устанавливаем другие параметры, такие как Эластичное вычислительное облако Amazon (Amazon EC2) тип экземпляра и формат содержимого:

model_config = clarify.ModelConfig(
model_name=model_name,
instance_type="ml.m5.xlarge",
instance_count=1,
accept_type="application/jsonlines",
content_type="text/csv",
endpoint_name_prefix=None,
)

ШАПКонфиг

Это используется для информирования Clarify о том, как получить атрибуты функций. TextConfig используется для указания степени детализации текста и языка. В нашем наборе данных, поскольку мы хотим разбить входной текст на слова, а языком является английский, мы устанавливаем эти значения на токен и английский соответственно. В зависимости от характера вашего набора данных вы можете установить степень детализации для предложения или абзаца. В качестве базового уровня используется специальный токен. Это означает, что Clarify будет отбрасывать подмножества входного текста и заменять их значениями из базовой линии при получении прогнозов для вычисления значений SHAP. Вот как он определяет влияние токенов на прогнозы модели и, в свою очередь, определяет их важность. Количество выборок, которые должны использоваться в алгоритме Kernel SHAP, определяется значением num_samples аргумент. Более высокие значения приводят к более надежной атрибуции функций, но это также может увеличить время выполнения задания. Поэтому вам нужно сделать компромисс между ними. См. следующий код:

shap_config = clarify.SHAPConfig(
baseline=[["<UNK>"]],
num_samples=1000,
agg_method="mean_abs",
save_local_shap_values=True,
text_config=clarify.TextConfig(granularity="token", language="english"),
)

Для получения дополнительной информации см. Атрибуты функций, использующие значения Шепли и Технический документ Amazon AI о справедливости и объяснимости.

ModelPredictedLabelConfig

Чтобы Clarify извлекал прогнозируемую метку, прогнозируемые баллы или вероятности, необходимо установить этот объект конфигурации. См. следующий код:

from sagemaker.clarify import ModelPredictedLabelConfig
modellabel_config = ModelPredictedLabelConfig(probability="prob", label="label")

Подробнее см. документации в SDK.

Выполнить задание «Уточнение»

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

clarify_processor.run_explainability(
data_config=explainability_data_config,
model_config=model_config,
explainability_config=shap_config,
model_scores=modellabel_config,
)

Время выполнения этого шага зависит от размера набора данных и количества выборок, созданных SHAP.

Визуализируйте результаты

Наконец, мы показываем визуализацию результатов из отчета об атрибуции локальных объектов, созданного заданием обработки Clarify. Вывод в формате JSON Lines с некоторой обработкой; вы можете построить оценки для токенов во входном тексте, как в следующем примере. Более высокие столбцы оказывают большее влияние на целевую метку. Кроме того, положительные значения связаны с более высокими прогнозами в целевой переменной, а отрицательные значения — с более низкими прогнозами. В этом примере модель делает прогноз для входного текста «Везебах — река в Гессене, Германия». Прогнозируемый класс — Natural Place, и оценки показывают, что модель сочла слово «река» наиболее информативным для этого прогноза. Это интуитивно понятно для человека, и, изучив больше образцов, вы можете определить, изучает ли модель правильные функции и ведет ли она себя так, как ожидалось.

Объясните прогнозы модели классификации текста с помощью Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Заключение

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

Мы также обсудили более общий шаблон проектирования, который можно использовать при использовании Clarify со встроенными алгоритмами SageMaker. Для получения дополнительной информации см. Что такое справедливость и объяснимость модели для прогнозов машинного обучения. Мы также рекомендуем вам ознакомиться с Технический документ Amazon AI о справедливости и объяснимости, в котором представлен обзор темы и обсуждаются рекомендации и ограничения.


Об авторах

Объясните прогнозы модели классификации текста с помощью Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Пинак Паниграхи работает с клиентами над созданием решений на основе машинного обучения для решения стратегических бизнес-задач на AWS. Когда он не занимается машинным обучением, его можно найти в походе, читающем книгу или занимающемся спортом.

Объясните прогнозы модели классификации текста с помощью Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай. Дхавал Патель является главным архитектором машинного обучения в AWS. Он работал с организациями, начиная от крупных предприятий и заканчивая стартапами среднего размера, над проблемами, связанными с распределенными вычислениями и искусственным интеллектом. Он специализируется на глубоком обучении, включая домены NLP и Computer Vision. Он помогает клиентам добиться высокопроизводительного логического вывода модели в SageMaker.

Отметка времени:

Больше от Машинное обучение AWS

Запускайте несколько генеративных моделей ИИ на графическом процессоре, используя многомодельные конечные точки Amazon SageMaker с TorchServe, и сэкономьте до 75 % на затратах на логические выводы | Веб-сервисы Amazon

Исходный узел: 1887176
Отметка времени: сентябрь 6, 2023