Поясніть прогнози моделі класифікації тексту за допомогою Amazon SageMaker Clarify

Поясніть прогнози моделі класифікації тексту за допомогою Amazon SageMaker Clarify

Пояснюваність моделі стосується процесу зв’язку передбачення моделі машинного навчання (ML) із значеннями вхідних характеристик екземпляра в термінах, зрозумілих людині. Це поле часто називають зрозумілий штучний інтелект (XII). Роз'яснити Amazon SageMaker є особливістю Amazon SageMaker що дозволяє дослідникам обробки даних та інженерам ML пояснювати прогнози своїх моделей ML. Він використовує модельні агностичні методи, такі як SHapely Additive пояснення (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. Використовуйте дві попередні моделі, щоб створити a PipelineModel. Це об’єднує дві моделі в лінійну послідовність і створює єдину модель. Для прикладу див Конвеєр висновків із Scikit-learn і Linear Learner.

За допомогою цього рішення ми успішно створили єдину модель, вхідні дані якої сумісні з Clarify і можуть використовуватися нею для створення пояснень.

Варіант B

Цей параметр демонструє, як ви можете інтегрувати використання різних форматів даних між алгоритмами Clarify і SageMaker, залучивши власний контейнер для розміщення моделі SageMaker. На наведеній нижче схемі показано архітектуру та етапи вирішення.

Поясніть прогнози моделі класифікації тексту за допомогою Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Ці кроки є наступними:

  1. Використовуйте алгоритм BlazingText через оцінювач SageMaker для навчання моделі класифікації тексту.
  2. Після навчання моделі створіть спеціальний контейнер Docker, який можна використовувати для створення моделі SageMaker і за бажанням розгорніть модель як кінцеву точку моделі SageMaker.
  3. Налаштуйте та створіть завдання Clarify, щоб використовувати контейнер хостингу для створення звіту про пояснення.
  4. Спеціальний контейнер приймає запит на висновок як CSV і дозволяє Clarify генерувати пояснення.

Слід зазначити, що це рішення демонструє ідею отримання офлайн-пояснень за допомогою Clarify для моделі BlazingText. Для отримання додаткової інформації про можливість пояснення в Інтернеті зверніться до Онлайн-пояснення за допомогою SageMaker Clarify.

Решта цієї публікації пояснює кожен із кроків у другому варіанті.

Навчання моделі BlazingText

Спочатку ми навчаємо модель класифікації тексту за допомогою алгоритму BlazingText. У цьому прикладі ми використовуємо Набір даних онтології DBpedia. DBpedia — це краудсорсингова ініціатива для отримання структурованого вмісту з використанням інформації з різних проектів Wikimedia, таких як Wikipedia. Зокрема, ми використовуємо набір даних онтології DBpedia, створений Чжан та ін. Він створений шляхом вибору 14 класів, що не перетинаються, з DBpedia 2014. Поля містять анотацію статті Вікіпедії та відповідний клас. Метою моделі класифікації тексту є прогнозування класу статті за її анотацією.

Нижче наведено докладний покроковий процес навчання моделі ноутбук. Після того, як ви навчили модель, зверніть увагу на Служба простого зберігання Amazon (Amazon S3) Шлях URI, де зберігаються артефакти моделі. Щоб отримати покрокову інструкцію, див Класифікація тексту за допомогою SageMaker BlazingText.

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

За допомогою Clarify є два варіанти надання інформації про модель:

  • Створіть модель SageMaker, не розгортаючи її на кінцевій точці – Коли модель SageMaker надається Clarify, вона створює ефемерну кінцеву точку за допомогою моделі.
  • Створіть модель SageMaker і розгорніть її на кінцевій точці – Коли кінцева точка стає доступною для Clarify, вона використовує кінцеву точку для отримання пояснень. Це дозволяє уникнути створення ефемерної кінцевої точки та може скоротити час виконання завдання Clarify.

У цій публікації ми використовуємо перший варіант із Clarify. Ми використовуємо SageMaker Python SDK Для цієї мети. Щоб отримати додаткові відомості, див Створіть кінцеву точку та розгорніть свою модель.

Принесіть власний контейнер (BYOC)

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

Файл Docker описує образ, який ми хочемо створити. Ми починаємо зі стандартної установки Ubuntu, а потім встановлюємо Scikit-learn. Ми також клонуємо швидкий текст і встановіть пакет. Він використовується для завантаження моделі BlazingText для створення прогнозів. Нарешті, ми додаємо код, який реалізує наш алгоритм у формі попередніх файлів, і налаштовуємо середовище в контейнері. Все Докер-файл міститься в нашому репозиторії, і ви можете використовувати його як є. Відноситься до Використовуйте свій власний код виведення з послугами хостингу щоб дізнатися більше про те, як SageMaker взаємодіє з вашим контейнером Docker і його вимоги.

