Wyjaśnij przewidywania modelu klasyfikacji tekstu za pomocą Amazon SageMaker Clarify

Wyjaśnij przewidywania modelu klasyfikacji tekstu za pomocą Amazon SageMaker Clarify

Wyjaśnialność modelu odnosi się do procesu powiązania przewidywania modelu uczenia maszynowego (ML) z wejściowymi wartościami cech instancji w sposób zrozumiały dla człowieka. Pole to jest często określane jako wytłumaczalna sztuczna inteligencja (XII). Amazon SageMaker Wyjaśnij jest cechą Amazon Sage Maker która umożliwia naukowcom danych i inżynierom ML wyjaśnienie przewidywań ich modeli ML. Wykorzystuje metody niezależne od modelu, takie jak WYJAŚNIENIA SHAPELY DODATKOWE (SHAP) do atrybucji funkcji. Oprócz obsługi wyjaśnień danych tabelarycznych, Clarify obsługuje również wyjaśnialność zarówno dla wizji komputerowej (CV), jak i przetwarzania języka naturalnego (NLP) przy użyciu tego samego algorytmu SHAP.

W tym poście ilustrujemy użycie Clarify do wyjaśnienia modeli NLP. W szczególności pokazujemy, jak można wyjaśnić przewidywania modelu klasyfikacji tekstu, który został przeszkolony przy użyciu SageMaker BlazingText algorytm. Pomaga to zrozumieć, które części lub słowa tekstu są najważniejsze dla prognoz wykonanych przez model. Między innymi te obserwacje można następnie wykorzystać do usprawnienia różnych procesów, takich jak pozyskiwanie danych, które zmniejsza błąd w zbiorze danych i walidację modelu, aby upewnić się, że modele działają zgodnie z przeznaczeniem i zdobywają zaufanie wszystkich interesariuszy po wdrożeniu modelu. Może to być kluczowym wymaganiem w wielu dziedzinach aplikacji, takich jak analiza nastrojów, przeglądy prawne, diagnostyka medyczna i inne.

Zapewniamy również ogólny wzorzec projektowy, z którego można korzystać podczas korzystania z Clarify z dowolnym z Algorytmy SageMakera.

Omówienie rozwiązania

Algorytmy SageMaker mają ustalone formaty danych wejściowych i wyjściowych. Na przykład kontener algorytmu BlazingText akceptuje dane wejściowe w formacie JSON. Jednak klienci często wymagają określonych formatów, które są zgodne z ich potokami danych. Przedstawiamy kilka opcji, które możesz zastosować, aby korzystać z Clarify.

Opcja A

W tej opcji używamy funkcji potoku wnioskowania hostingu SageMaker. Potok wnioskowania to model SageMaker, który stanowi sekwencję kontenerów przetwarzających żądania wnioskowania. Poniższy diagram ilustruje przykład.

Zadanie Clarify wywołuje potok wnioskowania, w którym jeden kontener obsługuje format danych, a drugi przechowuje model.

Możesz użyć potoków wnioskowania, aby wdrożyć kombinację własnych niestandardowych modeli i wbudowanych algorytmów SageMaker spakowanych w różnych kontenerach. Aby uzyskać więcej informacji, patrz Hosting modeli wraz z logiką przetwarzania wstępnego jako szeregowy potok wnioskowania za jednym punktem końcowym. Ponieważ Clarify obsługuje tylko linie CSV i JSON jako dane wejściowe, musisz wykonać następujące kroki:

  1. Utwórz model i kontener, aby przekonwertować dane z CSV (lub JSON Lines) na JSON.
  2. Bezpośrednio po etapie szkolenia modelu z algorytmem BlazingText wdrożyć model. Spowoduje to wdrożenie modelu przy użyciu kontenera BlazingText, który akceptuje format JSON jako dane wejściowe. W przypadku korzystania z innego algorytmu SageMaker tworzy model przy użyciu kontenera tego algorytmu.
  3. Użyj poprzednich dwóch modeli, aby utworzyć plik Model rurociągu. Spowoduje to połączenie dwóch modeli w sekwencję liniową i utworzenie jednego modelu. Aby zapoznać się z przykładem, patrz Potok wnioskowania z Scikit-learn i Linear Learner.

