다음을 통해 공유


LbfgsMaximumEntropyMulticlassTrainer 클래스

정의

IEstimator<TTransformer> L-BFGS 메서드로 학습된 최대 엔트로피 다중 클래스 분류자를 사용하여 대상을 예측하는 것입니다.

public sealed class LbfgsMaximumEntropyMulticlassTrainer : Microsoft.ML.Trainers.LbfgsTrainerBase<Microsoft.ML.Trainers.LbfgsMaximumEntropyMulticlassTrainer.Options,Microsoft.ML.Data.MulticlassPredictionTransformer<Microsoft.ML.Trainers.MaximumEntropyModelParameters>,Microsoft.ML.Trainers.MaximumEntropyModelParameters>
type LbfgsMaximumEntropyMulticlassTrainer = class
    inherit LbfgsTrainerBase<LbfgsMaximumEntropyMulticlassTrainer.Options, MulticlassPredictionTransformer<MaximumEntropyModelParameters>, MaximumEntropyModelParameters>
Public NotInheritable Class LbfgsMaximumEntropyMulticlassTrainer
Inherits LbfgsTrainerBase(Of LbfgsMaximumEntropyMulticlassTrainer.Options, MulticlassPredictionTransformer(Of MaximumEntropyModelParameters), MaximumEntropyModelParameters)
상속

설명

이 트레이너를 만들려면 LbfgsMaximumEntropy 또는 LbfgsMaximumEntropy(옵션)를 사용합니다.

입력 및 출력 열

입력 레이블 열 데이터는 형식이어야 하며 기능 열은 알려진 크기의 벡터 Single여야 합니다.

이 트레이너는 다음 열을 출력합니다.

출력 열 이름 열 유형 설명
Score Single 벡터 모든 클래스의 점수. 값이 높을수록 연결된 클래스에 해당할 가능성이 높습니다. i번째 요소의 값이 가장 크다면 예측된 레이블 인덱스는 i가 됩니다. i는 0부터 시작하는 인덱스입니다.
PredictedLabel 형식 예측된 레이블의 인덱스입니다. 값이 i라면 실제 레이블은 키 값 입력 레이블 형식에서 i번째 범주입니다.

트레이너 특성

기계 학습 작업 다중 클래스 분류
정규화가 필요한가요?
캐싱이 필요한가요? 아니요
Microsoft.ML 외에도 필요한 NuGet 없음
ONNX로 내보낼 수 있습니다.

점수 매기기 함수

최대 엔트로피 모델은 선형 로지스틱 회귀의 일반화입니다. 최대 엔트로피 모델과 로지스틱 회귀 간의 주요 차이점은 고려된 분류 문제에서 지원되는 클래스의 수입니다. 로지스틱 회귀는 이진 분류에만 해당하지만 최대 엔트로피 모델은 여러 클래스를 처리합니다. 자세한 소개는 이 문서의 섹션 1을 참조하세요.

클래스 수가 $m$이고 기능 수가 $$n 가정합니다. 최대 엔트로피 모델은 $c$-th 클래스에 계수 벡터 $\textbf{w}_c \in {\mathbb R}^n$ 및 {\mathbb R}$의 바이어스 $b_c \를 $c=1,\dots,m$에 할당합니다. 기능 벡터 $\textbf{x} \in {\mathbb R}^n$이면 $c$-th 클래스의 점수는 $\hat{y}^c = \textbf{w}_c^T \textbf{x} + b_c$입니다. 클래스 $c$에 속하는 $\textbf{x}$의 확률은 $\tilde{P}(c | \textbf{x}) = \frac{ e^{\hat{y}^c} }{ \sum_{c' = 1}^m e^{\hat{y}^{c'}}}$로 정의됩니다. $P(c, \textbf{ x})$가 $c$ 및 $\textbf{x}$를 볼 확률을 나타냅니다. 이 트레이너에 의해 최소화된 손실 함수는 음의 로그 가능성 함수인 $-\sum_{c = 1}^m P(c, \textbf{ x}) \log \tilde{P}(c | \textbf{x}) $입니다.

학습 알고리즘 세부 정보

구현된 최적화 기술은 제한된 메모리 Broyden-Fletcher-Goldfarb-Shanno 메서드(L-BFGS)를 기반으로 합니다. L-BFGS는 Hessian 행렬의 값비싼 계산을 근사값으로 대체하는 준 뉴턴 메서드이지만 여전히 전체 헤시안 매트릭스가 계산되는 뉴턴의 메서드 와 같은 빠른 수렴 속도를 즐깁니다. L-BFGS 근사값은 제한된 양의 기록 상태만 사용하여 다음 단계 방향을 계산하므로, 특히 고차원 기능 벡터의 문제에 적합합니다. 기록 상태의 수는 사용자 지정 매개 변수입니다. 더 많은 수를 사용하면 Hessian 행렬의 근사값이 향상될 뿐만 아니라 단계당 계산 비용도 높아질 수 있습니다.

