Cechowanie danych w zautomatyzowanym uczeniu maszynowym

DOTYCZY: Zestaw SDK języka Python azureml w wersji 1

Dowiedz się więcej o ustawieniach cechowania danych w usłudze Azure Machine Edukacja i sposobie dostosowywania tych funkcji na potrzeby eksperymentów zautomatyzowanego uczenia maszynowego.

Inżynieria cech i cechowanie

Dane szkoleniowe składają się z wierszy i kolumn. Każdy wiersz jest obserwacją lub rekordem, a kolumny każdego wiersza to funkcje opisujące każdy rekord. Zazwyczaj funkcje, które najlepiej scharakteryzują wzorce w danych, są wybierane do tworzenia modeli predykcyjnych.

Chociaż wiele nieprzetworzonych pól danych może służyć bezpośrednio do trenowania modelu, często konieczne jest utworzenie dodatkowych (zaprojektowanych) funkcji zapewniających informacje, które lepiej rozróżniają wzorce danych. Ten proces jest nazywany inżynierią cech, w której wykorzystanie wiedzy o domenie danych jest używane do tworzenia funkcji, które z kolei pomagają algorytmom uczenia maszynowego lepiej się uczyć.

W usłudze Azure Machine Edukacja stosowane są techniki skalowania danych i normalizacji w celu ułatwienia inżynierii cech. Łącznie te techniki i ta inżynieria cech są nazywane cechami w zautomatyzowanych eksperymentach uczenia maszynowego.

Wymagania wstępne

W tym artykule założono, że wiesz już, jak skonfigurować eksperyment zautomatyzowanego uczenia maszynowego.

Ważne

Polecenia języka Python w tym artykule wymagają najnowszej azureml-train-automl wersji pakietu.

Aby uzyskać informacje o konfiguracji, zobacz następujące artykuły:

Konfigurowanie cechowania

W każdym eksperymencie zautomatyzowanego uczenia maszynowego domyślnie stosowane są automatyczne techniki skalowania i normalizacji danych. Te techniki to typy cech, które pomagają niektórym algorytmom, które są wrażliwe na funkcje w różnych skalach. Można włączyć więcej cech, takich jak imputacja brakujących wartości, kodowanie i przekształcenia.

Uwaga

Kroki automatycznego uczenia maszynowego (takie jak normalizacja cech, obsługa brakujących danych lub konwertowanie tekstu na liczbowe) stają się częścią podstawowego modelu. Jeśli używasz modelu do przewidywania, te same kroki cechowania, które są stosowane podczas trenowania, są stosowane automatycznie do danych wejściowych.

W przypadku eksperymentów skonfigurowanych przy użyciu zestawu SDK języka Python można włączyć lub wyłączyć ustawienie cechowania, a następnie określić kroki cechowania, które mają być używane w eksperymencie. Jeśli używasz programu Azure Machine Edukacja Studio, zobacz kroki włączania cechowania.

W poniższej tabeli przedstawiono zaakceptowane ustawienia w featurization klasie AutoMLConfig:

Konfiguracja cechowania opis
"featurization": 'auto' Określa, że w ramach wstępnego przetwarzania zabezpieczenia danych i czynności cechowania mają być wykonywane automatycznie. Jest to ustawienie domyślne.
"featurization": 'off' Określa, że kroki cechowania nie mają być wykonywane automatycznie.
"featurization": 'FeaturizationConfig' Określa, że należy użyć dostosowanych kroków cechowania. Dowiedz się, jak dostosować cechowanie.

Automatyczne cechowanie

W poniższej tabeli podsumowano techniki, które są automatycznie stosowane do danych. Te techniki są stosowane w przypadku eksperymentów skonfigurowanych przy użyciu zestawu SDK lub interfejsu użytkownika programu Studio. Aby wyłączyć to zachowanie, ustaw "featurization": 'off' w AutoMLConfig obiekcie.

Uwaga

Jeśli planujesz wyeksportować modele utworzone przez rozwiązanie AutoML do modelu ONNX, w formacie ONNX obsługiwane są tylko opcje cechowania wskazane gwiazdką ("*"). Dowiedz się więcej o konwertowaniu modeli na ONNX.

