Aracılığıyla paylaş


Otomatik makine öğrenmesinde veri özelliği oluşturma

ŞUNUN IÇIN GEÇERLIDIR: Python SDK azureml v1

Bu makalede, otomatik makine öğrenmesi (AutoML) denemeleriniz için Azure Machine Learning'deki veri özelliği ayarlarını özelleştirme işlemi açıklanmaktadır.

Özellik mühendisliği ve özellik geliştirme

Eğitim verileri satır ve sütunlardan oluşur. Her satır bir gözlem veya kayıttır ve her satırın sütunları her kaydı açıklayan özelliklerdir. Genellikle, verilerdeki desenleri en iyi niteleyen özellikler tahmine dayalı modeller oluşturmak için seçilir.

Ham veri alanlarının çoğu bir modeli eğitmek için doğrudan kullanılabilir olsa da, genellikle verilerdeki desenleri daha iyi ayırt eden bilgiler sağlayan diğer (tasarlanmış) özelliklerin oluşturulması gerekir. Bu işleme özellik mühendisliği adı verilir. Burada verilerin etki alanı bilgisinin kullanılması, makine öğrenmesi algoritmalarının daha iyi öğrenmesine yardımcı olacak özellikler oluşturmak için kullanılır.

Azure Machine Learning'de özellik mühendisliğini kolaylaştırmak için veri ölçeklendirme ve normalleştirme teknikleri uygulanır. Bu teknikler ve bu özellik mühendisliği toplu olarak otomatik makine öğrenmesi (ML) denemelerinde özellik geliştirme olarak adlandırılır.

Önkoşullar

Bu makalede, otomatik ml denemesini yapılandırmayı zaten bildiğiniz varsayılır.

Önemli

Bu makaledeki Python komutları en son azureml-train-automl paket sürümünü gerektirir.

Yapılandırma hakkında bilgi için aşağıdaki makalelere bakın:

Özellik geliştirmeyi yapılandırma

Her otomatik makine öğrenmesi denemesinde, verilerinize varsayılan olarak otomatik ölçeklendirme ve normalleştirme teknikleri uygulanır. Bu teknikler, farklı ölçeklerdeki özelliklere duyarlı olan belirli algoritmalara yardımcı olan özellik geliştirme türleridir. Eksik değerlerin belirtilmesi, kodlama ve dönüşümler gibi daha fazla özellik kazandırabilirsiniz.

Not

Otomatik makine öğrenmesi özellik geliştirme adımları (özellik normalleştirme, eksik verileri işleme veya metni sayısala dönüştürme gibi) temel alınan modelin bir parçası haline gelir. Modeli tahminler için kullandığınızda, eğitim sırasında uygulanan özellik geliştirme adımları giriş verilerinize otomatik olarak uygulanır.

Python SDK'sı ile yapılandırdığınız denemeler için özellik geliştirme ayarını etkinleştirebilir veya devre dışı bırakabilir ve denemeniz için kullanılacak özellik geliştirme adımlarını daha ayrıntılı olarak belirtebilirsiniz. Azure Machine Learning stüdyosu kullanıyorsanız özellik geliştirmeyi etkinleştirme adımlarına bakın.

Aşağıdaki tabloda AutoMLConfig sınıfında için kabul edilen ayarlar featurization gösterilmektedir:

Özellik kazandırma yapılandırması Açıklama
"featurization": 'auto' Ön işlemenin bir parçası olarak, veri korumaları ve özellik geliştirme adımlarının otomatik olarak yapılacağını belirtir. Bu ayar varsayılandır.
"featurization": 'off' Özellik ekleme adımlarının otomatik olarak yapılmayacağı belirtir.
"featurization": 'FeaturizationConfig' Özelleştirilmiş özellik geliştirme adımlarının kullanılacağını belirtir. Özellik geliştirmeyi özelleştirmeyi öğrenin.

Otomatik özellik kazandırma

Aşağıdaki tabloda, verilerinize otomatik olarak uygulanan teknikler özetlenir. Bu teknikler, SDK veya stüdyo kullanıcı arabirimi kullanılarak yapılandırılan denemeler için uygulanır. Bu davranışı devre dışı bırakmak için nesnenizde AutoMLConfig ayarlayın"featurization": 'off'.