이 클래스는 경험적 위험 최소화 (즉, ERM)를 사용하여 수집된 데이터에 기반한 최적화 문제를 작성합니다. 경험적 위험은 일반적으로 수집된 데이터 요소에 대한 모델의 예측에 손실 함수를 적용하여 측정됩니다. 학습 데이터에 충분한 데이터 요소가 없는 경우(예: $n$차원 공간에서 선형 모델을 학습하려면 $n$ 이상의 데이터 요소가 필요함) ERM에서 생성된 모델이 학습 데이터를 설명하는 데 적합하지만 보이지 않는 이벤트에서 올바른 결과를 예측하지 못할 수 있도록 과잉 맞춤 이 발생할 수 있습니다. 정규화 는 모델 매개 변수의 크기(일반적으로 표준 함수에 의해 측정됨)를 처벌하여 이러한 현상을 완화하는 일반적인 기술입니다. 이 트레이너는 LASSO(LASSO)의 선형 조합을 처벌하는 탄력적 net 정규화를 지원합니다|| \textbf{w}_c || _1$, L2-norm(ridge), $|| \textbf{w}_c || $c=1,\dots,m$에 대한 _2^2$ 정규화 L1-norm 및 L2-norm 정규화는 특정 측면에서 보완적인 다양한 효과와 용도를 가집니다.

구현된 최적화 알고리즘과 함께 L1-norm 정규화는 모델 가중치 $\textbf{w}_1,\dots,\textbf{w}_m$의 스파스를 증가시킬 수 있습니다. 고차원 및 스파스 데이터 세트의 경우 사용자가 L1-norm의 계수를 신중하게 선택하는 경우 예측 성능에 영향을 주지 않고 0이 아닌 가중치(예: 총 모델 가중치의 1%)만 있는 모델을 사용하여 좋은 예측 품질을 얻을 수 있습니다. 반면, L2-norm은 학습된 모델의 스파스를 늘릴 수 없지만 큰 매개 변수 값을 방지하여 과잉 맞춤을 방지할 수 있습니다. 경우에 따라 L2-norm을 사용하면 더 나은 예측 품질이 발생하므로 사용자는 여전히 이를 시도하고 L1-norm 및 L2-norm 계수를 미세 조정할 수 있습니다. 개념적으로 L1-norm을 사용하면 모든 모델 매개 변수의 분포가 Laplace 분포 인 반면 L2-norm은 가우스 분포 를 의미합니다.

적극적인 정규화(즉, L1-norm 또는 L2-norm 정규화 용어에 큰 계수를 할당)는 모델에서 중요한 변수를 제외하여 예측 용량에 해를 끼칠 수 있습니다. 예를 들어 매우 큰 L1-norm 계수는 모든 매개 변수를 0으로 강제 적용하여 사소한 모델로 이어질 수 있습니다. 따라서 올바른 정규화 계수를 선택하는 것이 실제로 중요합니다.

사용 예제에 대한 링크는 참고 섹션을 확인하세요.

필드

FeatureColumn

트레이너가 기대하는 기능 열입니다.

(다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>)
LabelColumn

트레이너가 기대하는 레이블 열입니다. null수 있습니다. 이는 레이블이 학습에 사용되지 않음을 나타냅니다.

(다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>)
WeightColumn

트레이너가 기대하는 체중 열입니다. 가중치가 학습에 사용되지 않음을 나타내는 일 수 null있습니다.

(다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>)

속성

Info

IEstimator<TTransformer> L-BFGS 메서드로 학습된 최대 엔트로피 다중 클래스 분류자를 사용하여 대상을 예측하는 것입니다.

(다음에서 상속됨 LbfgsTrainerBase<TOptions,TTransformer,TModel>)

메서드

Fit(IDataView, MaximumEntropyModelParameters)

이미 학습된 modelParametersMulticlassPredictionTransformer<TModel>using의 학습을 LbfgsMaximumEntropyMulticlassTrainer 계속하고 .

Fit(IDataView)

를 학습하고 반환합니다 ITransformer.

(다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>)
GetOutputSchema(SchemaShape)

IEstimator<TTransformer> L-BFGS 메서드로 학습된 최대 엔트로피 다중 클래스 분류자를 사용하여 대상을 예측하는 것입니다.

(다음에서 상속됨 TrainerEstimatorBase<TTransformer,TModel>)

확장 메서드

AppendCacheCheckpoint<TTrans>(IEstimator<TTrans>, IHostEnvironment)

추정기 체인에 '캐싱 검사점'을 추가합니다. 이렇게 하면 다운스트림 추정기가 캐시된 데이터에 대해 학습됩니다. 여러 데이터 전달을 수행하는 트레이너 앞에 캐싱 검사점이 있는 것이 좋습니다.

WithOnFitDelegate<TTransformer>(IEstimator<TTransformer>, Action<TTransformer>)

추정기가 지정된 경우 호출된 대리 Fit(IDataView) 자를 호출할 래핑 개체를 반환합니다. 예측 도구가 적합한 항목에 대한 정보를 반환하는 것이 중요한 경우가 많습니다. 따라서 Fit(IDataView) 메서드는 일반 ITransformer개체가 아닌 구체적으로 형식화된 개체를 반환합니다. 그러나 동시에 IEstimator<TTransformer> 개체가 많은 파이프라인으로 형성되는 경우가 많으므로 변환기를 가져올 추정기가 이 체인의 어딘가에 묻혀 있는 위치를 통해 EstimatorChain<TLastTransformer> 추정기 체인을 빌드해야 할 수 있습니다. 이 시나리오에서는 이 메서드를 통해 fit이 호출되면 호출될 대리자를 연결할 수 있습니다.

적용 대상

추가 정보