Kroki cechowania opis
Usuwanie wysokiej kardynalności lub brak funkcji wariancji* Porzucanie tych funkcji z zestawów trenowania i walidacji. Dotyczy funkcji ze wszystkimi brakującymi wartościami, z tą samą wartością we wszystkich wierszach lub z wysoką kardynalnością (na przykład skrótami, identyfikatorami lub identyfikatorami GUID).
Uzupełnianie brakujących wartości* W przypadku funkcji liczbowych imputuj średnią wartości w kolumnie.

W przypadku cech podzielonych na kategorie imputuj z najczęściej spotykaną wartością.
Generowanie większej liczby funkcji* W przypadku funkcji DateTime: Year, Month, Day, Day of week, Day of year, Quarter, Week of the year, Hour, Minute, Second.

W przypadku zadań prognozowania są tworzone następujące dodatkowe funkcje daty/godziny: rok ISO, połowa — pół roku, miesiąc kalendarzowy jako ciąg, Tydzień, Dzień tygodnia jako ciąg, Dzień kwartału, Dzień roku, AM/PM (0, jeśli godzina jest przed południem (12:00), 1 w przeciwnym razie), AM/PM jako ciąg, godzina dnia (podstawa 12-godzinna)

W przypadku funkcji tekstowych: częstotliwość terminów na podstawie jednogramów, bigramów i trigramów. Dowiedz się więcej o tym, jak to zrobić za pomocą narzędzia BERT.
Przekształcanie i kodowanie* Przekształć funkcje liczbowe, które mają kilka unikatowych wartości w funkcjach kategorii.

Kodowanie typu "gorąca" jest używane w przypadku cech kategorii o niskiej kardynalności. Kodowanie skrótów typu gorąca jest używane w przypadku cech kategorii o wysokiej kardynalności.
Osadzanie wyrazów Cecha tekstowa konwertuje wektory tokenów tekstowych na wektory zdań przy użyciu wstępnie wytrenowanego modelu. Każdy wektor osadzania wyrazu w dokumencie jest agregowany z resztą w celu utworzenia wektora funkcji dokumentu.
Odległość klastra Trenuje model klastrowania k-średnich na wszystkich kolumnach liczbowych. Tworzy k nowych funkcji (jedna nowa funkcja liczbowa na klaster), która zawiera odległość każdej próbki do centroid każdego klastra.

W każdym eksperymencie zautomatyzowanego uczenia maszynowego dane są automatycznie skalowane lub znormalizowane, aby ułatwić działanie algorytmów. Podczas trenowania modelu do każdego modelu zastosowano jedną z następujących technik skalowania lub normalizacji.

Skalowanie i przetwarzanie opis
StandardScaleWrapper Standaryzacja funkcji przez usunięcie średniej i skalowania do wariancji jednostkowej
MinMaxScalar Przekształca funkcje przez skalowanie każdej funkcji według wartości minimalnej i maksymalnej tej kolumny
MaxAbsScaler Skalowanie każdej funkcji według maksymalnej wartości bezwzględnej
RobustScalar Skaluje funkcje według ich zakresu kwantylu
PCA Redukcja wymiarów liniowych przy użyciu dekompozycji wartości pojedynczej danych w celu projekcji jej do przestrzeni wymiarowej niższej
ObcięteSVDWrapper Ten transformator wykonuje redukcję wymiarowości liniowej za pomocą obciętej dekompozycji wartości pojedynczej (SVD). W przeciwieństwie do pcA, ten narzędzie do szacowania nie skupia danych przed obliczenie dekompozycji pojedynczej wartości, co oznacza, że może działać z macierzami scipy.rozrzedzanymi wydajnie
RozrzednyNormalizer Każda próbka (czyli każdy wiersz macierzy danych) z co najmniej jednym składnikiem niezerowym jest przeskalowana niezależnie od innych próbek, tak aby jego norma (l1 lub l2) równa się jednej

Zabezpieczenia danych

