적용 대상:Python용 Azure Machine Learning SDK v1
중요
이 문서에서는 Azure Machine Learning SDK v1 사용에 대한 정보를 제공합니다. SDK v1은 2025년 3월 31일부터 더 이상 사용되지 않으며 지원은 2026년 6월 30일에 종료됩니다. 해당 날짜까지 SDK v1을 설치하고 사용할 수 있습니다.
2026년 6월 30일 이전에 SDK v2로 전환하는 것이 좋습니다. SDK v2에 대한 자세한 내용은 Azure Machine Learning Python SDK v2 및 SDKv2 참조란?을 참조하세요.
이 문서에서는 AutoML(자동화된 Machine Learning) 실험을 위해 Azure Machine Learning에서 데이터 기능화 설정을 사용자 지정하는 방법을 설명합니다.
기능 엔지니어링 및 기능화
학습 데이터는 행과 열로 이루어져 있습니다. 각 행은 관찰 또는 레코드이며 각 행의 열은 각 레코드를 설명하는 기능입니다. 일반적으로 데이터의 패턴을 가장 잘 특징화 하는 기능을 선택하여 예측 모델을 만듭니다.
많은 원시 데이터 필드를 직접 사용하여 모델을 학습시킬 수 있지만 데이터의 패턴을 보다 잘 구분하기 위해 정보를 제공하는 다른(엔지니어링된) 기능을 만들어야 하는 경우가 많습니다. 이 프로세스를 기능 엔지니어링이라고 하며 이를 통해 데이터의 도메인 지식을 사용하여 기계 학습 알고리즘이 더 잘 학습하게 하는 기능을 만듭니다.
Azure Machine Learning에서는 데이터 크기 조정 및 정규화 기술이 적용되어 기능 엔지니어링이 더 쉬워집니다. 전체적으로 이러한 기술과 이 기능 엔지니어링을 AutoML 실험의 기능화 라고 합니다.
필수 조건
이 문서에서는 AutoML 실험을 구성하는 방법을 이미 알고 있다고 가정합니다.
중요
이 문서의 Python 명령을 실행하려면 최신 azureml-train-automl
패키지 버전이 필요합니다.
- 로컬 환경에 최신
azureml-train-automl
패키지를 설치합니다. - 최신
azureml-train-automl
패키지에 대한 자세한 내용은 릴리스 정보를 참조하세요.
구성에 대한 자세한 내용은 다음 문서를 참조하세요:
- 코드 우선 환경의 경우: Python을 사용하여 AutoML 학습 설정
- 코드 없는 환경의 경우: 스튜디오 UI를 사용하여 테이블 형식 데이터에 대한 코드 없는 AutoML 학습 설정
기능화 구성
모든 AutoML 실험에서 자동 크기 조정 및 정규화 기술은 기본적으로 데이터에 적용됩니다. 이러한 기술은 기능화 유형으로서 다양한 규모에서의 기능에 민감한 특정 알고리즘을 지원합니다. 누락 값 대체, 인코딩 및 변환과 같은 더 많은 기능화를 사용하도록 설정할 수 있습니다.
참고
AutoML 기능화 단계(예: 기능 정규화, 누락된 데이터 처리 또는 텍스트를 숫자로 변환)는 기본 모델의 일부가 됩니다. 예측에 모델을 사용하는 경우 학습 중에 적용되는 동일한 기능화 단계가 입력 데이터에 자동으로 적용됩니다.
Python SDK로 구성하는 실험의 경우 기능화 설정을 사용하도록 설정하거나 사용하지 않도록 설정하고 실험에 사용할 기능화 단계를 추가로 지정할 수 있습니다. Azure Machine Learning 스튜디오를 사용하는 경우 기능화를 사용하도록 설정하는 단계를 참조하세요.
다음 표는 featurization
에서 에 대해 허용되는 설정을 보여줍니다:
기능화 구성 | 설명 |
---|---|
"featurization": 'auto' |
전처리의 일부로 데이터 가드 레일 및 기능화 단계가 자동으로 수행되도록 지정합니다. 이 설정이 기본값입니다. |
"featurization": 'off' |
기능화 단계가 자동으로 수행되지 않도록 지정합니다. |
"featurization": 'FeaturizationConfig' |
사용자 지정된 기능화 단계를 사용하도록 지정합니다. 자세한 내용은 기능화 사용자 지정을 참조하세요. |
자동 기능화
다음 표에는 데이터에 자동으로 적용되는 기술이 요약되어 있습니다. 이러한 기술은 SDK 또는 스튜디오 UI를 사용하여 구성된 실험에 적용됩니다. 이 동작을 사용하지 않도록 설정하려면 "featurization": 'off'
개체에서 AutoMLConfig
을 설정합니다.
기능화 단계 | 설명 |
---|---|
높은 카디널리티 삭제 또는 분산 기능 없음* | 학습 및 유효성 검사 집합에서 해당 기능을 삭제합니다. 모든 값이 누락되었거나, 모든 행에서 동일한 값을 사용하거나, 카디널리티가 높은 기능(예: 해시, ID 또는 GUID)에 적용됩니다. |
누락 값 대체* | 숫자 기능의 경우, 열 값의 평균으로 대체합니다. 범주 별 기능의 경우 가장 자주 사용되는 값으로 대체합니다. |
더 많은 기능 생성* | DateTime 기능의 경우: 연도, 월, 일, 요일, 연도의 일, 분기, 연도의 주, 시간, 분, 초입니다. 예측 작업의 경우 다음과 같은 추가 날짜 및 시간 기능이 생성됩니다: ISO 연도, 상반기/하반기, 문자열로 표현된 달력 월, 주, 문자열로 표현된 요일, 분기일, 연중 일, AM/PM(0은 오전, 1은 오후), 문자열로 표현된 AM/PM, 12시간 체계의 시간. 텍스트 기능의 경우: 유니그램, 이그램, 삼그램을 기반으로 하는 용어 빈도입니다. 자세한 내용은 BERT 통합을 참조하세요. |
변환 및 인코딩* | 고유 값이 거의 없는 숫자 특성을 범주 특성으로 변환합니다. 원 핫 인코딩은 낮은 카드리널리티의 범주형 특성에 사용됩니다. 원 핫 해시 인코딩 은 카디널리티가 높은 범주 기능에 사용됩니다. |
단어 임베딩 | 텍스트 기능 변환기는 미리 학습된 모델을 사용하여 텍스트 토큰의 벡터를 문장 벡터로 변환합니다. 문서에 포함된 각 단어의 벡터는 문서 기능 벡터를 생성하기 위해 나머지와 함께 집계됩니다. |
클러스터 거리 | 모든 숫자 열에서 k-평균 클러스터링 모델을 학습시킵니다. 각 샘플에서 각 클러스터의 중심까지의 거리를 포함하는 k개의 새 기능(클러스터당 하나의 새 숫자 기능)을 생성합니다. |
참고
*AutoML에서 만든 모델을 ONNX 모델로 내보내려는 경우 별표로 표시된 기능화 옵션만 ONNX 형식으로 지원됩니다. 자세한 내용은 AutoML ONNX 모델을 사용하여 예측 만들기를 참조하세요.
모든 AutoML 실험에서 알고리즘이 제대로 수행되도록 데이터가 자동으로 크기 조정 또는 정규화됩니다. 모델 학습 중에 다음 크기 조정 또는 정규화 기술 중 하나가 각 모델에 적용됩니다.
크기 조정 및 처리 | 설명 |
---|---|
StandardScaler | 평균을 제거하고 단위 분산으로 크기를 조정하여 기능을 표준화합니다. |
MinMaxScaler | 해당 열의 최솟값과 최댓값을 기준으로 각 기능의 크기를 조정하여 기능을 변환합니다. |
MaxAbsScaler | 각 기능을 최대 절대값으로 조정합니다. |
RobustScaler | 특성을 분위수 범위에 따라 조정합니다. |
PCA | 주 구성 요소 분석. 데이터의 특이값 분해를 사용하여 데이터를 더 낮은 차원 공간으로 프로젝션하는 선형 차원 축소입니다. |
TruncatedSVD | 이 변환기는 잘린 SVD(특이값)를 사용하여 선형 차원 축소를 수행합니다. PCA와 달리 이 추정기는 단수 값 분해를 계산하기 전에 데이터를 가운데에 두지 않으므로 행렬을 scipy.sparse 효율적으로 사용할 수 있습니다. |
Normalizer | 0이 아닌 성분이 하나 이상 있는 각 샘플(즉, 데이터 행렬의 각 행)의 크기는 다른 샘플과 독립적으로 다시 조정되어 해당 표준(l1 또는 l2)이 1이 됩니다. |
데이터 가드 레일
데이터 보호책은 누락된 값 또는 불균형 데이터와 같은 데이터 관련 잠재적 문제를 식별하는 데 도움이 됩니다. 또한 향상된 결과를 위해 정정 작업을 수행할 수 있습니다.
데이터 가드 레일이 적용됩니다:
- SDK 실험을 위한 경우: 매개 변수
"featurization": 'auto'
또는validation=auto
가AutoMLConfig
객체에 지정된 경우. - 스튜디오 실험의 경우: 자동 특징 추출이 활성화되었을 때.
실험에 대한 데이터 가드 레일을 검토할 수 있습니다:
- SDK를 사용하여 실험을 제출할 때
show_output=True
을 설정합니다. - 스튜디오에서 AutoML 실행의 데이터 가드 레일 탭에서.
데이터 가드 레일 상태
데이터 가드 레일에는 다음 세 가지 상태 중 하나가 표시됩니다:
시스템 상태 | 설명 |
---|---|
통과 | 데이터 문제가 검색되지 않았으며 사용자 작업이 필요하지 않습니다. |
완료 | 변경 내용이 데이터에 적용되었습니다. 자동화된 Machine Learning에서 수행된 정정 작업을 검토하여 변경 내용이 예상 결과와 일치하는지 확인하기를 권장합니다. |
알림 | 데이터 문제가 검색되었지만 해결할 수 없습니다. 사용자가 문제를 수정하고 해결하기를 권장합니다. |
지원되는 데이터 보호 장치
다음 표에서는 현재 지원되는 데이터 가드 레일과 실험을 제출할 때 볼 수 있는 관련 상태를 설명합니다:
가드 레일 | 상태 | 트리거 조건 |
---|---|---|
누락된 기능 값 대체 | 통과 완료 |
학습 데이터에서 누락된 기능 값이 검색되지 않았습니다. 자세한 내용은 기능화 설정 구성을 참조하세요. 학습 데이터에서 누락된 기능 값이 검색되어 대체되었습니다. |
카디널리티가 높은 특징 탐지 | 통과 완료 |
입력이 분석되었으며, 높은 카디널리티 기능이 검색되지 않았습니다. 입력에서 높은 카디널리티 기능이 검색되어 처리되었습니다. |
유효성 검사 분할 처리 | 완료 | 유효성 검사 구성이 'auto' 로 설정되었으며, 학습 데이터에는 20,000개 미만의 행이 포함되었습니다. 교차 유효성 검사를 통해 학습된 모델의 각 반복을 검사했습니다. 유효성 검사 데이터에 대해 자세히 알아보세요. 유효성 검사 구성이 'auto' 로 설정되었으며, 학습 데이터에는 20,000개 이상의 행이 포함되었습니다. 모델의 유효성 검사를 위해 입력 데이터가 학습 데이터 세트와 유효성 검사 데이터 세트로 분할되었습니다. |
클래스 균형 탐지 | 통과 경고 완료 |
입력이 분석되었으며, 학습 데이터에서 모든 클래스가 균형을 유지하고 있습니다. 샘플의 수와 비율로 측정할 때 각 클래스가 데이터 세트에서 올바르게 표현되어 있으면 데이터 세트가 균형을 유지하고 있는 것으로 간주됩니다. 입력에서 불균형 클래스가 검색되었습니다. 모델 편차를 수정하려면 분산 문제를 수정합니다. 불균형 데이터에 대해 자세히 알아보세요. 입력에서 불균형 클래스가 검색되었으며 비우기 논리가 분산을 적용하도록 결정되었습니다. |
메모리 문제 검색 | 통과 완료 |
선택한 값(예측 시간, 지연 시간 및 롤링 기간)이 분석되었으며, 잠재적인 메모리 부족 문제가 검색되지 않았습니다. 시계열 예측 구성에 대해 자세히 알아보세요. 선택한 값(예측 범위, 지연 시간 및 롤링 윈도우)이 분석되었으며, 이로 인해 실험 중 메모리가 부족할 가능성이 있습니다. 지연 시간 및 롤링 기간 구성이 해제되었습니다. |
빈도 검색 | 통과 완료 |
시계열이 분석되었으며, 모든 데이터 요소가 검색된 빈도로 정렬되어 있습니다. 시계열이 분석되었으며 검색된 빈도와 일치하지 않는 데이터 요소가 검색되었습니다. 데이터 세트에서 이러한 데이터 요소가 제거되었습니다. |
교차 유효성 검사 | 완료 | AutoML에서 학습된 모델을 정확하게 평가하기 위해 모델이 학습되지 않은 데이터 세트를 사용합니다. 따라서 사용자가 명시적 유효성 검사 데이터 세트를 제공하지 않으면 학습 데이터 세트의 일부가 이를 달성하는 데 사용됩니다. 더 작은 데이터 세트(샘플 20,000개 미만)의 경우 교차 유효성 검사가 사용되고, 그렇지 않으면 단일 홀드아웃 집합이 유효성 검사 데이터 세트로 사용하기 위해 학습 데이터에서 분할됩니다. 따라서 입력 데이터의 경우 학습 샘플 수가 1000개 미만인 경우 10개의 폴드로 교차 유효성 검사를 사용하고 다른 모든 경우에는 3개의 폴드를 사용합니다. |
학습-테스트 데이터 분할 | 완료 | AutoML에서 학습된 모델을 정확하게 평가하기 위해 모델이 학습되지 않은 데이터 세트를 사용합니다. 따라서 사용자가 명시적 유효성 검사 데이터 세트를 제공하지 않으면 학습 데이터 세트의 일부가 이를 달성하는 데 사용됩니다. 더 작은 데이터 세트(샘플 20,000개 미만)의 경우 교차 유효성 검사가 사용되고, 그렇지 않으면 단일 홀드아웃 집합이 유효성 검사 데이터 세트로 사용하기 위해 학습 데이터에서 분할됩니다. 따라서 입력 데이터는 학습 데이터 세트와 홀드아웃 유효성 검사 데이터 세트로 분할됩니다. |
시계열 ID 검색 | 통과 수정됨 |
데이터 세트가 분석되었으며 중복 시간 인덱스가 검색되지 않았습니다. 데이터 세트에 시계열이 여러 개 있으며 데이터 세트에 대한 시계열 식별자가 자동으로 생성되었습니다. |
시계열 집계 | 통과 수정됨 |
데이터 세트 빈도는 사용자가 지정한 빈도와 정렬됩니다. 집계가 수행되지 않았습니다. 데이터는 사용자가 제공한 빈도를 준수하도록 집계되었습니다. |
짧은 계열 처리 | 통과 수정됨 |
AutoML은 입력 데이터의 각 계열에 대한 충분한 데이터 요소를 검색하여 학습을 계속합니다. AutoML은 일부 계열에 모델을 학습시킬 수 있는 충분한 데이터 요소가 포함되어 있지 않다는 것을 발견했습니다. 학습을 계속하기 위해 이 짧은 시리즈는 삭제되거나 패딩되었습니다. |
기능화 사용자 지정
기능화 설정을 사용자 지정하여 기계 학습 모델을 학습하는 데 사용되는 데이터 및 기능이 관련 예측을 생성하도록 할 수 있습니다.
기능화를 사용자 지정하려면 "featurization": FeaturizationConfig
를 AutoMLConfig
개체에 지정합니다. 실험에 Azure Machine Learning 스튜디오를 사용하는 경우 기능화 설정 구성을 참조하세요. 예측 작업 유형에 대한 기능화를 사용자 지정하려면 기능화 사용자 지정을 참조하세요.
지원되는 사용자 지정은 다음과 같습니다.
사용자 지정 | 정의 |
---|---|
열의 용도 업데이트 | 지정된 열에 대해 자동 감지된 기능 유형을 재정의합니다. |
변환기 매개 변수 업데이트 | 지정된 변환기의 매개 변수를 업데이트합니다. 현재는 Imputer(평균, 가장 빈번 및 중앙값) 및 HashOneHotEncoder를 지원합니다. |
열 삭제* | 기능화에서 삭제할 열을 지정합니다. |
블록 변환기 | 기능화 프로세스에 사용할 블록 변환기를 지정합니다. |
참고
* 드롭 열 기능은 SDK 버전 1.19에서 더 이상 사용되지 않습니다. AutoML 실험에서 데이터를 사용하기 전에 데이터 정리의 일환으로 데이터 세트에서 열을 삭제합니다.
API 호출을 사용하여 개체를 FeaturizationConfig
만들 수 있습니다.
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})
기능화 투명도
모든 자동화된 Machine Learning 모델은 기능화가 자동으로 적용됩니다. 기능화에는 자동화된 기능 엔지니어링("featurization": 'auto'
일 때)과 크기 조정 및 정규화가 포함되며 선택한 알고리즘과 해당 하이퍼 매개 변수 값에 영향을 줍니다. 자동화된 Machine Learning은 모델에 적용된 항목을 확인할 수 있도록 다양한 방법을 지원합니다.
다음 예측 예제를 고려합니다:
- 입력 기능으로 A(숫자), B(숫자), C(숫자), D(날짜/시간)가 있습니다.
- 숫자 기능 C는 모든 값이 고유한 ID 열 이므로 삭제됩니다.
- 숫자 기능 A와 B에는 누락된 값이 있으므로 평균으로 귀속됩니다.
- 날짜/시간 기능 D는 11개의 다양한 설계된 특징으로 특성화됩니다.
이 정보를 얻으려면 AutoML 실험 실행의 fitted_model
출력을 사용합니다.
automl_config = AutoMLConfig(…)
automl_run = experiment.submit(automl_config …)
best_run, fitted_model = automl_run.get_output()
자동화된 기능 엔지니어링
get_engineered_feature_names()
은 엔지니어링된 기능 이름 목록을 반환합니다.
참고
'timeseriestransformer'
를 task='forecasting'
에 사용하고, 그렇지 않으면 'datatransformer'
또는 'regression'
작업에 'classification'
를 사용합니다.
fitted_model.named_steps['timeseriestransformer']. get_engineered_feature_names ()
이 목록에는 엔지니어링된 기능 이름이 모두 포함됩니다.
['A', 'B', 'A_WASNULL', 'B_WASNULL', 'year', 'half', 'quarter', 'month', 'day', 'hour', 'am_pm', 'hour12', 'wday', 'qday', 'week']
get_featurization_summary()
은 모든 입력 기능의 기능화 요약을 가져옵니다.
fitted_model.named_steps['timeseriestransformer'].get_featurization_summary()
출력
[{'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']}]
출력 | 정의 |
---|---|
RawFeatureName | 제공된 데이터 세트의 입력 기능/열 이름입니다. |
TypeDetected | 입력 기능의 데이터 형식이 감지되었습니다. |
Dropped | 입력 기능이 삭제되었는지 아니면 사용되었는지 여부를 나타냅니다. |
EngineeringFeatureCount | 자동화된 기능 엔지니어링 변환을 통해 생성된 기능의 수입니다. |
변환 | 엔지니어링된 기능을 생성하기 위해 입력 기능에 적용된 변환 목록입니다. |
스케일링 및 정규화
선택한 알고리즘과 그 하이퍼파라미터 값을 이해하려면 fitted_model.steps
을 사용하여 크기 조정/정규화를 수행하세요.
선택한 실행에 대해 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))]
자세한 내용을 보려면 다음 도우미 함수를 사용하세요.
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()
이 도우미 함수는 LogisticRegression with RobustScalar
를 특정 알고리즘으로 사용하는 특정 실행에 대해 다음 출력을 반환합니다.
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}
클래스 확률 예측
AutoML을 사용하여 생성된 모델에는 모두 오픈 소스 원본 클래스의 기능을 미러링하는 래퍼 개체가 있습니다. AutoML에서 반환된 대부분의 분류 모델 래퍼 객체는 predict_proba()
함수를 구현합니다. 이 함수는 특징(X 값)의 배열 또는 스파스 행렬 형태의 데이터 샘플을 받아 각 샘플과 해당 클래스 확률의 n차원 배열을 반환합니다.
동일한 호출을 사용하여 가장 적합한 실행과 맞춤 모델을 검색했다면 맞춤 모델에서 직접 predict_proba()
를 호출하고 모델 유형에 맞는 적절한 형식으로 X_test
를 입력할 수 있습니다.
best_run, fitted_model = automl_run.get_output()
class_prob = fitted_model.predict_proba(X_test)
기본 모델이 predict_proba()
함수를 지원하지 않거나 형식이 잘못된 경우 모델 클래스 관련 예외가 throw됩니다. 이 함수를 다른 모델 유형에 맞게 구현하는 방법의 예제는 RandomForestClassifier 및 XGBoost 참조 문서에서 확인할 수 있습니다.
AutoML의 BERT 통합
BERT(변환기)의 양방향 인코더 표현 은 AutoML의 기능화 계층에서 사용됩니다. 이 레이어에서 열에 자유 텍스트 또는 타임 스탬프 또는 단순 숫자와 같은 다른 유형의 데이터가 포함된 경우 그에 따라 기능화가 적용됩니다.
BERT의 경우 모델은 사용자가 제공한 레이블을 활용하여 미세 조정되고 학습됩니다. 여기에서 문서 임베딩은 타임 스탬프 기반 기능, 요일 등과 같이 다른 기능과 함께 특징으로 생성됩니다.
Python을 사용하여 자연어 처리 모델을 학습하도록 AutoML을 설정하는 방법을 알아봅니다.
BERT 호출 단계
BERT를 호출하려면 사용자의 enable_dnn: True
에 automl_settings
를 설정하고, GPU 컴퓨팅(vm_size = "STANDARD_NC6"
또는 그 이상의 GPU)을 사용하십시오. CPU 계산을 사용하는 경우에는 BERT 대신 AutoML이 BiLSTM DNN 특징 추출기를 사용하도록 설정합니다.
AutoML은 BERT에 대해 다음 단계를 수행합니다.
모든 텍스트 열을 전처리하고 토큰화합니다. 예를 들어
StringCast
변환기는 최종 모델의 기능화 요약에서 찾을 수 있습니다. 모델의 기능화 요약을 생성하는 방법의 예는 이 Jupyter Notebook에서 찾을 수 있습니다.모든 텍스트 열을 단일 텍스트 열로 연결하므로 최종 모델에서 이를 사용합니다.
BERT 구현에서는 학습 샘플의 총 텍스트 길이를 128토큰으로 제한합니다. 즉, 연결될 때 모든 텍스트 열 길이는 이상적으로 최대 128토큰이어야 합니다. 여러 열이 있는 경우 이 조건이 충족되도록 각 열을 정리해야 합니다. 그렇지 않으면 BERT의 토크나이저 레이어가 128토큰을 초과하는 길이의 연결된 열에 대하여 해당 입력을 128개 토큰으로 자릅니다.
기능 비우기의 일환으로 자동화된 Machine Learning은 BERT를 데이터 샘플의 기준선(단어 모음 기능)과 비교합니다. 이 비교는 BERT에서 정확성을 향상시킬 수 있는지 여부를 결정합니다. BERT가 기준선보다 더 나은 성능을 제공하는 경우 자동화된 Machine Learning은 전체 데이터의 텍스트 기능화에 BERT를 사용합니다. 이 경우 최종 모델에
PretrainedTextDNNTransformer
가 표시됩니다.
BERT는 일반적으로 다른 특성 추출기보다 오래 실행됩니다. 성능을 향상시키려면 RDMA 기능에 STANDARD_NC24r 또는 STANDARD_NC24rs_V3을 사용하는 것이 좋습니다.
AutoML은 사용할 수 있는 경우 BERT 학습을 여러 노드에 배포합니다(최대 8개 노드). AutoMLConfig
매개 변수를 1보다 높게 설정하여 max_concurrent_iterations
개체에서 수행할 수 있습니다.
BERT에 지원되는 언어
AutoML은 현재 약 100개 언어를 지원합니다. 데이터 세트의 언어에 따라 AutoML은 적절한 BERT 모델을 선택합니다. 독일어 데이터의 경우 독일어 BERT 모델을 사용합니다. 영어의 경우 영어 BERT 모델을 사용합니다. 다른 모든 언어의 경우 다국어 BERT 모델을 사용합니다.
다음 코드에서는 데이터 세트 언어가 deu
에 따라 독일어에 대한 세 글자 언어 코드로 지정되기 때문에 독일어 BERT 모델이 트리거됩니다.
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
}