Dzięki temu rozwiązaniu z powodzeniem stworzyliśmy pojedynczy model, którego dane wejściowe są kompatybilne z Clarify i mogą być przez nie wykorzystywane do generowania wyjaśnień.

Opcja B

Ta opcja pokazuje, w jaki sposób można zintegrować użycie różnych formatów danych między algorytmami Clarify i SageMaker, udostępniając własny kontener do hostowania modelu SageMaker. Poniższy diagram ilustruje architekturę i kroki związane z rozwiązaniem:

Wyjaśnij przewidywania modelu klasyfikacji tekstu za pomocą Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Kroki są następujące:

  1. Użyj algorytmu BlazingText za pośrednictwem narzędzia SageMaker Estimator, aby wytrenować model klasyfikacji tekstu.
  2. Po przeszkoleniu modelu utwórz niestandardowy kontener Docker, którego można użyć do utworzenia modelu SageMaker i opcjonalnie wdróż model jako punkt końcowy modelu SageMaker.
  3. Skonfiguruj i utwórz zadanie Clarify, aby używać kontenera hostingowego do generowania raportu wyjaśnialności.
  4. Kontener niestandardowy akceptuje żądanie wnioskowania jako plik CSV i umożliwia Clarify generowanie wyjaśnień.

Należy zauważyć, że to rozwiązanie demonstruje ideę uzyskiwania wyjaśnień offline za pomocą Clarify dla modelu BlazingText. Aby uzyskać więcej informacji na temat wyjaśnialności online, zobacz Możliwość wyjaśnienia online dzięki SageMaker Clarify.

W pozostałej części tego postu wyjaśniono każdy z kroków w drugiej opcji.

Wytrenuj model BlazingText

Najpierw uczymy model klasyfikacji tekstu przy użyciu algorytmu BlazingText. W tym przykładzie używamy Zbiór danych DBpedia Ontology. DBpedia to inicjatywa crowdsourcingowa mająca na celu wyodrębnienie uporządkowanej treści przy użyciu informacji z różnych projektów Wikimedia, takich jak Wikipedia. W szczególności używamy zestawu danych ontologii DBpedia utworzonego przez Zhang i in. Jest konstruowany poprzez wybranie 14 nienakładających się klas z DBpedia 2014. Pola zawierają streszczenie artykułu z Wikipedii i odpowiadającej mu klasy. Celem modelu klasyfikacji tekstu jest przewidywanie klasy artykułu na podstawie jego streszczenia.

Szczegółowy proces uczenia modelu krok po kroku jest dostępny poniżej notatnik. Po wytrenowaniu modelu zanotuj Usługa Amazon Simple Storage (Amazon S3) Ścieżka URI, w której przechowywane są artefakty modelu. Aby uzyskać przewodnik krok po kroku, zobacz Klasyfikacja tekstu za pomocą SageMaker BlazingText.

Wdróż przeszkolony model BlazingText przy użyciu własnego kontenera w SageMaker

Dzięki Clarify dostępne są dwie opcje dostarczania informacji o modelu:

  • Utwórz model SageMaker bez wdrażania go w punkcie końcowym – Kiedy model SageMaker jest dostarczany do Clarify, tworzy on efemeryczny punkt końcowy przy użyciu tego modelu.
  • Utwórz model SageMaker i wdróż go na punkcie końcowym – Gdy punkt końcowy jest udostępniany firmie Clarify, używa go do uzyskiwania wyjaśnień. Pozwala to uniknąć tworzenia efemerycznego punktu końcowego i może skrócić czas wykonywania zadania Clarify.

W tym poście używamy pierwszej opcji z Clarify. Używamy SageMaker SDK dla Pythona w tym celu. Aby uzyskać informacje na temat innych opcji i szczegółowych informacji, patrz Stwórz swój punkt końcowy i wdróż swój model.

Przynieś własny kontener (BYOC)

Najpierw tworzymy niestandardowy obraz platformy Docker, który jest używany do tworzenia Model SageMakera. Możesz użyć plików i kodu w katalog źródłowy naszego repozytorium GitHub.