Zabezpieczenia danych ułatwiają identyfikowanie potencjalnych problemów z danymi (na przykład brak wartości lub brak równowagi klas). Ułatwiają one również podejmowanie działań naprawczych w celu uzyskania lepszych wyników.

Stosowane są zabezpieczenia danych:

  • W przypadku eksperymentów zestawu SDK: gdy parametry "featurization": 'auto' lub validation=auto są określone w AutoMLConfig obiekcie.
  • W przypadku eksperymentów studyjnych: po włączeniu automatycznej cechowania.

Możesz przejrzeć zabezpieczenia danych dla eksperymentu:

  • show_output=True Ustawiając podczas przesyłania eksperymentu przy użyciu zestawu SDK.

  • W studio na karcie Zabezpieczenia danych zautomatyzowanego przebiegu uczenia maszynowego.

Stany zabezpieczenia danych

Zabezpieczenia danych wyświetlają jeden z trzech stanów:

Stan opis
Wynik pozytywny Nie wykryto żadnych problemów z danymi i nie jest wymagana żadna akcja.
Zrobić Zmiany zostały zastosowane do danych. Zachęcamy do przejrzenia akcji naprawczych podjętych przez rozwiązanie AutoML, aby upewnić się, że zmiany są zgodne z oczekiwanymi wynikami.
Pogotowiu Wykryto problem z danymi, ale nie można go rozwiązać. Zachęcamy do poprawienia i rozwiązania problemu.

Obsługiwane zabezpieczenia danych

W poniższej tabeli opisano zabezpieczenia danych, które są obecnie obsługiwane, oraz skojarzone stany, które mogą być widoczne podczas przesyłania eksperymentu:

Poręcze Stan Warunek wyzwalacza
Brak imputacji wartości funkcji Przekazywane


Gotowe
W danych treningowych nie wykryto brakujących wartości funkcji. Dowiedz się więcej na temat imputacji brakującej wartości.

W danych treningowych wykryto brakujące wartości funkcji i zostały implikowane.
Wykrywanie funkcji o wysokiej kardynalności Przekazywane


Gotowe
Dane wejściowe zostały przeanalizowane i nie wykryto żadnych funkcji o wysokiej kardynalności.

Funkcje o wysokiej kardynalności zostały wykryte w danych wejściowych i zostały obsłużone.
Obsługa podziału walidacji Gotowe Konfiguracja walidacji została ustawiona na 'auto' wartość , a dane szkoleniowe zawierały mniej niż 20 000 wierszy.
Każda iteracja wytrenowanego modelu została zweryfikowana przy użyciu krzyżowej weryfikacji. Dowiedz się więcej o danych walidacji.

Konfiguracja walidacji została ustawiona na 'auto'wartość , a dane szkoleniowe zawierały ponad 20 000 wierszy.
Dane wejściowe zostały podzielone na zestaw danych szkoleniowych i zestaw danych weryfikacji na potrzeby weryfikacji modelu.
Wykrywanie równoważenia klas Przekazywane



Pogotowiu


Gotowe
Dane wejściowe zostały przeanalizowane, a wszystkie klasy są zrównoważone w danych treningowych. Zestaw danych jest uznawany za zrównoważony, jeśli każda klasa ma dobrą reprezentację w zestawie danych, mierzona według liczby i współczynnika próbek.

Wykryto niezrównoważone klasy w danych wejściowych. Aby rozwiązać problem z stronniczą stronniczą modelem, rozwiąż problem z równoważeniem. Dowiedz się więcej o niezrównoważonych danych.

Wykryto niezrównoważone klasy w danych wejściowych, a logika zamiatania ustaliła zastosowanie równoważenia.
Wykrywanie problemów z pamięcią Przekazywane



Gotowe

Wybrane wartości (horyzont, opóźnienie, okno stopniowe) zostały przeanalizowane i nie wykryto potencjalnych problemów z brakiem pamięci. Dowiedz się więcej o konfiguracjach prognozowania szeregów czasowych.


