Explicați predicțiile modelului de clasificare a textului folosind Amazon SageMaker Clarify

Explicați predicțiile modelului de clasificare a textului folosind Amazon SageMaker Clarify

Explicabilitatea modelului se referă la procesul de corelare a predicției unui model de învățare automată (ML) cu valorile caracteristicilor de intrare ale unei instanțe în termeni înțeleși de om. Acest câmp este adesea denumit inteligența artificială explicabilă (XAI). Amazon SageMaker Clarify este o caracteristică a Amazon SageMaker care le permite oamenilor de știință de date și inginerilor ML să explice predicțiile modelelor lor ML. Folosește metode agnostice de model precum explicații de aditiv Shapely (SHAP) pentru atribuirea caracteristicilor. În afară de susținerea explicațiilor pentru datele tabulare, Clarify acceptă și explicabilitatea atât pentru viziunea computerizată (CV), cât și pentru procesarea limbajului natural (NLP), folosind același algoritm SHAP.

În această postare, ilustrăm utilizarea Clarify pentru explicarea modelelor NLP. Mai exact, arătăm cum puteți explica predicțiile unui model de clasificare a textului care a fost antrenat utilizând SageMaker BlazingText algoritm. Acest lucru vă ajută să înțelegeți ce părți sau cuvinte ale textului sunt cele mai importante pentru predicțiile făcute de model. Printre altele, aceste observații pot fi apoi utilizate pentru a îmbunătăți diferite procese, cum ar fi achiziția de date, care reduce părtinirea setului de date și validarea modelului pentru a se asigura că modelele funcționează conform intenției și pentru a câștiga încrederea tuturor părților interesate atunci când modelul este implementat. Aceasta poate fi o cerință cheie în multe domenii de aplicație, cum ar fi analiza sentimentelor, recenziile juridice, diagnosticul medical și multe altele.

De asemenea, oferim un model de design general pe care îl puteți utiliza în timp ce utilizați Clarify cu oricare dintre Algoritmi SageMaker.

Prezentare generală a soluțiilor

Algoritmii SageMaker au formate fixe de date de intrare și ieșire. De exemplu, containerul de algoritm BlazingText acceptă intrări în format JSON. Dar clienții au adesea nevoie de formate specifice care sunt compatibile cu conductele lor de date. Vă prezentăm câteva opțiuni pe care le puteți urma pentru a utiliza Clarify.

Opțiunea A

În această opțiune, folosim caracteristica pipeline de inferență a găzduirii SageMaker. O conductă de inferență este un model SageMaker care constituie o secvență de containere care procesează cererile de inferență. Următoarea diagramă ilustrează un exemplu.

Lucrarea Clarify invocă conducta de inferență, un container care gestionează formatul datelor și celălalt container care deține modelul.

Puteți utiliza conducte de inferență pentru a implementa o combinație de propriile modele personalizate și algoritmi încorporați SageMaker ambalate în containere diferite. Pentru mai multe informații, consultați Găzduire modele împreună cu logica de preprocesare ca conductă de inferență serială în spatele unui punct final. Deoarece Clarify acceptă numai linii CSV și JSON ca intrare, trebuie să parcurgeți următorii pași:

  1. Creați un model și un container pentru a converti datele din CSV (sau linii JSON) în JSON.
  2. După pasul de antrenament al modelului cu algoritmul BlazingText, direct implementați modelul. Acest lucru va implementa modelul folosind containerul BlazingText, care acceptă JSON ca intrare. Când se utilizează un alt algoritm, SageMaker creează modelul folosind containerul acelui algoritm.
  3. Utilizați cele două modele precedente pentru a crea un PipelineModel. Aceasta conectează cele două modele într-o secvență liniară și creează un singur model. Pentru un exemplu, consultați Conducta de inferență cu Scikit-learn și Linear Learner.

Cu această soluție, am creat cu succes un singur model a cărui intrare este compatibilă cu Clarify și poate fi folosit de acesta pentru a genera explicații.

Opțiunea B

Această opțiune demonstrează cum puteți integra utilizarea diferitelor formate de date între algoritmii Clarify și SageMaker, aducând propriul container pentru găzduirea modelului SageMaker. Următoarea diagramă ilustrează arhitectura și pașii implicați în soluție:

Explicați predicțiile modelului de clasificare a textului folosind Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Pașii sunt după cum urmează:

  1. Utilizați algoritmul BlazingText prin SageMaker Estimator pentru a antrena un model de clasificare a textului.
  2. După ce modelul este antrenat, creați un container Docker personalizat care poate fi utilizat pentru a crea un model SageMaker și, opțional, implementați modelul ca punct final al modelului SageMaker.
  3. Configurați și creați un job Clarify pentru a utiliza containerul de găzduire pentru a genera un raport explicativ.
  4. Containerul personalizat acceptă cererea de inferență ca CSV și permite Clarify să genereze explicații.

Trebuie remarcat faptul că această soluție demonstrează ideea de a obține explicații offline folosind Clarify pentru un model BlazingText. Pentru mai multe informații despre explicabilitatea online, consultați Explicații online cu SageMaker Clarify.