Not

AutoML tarafından oluşturulan modellerinizi bir ONNX modeline aktarmayı planlıyorsanız, ONNX biçiminde yalnızca yıldız işareti ("*") ile belirtilen özellik özellikleri seçenekleri desteklenir. Modelleri ONNX'e dönüştürme hakkında daha fazla bilgi edinin.

Özellik geliştirme adımları Açıklama
Yüksek kardinaliteyi bırakın veya varyans özelliği yok* Bu özellikleri eğitim ve doğrulama kümelerinden bırakın. Tüm değerleri eksik olan, tüm satırlarda aynı değere sahip veya yüksek kardinaliteye (örneğin, karmalar, kimlikler veya GUID' ler) sahip özellikler için geçerlidir.
Eksik değerleri açma/kapatma* Sayısal özellikler için, sütundaki değerlerin ortalamasıyla birlikte impute.

Kategorik özellikler için, en sık kullanılan değerle impute.
Daha fazla özellik oluşturma* DateTime özellikleri için: Year, Month, Day, Day of week, Day of year, Quarter, Week of the year, Hour, Minute, Second.

Tahmin görevleri için bu ek DateTime özellikleri oluşturulur: ISO yılı, Yarım - yarım yıl, Dize olarak Takvim ayı, Hafta, Dize olarak haftanın günü, Üç aylık dönem günü, Yılın günü,/PM (saat öğleden önceyse 12 pm), 1 aksi halde), DIZE olarak/PM, Gün saati (12-sa)

Metin özellikleri için: Tek birimleri, büyük harfleri ve trigramları temel alan terim sıklığı. BERT ile bunun nasıl yapıldığı hakkında daha fazla bilgi edinin.
Dönüştürme ve kodlama* Birkaç benzersiz değeri olan sayısal özellikleri kategorik özelliklere dönüştürün.

One-hot kodlama düşük kardinalite kategorik özellikleri için kullanılır. One-hot-hash kodlaması, yüksek kardinalite kategorik özellikleri için kullanılır.
Word eklemeleri Metin özellik oluşturucu, önceden eğitilmiş bir model kullanarak metin belirteçlerinin vektörlerini cümle vektörlerine dönüştürür. Her sözcüğün belgeye ekleme vektörleri, belge özellik vektörleri oluşturmak için geri kalanıyla birlikte toplanır.
Küme Uzaklığı K ortalamaları kümeleme modelini tüm sayısal sütunlarda eğiter. Her örneğin her kümenin merkez merkezine uzaklıklarını içeren k yeni özellikler (küme başına bir yeni sayısal özellik) üretir.

Her otomatik makine öğrenmesi denemesinde, algoritmaların iyi performans göstermelerine yardımcı olmak için verileriniz otomatik olarak ölçeklendirilir veya normalleştirilir. Model eğitimi sırasında, her modele aşağıdaki ölçeklendirme veya normalleştirme tekniklerinden biri uygulanır.

Ölçeklendirme ve işleme Açıklama
StandardScaleWrapper Ortalamayı kaldırarak ve birim varyansını ölçeklendirerek özellikleri standartlaştırın.
MinMaxScalar Her özelliği bu sütunun en düşük ve en yüksek düzeyine göre ölçeklendirerek özellikleri dönüştürür.
MaxAbsScaler Her özelliği maksimum mutlak değerine göre ölçeklendirin.
RobustScalar Özellikleri nicelik aralığına göre ölçeklendirir.
PCA Verileri daha düşük boyutlu bir alana yansıtmak için Tekil Değer Ayrıştırma kullanılarak doğrusal boyutsallık azaltma.
KesilmişSVD Bu transformatör kesilen tekil değer ayrıştırma (SVD) kullanarak doğrusal boyutsallığı azaltma gerçekleştirir. PCA'nın aksine, bu tahmin aracı tekil değer ayrıştırma işlemini hesaplamadan önce verileri ortalamaz; bu da scipy.sparse matrisleriyle verimli bir şekilde çalışabileceği anlamına gelir.
Seyrek Normalleştirici En az bir sıfır olmayan bileşene sahip her örnek (diğer bir deyişle veri matrisinin her satırı), normunun (l1 veya l2) bire eşit olması için diğer örneklerden bağımsız olarak yeniden ölçeklendirilir.