Wybrane wartości (horyzont, opóźnienie, okno stopniowe) zostały przeanalizowane i potencjalnie spowodują, że eksperyment zabraknie pamięci. Konfiguracje opóźnień lub okien krocznych zostały wyłączone.
Wykrywanie częstotliwości Przekazywane



Gotowe

Szereg czasowy został przeanalizowany, a wszystkie punkty danych są wyrównane do wykrytej częstotliwości.

Szereg czasowy został przeanalizowany, a wykryto punkty danych, które nie są zgodne z wykrytą częstotliwością. Te punkty danych zostały usunięte z zestawu danych.
Krzyżowa walidacja Gotowe Aby dokładnie ocenić modele wytrenowane przez rozwiązanie AutoML, wykorzystujemy zestaw danych, na podstawie którego model nie jest trenowany. W związku z tym, jeśli użytkownik nie udostępnia jawnego zestawu danych weryfikacji, część zestawu danych szkoleniowych jest używana do osiągnięcia tego celu. W przypadku mniejszych zestawów danych (mniej niż 20 000 próbek) jest używane krzyżowe sprawdzanie poprawności, w przeciwnym razie pojedynczy zestaw blokady jest podzielony z danych treningowych, aby służyć jako zestaw danych weryfikacji. W związku z tym w przypadku danych wejściowych wykorzystujemy krzyżową walidację z 10 fałdami, jeśli liczba próbek treningowych jest mniejsza niż 1000 i 3 razy w pozostałych przypadkach.
Podział danych trenowania i testowania Gotowe Aby dokładnie ocenić modele wytrenowane przez rozwiązanie AutoML, wykorzystujemy zestaw danych, na podstawie którego model nie jest trenowany. W związku z tym, jeśli użytkownik nie udostępnia jawnego zestawu danych weryfikacji, część zestawu danych szkoleniowych jest używana do osiągnięcia tego celu. W przypadku mniejszych zestawów danych (mniej niż 20 000 próbek) jest używane krzyżowe sprawdzanie poprawności, w przeciwnym razie pojedynczy zestaw blokady jest podzielony z danych treningowych, aby służyć jako zestaw danych weryfikacji. W związku z tym dane wejściowe zostały podzielone na zestaw danych szkoleniowych i zestaw danych weryfikacji blokady.
Wykrywanie identyfikatorów szeregów czasowych Przekazywane



Stała

Zestaw danych został przeanalizowany i nie wykryto zduplikowanego indeksu czasu.

W zestawie danych znaleziono wiele szeregów czasowych, a identyfikatory szeregów czasowych zostały automatycznie utworzone dla zestawu danych.
Agregacja szeregów czasowych Przekazywane



Stała

Częstotliwość zestawu danych jest zgodna z określoną częstotliwością użytkownika. Nie wykonano agregacji.

Dane zostały zagregowane w celu zachowania zgodności z częstotliwością podaną przez użytkownika.
Obsługa serii krótkiej Przekazywane



Stała

Zautomatyzowane uczenie maszynowe wykryło wystarczającą ilość punktów danych dla każdej serii danych wejściowych, aby kontynuować trenowanie.

Zautomatyzowane uczenie maszynowe wykryło, że niektóre serie nie zawierają wystarczającej liczby punktów danych do wytrenowania modelu. Aby kontynuować szkolenie, te krótkie serie zostały porzucone lub wyściełane.

Dostosowywanie cechowania

Możesz dostosować ustawienia cechowania, aby upewnić się, że dane i funkcje używane do trenowania modelu uczenia maszynowego powodują odpowiednie przewidywania.

Aby dostosować cechowanie, określ "featurization": FeaturizationConfig w AutoMLConfig obiekcie. Jeśli używasz narzędzia Azure Machine Edukacja Studio na potrzeby eksperymentu, zobacz artykuł z instrukcjami. Aby dostosować cechowanie typów zadań prognozowania, zapoznaj się z instrukcjami prognozowania.

Obsługiwane dostosowania obejmują:

Dostosowanie Definicja
Aktualizacja celu kolumny Zastąpij automatycznie wykryty typ funkcji dla określonej kolumny.
Aktualizacja parametrów transformatora Zaktualizuj parametry określonego transformatora. Obecnie obsługuje program Imputer (średnia, najczęściej spotykana i mediana) i HashOneHotEncoder.
Usuwanie kolumn Określa kolumny do upuszczania z cechowania.
Transformatory blokowe Określa transformatory blokowe, które mają być używane w procesie cechowania.

Uwaga

Funkcja upuszczania kolumn jest przestarzała w wersji 1.19 zestawu SDK. Porzucanie kolumn z zestawu danych w ramach czyszczenia danych przed użyciem ich w zautomatyzowanym eksperymencie uczenia maszynowego.

Utwórz obiekt przy użyciu wywołań interfejsu FeaturizationConfig API:

featurization_config = FeaturizationConfig()
featurization_config.blocked_transformers = ['LabelEncoder']
featurization_config.drop_columns = ['aspiration', 'stroke']
featurization_config.add_column_purpose('engine-size', 'Numeric')
featurization_config.add_column_purpose('body-style', 'CategoricalHash')
#default strategy mean, add transformer param for 3 columns
featurization_config.add_transformer_params('Imputer', ['engine-size'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['city-mpg'], {"strategy": "median"})
featurization_config.add_transformer_params('Imputer', ['bore'], {"strategy": "most_frequent"})
featurization_config.add_transformer_params('HashOneHotEncoder', [], {"number_of_bits": 3})

Przejrzystość cechowania

Każdy model zautomatyzowanego uczenia maszynowego automatycznie stosuje cechowanie. Cechowanie obejmuje zautomatyzowaną inżynierię cech (gdy "featurization": 'auto') oraz skalowanie i normalizację, co wpływa następnie na wybrany algorytm i jego wartości hiperparametryczne. Rozwiązanie AutoML obsługuje różne metody, aby mieć pewność, że masz wgląd w to, co zostało zastosowane do modelu.

Rozważmy ten przykład prognozowania:

  • Istnieją cztery funkcje wejściowe: A (numeryczne), B (numeryczne), C (numeryczne), D (DateTime).
  • Funkcja liczbowa C jest porzucona, ponieważ jest to kolumna ID ze wszystkimi unikatowymi wartościami.
  • Funkcje liczbowe A i B mają brakujące wartości, dlatego są przypisywane przez średnią.
  • Funkcja data/godzina D jest cechowana w 11 różnych funkcjach zaprojektowanych.

Aby uzyskać te informacje, użyj danych wyjściowych z przebiegu eksperymentu fitted_model zautomatyzowanego uczenia maszynowego.

automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()

Zautomatyzowana inżynieria cech

Funkcja get_engineered_feature_names() zwraca listę nazw funkcji zaprojektowanych.

Uwaga

Użyj elementu "timeseriestransformer" dla zadania task="forecasting", w przeciwnym razie użyj elementu "datatransformer" dla zadania "regresja" lub "klasyfikacja".

fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()

Ta lista zawiera wszystkie nazwy funkcji zaprojektowanych.

['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']

Element get_featurization_summary() pobiera podsumowanie cechowania wszystkich funkcji wejściowych.

fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()

Wyjście

[{'RawFeatureName': 'A',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'B',
  'TypeDetected': 'Numeric',
  'Dropped': 'No',
  'EngineeredFeatureCount': 2,
  'Tranformations': ['MeanImputer', 'ImputationMarker']},
 {'RawFeatureName': 'C',
  'TypeDetected': 'Numeric',
  'Dropped': 'Yes',
  'EngineeredFeatureCount': 0,
  'Tranformations': []},
 {'RawFeatureName': 'D',
  'TypeDetected': 'DateTime',
  'Dropped': 'No',
  'EngineeredFeatureCount': 11,
  'Tranformations': ['DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime','DateTime']}]
Wyjście Definicja
RawFeatureName Nazwa funkcji/kolumny wejściowej z podanego zestawu danych.
TypeDetected Wykryto typ danych funkcji wejściowej.
Spadła Wskazuje, czy funkcja wejściowa została porzucona, czy użyta.
EngineeringFeatureCount Liczba funkcji generowanych za pomocą zautomatyzowanych przekształceń inżynierii cech.
Przekształcenia Lista przekształceń zastosowanych do funkcji wejściowych w celu wygenerowania zaprojektowanych funkcji.

Skalowanie i normalizacja

Aby zrozumieć skalowanie/normalizację i wybrany algorytm z jego wartościami hiperparametrów, użyj polecenia fitted_model.steps.

Następujące przykładowe dane wyjściowe są uruchamiane fitted_model.steps dla wybranego przebiegu:

[('RobustScaler', 
  RobustScaler(copy=True, 
  quantile_range=[10, 90], 
  with_centering=True, 
  with_scaling=True)), 

  ('LogisticRegression', 
  LogisticRegression(C=0.18420699693267145, class_weight='balanced', 
  dual=False, 
  fit_intercept=True, 
  intercept_scaling=1, 
  max_iter=100, 
  multi_class='multinomial', 
  n_jobs=1, penalty='l2', 
  random_state=None, 
  solver='newton-cg', 
  tol=0.0001, 
  verbose=0, 
  warm_start=False))

Aby uzyskać więcej szczegółów, użyj tej funkcji pomocniczej:

from pprint import pprint

def print_model(model, prefix=""):
    for step in model.steps:
        print(prefix + step[0])
        if hasattr(step[1], 'estimators') and hasattr(step[1], 'weights'):
            pprint({'estimators': list(e[0] for e in step[1].estimators), 'weights': step[1].weights})
            print()
            for estimator in step[1].estimators:
                print_model(estimator[1], estimator[0]+ ' - ')
        elif hasattr(step[1], '_base_learners') and hasattr(step[1], '_meta_learner'):
            print("\nMeta Learner")
            pprint(step[1]._meta_learner)
            print()
            for estimator in step[1]._base_learners:
                print_model(estimator[1], estimator[0]+ ' - ')
        else:
            pprint(step[1].get_params())
            print()   

Ta funkcja pomocnika zwraca następujące dane wyjściowe dla określonego przebiegu przy użyciu LogisticRegression with RobustScalar jako określonego algorytmu.

RobustScaler
{'copy': True,
'quantile_range': [10, 90],
'with_centering': True,
'with_scaling': True}

LogisticRegression
{'C': 0.18420699693267145,
'class_weight': 'balanced',
'dual': False,
'fit_intercept': True,
'intercept_scaling': 1,
'max_iter': 100,
'multi_class': 'multinomial',
'n_jobs': 1,
'penalty': 'l2',
'random_state': None,
'solver': 'newton-cg',
'tol': 0.0001,
'verbose': 0,
'warm_start': False}

Przewidywanie prawdopodobieństwa klasy

Modele tworzone przy użyciu zautomatyzowanego uczenia maszynowego mają obiekty otoki, które dublują funkcje z klasy pochodzenia open source. Większość obiektów otoki modelu klasyfikacji zwracanych przez zautomatyzowane uczenie maszynowe implementuje predict_proba() funkcję, która akceptuje próbkę danych macierzy podobnej do tablicy lub rozrzedzonej macierzy funkcji (wartości X) i zwraca tablicę nwymiarową każdego próbki i odpowiednie prawdopodobieństwo klasy.

Zakładając, że pobrano najlepszy przebieg i dopasowany model przy użyciu tych samych wywołań z góry, można wywołać predict_proba() bezpośrednio z dopasowanego modelu, podając X_test przykład w odpowiednim formacie w zależności od typu modelu.

best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)

Jeśli model bazowy nie obsługuje predict_proba() funkcji lub format jest niepoprawny, zostanie zgłoszony wyjątek specyficzny dla klasy modelu. Zobacz dokumentację referencyjną RandomForestClassifier i XGBoost , aby zapoznać się z przykładami implementacji tej funkcji dla różnych typów modeli.

Integracja BERT w zautomatyzowanym uczeniu maszynowym

BERT jest używany w warstwie cechowania zautomatyzowanego uczenia maszynowego. W tej warstwie, jeśli kolumna zawiera wolny tekst lub innego typu dane, takie jak znaczniki czasu lub proste liczby, oznacza to, że dobór cech jest odpowiednio stosowany.

W przypadku funkcji BERT model jest dostrajany i trenowany przy użyciu etykiet dostarczonych przez użytkownika. W tym miejscu osadzenia dokumentów są wyprowadzone jako funkcje obok innych, takich jak funkcje oparte na znacznikach czasu, dzień tygodnia.

Dowiedz się, jak skonfigurować eksperymenty przetwarzania języka naturalnego (NLP), które również używają BERT z automatycznym uczeniem maszynowym.

Kroki wywoływania BERT

Aby wywołać BERT, ustaw enable_dnn: True w automl_settings i użyj obliczeń procesora GPU (vm_size = "STANDARD_NC6" lub wyższego procesora GPU). Jeśli jest używane środowisko obliczeniowe procesora CPU, to zamiast BERT rozwiązanie AutoML włącza cechę DNN biLSTM.

Zautomatyzowane uczenie maszynowe wykonuje następujące kroki dla BERT.

  1. Wstępne przetwarzanie i tokenizacja wszystkich kolumn tekstowych. Na przykład transformator "StringCast" można znaleźć w podsumowaniu cechowania końcowego modelu. Przykład tworzenia podsumowania cech modelu można znaleźć w tym notesie.

  2. Połącz wszystkie kolumny tekstowe w jedną kolumnę tekstową, dlatego StringConcatTransformer w ostatnim modelu.

    Nasza implementacja BERT ogranicza łączną długość tekstu próbki szkoleniowej do 128 tokenów. Oznacza to, że wszystkie kolumny tekstowe podczas łączenia powinny być w idealnym przypadku co najwyżej 128 tokenów długości. Jeśli istnieje wiele kolumn, każda kolumna powinna zostać oczyszczona, aby ten warunek był spełniony. W przeciwnym razie w przypadku kolumn połączonych o długości >128 tokenów warstwa tokenizatora BERT obcina te dane wejściowe do 128 tokenów.

  3. W ramach zamiatania funkcji rozwiązanie AutoML porównuje BERT z punktem odniesienia (torbą cech słów) na przykładzie danych. To porównanie określa, czy BERT daje ulepszenia dokładności. Jeśli BERT działa lepiej niż punkt odniesienia, rozwiązanie AutoML używa BERT do cechowania tekstu dla wszystkich danych. W takim przypadku zobaczysz PretrainedTextDNNTransformer element w ostatnim modelu.

BERT zazwyczaj działa dłużej niż inne featurizery. Aby uzyskać lepszą wydajność, zalecamy używanie funkcji "STANDARD_NC24r" lub "STANDARD_NC24rs_V3".

Rozwiązanie AutoML dystrybuuje trenowanie BERT między wieloma węzłami, jeśli są dostępne (maksymalnie osiem węzłów). Można to zrobić w AutoMLConfig obiekcie, ustawiając max_concurrent_iterations parametr na wyższy niż 1.

Obsługiwane języki dla BERT w rozwiązaniu AutoML

Rozwiązanie AutoML obsługuje obecnie około 100 języków i w zależności od języka zestawu danych rozwiązanie AutoML wybiera odpowiedni model BERT. W przypadku niemieckich danych używamy niemieckiego modelu BERT. W przypadku języka angielskiego używamy angielskiego modelu BERT. W przypadku wszystkich innych języków używamy wielojęzycznego modelu BERT.

W poniższym kodzie jest wyzwalany niemiecki model BERT, ponieważ język zestawu danych jest określony na deu, trzyliterowy kod języka niemieckiego zgodnie z klasyfikacją ISO:

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='deu')

automl_settings = {
    "experiment_timeout_minutes": 120,
    "primary_metric": 'accuracy',
# All other settings you want to use
    "featurization": featurization_config,
    
    "enable_dnn": True, # This enables BERT DNN featurizer
    "enable_voting_ensemble": False,
    "enable_stack_ensemble": False
}

Następne kroki