Restul acestei postări explică fiecare dintre pașii din a doua opțiune.

Antrenează un model BlazingText

Mai întâi antrenăm un model de clasificare a textului folosind algoritmul BlazingText. În acest exemplu, folosim Setul de date DBpedia Ontology. DBpedia este o inițiativă aglomerată pentru a extrage conținut structurat folosind informații din diferite proiecte Wikimedia, cum ar fi Wikipedia. Mai exact, folosim setul de date de ontologie DBpedia așa cum a fost creat de Zhang și colab. Este construit prin selectarea a 14 clase care nu se suprapun din DBpedia 2014. Câmpurile conțin un rezumat al unui articol Wikipedia și clasa corespunzătoare. Scopul unui model de clasificare a textului este de a prezice clasa unui articol având în vedere abstractul său.

Un proces detaliat pas cu pas pentru instruirea modelului este disponibil în cele ce urmează caiet. După ce ați antrenat modelul, luați notă de Serviciul Amazon de stocare simplă (Amazon S3) Calea URI unde sunt stocate artefactele modelului. Pentru un ghid pas cu pas, consultați Clasificarea textului folosind SageMaker BlazingText.

Implementați modelul BlazingText instruit folosind propriul container pe SageMaker

Cu Clarify, există două opțiuni pentru a furniza informațiile despre model:

  • Creați un model SageMaker fără a-l implementa la un punct final – Când un model SageMaker este furnizat lui Clarify, acesta creează un punct final efemer folosind modelul.
  • Creați un model SageMaker și implementați-l la un punct final – Când un punct final este pus la dispoziția Clarify, acesta îl folosește pentru a obține explicații. Acest lucru evită crearea unui punct final efemer și poate reduce timpul de execuție al unui job Clarify.

În această postare, folosim prima opțiune cu Clarify. Noi folosim SageMaker Python SDK în acest scop. Pentru alte opțiuni și mai multe detalii, consultați Creați punctul final și implementați modelul.

Aduceți-vă propriul container (BYOC)

Mai întâi construim o imagine Docker personalizată care este folosită pentru a crea Modelul SageMaker. Puteți utiliza fișierele și codul din directorul sursă din depozitul nostru GitHub.

Dockerfile descrie imaginea pe care dorim să o construim. Începem cu o instalare standard Ubuntu și apoi instalăm Scikit-learn. De asemenea, clonăm text rapid și instalați pachetul. Este folosit pentru a încărca modelul BlazingText pentru a face predicții. În cele din urmă, adăugăm codul care implementează algoritmul nostru sub forma fișierelor precedente și setăm mediul în container. Intregul Dockerfile este furnizat în depozitul nostru și îl puteți utiliza așa cum este. A se referi la Utilizați propriul cod de inferență cu serviciile de găzduire pentru mai multe detalii despre modul în care SageMaker interacționează cu containerul Docker și cerințele acestuia.

În plus, predictor.py conține codul pentru încărcarea modelului și efectuarea predicțiilor. Acceptă datele de intrare ca CSV, ceea ce îl face compatibil cu Clarify.

După ce aveți fișierul Docker, construiți containerul Docker și încărcați-l în Registrul Amazon de containere elastice (Amazon ECR). Puteți găsi procesul pas cu pas sub forma unui script shell în depozitul nostru GitHub, pe care îl puteți folosi pentru a crea și încărca imaginea Docker în Amazon ECR.

Creați modelul BlazingText

Următorul pas este să creați un obiect model din SDK-ul SageMaker Python Clasa de model care poate fi implementat la un punct final HTTPS. Configuram Clarify pentru a utiliza acest model pentru a genera explicatii. Pentru cod și alte cerințe pentru acest pas, consultați Implementați modelul SageMaker BlazingText instruit folosind propriul container în Amazon SageMaker.

Configurați Clarify

Clarify NLP este compatibil cu modelele de regresie și clasificare. Vă ajută să înțelegeți ce părți ale textului introdus influențează predicțiile modelului dvs. Clarify acceptă 62 de limbi și poate gestiona text cu mai multe limbi. Folosim SDK-ul SageMaker Python pentru a defini cele trei configurații care sunt utilizate de Clarify pentru crearea raportului de explicabilitate.

În primul rând, trebuie să creăm obiectul procesor și, de asemenea, să specificăm locația setului de date de intrare care va fi utilizat pentru predicții și atribuirea caracteristicilor:

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

Aici, ar trebui să configurați locația datelor de intrare, coloana de caracteristici și locul în care doriți ca jobul Clarify să stocheze rezultatul. Acest lucru se face prin transmiterea argumentelor relevante în timp ce se creează un obiect 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

Cu ModelConfig, ar trebui să specificați informații despre modelul dvs. antrenat. Aici, specificăm numele modelului BlazingText SageMaker pe care l-am creat într-un pas anterior și, de asemenea, setăm alți parametri precum Cloud Elastic de calcul Amazon Tipul instanței (Amazon EC2) și formatul conținutului:

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