Dockerfile opisuje obraz, który chcemy zbudować. Zaczynamy od standardowej instalacji Ubuntu, a następnie instalujemy Scikit-learn. Klonujemy również szybki tekst i zainstaluj pakiet. Służy do ładowania modelu BlazingText do tworzenia prognoz. Na koniec dodajemy kod implementujący nasz algorytm w postaci powyższych plików i konfigurujemy środowisko w kontenerze. Cały Dockerfile znajduje się w naszym repozytorium i możesz go używać w takiej postaci, w jakiej jest. Odnosić się do Użyj własnego kodu wnioskowania z usługami hostingowymi aby uzyskać więcej informacji na temat interakcji SageMaker z kontenerem Docker i jego wymagań.

Ponadto, predyktor.py zawiera kod do ładowania modelu i tworzenia prognoz. Akceptuje dane wejściowe jako CSV, co czyni je kompatybilnymi z Clarify.

Po utworzeniu pliku Docker zbuduj kontener Docker i prześlij go do Rejestr elastycznego pojemnika Amazon (Amazon ECR). Proces krok po kroku można znaleźć w formie a skrypt powłoki w naszym repozytorium GitHub, którego możesz użyć do stworzenia i przesłania obrazu Dockera do Amazon ECR.

Utwórz model BlazingText

Następnym krokiem jest utworzenie obiektu modelu z SageMaker Python SDK Klasa wzorcowa które można wdrożyć w punkcie końcowym HTTPS. Konfigurujemy Clarify tak, aby używał tego modelu do generowania wyjaśnień. Aby zapoznać się z kodem i innymi wymaganiami dotyczącymi tego kroku, zobacz Wdróż wyszkolony model SageMaker BlazingText przy użyciu własnego kontenera w Amazon SageMaker.

Skonfiguruj Wyjaśnij

Clarify NLP jest kompatybilny z modelami regresji i klasyfikacji. Pomaga zrozumieć, które części tekstu wejściowego wpływają na przewidywania modelu. Clarify obsługuje 62 języki i może obsługiwać tekst w wielu językach. Używamy SageMaker Python SDK do zdefiniowania trzech konfiguracji używanych przez Clarify do tworzenia raportu wyjaśnialności.

Najpierw musimy utworzyć obiekt procesora, a także określić lokalizację wejściowego zestawu danych, który będzie używany do predykcji i atrybucji cech:

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

Konfiguracja danych

W tym miejscu należy skonfigurować lokalizację danych wejściowych, kolumnę funkcji oraz miejsce, w którym zadanie Clarify ma przechowywać dane wyjściowe. Odbywa się to poprzez przekazanie odpowiednich argumentów podczas tworzenia obiektu 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",
)

Konfiguracja modelu

Za pomocą ModelConfig należy określić informacje o przeszkolonym modelu. Tutaj określamy nazwę modelu BlazingText SageMaker, który stworzyliśmy w poprzednim kroku, a także ustawiamy inne parametry, takie jak Elastyczna chmura obliczeniowa Amazon (Amazon EC2) typ instancji i format treści:

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

Konfiguracja SHAP

Służy to informowaniu Clarify o tym, jak uzyskać atrybucje funkcji. TextConfig służy do określenia szczegółowości tekstu i języka. W naszym zbiorze danych, ponieważ chcemy rozbić tekst wejściowy na słowa, a językiem jest angielski, ustawiamy te wartości odpowiednio na token i angielski. W zależności od rodzaju zestawu danych możesz ustawić stopień szczegółowości dla zdania lub akapitu. Linia bazowa jest ustawiona na specjalny token. Oznacza to, że Clarify usunie podzbiory tekstu wejściowego i zastąpi je wartościami z linii bazowej, jednocześnie uzyskując prognozy do obliczania wartości SHAP. W ten sposób określa wpływ tokenów na prognozy modelu, a z kolei identyfikuje ich znaczenie. Liczba próbek, które mają być użyte w algorytmie Kernel SHAP, jest określona przez wartość num_samples argument. Wyższe wartości skutkują bardziej niezawodnymi atrybucjami funkcji, ale mogą również wydłużyć czas wykonywania zadania. Dlatego musisz dokonać kompromisu między nimi. Zobacz następujący kod:

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

Aby uzyskać więcej informacji, zobacz Atrybucje cech wykorzystujące wartości Shapley i Biuletyn informacyjny dotyczący uczciwości i wyjaśnialności AI w Amazon.