Veri korumaları

Veri korumaları verilerinizle ilgili olası sorunları (örneğin eksik değerler veya sınıf dengesizliği) belirlemenize yardımcı olur. Ayrıca, iyileştirilmiş sonuçlar için düzeltici eylemler gerçekleştirmenize de yardımcı olur.

Veri korumaları uygulanır:

  • SDK denemeleri için: Parametreler "featurization": 'auto' veya validation=auto nesnenizde AutoMLConfig belirtildiğinde
  • Stüdyo denemeleri için: Otomatik özellik özelliği etkinleştirildiğinde

Denemeniz için veri korumalarını gözden geçirebilirsiniz:

  • SDK kullanarak bir deneme gönderdiğinizde ayarını show_output=True yaparak.
  • Stüdyoda, otomatik ML çalıştırmanızın Data guardrails sekmesinde.

Veri koruma durumları

Veri korumaları üç durumdan birini görüntüler:

Durum Açıklama
Geçirilen Hiçbir veri sorunu algılanmadı ve herhangi bir işlem yapmanız gerekmez.
Yapılmış Verilerinize değişiklikler uygulandı. Değişikliklerin beklenen sonuçlarla uyumlu olduğundan emin olmak için AutoML'nin yaptığı düzeltici eylemleri gözden geçirmenizi öneririz.
Uyarılır Bir veri sorunu algılandı ancak düzeltilemedi. Sorunu düzeltmenizi ve düzeltmenizi öneririz.

Desteklenen veri korumaları

Aşağıdaki tabloda, şu anda desteklenen veri korumaları ve denemenizi gönderirken görebileceğiniz ilişkili durumlar açıklanmaktadır:

Otokorkuluk Durum Tetikleyici koşulu
Eksik özellik değerleri imputation Geçirilen


Bitti
Eğitim verilerinizde eksik özellik değeri algılanmadı. Eksik değer gösterimi hakkında daha fazla bilgi edinin.

Eğitim verilerinizde eksik özellik değerleri algılandı ve engellendi.
Yüksek kardinalite özelliği algılama Geçirilen


Bitti
Girişleriniz analiz edildi ve yüksek kardinalite özellikleri algılanmadı.

Girdilerinizde yüksek kardinalite özellikleri algılandı ve işlendi.
Doğrulama bölme işlemesi Bitti Doğrulama yapılandırması olarak 'auto' ayarlandı ve eğitim verileri 20.000'den az satır içeriyordu.
Eğitilen modelin her yinelemesi çapraz doğrulama kullanılarak doğrulandı. Doğrulama verileri hakkında daha fazla bilgi edinin.

Doğrulama yapılandırması olarak 'auto'ayarlandı ve eğitim verileri 20.000'den fazla satır içeriyordu.
Giriş verileri, modelin doğrulanması için bir eğitim veri kümesine ve doğrulama veri kümesine ayrılmıştır.
Sınıf dengeleme algılama Geçirilen




Uyarılır



Bitti
Girişleriniz analiz edildi ve tüm sınıflar eğitim verilerinizde dengelenir. Her sınıfın veri kümesinde örnek sayısı ve oranına göre ölçülen iyi bir gösterimi varsa veri kümesinin dengelenmiş olduğu kabul edilir.

Girişlerinizde dengesiz sınıflar algılandı. Model sapmasını düzeltmek için dengeleme sorununu düzeltin. Dengesiz veriler hakkında daha fazla bilgi edinin.

Girişlerinizde dengesiz sınıflar algılandı ve süpürme mantığı dengeleme uygulamak için karar verdi.
Bellek sorunları algılama Geçirilen



Bitti
Seçilen değerler (ufuk, gecikme, sıralı pencere) analiz edildi ve olası bellek yetersiz sorunları algılanmadı. Zaman serisi tahmin yapılandırmaları hakkında daha fazla bilgi edinin.

