Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
VAN TOEPASSING OP:Azure Machine Learning SDK v1 voor Python
Belangrijk
Dit artikel biedt informatie over het gebruik van de Azure Machine Learning SDK v1. SDK v1 is vanaf 31 maart 2025 afgeschaft. Ondersteuning voor het zal eindigen op 30 juni 2026. U kunt SDK v1 tot die datum installeren en gebruiken.
We raden aan dat u overstapt naar SDK v2 vóór 30 juni 2026. Zie Wat is Azure Machine Learning CLI en Python SDK v2? en de SDK v2-verwijzing voor meer informatie over SDK v2.
In dit artikel wordt uitgelegd hoe u de instellingen voor gegevensmetrisatie in Azure Machine Learning kunt aanpassen voor uw geautomatiseerde Machine Learning-experimenten (AutoML).
Functie-engineering en -featurization
Trainingsgegevens bestaan uit rijen en kolommen. Elke rij is een observatie of record en de kolommen van elke rij zijn de functies die elke record beschrijven. Normaal gesproken worden de functies die de patronen in de gegevens het beste karakteriseren, geselecteerd om voorspellende modellen te maken.
Hoewel veel van de onbewerkte gegevensvelden rechtstreeks kunnen worden gebruikt om een model te trainen, is het vaak nodig om andere (ontworpen) functies te maken die informatie bieden om patronen in de gegevens beter te onderscheiden. Dit proces wordt functie-engineering genoemd, waarbij het gebruik van domeinkennis van de gegevens wordt gebruikt om functies te maken die op hun beurt machine learning-algoritmen helpen om beter te leren.
In Azure Machine Learning worden technieken voor het schalen en normaliseren van gegevens toegepast om functie-engineering eenvoudiger te maken. Deze technieken en functie-engineering worden gezamenlijk 'featurization' genoemd in AutoML-experimenten.
Vereiste voorwaarden
In dit artikel wordt ervan uitgegaan dat u al weet hoe u een AutoML-experiment configureert.
Belangrijk
Voor de Python-opdrachten in dit artikel is de meest recente azureml-train-automl
pakketversie vereist.
-
Installeer het meest recente
azureml-train-automl
pakket in uw lokale omgeving. - Zie de
azureml-train-automl
voor meer informatie over het nieuwste pakket.
Zie de volgende artikelen voor meer informatie over configuratie:
- Voor een code-first-ervaring: AutoML-training instellen met Python
- Voor een ervaring zonder code: AutoML-training zonder code instellen voor tabellaire gegevens met de gebruikersinterface van studio
Featurization configureren
In elk AutoML-experiment worden automatische schaal- en normalisatietechnieken standaard toegepast op uw gegevens. Deze technieken zijn vormen van kenmerken-extractie die bepaalde algoritmen helpen die gevoelig zijn voor kenmerken op verschillende schalen. U kunt meer featurization inschakelen, zoals imputatie van ontbrekende waarden, codering en transformaties.
Opmerking
Stappen voor AutoML-featurisatie (zoals functienormalisatie, verwerking van ontbrekende gegevens of het converteren van tekst naar numeriek) maken deel uit van het onderliggende model. Wanneer u het model gebruikt voor voorspellingen, worden dezelfde featurisatiestappen die tijdens de training worden toegepast, automatisch toegepast op uw invoergegevens.
Voor experimenten die u met de Python SDK configureert, kunt u de featurisatie-instelling in- of uitschakelen en de featurisatiestappen voor uw experiment verder specificeren. Als u Azure Machine Learning Studio gebruikt, raadpleegt u de stappen voor het inschakelen van featurization.
In de volgende tabel ziet u de geaccepteerde instellingen voor featurization
in de klasse AutoMLConfig:
Configuratie van featurization | Beschrijving |
---|---|
"featurization": 'auto' |
Hiermee geeft u op dat, als onderdeel van voorverwerking, gegevensbeveiligings - en featurisatiestappen automatisch moeten worden uitgevoerd. Dit is de standaardinstelling. |
"featurization": 'off' |
Hiermee geeft u op dat featurization-stappen niet automatisch moeten worden uitgevoerd. |
"featurization": 'FeaturizationConfig' |
Hiermee geeft u op dat aangepaste featurization-stappen moeten worden gebruikt. Zie Featurization aanpassen voor meer informatie. |
Automatische featurisatie
De volgende tabel bevat een overzicht van technieken die automatisch worden toegepast op uw gegevens. Deze technieken worden toegepast op experimenten die zijn geconfigureerd met behulp van de SDK of de gebruikersinterface van studio. Als u dit gedrag wilt uitschakelen, stelt u "featurization": 'off'
in uw AutoMLConfig
object in.
Stappen voor featurisatie | Beschrijving |
---|---|
Hoge kardinaliteit of geen afwijkingsfuncties verwijderen* | Verwijder deze functies uit trainings- en validatiesets. Is van toepassing op functies waarbij alle waarden ontbreken, met dezelfde waarde in alle rijen of met een hoge kardinaliteit (bijvoorbeeld hashes, id's of GUID's). |
Ontbrekende waarden invoeren* | Voor numerieke functies moet u het gemiddelde van de waarden in de kolom invoeren. Voor categorische functies moet u de meest voorkomende waarde opgeven. |
Meer functies genereren* | Voor Datum/tijd-functies : jaar, maand, dag, dag van de week, dag van het jaar, kwartaal, week van het jaar, uur, minuut, seconde. Voor prognosetaken worden deze extra datum/tijd-functies gemaakt: ISO-jaar, half - half jaar, kalendermaand als tekenreeks, week, dag van de week als tekenreeks, dag van kwartaal, dag van het jaar, AM/PM (0 voor am, 1 voor pm), AM/PM als tekenreeks, uur van de dag (basis van 12 uur). Voor tekstfuncties : termfrequentie op basis van unigrammen, bigrams en trigrammen. Zie BERT-integratie voor meer informatie. |
Transformeren en coderen* | Transformeer numerieke functies met weinig unieke waarden in categorische functies. One-hot codering wordt gebruikt voor categorische functies met een lage kardinaliteit. One-hot-hash-codering wordt gebruikt voor categorische functies met hoge kardinaliteit. |
Word-insluitingen | Een text featurizer converteert vectoren van teksttokens naar zinsvectoren met behulp van een vooraf getraind model. De insluitvector van elk woord in een document wordt samengevoegd met de rest om een documentfunctievector te produceren. |
Clusterafstand | Hiermee traint u een k-means-clusteringmodel op alle numerieke kolommen. Produceert k nieuwe functies (één nieuwe numerieke functie per cluster) die de afstand van elke steekproef tot het zwaartepunt van elk cluster bevatten. |
Opmerking
*Als u van plan bent om uw door AutoML gemaakte modellen te exporteren naar een ONNX-model, worden alleen de functies die met een sterretje worden aangegeven, ondersteund in de ONNX-indeling. Zie Voorspellingen maken met een AutoML ONNX-model voor meer informatie.
In elk AutoML-experiment worden uw gegevens automatisch geschaald of genormaliseerd om algoritmen goed te laten presteren. Tijdens het trainen van modellen wordt een van de volgende schaal- of normalisatietechnieken toegepast op elk model.
Schalen en verwerken | Beschrijving |
---|---|
StandardScaler | Standaardiseert functies door het gemiddelde te verwijderen en te schalen naar eenheidsvariantie. |
MinMaxScaler | Transformeert functies door elke functie te schalen op basis van het minimum en maximum van die kolom. |
MaxAbsScaler | Hiermee wordt elke functie geschaald op basis van de maximale absolute waarde. |
RobustScaler | Schaalt functies op basis van hun kwantiel bereik. |
PCA | Analyse van principal-onderdelen. Lineaire dimensionaliteitsreductie door het gebruik van Singuliere Waarde Decompositie van de gegevens om deze te projecteren naar een ruimte met een lagere dimensie. |
Truncated SVD | Deze omzetter voert lineaire vermindering van dimensies uit met behulp van afgeknotte enkelvoudige waardeontleding (SVD). In tegenstelling tot PCA centreert deze estimator de gegevens niet voordat hij de enkelvoudige-waarde-decompositie berekent, wat betekent dat hij efficiënt met scipy.sparse matrices kan werken. |
Normalizer | Elk voorbeeld (dat wil gezegd, elke rij van de gegevensmatrix) met ten minste één niet-nulonderdeel wordt onafhankelijk van andere monsters opnieuw geschaald, zodat de norm (l1 of l2) gelijk is aan één. |
Ingebouwde beveiligingsegels voor gegevens
Met gegevensbescherming kunt u potentiële problemen met uw gegevens identificeren, zoals ontbrekende waarden of onevenwichtige gegevens. Ze helpen u ook corrigerende acties uit te voeren voor verbeterde resultaten.
Gegevensbeveiligingen worden toegepast:
-
Voor SDK-experimenten: Wanneer de parameters
"featurization": 'auto'
ofvalidation=auto
zijn opgegeven in uwAutoMLConfig
object. - Voor studio-experimenten: wanneer automatische kenmerkenextractie is ingeschakeld.
U kunt de gegevensbescherming voor uw experiment bekijken:
- Door in te stellen
show_output=True
wanneer u een experiment verzendt met behulp van de SDK. - In de studio, op het tabblad Gegevensrichtlijnen van uw AutoML-run.
Statussen van gegevensbescherming
Gegevensbeveiligingen geven een van de volgende drie statussen weer:
Staat | Beschrijving |
---|---|
Doorgegeven | Er zijn geen gegevensproblemen gedetecteerd en er is geen actie voor u vereist. |
Klaar | Wijzigingen zijn toegepast op uw gegevens. We raden u aan om de corrigerende acties te bekijken die AutoML heeft uitgevoerd om ervoor te zorgen dat de wijzigingen overeenkomen met de verwachte resultaten. |
Gewaarschuwd | Er is een gegevensprobleem gedetecteerd, maar kan niet worden opgelost. We raden u aan het probleem te herzien en op te lossen. |
Ondersteunde gegevensbeveiligingen
In de volgende tabel worden de gegevensbeveiligingen beschreven die momenteel worden ondersteund en de bijbehorende statussen die u kunt zien wanneer u uw experiment indient:
Veiligheidsrail | Toestand | Voorwaarde voor activering |
---|---|---|
Ontbrekende functiewaarden imputatie | Doorgegeven Gereed |
Er zijn geen ontbrekende functiewaarden gedetecteerd in uw trainingsgegevens. Zie Instellingen voor featurization configureren voor meer informatie. Ontbrekende functiewaarden zijn gedetecteerd in uw trainingsgegevens en zijn toegerekend. |
Detectie van hogekardinaliteitskenmerken | Doorgegeven Gereed |
Uw invoer is geanalyseerd en er zijn geen kenmerken met hoge kardinaliteit gedetecteerd. Functies voor hoge kardinaliteit zijn gedetecteerd in uw invoer en zijn verwerkt. |
Afhandeling van validatieverdeling | Gereed | De validatieconfiguratie is ingesteld op 'auto' en de trainingsgegevens bevatten minder dan 20.000 rijen. Elke iteratie van het getrainde model is gevalideerd met behulp van kruisvalidatie. Meer informatie over validatiegegevens. De validatieconfiguratie is ingesteld op 'auto' en de trainingsgegevens bevatten meer dan 20.000 rijen. De invoergegevens zijn gesplitst in een trainingsgegevensset en een validatiegegevensset voor validatie van het model. |
Detectie van klassenverdeling | Doorgegeven Gewaarschuwd Gereed |
Uw invoer is geanalyseerd en alle klassen zijn gebalanceerd in uw trainingsgegevens. Een gegevensset wordt als evenwichtig beschouwd als elke klasse een goede weergave in de gegevensset heeft, zoals gemeten op aantal en verhouding van voorbeelden. Ongelijk verdeelde klassen zijn gedetecteerd in uw invoer. Los het balanceringsprobleem op om modelvooroordelen op te lossen. Meer informatie over onevenwichtige gegevens. Er zijn ongebalanceerde klassen gedetecteerd in uw invoer en het algoritme heeft besloten om balans toe te passen. |
Detectie van geheugenproblemen | Doorgegeven Gereed |
De geselecteerde waarden (horizon, vertraging, rolling window) zijn geanalyseerd en er zijn geen potentiële problemen met onvoldoende geheugen gedetecteerd. Meer informatie over configuraties voor tijdreeksprognoses. De geselecteerde waarden (horizon, vertraging, rolling window) zijn geanalyseerd en kunnen ertoe leiden dat uw experiment onvoldoende geheugen heeft. De configuraties voor vertraging of rollend venster zijn uitgeschakeld. |
Frequentiedetectie | Doorgegeven Gereed |
De tijdreeks is geanalyseerd en alle gegevenspunten worden afgestemd op de gedetecteerde frequentie. De tijdreeks is geanalyseerd en gegevenspunten die niet overeenkomen met de gedetecteerde frequentie, zijn gedetecteerd. Deze gegevenspunten zijn verwijderd uit de gegevensset. |
Kruisvalidatie | Gereed | Om het model dat is getraind door AutoML nauwkeurig te evalueren, gebruiken we een gegevensset waarop het model niet is getraind. Als de gebruiker dus geen expliciete validatiegegevensset opgeeft, wordt een deel van de trainingsgegevensset gebruikt om dit te bereiken. Voor kleinere datasets (minder dan 20.000 samples) wordt kruisvalidatie gebruikt; anders wordt één hold-out set gesplitst van de trainingsgegevens om als validatieset te dienen. Daarom gebruiken we voor uw invoergegevens kruisvalidatie met 10 vouwen, als het aantal trainingsvoorbeelden minder dan 1000 is en 3 vouwen in alle andere gevallen. |
Gegevens splitsen voor trainen en testen | Gereed | Om het model dat is getraind door AutoML nauwkeurig te evalueren, gebruiken we een gegevensset waarop het model niet is getraind. Als de gebruiker dus geen expliciete validatiegegevensset opgeeft, wordt een deel van de trainingsgegevensset gebruikt om dit te bereiken. Voor kleinere datasets (minder dan 20.000 samples) wordt kruisvalidatie gebruikt; anders wordt één hold-out set gesplitst van de trainingsgegevens om als validatieset te dienen. Uw invoergegevens worden daarom gesplitst in een trainingsgegevensset en een validatiegegevensset voor bewaring. |
Detectie van tijdreeks-id's | Doorgegeven Gerepareerd / Opgelost |
De gegevensset is geanalyseerd en er is geen dubbele tijdindex gedetecteerd. Er zijn meerdere tijdreeksen gevonden in de gegevensset en de tijdreeks-id's zijn automatisch gemaakt voor uw gegevensset. |
Tijdreeksaggregatie | Doorgegeven Gerepareerd / Opgelost |
De frequentie van de gegevensset wordt afgestemd op de door de gebruiker opgegeven frequentie. Er is geen aggregatie uitgevoerd. De gegevens zijn samengevoegd om te voldoen aan de door de gebruiker opgegeven frequentie. |
Verwerking van korte reeksen | Doorgegeven Gerepareerd / Opgelost |
AutoML heeft voldoende gegevenspunten gedetecteerd voor elke reeks in de invoergegevens om door te gaan met de training. AutoML heeft gedetecteerd dat sommige reeksen onvoldoende gegevenspunten bevatten om een model te trainen. Om door te gaan met trainen, zijn deze korte reeksen verwijderd of opgevuld. |
Featurization aanpassen
U kunt uw featurization-instellingen aanpassen om ervoor te zorgen dat de gegevens en functies die worden gebruikt om uw machine learning-model te trainen, resulteren in relevante voorspellingen.
Als u featurizations wilt aanpassen, specificeert u "featurization": FeaturizationConfig
in uw AutoMLConfig
object. Als u De Azure Machine Learning Studio voor uw experiment gebruikt, raadpleegt u de instellingen voor het configureren van featurization. Als u featurization wilt aanpassen voor taaktypen voor prognoses, raadpleegt u de functie Aanpassen.
Ondersteunde aanpassingen zijn onder andere:
Aanpassing | Definitie |
---|---|
Update van kolomdoel | Overschrijf het automatisch gedetecteerde functietype voor de opgegeven kolom. |
Parameterupdate voor transformatieprogramma | Werk de parameters voor de opgegeven transformator bij. Ondersteunt momenteel Imputer (gemiddelde, meest frequent en mediaan) en HashOneHotEncoder. |
Kolommen verwijderen* | Hiermee geeft u kolommen die moeten worden neergezet van worden gemetraliseerd. |
Bloktransformatoren | Hiermee geeft u bloktransformaties op die moeten worden gebruikt in het featurization-proces. |
Opmerking
De functionaliteit om kolommen te verwijderen is verouderd sinds SDK-versie 1.19. Verwijder kolommen uit uw gegevensset als onderdeel van het opschonen van gegevens voordat u deze in uw AutoML-experiment gebruikt.
U kunt het FeaturizationConfig
object maken met behulp van API-aanroepen:
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})
Transparantie van featurization
Elk AutoML-model heeft automatisch featurization toegepast. Featurization omvat geautomatiseerde functie-engineering (wanneer "featurization": 'auto'
) en schalen en normalisatie, wat vervolgens van invloed is op het geselecteerde algoritme en de hyperparameterwaarden. AutoML ondersteunt verschillende methoden om ervoor te zorgen dat u inzicht hebt in wat er op uw model is toegepast.
Bekijk dit voorbeeld van prognose:
- Er zijn vier invoerfuncties: A (numeriek), B (numeriek), C (numeriek), D (datum/tijd).
- Numerieke functie C wordt verwijderd omdat het een id-kolom is met alle unieke waarden.
- Numerieke kenmerken A en B hebben ontbrekende waarden en worden daarom door het gemiddelde toegerekend.
- DateTime-functie D is opgenomen in 11 verschillende functies die zijn ontworpen.
Gebruik de uitvoer van uw fitted_model
AutoML-experimentuitvoering om deze informatie op te halen.
automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()
Geautomatiseerde functie-engineering
De get_engineered_feature_names()
functie retourneert een lijst met ontworpen functienamen.
Opmerking
Gebruiken 'timeseriestransformer'
voor task='forecasting'
, anders gebruiken 'datatransformer'
voor 'regression'
of 'classification'
taak.
fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()
Deze lijst bevat alle ontworpen functienamen.
['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']
De get_featurization_summary()
functie krijgt een overzicht van alle invoerfuncties.
fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()
Uitvoer
[{'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',ateTime','DateTime','DateTime']}]
Uitvoer | Definitie |
---|---|
RuweFunctienaam | Invoerfunctie/kolomnaam uit de opgegeven gegevensset. |
TypeGedetecteerd | Er is een gegevenstype van de invoerfunctie gedetecteerd. |
Gedaald | Geeft aan of de invoerfunctie is verwijderd of gebruikt. |
TechniekKenmerkAantal | Aantal functies dat wordt gegenereerd via geautomatiseerde functie-engineeringtransformaties. |
Transformaties | Lijst met transformaties die zijn toegepast op invoerfuncties om ontworpen functies te genereren. |
Schalen en normaliseren
Als u inzicht wilt hebben in schalen/normaliseren en het geselecteerde algoritme met de bijbehorende hyperparameterwaarden, gebruikt u fitted_model.steps
.
De volgende voorbeelduitvoer wordt uitgevoerd fitted_model.steps
voor een gekozen uitvoering:
[('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))]
Gebruik deze helperfunctie voor meer informatie:
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()
Deze helperfunctie retourneert de volgende uitvoer voor een bepaalde uitvoering met LogisticRegression with RobustScalar
als specifiek algoritme.
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}
Klassekans voorspellen
Modellen die worden geproduceerd met AutoML hebben allemaal wrapper-objecten die de functionaliteit weerspiegelen vanuit hun open source bronklasse. De meeste wrapperobjecten voor classificatiemodellen die door AutoML worden geretourneerd, implementeren de predict_proba()
functie, die een matrixachtige of sparsematrixgegevensvoorbeeld van uw functies (X-waarden) accepteert en retourneert een n-dimensionale matrix van elke steekproef en de bijbehorende klassekans.
Ervan uitgaande dat u de beste run en het aangepaste model hebt opgehaald met behulp van dezelfde aanroepen, kunt u predict_proba()
rechtstreeks vanuit het aangepaste model aanroepen, waarbij u een X_test
voorbeeld in de juiste indeling opgeeft, afhankelijk van het modeltype.
best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)
Als het onderliggende model de predict_proba()
functie niet ondersteunt of de indeling onjuist is, wordt er een modelklassespecifieke uitzondering gegenereerd. Zie de referentiedocumenten RandomForestClassifier en XGBoost voor voorbeelden van hoe deze functie wordt geïmplementeerd voor verschillende modeltypen.
BERT-integratie in AutoML
Bidirectional Encoder Representations from Transformers (BERT) wordt gebruikt in de featurization-laag van AutoML. Als in deze laag een kolom vrije tekst of andere typen gegevens bevat, zoals tijdstempels of eenvoudige getallen, wordt featurization dienovereenkomstig toegepast.
Voor BERT is het model nauwkeurig afgestemd en getraind door gebruik te maken van de door de gebruiker geleverde labels. Vanaf hier worden document-embedingen uitgegeven als kenmerken naast andere, zoals tijdstempel-gebaseerde kenmerken en dag van de week.
Meer informatie over het instellen van AutoML voor het trainen van een model voor natuurlijke taalverwerking met Python.
Stappen voor het aanroepen van BERT
Als u BERT wilt aanroepen, stelt u enable_dnn: True
in uw automl_settings
in en gebruikt u een GPU met rekenkracht vm_size = "STANDARD_NC6"
of hoger. Als een CPU-rekenproces wordt gebruikt, schakelt AutoML in plaats van BERT de BiLSTM DNN-featurizer in.
AutoML voert de volgende stappen uit voor BERT.
Alle tekstkolommen worden vooraf verwerkt en getokeniseerd. De transformator is bijvoorbeeld
StringCast
te vinden in het uiteindelijke kenmerkenoverzicht van het model. In dit Jupyter-notebook vindt u een voorbeeld van het produceren van het overzicht van de featurisatie van het model.Voegt alle tekstkolommen samen in één tekstkolom, vandaar het
StringConcatTransformer
in het uiteindelijke model.Onze implementatie van BERT beperkt de totale tekstlengte van een trainingsvoorbeeld tot 128 tokens. Dat betekent dat alle tekstkolommen wanneer ze worden samengevoegd, in het ideale geval maximaal 128 tokens lang moeten zijn. Als er meerdere kolommen aanwezig zijn, moet elke kolom worden verwijderd, zodat aan deze voorwaarde wordt voldaan. Anders kapt de tokenizer-laag van BERT deze invoer tot 128 tokens af voor samengevoegde kolommen met een lengte van >128 tokens.
Als onderdeel van het opruimen van functies vergelijkt AutoML BERT met de basislijn (zak woordenfuncties) op een voorbeeld van de gegevens. Deze vergelijking bepaalt of BERT nauwkeurigheidsverbeteringen zou geven. Als BERT beter presteert dan de basislijn, gebruikt AutoML vervolgens BERT voor tekstmetralisatie voor de hele gegevens. In dat geval ziet u het
PretrainedTextDNNTransformer
in het uiteindelijke model.
BERT draait over het algemeen langer dan andere featurizers. Voor betere prestaties raden we u aan om STANDARD_NC24r of STANDARD_NC24rs_V3 te gebruiken voor hun RDMA-mogelijkheden.
AutoML verdeelt BERT-training over meerdere knooppunten als deze beschikbaar zijn (maximaal acht knooppunten). U kunt dit doen in uw AutoMLConfig
object door de max_concurrent_iterations
parameter in te stellen op hoger dan 1.
Ondersteunde talen voor BERT
AutoML ondersteunt momenteel ongeveer 100 talen. Afhankelijk van de taal van de gegevensset kiest AutoML het juiste BERT-model. Voor Duitse gegevens gebruiken we het Duitse BERT-model. Voor Engels gebruiken we het Engelse BERT-model. Voor alle andere talen gebruiken we het meertalige BERT-model.
In de volgende code wordt het Duitse BERT-model geactiveerd omdat de gegevenssettaal is opgegeven voor deu
, de drieletterige taalcode voor Duits volgens ISO-classificatie:
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
}