Крім того, prediktor.py містить код для завантаження моделі та створення прогнозів. Він приймає вхідні дані як CSV, що робить його сумісним з Clarify.

Отримавши файл Docker, створіть контейнер Docker і завантажте його Реєстр контейнерів Amazon Elastic (Amazon ECR). Ви можете знайти покроковий процес у формі a скрипт оболонки у нашому репозиторії GitHub, який можна використовувати для створення та завантаження образу Docker на Amazon ECR.

Створіть модель BlazingText

Наступним кроком є ​​створення об’єкта моделі з SDK SageMaker Python Клас моделі які можна розгорнути на кінцевій точці HTTPS. Ми налаштовуємо Clarify на використання цієї моделі для створення пояснень. Код та інші вимоги для цього кроку див Розгорніть навчену модель BlazingText SageMaker за допомогою власного контейнера в Amazon SageMaker.

Налаштувати Clarify

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>"

DataConfig

Тут вам слід налаштувати розташування вхідних даних, стовпець функцій і те, де ви хочете, щоб завдання 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

За допомогою ModelConfig ви повинні вказати інформацію про свою навчену модель. Тут ми вказуємо назву моделі BlazingText SageMaker, яку ми створили на попередньому кроці, а також встановлюємо інші параметри, наприклад Обчислювальна хмара Amazon Elastic Тип екземпляра (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,
)

SHAPConfig

Це використовується для інформування Clarify про те, як отримати атрибути функцій. TextConfig використовується для визначення деталізації тексту та мови. У нашому наборі даних, оскільки ми хочемо розбити вхідний текст на слова, а мовою є англійська, ми встановлюємо ці значення відповідно на token і English. Залежно від характеру вашого набору даних, ви можете встановити деталізацію для речення або абзацу. Базовою лінією встановлено спеціальний жетон. Це означає, що 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 Fairness and Explainability.

ModelPredictedLabelConfig

Щоб Clarify міг витягти прогнозовану мітку або прогнозовані оцінки чи ймовірності, потрібно встановити цей об’єкт конфігурації. Перегляньте наступний код:

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

Для отримання додаткової інформації див документація в SDK.

Виконайте завдання Clarify

Після створення різних конфігурацій ви готові запустити завдання обробки 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 із деякою обробкою; ви можете побудувати бали для токенів у вхідному тексті, як у наступному прикладі. Більш високі стовпчики мають сильніший вплив на цільову мітку. Крім того, позитивні значення пов’язані з вищими прогнозами в цільовій змінній, а негативні значення – з нижчими прогнозами. У цьому прикладі модель робить прогноз для вхідного тексту «Везебах — це річка Гессену в Німеччині». Прогнозований клас – це природне місце, і оцінки показують, що модель визнала слово «річка» найбільш інформативним для цього прогнозу. Це інтуїтивно зрозуміло для людини, і, досліджуючи більше зразків, ви можете визначити, чи модель вивчає правильні функції та поводиться, як очікувалося.

Поясніть прогнози моделі класифікації тексту за допомогою Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Висновок

У цій публікації ми пояснили, як ви можете використовувати Clarify для пояснення прогнозів з моделі класифікації тексту, яка була навчена за допомогою SageMaker BlazingText. Почніть із пояснення прогнозів із ваших моделей класифікації тексту за допомогою зразка блокнота Можливість пояснення тексту для SageMaker BlazingText.

Ми також обговорили більш загальний шаблон проектування, який можна використовувати під час використання Clarify із вбудованими алгоритмами SageMaker. Для отримання додаткової інформації див Що таке справедливість і можливість пояснення моделі для прогнозів машинного навчання. Ми також заохочуємо вас прочитати Офіційний документ Amazon AI Fairness and Explainability, який містить огляд теми та обговорює найкращі практики та обмеження.


Про авторів

Поясніть прогнози моделі класифікації тексту за допомогою Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Pinak Panigrahi працює з клієнтами над створенням рішень на основі машинного навчання для вирішення стратегічних бізнес-завдань на AWS. Коли він не займається машинним навчанням, його можна знайти під час походу, читання книги або занять спортом.

Поясніть прогнози моделі класифікації тексту за допомогою Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai. Дхавал Патель є головним архітектором машинного навчання в AWS. Він працював з організаціями, починаючи від великих підприємств і закінчуючи стартапами середнього розміру, над проблемами, пов’язаними з розподіленими обчисленнями та штучним інтелектом. Він зосереджується на глибокому навчанні, включаючи домени НЛП та комп’ютерного зору. Він допомагає клієнтам досягти високопродуктивної моделі висновку на SageMaker.

Часова мітка:

Більше від AWS Машинне навчання