Seçilen değerler (ufuk, gecikme, sıralı pencere) analiz edildi ve denemenizin belleğinin bitme olasılığı var. Gecikme veya sıralı pencere yapılandırmaları kapalıdır.
Sıklık algılama Geçirilen


Bitti
Zaman serisi analiz edildi ve tüm veri noktaları algılanan sıklık ile hizalanır.

Zaman serisi analiz edildi ve algılanan sıklık ile uyumlu olmayan veri noktaları algılandı. Bu veri noktaları veri kümesinden kaldırıldı.
Çapraz doğrulama Bitti AutoML tarafından eğitilen modelleri doğru bir şekilde değerlendirmek için modelin eğitilen olmadığı bir veri kümesi kullanırız. Bu nedenle, kullanıcı açık bir doğrulama veri kümesi sağlamazsa, bunu başarmak için eğitim veri kümesinin bir bölümü kullanılır. Daha küçük veri kümelerinde (20.000'den az örnek) çapraz doğrulama kullanılır, aksi halde tek bir ayrı tutma kümesi eğitim verilerinden ayrılarak doğrulama veri kümesi görevi görür. Bu nedenle, giriş verileriniz için eğitim örneklerinin sayısı 1000'den azsa ve diğer tüm durumlarda 3 katsa 10 kat ile çapraz doğrulama kullanırız.
Eğit-Test veri bölme Bitti AutoML tarafından eğitilen modelleri doğru bir şekilde değerlendirmek için modelin eğitilen olmadığı bir veri kümesi kullanırız. Bu nedenle, kullanıcı açık bir doğrulama veri kümesi sağlamazsa, bunu başarmak için eğitim veri kümesinin bir bölümü kullanılır. Daha küçük veri kümelerinde (20.000'den az örnek) çapraz doğrulama kullanılır, aksi halde tek bir ayrı tutma kümesi eğitim verilerinden ayrılarak doğrulama veri kümesi görevi görür. Bu nedenle giriş verileriniz bir eğitim veri kümesine ve ayrı tutma doğrulama veri kümesine bölünür.
Zaman Serisi Kimliği algılama Geçirilen


Sabit
Veri kümesi analiz edildi ve yinelenen zaman dizini algılanmadı.

Veri kümesinde birden çok zaman serisi bulundu ve zaman serisi tanımlayıcıları veri kümeniz için otomatik olarak oluşturuldu.
Zaman serisi toplama Geçirilen


Sabit
Veri kümesi sıklığı, kullanıcı tarafından belirtilen sıklık ile hizalanır. Toplama gerçekleştirilmedi.

Veriler, kullanıcı tarafından sağlanan sıklık ile uyumlu olacak şekilde toplanmıştır.
Kısa seri işleme Geçirilen


Sabit
Otomatik ML, giriş verilerindeki her seri için eğitime devam etmek için yeterli veri noktası algılandı.

Otomatik ML, bazı serilerin modeli eğitmek için yeterli veri noktası içermediğini algılamıştı. Eğitime devam etmek için bu kısa seriler bırakıldı veya dolduruldu.

Özellik geliştirmeyi özelleştirme

ML modelinizi eğitmek için kullanılan verilerin ve özelliklerin ilgili tahminlere neden olduğundan emin olmak için özellik geliştirme ayarlarınızı özelleştirebilirsiniz.

Özellik geliştirmelerini özelleştirmek için nesnenizde AutoMLConfig belirtin"featurization": FeaturizationConfig. Denemeniz için Azure Machine Learning stüdyosu kullanıyorsanız nasıl yapılır makalesine bakın. Tahminler görev türleri için özellik geliştirmeyi özelleştirmek için tahmin nasıl yapılır bölümüne bakın.

Desteklenen özelleştirmeler şunlardır:

Özelleştirme Tanım
Sütun amaçlı güncelleştirme Belirtilen sütun için otomatik algılanan özellik türünü geçersiz kılın.
Transformer parametre güncelleştirmesi Belirtilen transformatörün parametrelerini güncelleştirin. Şu anda Imputer (ortalama, en sık ve ortanca) ve HashOneHotEncoder'ı destekler.
Sütunları bırakma Öne çıkarılmaktan kaldırılan sütunları belirtir.
Blok transformatörleri Özellik geliştirme işleminde kullanılacak blok transformatörlerini belirtir.

Not

Bırakma sütunları işlevselliği SDK sürüm 1.19 itibariyle kullanım dışıdır. Otomatik ML denemenizde kullanmadan önce veri kümenizden veri temizlemenin bir parçası olarak sütunları bırakın.

API çağrılarını FeaturizationConfig kullanarak nesnesini oluşturun:

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

Özellik kazandırma saydamlığı

Her AutoML modelinin özellik özelliği otomatik olarak uygulanır. Özellik geliştirme, otomatik özellik mühendisliğini (when "featurization": 'auto') ve ardından seçilen algoritmayı ve hiper parametre değerlerini etkileyen ölçeklendirme ve normalleştirmeyi içerir. AutoML, modelinize uygulananlar hakkında görünürlük sahibi olduğunuzdan emin olmak için farklı yöntemleri destekler.

Şu tahmin örneğini göz önünde bulundurun:

  • Dört giriş özelliği vardır: A (Sayısal), B (Sayısal), C (Sayısal), D (DateTime).
  • Tüm benzersiz değerlere sahip bir kimlik sütunu olduğundan C sayısal özelliği bırakılır.
  • A ve B sayısal özellikleri eksik değerlere sahiptir ve bu nedenle ortalama tarafından işaretlenir.
  • DateTime özelliği D, 11 farklı mühendislik özelliğine sahiptir.

Bu bilgileri almak için otomatik ML deneme çalıştırmanızın çıkışını kullanın fitted_model .

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

Otomatik özellik mühendisliği

, get_engineered_feature_names() mühendislik özelliği adlarının listesini döndürür.

Not

task='forecasting' için 'timeseriestransformer' kullanın, aksi halde 'regresyon' veya 'sınıflandırma' görevi için 'datatransformer' kullanın.

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

Bu liste, tüm mühendislik özellikleri adlarını içerir.

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

, get_featurization_summary() tüm giriş özelliklerinin özellik oluşturma özetini alır.

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

Çıktı

[{'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']}]
Çıktı Tanım
RawFeatureName Sağlanan veri kümesinden özellik/sütun adı girin.
Tür Algılandı Giriş özelliğinin veri türü algılandı.
Düştü Giriş özelliğinin bırakıldığını veya kullanıldığını gösterir.
EngineeringFeatureCount Otomatik özellik mühendisliği dönüşümleri aracılığıyla oluşturulan özellik sayısı.
Dönüşümler Mühendislik özellikleri oluşturmak için giriş özelliklerine uygulanan dönüştürmelerin listesi.

Ölçeklendirme ve normalleştirme

Ölçeklendirme/normalleştirmeyi ve hiper parametre değerleriyle seçilen algoritmayı anlamak için kullanın fitted_model.steps.

Aşağıdaki örnek çıkış, seçilen bir çalıştırma için çalıştırılır fitted_model.steps :

[('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))]

Daha fazla ayrıntı almak için şu yardımcı işlevi kullanın:

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

Bu yardımcı işlevi, belirli bir algoritma olarak kullanarak LogisticRegression with RobustScalar belirli bir çalıştırma için aşağıdaki çıkışı döndürür.

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}

Sınıf olasılığını tahmin etme

Otomatik ML kullanılarak üretilen modellerin tümü, açık kaynak kaynak kaynak sınıfından işlevselliği yansıtan sarmalayıcı nesnelere sahiptir. Otomatik ML tarafından döndürülen sınıflandırma modeli sarmalayıcı nesnelerinin predict_proba() çoğu, özelliklerinizin dizi benzeri veya seyrek matris veri örneğini (X değerleri) kabul eden ve her örneğin n boyutlu dizisini ve ilgili sınıf olasılığını döndüren işlevini uygular.

Aynı çağrıları kullanarak en iyi çalıştırma ve uyduru modeli aldığınız varsayıldığında, doğrudan uygun modelden çağrı predict_proba() yapabilir ve model türüne bağlı olarak uygun biçimde bir X_test örnek sağlayabilirsiniz.

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

Temel alınan model işlevi desteklemiyorsa predict_proba() veya biçim yanlışsa, modele özgü bir özel durum oluşturulur. Bu işlevin farklı model türleri için nasıl uygulandığına ilişkin örnekler için RandomForestClassifier ve XGBoost başvuru belgelerine bakın.

Otomatik ML'de BERT tümleştirmesi

BERT , otomatik ML'nin özellik katmanında kullanılır. Bu katmanda bir sütunda serbest metin veya zaman damgaları ya da basit sayılar gibi diğer veri türleri olduğunda gerekli özellik geliştirme işlemleri uygulanır.

BERT için modelde kullanıcı tarafından sağlanan etiketler kullanılarak ince ayar ve eğitim gerçekleştirilir. Sonrasında belge eklemeleri, zaman damgası tabanlı özellikler ve haftanın günü gibi diğer özelliklerle birlikte sunulur.

Python ile doğal dil işleme modeli eğitmek için AutoML'yi ayarlamayı öğrenin.

BERT'yi çağırma adımları

BERT'yi çağırmak için automl_settings ayarlayın enable_dnn: True ve bir GPU işlem (vm_size = "STANDARD_NC6" veya daha yüksek bir GPU) kullanın. CPU işlemi kullanılıyorsa, AutoML BERT yerine BiLSTM DNN özellik oluşturucuyu etkinleştirir.

Otomatik ML, BERT için aşağıdaki adımları uygular.

  1. Tüm metin sütunlarının ön işlemesi ve belirteci. Örneğin, StringCast transformatör son modelin özellik belirleme özetinde bulunabilir. Modelin özellik özetinin nasıl oluşturulacağıyla ilgili bir örnek bu not defterinde bulunabilir.

  2. Tüm metin sütunlarını tek bir metin sütununa, dolayısıyla StringConcatTransformer son modelde birleştirin.

    BERT uygulamamız, bir eğitim örneğinin toplam metin uzunluğunu 128 belirteçle sınırlar. Diğer bir deyişle, birleştirilirken tüm metin sütunları ideal olarak en fazla 128 belirteç uzunluğunda olmalıdır. Birden çok sütun varsa, bu koşulun karşılanması için her sütunun ayıklanması gerekir. Aksi takdirde, uzunluğu >128 belirteç olan birleştirilmiş sütunlar için BERT'nin belirteç oluşturucu katmanı bu girişi 128 belirteçle kısaltır.

  3. Özellik süpürme işleminin bir parçası olarak AutoML, BERT'yi veri örneğindeki taban çizgisiyle (sözcük paketi özellikleri) karşılaştırır. Bu karşılaştırma, BERT'in doğruluk iyileştirmeleri verip vermeyeceğini belirler. BERT temelden daha iyi performans gösterirse, AutoML tüm veriler için metin özellik kazandırma için BERT kullanır. Bu durumda, son modelde öğesini PretrainedTextDNNTransformer görürsünüz.

BERT genellikle diğer özellik oluşturuculardan daha uzun çalışır. Daha iyi performans için RDMA özellikleri için STANDARD_NC24r veya STANDARD_NC24rs_V3 kullanmanızı öneririz.

AutoML, kullanılabilir durumdaysa (en fazla sekiz düğüm) BERT eğitimini birden çok düğüm arasında dağıtır. Bu, parametresi 1'den yüksek olarak ayarlanarak max_concurrent_iterations nesnenizde AutoMLConfig yapılabilir.

AutoML'de BERT için desteklenen diller

AutoML şu anda yaklaşık 100 dili destekler ve veri kümesinin diline bağlı olarak AutoML uygun BERT modelini seçer. Almanca veriler için Alman BERT modelini kullanırız. İngilizce için İngilizce BERT modelini kullanırız. Diğer tüm diller için çok dilli BERT modelini kullanırız.

Aşağıdaki kodda, veri kümesi dili , ISO sınıflandırmasına deugöre Almanca için üç harfli dil kodu belirtildiğinden Almanca BERT modeli tetikleniyor:

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
}