ModelPredictedLabelConfig

Aby narzędzie Clarify wyodrębniło przewidywaną etykietę lub przewidywane wyniki lub prawdopodobieństwa, należy ustawić ten obiekt konfiguracyjny. Zobacz następujący kod:

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

Aby uzyskać więcej informacji, zapoznaj się z dokumentacja w SDKu.

Uruchom zadanie Clarify

Po utworzeniu różnych konfiguracji możesz rozpocząć zadanie przetwarzania Clarify. Zadanie przetwarzania sprawdza poprawność danych wejściowych i parametrów, tworzy efemeryczny punkt końcowy i oblicza lokalne i globalne atrybucje funkcji przy użyciu algorytmu SHAP. Po zakończeniu usuwa efemeryczny punkt końcowy i generuje pliki wyjściowe. Zobacz następujący kod:

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

Czas wykonania tego kroku zależy od rozmiaru zestawu danych i liczby próbek generowanych przez SHAP.

Wizualizuj wyniki

Na koniec przedstawiamy wizualizację wyników z lokalnego raportu atrybucji obiektów, który został wygenerowany przez zadanie przetwarzania Clarify. Dane wyjściowe są w formacie JSON Lines z pewnym przetwarzaniem; możesz wykreślić wyniki dla tokenów w tekście wejściowym, jak w poniższym przykładzie. Wyższe słupki mają większy wpływ na etykietę docelową. Ponadto wartości dodatnie są związane z wyższymi przewidywaniami w zmiennej docelowej, a wartości ujemne z niższymi przewidywaniami. W tym przykładzie model dokonuje prognozy dla tekstu wejściowego „Wesebach to rzeka Hesji w Niemczech”. Przewidywana klasa to Miejsce naturalne, a wyniki wskazują, że model uznał słowo „rzeka” za najbardziej pouczające, aby dokonać tej prognozy. Jest to intuicyjne dla człowieka i badając więcej próbek, można określić, czy model uczy się właściwych funkcji i zachowuje się zgodnie z oczekiwaniami.

Wyjaśnij przewidywania modelu klasyfikacji tekstu za pomocą Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

Wnioski

W tym poście wyjaśniliśmy, w jaki sposób możesz użyć Clarify do wyjaśnienia przewidywań z modelu klasyfikacji tekstu, który został wyszkolony przy użyciu SageMaker BlazingText. Rozpocznij od wyjaśniania przewidywań z modeli klasyfikacji tekstu przy użyciu przykładowego notatnika Wyjaśnialność tekstu dla SageMaker BlazingText.

Omówiliśmy również bardziej ogólny wzorzec projektowy, którego można użyć podczas korzystania z Clarify z wbudowanymi algorytmami SageMaker. Aby uzyskać więcej informacji, patrz Czym jest uczciwość i wyjaśnialność modelu dla prognoz uczenia maszynowego. Zachęcamy również do lektury Biuletyn informacyjny dotyczący uczciwości i wyjaśnialności AI w Amazon, który zawiera omówienie tematu i omawia najlepsze praktyki i ograniczenia.


O autorach

Wyjaśnij przewidywania modelu klasyfikacji tekstu za pomocą Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Pinak Panigrahi współpracuje z klientami w celu tworzenia rozwiązań opartych na uczeniu maszynowym w celu rozwiązywania strategicznych problemów biznesowych w AWS. Kiedy nie zajmuje się uczeniem maszynowym, można go spotkać na spacerze, czytaniu książki lub nadrabianiu zaległości sportowych.

Wyjaśnij przewidywania modelu klasyfikacji tekstu za pomocą Amazon SageMaker Clarify PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI. Dawal Patel jest głównym architektem uczenia maszynowego w AWS. Pracował z organizacjami od dużych przedsiębiorstw po średniej wielkości start-upy w zakresie problemów związanych z przetwarzaniem rozproszonym i sztuczną inteligencją. Koncentruje się na uczeniu głębokim, w tym w domenach NLP i Computer Vision. Pomaga klientom uzyskać wnioskowanie o wysokiej wydajności modelu w SageMaker.

Znak czasu:

Więcej z Uczenie maszynowe AWS