Acesta este folosit pentru a informa Clarify despre cum să obțineți atribuțiile caracteristicilor. TextConfig este folosit pentru a specifica granularitatea textului și a limbii. În setul nostru de date, deoarece dorim să descompunăm textul introdus în cuvinte, iar limba este engleza, setăm aceste valori la token și, respectiv, la engleză. În funcție de natura setului de date, puteți seta granularitatea pentru propoziție sau paragraf. Linia de bază este setată la un simbol special. Aceasta înseamnă că Clarify va elimina subseturi de text introdus și le va înlocui cu valori din linia de bază în timp ce obține predicții pentru calcularea valorilor SHAP. Acesta este modul în care determină efectul jetoanelor asupra predicțiilor modelului și, la rândul său, identifică importanța acestora. Numărul de mostre care urmează să fie utilizate în algoritmul Kernel SHAP este determinat de valoarea num_samples argument. Valorile mai mari au ca rezultat atribuiri de caracteristici mai robuste, dar acest lucru poate crește și durata de rulare a jobului. Prin urmare, trebuie să faceți un compromis între cele două. Vezi următorul cod:

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

Pentru mai multe informații, consultați Atribuții de caracteristici care utilizează valori Shapley și Cartea albă privind corectitudinea și explicabilitatea Amazon AI.

ModelPredictedLabelConfig

Pentru ca Clarify să extragă o etichetă estimată sau scoruri sau probabilități prezise, ​​acest obiect de configurare trebuie setat. Vezi următorul cod:

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

Pentru mai multe detalii, consultați documentaţie în SDK.

Rulați o lucrare Clarify

După ce creați diferitele configurații, sunteți acum gata să declanșați lucrarea de procesare Clarify. Lucrarea de procesare validează intrarea și parametrii, creează punctul final efemer și calculează atribuțiile de caracteristici locale și globale folosind algoritmul SHAP. Când acest lucru este complet, șterge punctul final efemer și generează fișierele de ieșire. Vezi următorul cod:

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

Durata de rulare a acestui pas depinde de dimensiunea setului de date și de numărul de mostre care sunt generate de SHAP.

Vizualizați rezultatele

În cele din urmă, arătăm o vizualizare a rezultatelor din raportul local de atribuire a caracteristicilor care a fost generat de jobul de procesare Clarify. Ieșirea este într-un format JSON Lines și cu o anumită procesare; puteți reprezenta punctajele pentru jetoane în textul de intrare, ca în exemplul următor. Barele mai înalte au un impact mai mare asupra etichetei țintă. În plus, valorile pozitive sunt asociate cu predicții mai mari în variabila țintă și valorile negative cu predicții mai mici. În acest exemplu, modelul face o predicție pentru textul de intrare „Wesebach este un râu din Hesse Germania”. Clasa prezisă este Natural Place și scorurile indică faptul că modelul a considerat că cuvântul „râu” este cel mai informativ pentru a face această predicție. Acest lucru este intuitiv pentru un om și, examinând mai multe mostre, puteți determina dacă modelul învață caracteristicile potrivite și se comportă conform așteptărilor.

Explicați predicțiile modelului de clasificare a textului folosind Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Concluzie

În această postare, am explicat cum puteți folosi Clarify pentru a explica predicțiile dintr-un model de clasificare a textului care a fost antrenat folosind SageMaker BlazingText. Începeți să explicați predicțiile din modelele dvs. de clasificare a textului utilizând exemplul de caiet Explicabilitatea textului pentru SageMaker BlazingText.

De asemenea, am discutat despre un model de design mai generic pe care îl puteți utiliza atunci când utilizați Clarify cu algoritmii încorporați SageMaker. Pentru mai multe informații, consultați Ce este corectitudinea și explicabilitatea modelului pentru predicțiile de învățare automată. De asemenea, vă încurajăm să citiți Cartea albă privind corectitudinea și explicabilitatea Amazon AI, care oferă o imagine de ansamblu asupra subiectului și discută cele mai bune practici și limitări.


Despre Autori

Explicați predicțiile modelului de clasificare a textului folosind Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Căutare verticală. Ai. Pinak Panigrahi lucrează cu clienții pentru a construi soluții bazate pe învățarea automată pentru a rezolva probleme strategice de afaceri pe AWS. Când nu este ocupat cu învățarea automată, el poate fi găsit făcând o excursie, citind o carte sau ajungând din urmă cu sportul.

Explicați predicțiile modelului de clasificare a textului folosind Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Căutare verticală. Ai. Dhawal Patel este arhitect principal de învățare automată la AWS. El a lucrat cu organizații, de la întreprinderi mari până la startup-uri mijlocii, pe probleme legate de calculul distribuit și inteligența artificială. El se concentrează pe învățarea profundă, inclusiv pe domeniile NLP și Computer Vision. El îi ajută pe clienți să obțină inferențe de model de înaltă performanță pe SageMaker.

Timestamp-ul:

Mai mult de la Învățare automată AWS