trainingOptions
딥러닝 신경망 훈련 옵션
설명
은 options
= trainingOptions(solverName
)solverName
으로 지정된 최적화 함수에 대한 훈련 옵션을 반환합니다. 신경망을 훈련시키려면 훈련 옵션을 trainnet
함수의 입력 인수로 사용하십시오.
는 하나 이상의 이름-값 인수로 지정된 추가 옵션을 사용하여 훈련 옵션을 반환합니다.options
= trainingOptions(solverName
,Name=Value
)
예제
훈련 옵션 지정하기
모멘텀을 사용한 확률적 경사하강법을 이용해 신경망을 훈련시키는 옵션 세트를 만듭니다. Epoch 5회마다 학습률을 0.2배만큼 줄입니다. 훈련을 진행할 최대 Epoch 횟수를 20으로 설정하고, 각 반복마다 64개의 관측값을 갖는 미니 배치를 사용합니다. 훈련 진행 상황 플롯을 켭니다.
options = trainingOptions("sgdm", ... LearnRateSchedule="piecewise", ... LearnRateDropFactor=0.2, ... LearnRateDropPeriod=5, ... MaxEpochs=20, ... MiniBatchSize=64, ... Plots="training-progress")
options = TrainingOptionsSGDM with properties: Momentum: 0.9000 InitialLearnRate: 0.0100 MaxEpochs: 20 LearnRateSchedule: 'piecewise' LearnRateDropFactor: 0.2000 LearnRateDropPeriod: 5 MiniBatchSize: 64 Shuffle: 'once' CheckpointFrequency: 1 CheckpointFrequencyUnit: 'epoch' SequenceLength: 'longest' PreprocessingEnvironment: 'serial' L2Regularization: 1.0000e-04 GradientThresholdMethod: 'l2norm' GradientThreshold: Inf Verbose: 1 VerboseFrequency: 50 ValidationData: [] ValidationFrequency: 50 ValidationPatience: Inf ObjectiveMetricName: 'loss' CheckpointPath: '' ExecutionEnvironment: 'auto' OutputFcn: [] Metrics: [] Plots: 'training-progress' SequencePaddingValue: 0 SequencePaddingDirection: 'right' InputDataFormats: "auto" TargetDataFormats: "auto" ResetInputNormalization: 1 BatchNormalizationStatistics: 'auto' OutputNetwork: 'auto' Acceleration: "auto"
딥러닝 훈련 진행 상황 모니터링하기
이 예제에서는 딥러닝 신경망의 훈련 진행 상황을 모니터링하는 방법을 보여줍니다.
딥러닝을 위해 신경망을 훈련시킬 때, 훈련 중에 다양한 메트릭을 플로팅하면 훈련이 어떻게 진행되고 있는지 알 수 있습니다. 예를 들어, 신경망 정확도가 향상되고 있는지, 향상되는 속도는 어느 정도인지, 신경망이 훈련 데이터를 과적합하기 시작하고 있는지 등을 확인할 수 있습니다.
이 예제에서는 trainnet
함수를 사용하여 훈련된 신경망의 훈련 진행 상황을 모니터링하는 방법을 보여줍니다. 사용자 지정 훈련 루프를 사용하여 신경망을 훈련시키는 경우 trainingProgressMonitor
객체를 대신 사용하여 훈련 중에 메트릭을 플로팅합니다. 자세한 내용은 Monitor Custom Training Loop Progress 항목을 참조하십시오.
trainingOptions
에서 Plots
훈련 옵션을 "training-progress"
로 설정하고 신경망 훈련을 시작하면 trainnet
함수는 Figure를 만들고 각 반복에서 훈련 메트릭을 표시합니다. 각 반복은 기울기의 추정값이자 신경망 파라미터의 업데이트입니다. trainingOptions
에 검증 데이터를 지정하면 trainnet
이 신경망을 검증할 때마다 Figure에 검증 메트릭이 표시됩니다. Figure에는 손실과 Metrics
이름-값 옵션으로 지정된 메트릭이 플로팅됩니다. 기본적으로 플롯에는 선형 스케일이 사용됩니다. y축에 로그 스케일을 지정하려면 좌표축 도구 모음에서 로그 스케일 버튼을 선택합니다.
훈련 중에 오른쪽 위 코너에 있는 중지 버튼을 클릭하면 훈련을 중지하고 신경망의 현재 상태를 반환할 수 있습니다. 중지 버튼을 클릭하면 훈련이 완료되기까지 얼마간의 시간이 걸릴 수 있습니다. 훈련이 완료되면 trainnet
은 훈련된 신경망을 반환합니다.
메트릭 값이 최적 검증으로 나온 반복에 해당하는 최종 값을 얻으려면 OutputNetwork
훈련 옵션을 "best-validation"
으로 지정하십시오. 여기서 최적화되는 메트릭은 ObjectiveMetricName
훈련 옵션으로 지정됩니다. 마지막 훈련 반복에 해당하는 최종 메트릭을 얻으려면 OutputNetwork
훈련 옵션을 "last-iteration"
으로 지정하십시오.
창의 오른쪽에서 훈련 시간과 설정에 대한 정보를 확인합니다. 훈련 옵션에 대한 자세한 내용은 파라미터를 설정하고 컨벌루션 신경망 훈련시키기 항목을 참조하십시오.
훈련 진행 상황 플롯을 저장하려면 훈련 창에서 영상으로 내보내기를 클릭하십시오. 플롯은 PNG, JPEG, TIFF 또는 PDF 파일로 저장할 수 있습니다. 좌표축 도구 모음을 사용하여 개별 플롯을 저장할 수도 있습니다.
훈련 중에 훈련 진행 상황 플로팅하기
신경망을 훈련시키고 훈련 중에 훈련 진행 상황을 플로팅합니다.
MAT 파일 DigitsDataTrain.mat
및 DigitsDataTest
.mat
에서 훈련 데이터와 테스트 데이터를 각각 불러옵니다. 훈련 및 테스트 데이터 세트는 각각 5,000개의 영상을 포함합니다.
load DigitsDataTrain.mat load DigitsDataTest.mat
dlnetwork
객체를 만듭니다.
net = dlnetwork;
분류 가지의 계층을 지정한 후 신경망에 추가합니다.
layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3,8,Padding="same") batchNormalizationLayer reluLayer maxPooling2dLayer(2,Stride=2) convolution2dLayer(3,16,Padding="same") batchNormalizationLayer reluLayer maxPooling2dLayer(2,Stride=2) convolution2dLayer(3,32,Padding="same") batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer]; net = addLayers(net,layers);
신경망 훈련 옵션을 지정합니다. 훈련 중에 규칙적인 간격으로 신경망을 검증하려면 검증 데이터를 지정하십시오. 정확도와 F-점수에 대한 메트릭 값을 기록합니다. 훈련 중에 훈련 진행 상황을 플로팅하려면 Plots
훈련 옵션을 "training-progress"
로 설정하십시오.
options = trainingOptions("sgdm", ... MaxEpochs=8, ... Metrics = ["accuracy","fscore"], ... ValidationData={XTest,labelsTest}, ... ValidationFrequency=30, ... Verbose=false, ... Plots="training-progress");
신경망을 훈련시킵니다.
net = trainnet(XTrain,labelsTrain,net,"crossentropy",options);
메트릭을 사용하여 훈련을 조기 중지하기
훈련을 조기 중지하고 해당 최적 신경망을 반환하고자 할 때 메트릭을 사용합니다.
숫자 영상 5,000개를 포함하는 훈련 데이터를 불러옵니다. 신경망 검증을 위해 영상 1,000개를 남겨 둡니다.
[XTrain,YTrain] = digitTrain4DArrayData; idx = randperm(size(XTrain,4),1000); XValidation = XTrain(:,:,:,idx); XTrain(:,:,:,idx) = []; YValidation = YTrain(idx); YTrain(idx) = [];
숫자 영상 데이터를 분류할 신경망을 구성합니다.
net = dlnetwork;
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(3,8,Padding="same")
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer];
net = addLayers(net,layers);
다음과 같이 훈련 옵션을 지정합니다.
훈련에 SGDM 솔버를 사용합니다.
검증 데이터와 검증 빈도를 지정하여 훈련 성능을 모니터링합니다.
훈련 중에 정확도와 재현율을 추적합니다. 최적의 재현율 값을 가지는 신경망을 반환하려면
"recall"
을 목적 메트릭으로 지정하고 출력 신경망을"best-validation"
으로 설정하십시오.검증 인내도를 5로 지정하여 재현율이 5회 반복 동안 감소하지 않으면 훈련이 중지되도록 합니다.
신경망 훈련 진행 상황 플롯을 시각화합니다.
세부 정보가 출력되지 않도록 합니다.
options = trainingOptions("sgdm", ... ValidationData={XValidation,YValidation}, ... ValidationFrequency=35, ... ValidationPatience=5, ... Metrics=["accuracy","recall"], ... ObjectiveMetricName="recall", ... OutputNetwork="best-validation", ... Plots="training-progress", ... Verbose=false);
신경망을 훈련시킵니다.
net = trainnet(XTrain,YTrain,net,"crossentropy",options);
입력 인수
solverName
— 신경망 훈련에 사용할 솔버
"sgdm"
| "rmsprop"
| "adam"
| "lbfgs"
(R2023b 이후) | "lm"
(R2024b 이후)
신경망 훈련에 사용할 솔버로, 다음 값 중 하나로 지정됩니다.
"sgdm"
— SGDM(모멘텀을 사용한 확률적 경사하강법). SGDM은 확률적 솔버입니다. 추가 훈련 옵션은 확률적 솔버 옵션 항목을 참조하십시오. 자세한 내용은 모멘텀을 사용한 확률적 경사하강법 항목을 참조하십시오."rmsprop"
— RMSProp(RMS 전파). RMSProp는 확률적 솔버입니다. 추가 훈련 옵션은 확률적 솔버 옵션 항목을 참조하십시오. 자세한 내용은 RMS 전파 항목을 참조하십시오."adam"
— Adam(적응적 모멘트 추정). Adam은 확률적 솔버입니다. 추가 훈련 옵션은 확률적 솔버 옵션 항목을 참조하십시오. 자세한 내용은 적응적 모멘트 추정 항목을 참조하십시오."lbfgs"
(R2023b 이후) — L-BFGS(메모리 제한 Broyden–Fletcher–Goldfarb–Shanno). L-BFGS는 배치 솔버입니다. 단일 배치로 처리할 수 있는 소규모 신경망 및 데이터 세트에는 L-BFGS 알고리즘을 사용하십시오. 추가 훈련 옵션은 배치 솔버 옵션 항목을 참조하십시오. 자세한 내용은 메모리 제한 BFGS 항목을 참조하십시오."lm"
(R2024b 이후) — Levenberg–Marquardt(LM). LM은 배치 솔버입니다. LM 알고리즘은 학습 가능한 파라미터의 개수가 적은 회귀 신경망에 사용하며, 이 경우 데이터 세트를 단일 배치로 처리할 수 있습니다.solverName
이"lm"
인 경우trainnet
함수의lossFcn
인수는"mse"
또는"l2loss"
여야 합니다. 추가 훈련 옵션은 배치 솔버 옵션 항목을 참조하십시오. 자세한 내용은 Levenberg–Marquardt 항목을 참조하십시오.
trainBERTDocumentClassifier
(Text Analytics Toolbox) 함수는 "sgdm"
, "rmsprop"
및 "adam"
솔버만 지원합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: Plots="training-progress",Metrics="accuracy",Verbose=false
는 세부 정보 출력을 비활성화하고 정확도 메트릭까지 포함된 플롯에 훈련 진행 상황을 표시하도록 지정합니다.
Plots
— 신경망 훈련 중에 표시할 플롯
"none"
(디폴트 값) | "training-progress"
신경망 훈련 중에 표시할 플롯으로, 다음 값 중 하나로 지정됩니다.
"none"
— 훈련 중에 플롯을 표시하지 않습니다."training-progress"
— 훈련 진행 상황을 플로팅합니다.
플롯의 내용은 사용하는 솔버에 따라 다릅니다.
solverName
인수가"sgdm"
,"adam"
또는"rmsprop"
인 경우, 플롯은Metrics
옵션으로 지정된 미니 배치 손실, 검증 손실, 훈련 미니 배치 및 검증 메트릭, 그리고 훈련 진행 상황에 대한 추가 정보를 보여줍니다.solverName
인수가"lbfgs"
또는"lm"
인 경우, 플롯은Metrics
옵션으로 지정된 훈련 및 검증 손실, 훈련 및 검증 메트릭, 그리고 훈련 진행 상황에 대한 추가 정보를 보여줍니다.
훈련 후 훈련 진행 상황 플롯을 프로그래밍 방식으로 열고 닫으려면 trainnet
함수의 두 번째 출력값을 show
함수와 close
함수에 사용하십시오. Plots
훈련 옵션이 "none"
으로 지정된 경우에도 show
함수를 사용하여 훈련 진행 상황을 볼 수 있습니다.
y축 스케일을 로그로 전환하려면 좌표축 도구 모음을 사용하십시오.
플롯에 대한 자세한 내용은 딥러닝 훈련 진행 상황 모니터링하기 항목을 참조하십시오.
Metrics
— 모니터링할 메트릭
[]
(디폴트 값) | 문자형 벡터 | string형 배열 | 함수 핸들 | deep.DifferentiableFunction
객체 (R2024a 이후) | 셀형 배열 | 메트릭 객체
R2023b 이후
모니터링할 메트릭으로, 다음 값 중 하나로 지정됩니다.
내장 메트릭 또는 손실 함수 이름 — 메트릭을 string형 스칼라, 문자형 벡터 또는 다음 이름 중 하나 이상으로 구성된 셀형 배열이나 string형 배열로 지정합니다.
메트릭:
"accuracy"
— 정확도(top-1 정확도라고도 함)"auc"
— ROC 곡선 아래 면적(AUC)"fscore"
— F-점수(F1-점수라고도 함)"precision"
— 정밀도"recall"
— 재현율"rmse"
— RMS 오차"mape"
— 평균절대백분율오차(MAPE) (R2024b 이후)
손실 함수:
"crossentropy"
— 분류 작업의 교차 엔트로피 손실. (R2024b 이후)"indexcrossentropy"
— 분류 작업의 인덱스 교차 엔트로피 손실. (R2024b 이후)"binary-crossentropy"
— 이진 분류 작업 및 다중 레이블 분류 작업의 이진 교차 엔트로피 손실. (R2024b 이후)"mae"
/"mean-absolute-error"
/"l1loss"
— 회귀 작업의 평균절대오차. (R2024b 이후)"mse"
/"mean-squared-error"
/"l2loss"
— 회귀 작업의 평균제곱오차. (R2024b 이후)"huber"
— 회귀 작업의 Huber 손실 (R2024b 이후)
손실 함수를
"crossentropy"
로 설정하고"index-crossentropy"
를 메트릭으로 지정하거나, 손실 함수를"index-crossentropy"
로 설정하고"crossentropy"
를 메트릭으로 지정하는 것은 지원되지 않습니다.
내장 메트릭 객체 — 더 많은 유연성이 필요한 경우 내장 메트릭 객체를 사용할 수 있습니다. 다음과 같은 내장 메트릭 객체가 지원됩니다.
내장 메트릭 객체를 만들 때 평균화 유형이나 단일 레이블 작업으로 할지 다중 레이블 작업으로 할지 등의 추가 옵션을 지정할 수 있습니다.
사용자 지정 메트릭 함수 핸들 — 필요한 메트릭이 내장 메트릭이 아닌 경우 함수 핸들을 사용하여 사용자 지정 메트릭을 지정할 수 있습니다. 함수의 구문은
metric = metricFunction(Y,T)
여야 합니다. 여기서Y
는 신경망 예측값에 대응되고T
는 목표 응답에 대응됩니다. 출력값이 여러 개인 신경망의 경우 구문은metric = metricFunction(Y1,…,YN,T1,…TM)
이어야 합니다. 여기서N
은 출력값 개수이고M
은 목표값 개수입니다. 자세한 내용은 Define Custom Metric Function 항목을 참조하십시오.참고
데이터가 미니 배치로 나뉜 경우, 각 미니 배치에 대한 메트릭을 계산한 다음 해당 값들의 평균을 반환합니다. 일부 메트릭의 경우 이 동작으로 인해 전체 데이터 세트를 한 번에 사용하여 메트릭을 계산하는 경우와 다른 메트릭 값이 생성될 수 있습니다. 대부분의 경우 값은 비슷합니다. 데이터에 대해 배치 평균 메트릭이 아닌 사용자 지정 메트릭을 사용하려면 사용자 지정 메트릭 객체를 만들어야 합니다. 자세한 내용은 Define Custom Deep Learning Metric Object 항목을 참조하십시오.
deep.DifferentiableFunction
객체 (R2024a 이후) — 사용자 지정 역방향 함수를 갖는 함수 객체. categorical형 목표값의 경우 categorical형 값은 one-hot 형식으로 인코딩된 벡터로 자동으로 변환된 다음 메트릭 함수에 전달됩니다. 자세한 내용은 Define Custom Deep Learning Operations 항목을 참조하십시오.사용자 지정 메트릭 객체 — 더 많은 사용자 지정이 필요한 경우 사용자 지정 메트릭 객체를 정의할 수 있습니다. 사용자 지정 메트릭을 만드는 방법을 보여주는 예제는 Define Custom Metric Object 항목을 참조하십시오. 사용자 지정 메트릭 만들기에 대한 일반적인 내용은 Define Custom Deep Learning Metric Object 항목을 참조하십시오.
메트릭을 함수 핸들, deep.DifferentiableFunction
객체 또는 사용자 지정 메트릭 객체로 지정하고 trainnet
함수를 사용하여 신경망을 훈련시키는 경우, 메트릭에 전달되는 목표값의 레이아웃은 목표값의 데이터형, trainnet
함수에 지정한 손실 함수 및 사용자가 지정한 기타 메트릭에 따라 달라집니다.
목표값이 숫자형 배열인 경우 목표값은 메트릭에 직접 전달됩니다.
손실 함수가
"index-crossentropy"
이고 목표값이 categorical형 배열인 경우 목표값은 숫자형 클래스 인덱스로 자동으로 변환된 다음 메트릭에 전달됩니다.다른 손실 함수의 경우 목표값이 categorical형 배열이면 목표값은 one-hot 형식으로 인코딩된 벡터로 자동으로 변환된 다음 메트릭에 전달됩니다.
이 옵션은 trainnet
함수와 trainBERTDocumentClassifier
(Text Analytics Toolbox) 함수만 지원합니다.
예: Metrics=["accuracy","fscore"]
예: Metrics={"accuracy",@myFunction,precisionObj}
ObjectiveMetricName
— 목적 메트릭의 이름
"loss"
(디폴트 값) | string형 스칼라 | 문자형 벡터
R2024a 이후
조기 중지의 기준으로 사용하거나 최적의 신경망을 반환하는 데 사용할 목적 메트릭의 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다.
메트릭 이름은 "loss"
이거나 Metrics
인수로 지정된 메트릭의 이름과 일치해야 합니다. 함수 핸들을 사용하여 지정된 메트릭은 지원되지 않습니다. ObjectiveMetricName
값을 사용자 지정 메트릭의 이름으로 지정하려면 사용자 지정 메트릭 객체의 Maximize
속성값이 비어 있지 않아야 합니다. 자세한 내용은 Define Custom Deep Learning Metric Object 항목을 참조하십시오.
조기 중지를 위한 목적 메트릭을 지정하는 방법에 대한 자세한 내용은 ValidationPatience
항목을 참조하십시오. 목적 메트릭을 사용하여 최적의 신경망을 반환하는 방법에 대한 자세한 내용은 OutputNetwork
항목을 참조하십시오.
데이터형: char
| string
Verbose
— 훈련 진행 상황 정보를 표시할지 지정하는 플래그
1
(true
) (디폴트 값) | 0
(false
)
명령 창에 훈련 진행 상황 정보를 표시할지 지정하는 플래그로, 1
(true
) 또는 0
(false
)으로 지정됩니다.
상세 출력값의 내용은 솔버 유형에 따라 다릅니다.
확률적 솔버(SGDM, Adam 및 RMSProp)의 경우 테이블에는 다음 변수가 포함됩니다.
변수 | 설명 |
---|---|
Iteration | 반복 횟수. |
Epoch | Epoch 횟수. |
TimeElapsed | 시, 분, 초 단위의 경과된 시간. |
LearnRate | 학습률. |
TrainingLoss | 훈련 손실. |
ValidationLoss | 검증 손실. 검증 데이터를 지정하지 않은 경우에는 이 정보를 표시하지 않습니다. |
배치 솔버(L-BFGS 및 LM)의 경우 테이블에는 다음 변수가 포함됩니다.
변수 | 설명 |
---|---|
Iteration | 반복 횟수. |
TimeElapsed | 시, 분, 초 단위의 경과된 시간. |
TrainingLoss | 훈련 손실. |
ValidationLoss | 검증 손실. 검증 데이터를 지정하지 않은 경우에는 이 정보를 표시하지 않습니다. |
GradientNorm | 기울기의 노름. |
StepNorm | 스텝의 노름. |
훈련 옵션에서 추가 메트릭을 지정하면 상세 출력값에도 표시됩니다. 예를 들어 Metrics
훈련 옵션을 "accuracy"
로 설정하면 정보에 TrainingAccuracy
변수와 ValidationAccuracy
변수가 포함됩니다.
훈련이 중지될 때 상세 출력값은 중지 이유를 표시합니다.
검증 데이터를 지정하려면 ValidationData
훈련 옵션을 사용하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
VerboseFrequency
— 상세 출력의 빈도
50
(디폴트 값) | 양의 정수
상세 출력의 빈도, 즉 명령 창에 출력하기까지 진행할 반복 횟수로, 양의 정수로 지정됩니다.
훈련 중에 신경망을 검증하는 경우, 검증이 실시될 때마다 명령 창에도 출력합니다.
이 속성을 활성화하려면 Verbose
훈련 옵션을 1
(true
)로 설정하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
OutputFcn
— 출력 함수
함수 핸들 | 함수 핸들로 구성된 셀형 배열
훈련 중에 호출할 출력 함수로, 함수 핸들 또는 함수 핸들로 구성된 셀형 배열로 지정됩니다. 훈련 시작 전, 각 반복 후, 훈련이 완료될 때 한 번씩 함수를 호출합니다.
함수의 구문은 stopFlag = f(info)
여야 합니다. 여기서 info
는 훈련 진행 상황에 대한 정보가 포함된 구조체이고 stopFlag
는 훈련을 조기에 중지함을 나타내는 스칼라입니다. stopFlag
가 1
(true
)인 경우 훈련을 중지합니다. 그렇지 않으면 훈련을 계속합니다.
trainnet
함수는 출력 함수에 구조체 info
를 전달합니다.
확률적 솔버(SGDM, Adam 및 RMSProp)의 경우 info
에는 다음 필드가 포함됩니다.
필드 | 설명 |
---|---|
Epoch | Epoch 횟수 |
Iteration | 반복 횟수 |
TimeElapsed | 훈련 시작 이후 경과된 시간 |
LearnRate | 반복 학습률 |
TrainingLoss | 반복 훈련 손실 |
ValidationLoss | 검증 손실(지정되어 있고, 반복 시 평가된 경우) |
State | 반복 훈련 상태로, "start" , "iteration" 또는 "done" 으로 지정됩니다. |
배치 솔버(L-BFGS 및 LM)의 경우 info
에는 다음 필드가 포함됩니다.
필드 | 설명 |
---|---|
Iteration | 반복 횟수 |
TimeElapsed | 시, 분, 초 단위의 경과된 시간 |
TrainingLoss | 훈련 손실 |
ValidationLoss | 검증 손실. 검증 데이터를 지정하지 않은 경우에는 이 정보를 표시하지 않습니다. |
GradientNorm | 기울기의 노름 |
StepNorm | 스텝의 노름 |
State | 반복 훈련 상태로, "start" , "iteration" 또는 "done" 으로 지정됩니다. |
훈련 옵션에서 추가 메트릭을 지정하면 훈련 정보에도 표시됩니다. 예를 들어 Metrics
훈련 옵션을 "accuracy"
로 설정하면 정보에 TrainingAccuracy
필드와 ValidationAccuracy
필드가 포함됩니다.
특정 필드가 계산되지 않았거나 출력 함수에 대한 특정 호출과 관련이 없는 경우, 해당 필드는 빈 배열을 포함하게 됩니다.
출력 함수를 사용하는 방법을 보여주는 예제는 Custom Stopping Criteria for Deep Learning Training 항목을 참조하십시오.
데이터형: function_handle
| cell
InputDataFormats
— 입력 데이터 차원에 대한 설명
"auto"
(디폴트 값) | string형 배열 | 문자형 벡터로 구성된 셀형 배열 | 문자형 벡터
R2023b 이후
입력 데이터 차원에 대한 설명으로, string형 배열, 문자형 벡터, 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.
InputDataFormats
가 "auto"
이면 신경망 입력에 필요한 형식이 사용됩니다. 그렇지 않으면 해당 신경망 입력에 대해 지정된 형식이 사용됩니다.
데이터 형식은 문자들로 구성된 문자열로, 각 문자는 대응되는 데이터 차원의 유형을 설명합니다.
문자는 다음을 나타냅니다.
"S"
— 공간"C"
— 채널"B"
— 배치"T"
— 시간"U"
— 지정되지 않음
예를 들어, 첫 번째, 두 번째, 세 번째 차원이 각각 채널, 관측값, 시간 스텝에 대응되는 시퀀스 배치를 포함하는 배열이 있다고 가정하겠습니다. 이 배열이 "CBT"
(채널, 배치, 시간) 형식을 갖도록 지정할 수 있습니다.
"S"
또는 "U"
레이블의 차원은 여러 개 지정할 수 있습니다. 레이블 "C"
, "B"
, "T"
는 각각 최대 한 번만 사용할 수 있습니다. 두 번째 차원 뒤의 한원소 후행 "U"
차원은 무시됩니다.
복수의 입력값이 포함된 net
을 사용하는 신경망인 경우, 입력 데이터 형식으로 구성된 배열을 지정하십시오. 여기서 InputDataFormats(i)
는 입력값 net.InputNames(i)
에 대응됩니다.
자세한 내용은 Deep Learning Data Formats 항목을 참조하십시오.
데이터형: char
| string
| cell
TargetDataFormats
— 목표 데이터 차원에 대한 설명
"auto"
(디폴트 값) | string형 배열 | 문자형 벡터로 구성된 셀형 배열 | 문자형 벡터
R2023b 이후
목표 데이터 차원에 대한 설명으로, 다음 값 중 하나로 지정됩니다.
"auto"
— 목표 데이터의 차원 수가 입력 데이터와 동일한 경우trainnet
함수는InputDataFormats
에서 지정한 형식을 사용합니다. 목표 데이터의 차원 수가 입력 데이터와 다른 경우trainnet
함수는 손실 함수에 필요한 형식을 사용합니다.string형 배열, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열 —
trainnet
함수는 사용자가 지정한 데이터 형식을 사용합니다.
데이터 형식은 문자들로 구성된 문자열로, 각 문자는 대응되는 데이터 차원의 유형을 설명합니다.
문자는 다음을 나타냅니다.
"S"
— 공간"C"
— 채널"B"
— 배치"T"
— 시간"U"
— 지정되지 않음
예를 들어, 첫 번째, 두 번째, 세 번째 차원이 각각 채널, 관측값, 시간 스텝에 대응되는 시퀀스 배치를 포함하는 배열이 있다고 가정하겠습니다. 이 배열이 "CBT"
(채널, 배치, 시간) 형식을 갖도록 지정할 수 있습니다.
"S"
또는 "U"
레이블의 차원은 여러 개 지정할 수 있습니다. 레이블 "C"
, "B"
, "T"
는 각각 최대 한 번만 사용할 수 있습니다. 두 번째 차원 뒤의 한원소 후행 "U"
차원은 무시됩니다.
자세한 내용은 Deep Learning Data Formats 항목을 참조하십시오.
데이터형: char
| string
| cell
MaxEpochs
— 최대 Epoch 횟수
30
(디폴트 값) | 양의 정수
훈련에 사용할 Epoch(데이터를 한 번 완전히 통과하는 것)의 최대 횟수로, 양의 정수로 지정됩니다.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MiniBatchSize
— 미니 배치의 크기
128
(디폴트 값) | 양의 정수
각 훈련 반복마다 사용할 미니 배치의 크기로, 양의 정수로 지정됩니다. 미니 배치는 손실 함수의 기울기를 계산하고 가중치를 업데이트하는 데 사용되는 훈련 세트의 서브셋입니다.
훈련 샘플의 개수가 미니 배치 크기로 균등하게 나뉘지 않는 경우, 각 Epoch의 최종 전체 미니 배치에 담기지 않는 훈련 데이터를 버립니다. 미니 배치 크기가 훈련 샘플의 개수보다 작으면 어떤 데이터도 버리지 않습니다.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Shuffle
— 데이터 섞기 옵션
"once"
(디폴트 값) | "never"
| "every-epoch"
데이터 섞기 옵션으로, 다음 값 중 하나로 지정됩니다.
"once"
— 훈련 전에 훈련 데이터와 검증 데이터를 1회 섞습니다."never"
— 데이터를 섞지 않습니다."every-epoch"
— 각 훈련 Epoch 전에 훈련 데이터를 섞고, 각 신경망 검증 전에 검증 데이터를 섞습니다. 훈련 샘플의 개수가 미니 배치 크기로 균등하게 나뉘지 않는 경우, 각 Epoch의 최종 전체 미니 배치에 담기지 않는 훈련 데이터를 버립니다. 매 Epoch마다 동일한 데이터가 버려지지 않도록 하려면Shuffle
훈련 옵션을"every-epoch"
로 설정하십시오.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
InitialLearnRate
— 초기 학습률
양의 스칼라
훈련에 사용할 초기 학습률로, 양의 스칼라로 지정됩니다.
학습률이 너무 낮으면 훈련 시간이 오래 걸릴 수 있습니다. 학습률이 너무 높으면 훈련이 최적의 결과보다 못한 값에 도달하거나 발산할 수 있습니다.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
solverName
이 "sgdm"
인 경우 디폴트 값은 0.01
입니다. solverName
이 "rmsprop"
또는 "adam"
인 경우 디폴트 값은 0.001
입니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LearnRateSchedule
— 학습률 조정 계획
"none"
(디폴트 값) | 문자형 벡터 | string형 배열 | 내장 학습률 조정 계획 객체 또는 사용자 지정 학습률 조정 계획 객체 | 함수 핸들 | 셀형 배열
학습률 조정 계획으로, 내장 학습률 조정 계획 이름을 나타내는 문자형 벡터 또는 string형 스칼라, 이름으로 구성된 string형 배열, 내장 학습률 조정 계획 객체 또는 사용자 지정 학습률 조정 계획 객체, 함수 핸들, 또는 이름, 메트릭 객체 및 함수 핸들로 구성된 셀형 배열로 지정됩니다.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
내장 학습률 조정 계획 이름
학습률 조정 계획을 string형 스칼라, 문자형 벡터 또는 다음 이름 중 하나 이상으로 구성된 string형 배열이나 셀형 배열로 지정합니다.
이름 | 설명 | 플롯 |
---|---|---|
"none" | 학습률 조정 계획이 없습니다. 이 조정 계획은 학습률을 일정하게 유지합니다. | |
"piecewise" | 조각별 학습률 조정 계획입니다. 이 조정 계획은 매 Epoch 10회마다 학습률을 10배만큼 낮춥니다. | |
"warmup" (R2024b 이후) | 워밍업 학습률 조정 계획입니다. 이 조정 계획은 5회 반복하는 동안 학습률을 기본 학습률까지 높입니다. | |
"polynomial" (R2024b 이후) | 다항식 학습률 조정 계획입니다. 이 조정 계획은 매 Epoch마다 유니타리 지수를 사용한 멱법칙을 적용하여 학습률을 낮춥니다. | |
"exponential" (R2024b 이후) | 지수 학습률 조정 계획입니다. 이 조정 계획은 매 Epoch마다 학습률을 10 배만큼 줄입니다. | |
"cosine" (R2024b 이후) | 코사인 학습률 조정 계획입니다. 이 조정 계획은 매 Epoch마다 코사인 공식을 사용하여 학습률을 낮춥니다. | |
"cyclical" (R2024b 이후) | 순환 학습률 조정 계획입니다. 이 조정 계획은 Epoch 10회 주기에서 처음 Epoch 5회 동안은 학습률을 기본 학습률에서 시작해 증가시키고 그다음 Epoch 5회 동안은 학습률을 줄입니다. | |
내장 학습률 조정 계획 객체 (R2024b 이후)
문자열 옵션이 제공하는 것보다 더 높은 유연성이 필요하다면 내장 학습률 조정 계획 객체를 사용할 수 있습니다.
piecewiseLearnRate
— 조각별 학습률 조정 계획 객체는 지정된 인자를 학습률에 곱하여 주기적으로 학습률을 낮춥니다. 이 객체를 사용하면 조각별 조정 계획의 감소 인자와 주기를 사용자 지정할 수 있습니다.R2024b 이전:
LearnRateDropFactor
및LearnRateDropPeriod
훈련 옵션을 사용하여 각각 조각별 감소 인자와 주기를 사용자 지정합니다.warmupLearnRate
— 워밍업 학습률 조정 계획 객체는 지정된 반복 횟수 동안 학습률을 높입니다. 이 객체를 사용하면 워밍업 조정 계획의 초기 및 최종 학습률 인자와 스텝 수를 사용자 지정할 수 있습니다.polynomialLearnRate
— 다항식 학습률 조정 계획은 멱법칙을 사용하여 학습률을 낮춥니다. 이 객체를 사용하면 다항식 조정 계획의 초기 및 최종 학습률 인자, 지수, 스텝 수를 사용자 지정할 수 있습니다.exponentialLearnRate
— 지수 학습률 조정 계획은 지정된 인자만큼 학습률을 낮춥니다. 이 객체를 사용하면 지수 조정 계획의 감소 인자와 주기를 사용자 지정할 수 있습니다.cosineLearnRate
— 코사인 학습률 조정 계획 객체는 코사인 곡선을 사용하여 학습률을 낮추고 웜 리스타트(warm restarts)를 수행합니다. 이 객체를 사용하면 코사인 조정 계획의 초기 및 최종 학습률 인자, 주기, 주기 증가율 인자를 사용자 지정할 수 있습니다.cyclicalLearnRate
— 순환 학습률 조정 계획은 학습률을 주기적으로 높이거나 낮춥니다. 이 옵션을 사용하면 순환 조정 계획의 최대 인자, 주기, 스텝 비율을 사용자 지정할 수 있습니다.
사용자 지정 학습률 조정 계획 (R2024b 이후)
유연성을 높이려면, 사용자 지정 학습률 조정 계획을 deep.LearnRateSchedule
에서 상속되는 함수 핸들 또는 사용자 지정 클래스로 정의할 수 있습니다.
사용자 지정 학습률 조정 계획 함수 핸들 — 필요한 학습률 조정 계획이 내장 학습률 조정 계획이 아닌 경우 함수 핸들을 사용하여 사용자 지정 학습률 조정 계획을 지정할 수 있습니다. 사용자 지정 조정 계획을 지정하려면
learningRate = f(baseLearningRate,epoch)
구문의 함수 핸들을 사용하십시오. 여기서baseLearningRate
는 기본 학습률이고epoch
는 Epoch 번호입니다.사용자 지정 학습률 조정 계획 객체 — 함수 핸들이 제공하는 것보다 더 높은 유연성이 필요하다면
deep.LearnRateSchedule
에서 상속되는 사용자 지정 학습률 조정 계획 클래스를 정의할 수 있습니다.
다중 학습률 조정 계획 (R2024b 이후)
복수의 조정 계획을 string형 또는 셀형 배열로 지정하여 여러 학습률 조정 계획을 결합할 수 있습니다. 이 경우 첫 번째 요소부터 순서대로 조정 계획이 적용됩니다. 최대 하나의 조정 계획은 무한할 수 있으며(예: "cyclical"
또는 NumSteps
속성이 Inf
로 설정된 객체의 경우 조정 계획이 무한히 지속됨), 이러한 무한 조정 계획은 배열의 마지막 요소여야 합니다.
Momentum
— 직전 스텝의 비중
0.9
(디폴트 값) | 0
과 1
사이의 스칼라
모멘텀을 사용한 확률적 경사하강법의 파라미터 업데이트 단계에서 현재 반복에 직전 반복이 차지하는 비중으로, 0
과 1
사이의 스칼라로 지정됩니다.
값이 0
이면 직전 스텝의 비중이 없는 것이고, 값이 1
이면 직전 스텝이 최대의 비중을 가짐을 의미합니다. 디폴트 값은 대부분의 작업에서 잘 동작합니다.
이 옵션은 SGDM 솔버만 지원합니다(solverName
인수가 "sgdm"
인 경우).
자세한 내용은 모멘텀을 사용한 확률적 경사하강법 항목을 참조하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
GradientDecayFactor
— 기울기 이동평균의 감쇠율
0.9
(디폴트 값) | 1
보다 작은 음이 아닌 스칼라
Adam 솔버에 대한 기울기 이동평균의 감쇠율로, 1
보다 작은 음이 아닌 스칼라로 지정됩니다. 기울기 감쇠율은 적응적 모멘트 추정 섹션에서 β1
로 나타냅니다.
이 옵션은 Adam 솔버만 지원합니다(solverName
인수가 "adam"
인 경우).
자세한 내용은 적응적 모멘트 추정 항목을 참조하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
SquaredGradientDecayFactor
— 제곱 기울기 이동평균의 감쇠율
1
보다 작은 음이 아닌 스칼라
Adam 솔버 및 RMSProp 솔버에 대한 제곱 기울기 이동평균의 감쇠율로, 1
보다 작은 음이 아닌 스칼라로 지정됩니다. 제곱 기울기 감쇠율은 [4]에서 β2
로 나타냅니다.
감쇠율의 일반적인 값은 0.9
, 0.99
, 0.999
로, 각각 평균 길이 10
, 100
, 1000
의 파라미터 업데이트에 대응됩니다.
이 옵션은 Adam 및 RMSProp 솔버만 지원합니다(solverName
인수가 "adam"
또는 "rmsprop"
인 경우).
Adam 솔버의 경우 디폴트 값은 0.999
입니다. RMSProp 솔버의 경우 디폴트 값은 0.9
입니다.
자세한 내용은 적응적 모멘트 추정 항목과 RMS 전파 항목을 참조하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Epsilon
— 분모 오프셋
1e-8
(디폴트 값) | 양의 스칼라
Adam 솔버 및 RMSProp 솔버에 대한 분모 오프셋으로, 양의 스칼라로 지정됩니다.
솔버는 0으로 나누기를 방지하기 위해 신경망 파라미터 업데이트에서 분모에 오프셋을 더합니다. 디폴트 값은 대부분의 작업에서 잘 동작합니다.
이 옵션은 Adam 및 RMSProp 솔버만 지원합니다(solverName
인수가 "adam"
또는 "rmsprop"
인 경우).
자세한 내용은 적응적 모멘트 추정 항목과 RMS 전파 항목을 참조하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LearnRateDropFactor
— 학습률 감소 인자
0.1
(디폴트 값) | 0
과 1
사이의 스칼라
학습률 감소 인자로, 0
과 1
사이의 스칼라로 지정됩니다. 이 옵션은 LearnRateSchedule
훈련 옵션이 "piecewise"
인 경우에만 유효합니다.
LearnRateDropFactor
는 특정 Epoch 횟수가 경과될 때마다 학습률에 적용할 승산 인자입니다. Epoch 횟수는 LearnRateDropPeriod
훈련 옵션을 사용하여 지정합니다.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
팁
조각별 학습률 조정 계획을 사용자 지정하려면 piecewiseLearnRate
객체를 사용하십시오. piecewiseLearnRate
객체는 감소 빈도를 추가로 제어하므로 LearnRateDropFactor
및 LearnRateDropPeriod
훈련 옵션보다 권장됩니다. (R2024b 이후)
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LearnRateDropPeriod
— 학습률을 낮출 Epoch의 주기
10
(디폴트 값) | 양의 정수
학습률을 낮출 Epoch의 주기로, 양의 정수로 지정됩니다. 이 옵션은 LearnRateSchedule
훈련 옵션이 "piecewise"
인 경우에만 유효합니다.
지정된 Epoch 횟수가 경과될 때마다 전역 학습률에 감소 인자를 곱합니다. 감소 인자는 LearnRateDropFactor
훈련 옵션을 사용하여 지정합니다.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
팁
조각별 학습률 조정 계획을 사용자 지정하려면 piecewiseLearnRate
객체를 사용하십시오. piecewiseLearnRate
객체는 감소 빈도를 추가로 제어하므로 LearnRateDropFactor
및 LearnRateDropPeriod
훈련 옵션보다 권장됩니다. (R2024b 이후)
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MaxIterations
— 최대 반복 횟수
1000
(디폴트 값) | 양의 정수
R2023b 이후
훈련에 사용할 최대 반복 횟수로, 양의 정수로 지정됩니다.
L-BFGS 솔버는 전체 배치 솔버입니다. 즉, 한 번의 반복으로 전체 훈련 세트를 처리합니다.
이 옵션은 배치 솔버만 지원합니다(solverName
인수가 "lbfgs"
또는 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
GradientTolerance
— 상대 기울기 허용오차
1e-5
(디폴트 값) | 양의 스칼라
R2023b 이후
상대 기울기 허용오차로, 양의 스칼라로 지정됩니다.
상대 기울기가 GradientTolerance
보다 작거나 같으면 훈련이 중지됩니다.
이 옵션은 배치 솔버만 지원합니다(solverName
인수가 "lbfgs"
또는 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
StepTolerance
— 스텝 크기 허용오차
1e-5
(디폴트 값) | 양의 스칼라
R2023b 이후
스텝 크기 허용오차로, 양의 스칼라로 지정됩니다.
알고리즘이 취한 스텝이 StepTolerance
보다 작거나 같으면 훈련이 중지됩니다.
이 옵션은 배치 솔버만 지원합니다(solverName
인수가 "lbfgs"
또는 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
LineSearchMethod
— 적합한 학습률을 찾는 방법
"weak-wolfe"
(디폴트 값) | "strong-wolfe"
| "backtracking"
R2023b 이후
적합한 학습률을 찾는 방법으로, 다음 값 중 하나로 지정됩니다.
"weak-wolfe"
— 약한 울프(Wolfe) 조건을 만족하는 학습률을 탐색합니다. 이 방법은 역헤세 행렬의 양의 정부호 근사를 유지합니다."strong-wolfe"
— 강력한 울프(Wolfe) 조건을 만족하는 학습률을 탐색합니다. 이 방법은 역헤세 행렬의 양의 정부호 근사를 유지합니다."backtracking"
— 충분한 감소 조건을 만족하는 학습률을 탐색합니다. 이 방법은 역헤세 행렬의 양의 정부호 근사를 유지하지 않습니다.
이 옵션은 L-BFGS 솔버만 지원합니다(solverName
인수가 "lbfgs"
인 경우).
HistorySize
— 저장할 상태 업데이트 개수
10 (디폴트 값) | 양의 정수
R2023b 이후
저장할 상태 업데이트 개수로, 양의 정수로 지정됩니다. 3과 20 사이의 값은 대부분의 작업에 적합합니다.
L-BFGS 알고리즘은 기울기 계산 내역을 사용하여 헤세 행렬을 재귀적으로 근사합니다. 자세한 내용은 Limited-Memory BFGS 항목을 참조하십시오.
이 옵션은 L-BFGS 솔버만 지원합니다(solverName
인수가 "lbfgs"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
InitialInverseHessianFactor
— 근사 역헤세 행렬을 특징짓는 초기값
1
(디폴트 값) | 양의 스칼라
R2023b 이후
근사 역헤세 행렬을 특징짓는 초기값으로, 양의 스칼라로 지정됩니다.
메모리를 절약하기 위해 L-BFGS 알고리즘은 조밀 헤세 행렬 B를 저장하거나 역행렬을 구하지 않습니다. 대신, 알고리즘은 근사 를 사용합니다. 여기서 m은 내역 크기이고, 역헤세 인자 는 스칼라이고, I는 단위 행렬입니다. 그런 다음 알고리즘은 스칼라 역헤세 인자만 저장합니다. 알고리즘은 각 스텝에서 역헤세 인자를 업데이트합니다.
초기 역헤세 인자는 의 값입니다.
자세한 내용은 Limited-Memory BFGS 항목을 참조하십시오.
이 옵션은 L-BFGS 솔버만 지원합니다(solverName
인수가 "lbfgs"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MaxNumLineSearchIterations
— 최대 직선 탐색 반복 횟수
20
(디폴트 값) | 양의 정수
R2023b 이후
학습률을 결정하기 위한 최대 직선 탐색 반복 횟수로, 양의 정수로 지정됩니다.
이 옵션은 L-BFGS 솔버만 지원합니다(solverName
인수가 "lbfgs"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
InitialStepSize
— 첫 번째 최적화 스텝의 최대 절댓값 근사
[]
(디폴트 값) | "auto"
| 유한한 실수형 스칼라
R2024b 이후
초기 스텝 크기로, 다음 값 중 하나로 지정됩니다.
[]
— 초기 헤세 행렬 근사를 결정하는 데 초기 스텝 크기를 사용하지 않습니다."auto"
— 초기 스텝 크기를 자동으로 결정합니다. 초기 스텝 크기 이 사용됩니다. 여기서 W0은 신경망의 초기 학습 가능 파라미터입니다.양의 실수형 스칼라 — 지정된 값을 초기 스텝 크기 로 사용합니다.
InitialStepSize
가 "auto"
또는 양의 실수형 스칼라인 경우 초기 역헤세 행렬은 를 사용하여 근사됩니다. 여기서 λ0은 초기 역헤세 인자이고 은 초기 학습 가능 파라미터에 대한 손실의 기울기를 나타냅니다. 자세한 내용은 메모리 제한 BFGS 항목을 참조하십시오.
이 옵션은 L-BFGS 솔버만 지원합니다(solverName
인수가 "lbfgs"
인 경우).
InitialDampingFactor
— 초기 감쇠 인자
0.001
(디폴트 값) | 양의 스칼라
R2024b 이후
초기 감쇠 인자로, 양의 스칼라로 지정됩니다.
이 옵션은 LM 솔버만 지원합니다(solverName
인수가 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
MaxDampingFactor
— 최대 감쇠 인자
1e10
(디폴트 값) | 양의 스칼라
R2024b 이후
최대 감쇠 인자로, 양의 스칼라로 지정됩니다.
이 옵션은 LM 솔버만 지원합니다(solverName
인수가 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
DampingIncreaseFactor
— 감쇠 인자 증가를 위한 인자
10
(디폴트 값) | 1보다 큰 양의 스칼라
R2024b 이후
감쇠 인자 증가를 위한 인자로, 1보다 큰 양의 스칼라로 지정됩니다.
이 옵션은 LM 솔버만 지원합니다(solverName
인수가 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
DampingDecreaseFactor
— 감쇠 인자 감소를 위한 인자
0.1
(디폴트 값) | 1보다 작은 양의 스칼라
R2024b 이후
감쇠 인자 감소를 위한 인자로, 1보다 작은 양의 스칼라로 지정됩니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ValidationData
— 훈련 중에 검증에 사용할 데이터
[]
(디폴트 값) | 데이터저장소 | 테이블 | 셀형 배열 | minibatchqueue
객체 (R2024a 이후)
훈련 중에 검증에 사용할 데이터로, []
, 검증 예측 변수와 검증 목표값을 포함하는 데이터저장소, 테이블, 셀형 배열 또는 minibatchqueue
객체로 지정됩니다.
훈련하는 동안 이 검증 데이터를 사용하여 검증 손실과 메트릭 값을 계산합니다. 검증 빈도를 지정하려면 ValidationFrequency
훈련 옵션을 사용하십시오. 또한 검증 목적 메트릭이 더 이상 개선되지 않을 시 훈련을 자동 중지하고자 할 때에도 검증 데이터를 사용할 수 있습니다. 기본적으로 목적 메트릭은 손실로 설정됩니다. 자동 검증 중지 기능을 켜려면 ValidationPatience
훈련 옵션을 사용하십시오.
ValidationData
가 []
이면 훈련 중에 신경망이 검증되지 않습니다.
신경망에 훈련 중 동작과 예측 중 동작이 다른 계층(예: 드롭아웃 계층)이 있는 경우, 검증 손실이 훈련 손실보다 낮을 수 있습니다.
Shuffle
훈련 옵션에 따라 검증 데이터가 섞입니다. Shuffle
이 "every-epoch"
인 경우, 검증 데이터는 각 신경망을 검증하기 전에 섞입니다.
지원되는 형식은 사용하는 훈련 함수에 따라 달라집니다.
trainnet
함수
검증 데이터를 데이터저장소, minibatchqueue
객체 또는 셀형 배열 {predictors,targets}
로 지정합니다. 여기서 predictors
는 검증 예측 변수를 포함하고 targets
는 검증 목표값을 포함합니다. trainnet
함수에서 지원하는 형식을 사용하여 검증 예측 변수와 목표값을 지정합니다.
자세한 내용은 trainnet
함수의 입력 인수를 참조하십시오.
trainBERTDocumentClassifier
함수(Text Analytics Toolbox)
검증 데이터를 다음 값 중 하나로 지정합니다.
셀형 배열
{documents,targets}
. 여기서documents
는 입력 문서를 포함하고targets
는 문서 레이블을 포함합니다.테이블. 여기서 첫 번째 변수는 입력 문서를 포함하고 두 번째 변수는 문서 레이블을 포함합니다.
자세한 내용은 trainBERTDocumentClassifier
(Text Analytics Toolbox) 함수의 입력 인수를 참조하십시오.
ValidationFrequency
— 신경망 검증 빈도
50
(디폴트 값) | 양의 정수
신경망 검증 빈도(단위: 반복 횟수)로, 양의 정수로 지정됩니다.
ValidationFrequency
값은 검증 메트릭을 평가하기까지 진행할 반복 횟수입니다. 검증 데이터를 지정하려면 ValidationData
훈련 옵션을 사용하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ValidationPatience
— 검증 중지 인내도
Inf
(디폴트 값) | 양의 정수
신경망 훈련의 검증 중지 인내도로, 양의 정수 또는 Inf
로 지정됩니다.
ValidationPatience
는 신경망 훈련이 중단되기 전에, 검증 세트에서의 목적 메트릭이 그전의 최적 값보다 나쁘거나 같을 수 있는 최대 횟수를 지정합니다. ValidationPatience
가 Inf
이면 검증 메트릭의 값으로 인해 조기에 훈련이 중지되지는 않습니다. 메트릭의 Maximize
속성에 지정된 값에 따라 메트릭을 최대화하거나 최소화하는 것을 목표로 합니다. 목적 메트릭이 "loss"
인 경우 손실 값을 최소화하는 것을 목표로 합니다.
반환되는 신경망은 OutputNetwork
훈련 옵션에 따라 다릅니다. 메트릭 값이 최적 검증(best validation)인 신경망을 반환하려면 OutputNetwork
훈련 옵션을 "best-validation"
으로 설정하십시오.
R2024a 이전: 이 검증 손실 값을 사용하여 검증 인내도가 계산됩니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
OutputNetwork
— 훈련이 완료될 때 반환할 신경망
"auto"
(디폴트 값) | "last-iteration"
| "best-validation"
훈련이 완료될 때 반환할 신경망으로, 다음 중 하나로 지정됩니다.
"auto"
–ValidationData
가 지정된 경우"best-validation"
을 사용합니다. 그 밖의 경우에는"last-iteration"
을 사용합니다."best-validation"
– 메트릭 값이 최적 검증으로 나온 훈련 반복에 해당하는 신경망을 반환합니다. 여기서 최적화할 메트릭은ObjectiveMetricName
옵션으로 지정됩니다. 이 옵션을 사용하려면ValidationData
훈련 옵션을 지정해야 합니다."last-iteration"
– 마지막 훈련 반복에 해당하는 신경망을 반환합니다.
L2Regularization
— L2 정규화 인자
0.0001
(디폴트 값) | 음이 아닌 스칼라
L2 정규화(가중치 감쇠) 인자로, 음이 아닌 스칼라로 지정됩니다. 자세한 내용은 L2 정규화 항목을 참조하십시오.
이 옵션은 LM 솔버를 지원하지 않습니다(solverName
인수가 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ResetInputNormalization
— 입력 계층 정규화를 초기화하는 옵션
1
(true
) (디폴트 값) | 0
(false
)
입력 계층 정규화를 초기화하는 옵션으로, 다음 중 하나로 지정됩니다.
1
(true
) — 입력 계층 정규화 통계량을 초기화하고 이를 훈련 시점에 다시 계산합니다.0
(false
) — 정규화 통계량이 비어 있는 경우 이를 훈련 시점에 계산합니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
BatchNormalizationStatistics
— 배치 정규화 계층에서 통계량을 계산하는 모드
"auto"
(디폴트 값) | "population"
| "moving"
배치 정규화 계층에서 통계량을 계산하는 모드로, 다음 중 하나로 지정됩니다.
"population"
— 모집단 통계량을 사용합니다. 훈련 후에 훈련 데이터를 한 번 더 통과시켜 통계량을 완성하고 결과로 생성되는 평균과 분산을 사용합니다."moving"
— 업데이트 단계에서 얻게 되는 동적 추정값을 사용하여 훈련 중에 통계량을 근사합니다.여기서 와 는 각각 업데이트된 평균과 분산을 나타내고, 와 은 각각 평균 감쇠 값과 분산 감쇠 값을 나타내고, 과 은 각각 계층 입력값의 평균과 분산을 나타내고, 와 은 각각 이동 평균값의 최신값과 이동 분산값의 최신값을 나타냅니다. 훈련 후에 이동 평균 통계량 및 이동 분산 통계량의 가장 최신값을 사용합니다. 이 옵션은 CPU 및 단일 GPU 훈련만 지원합니다.
"auto"
—"moving"
옵션을 사용합니다.
GradientThreshold
— 기울기 임계값
Inf
(디폴트 값) | 양의 스칼라
기울기 임계값으로, Inf
또는 양의 스칼라로 지정됩니다. 기울기가 GradientThreshold
의 값을 초과하면 기울기는 GradientThresholdMethod
훈련 옵션에 따라 잘립니다.
자세한 내용은 기울기 제한을 참조하십시오.
이 옵션은 LM 솔버를 지원하지 않습니다(solverName
인수가 "lm"
인 경우).
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
GradientThresholdMethod
— 기울기 임계값 결정 방법
"l2norm"
(디폴트 값) | "global-l2norm"
| "absolute-value"
기울기 임계값을 초과하는 기울기 값을 자를 때 사용할 기울기 임계값 메서드로, 다음 중 하나로 지정됩니다.
"l2norm"
— 학습 가능한 파라미터의 기울기의 L2 노름이GradientThreshold
보다 큰 경우, L2 노름이GradientThreshold
와 같아지도록 기울기를 스케일링합니다."global-l2norm"
— 전역 L2 노름 L이GradientThreshold
보다 큰 경우, 모든 기울기를GradientThreshold/
L배만큼 스케일링합니다. 전역 L2 노름은 모든 학습 가능한 파라미터를 고려합니다."absolute-value"
— 학습 가능한 파라미터의 기울기의 개별 편도함수의 절댓값이GradientThreshold
보다 큰 경우,GradientThreshold
와 같아지도록 편도함수를 스케일링하고 편도함수의 부호를 그대로 유지합니다.
자세한 내용은 기울기 제한을 참조하십시오.
이 옵션은 LM 솔버를 지원하지 않습니다(solverName
인수가 "lm"
인 경우).
SequenceLength
— 시퀀스를 채우거나 자르는 옵션
"longest"
(디폴트 값) | "shortest"
입력 시퀀스를 채우거나 자르거나 분할하는 옵션으로, 다음 값 중 하나로 지정됩니다.
"longest"
— 각 미니 배치의 시퀀스 길이가 가장 긴 시퀀스의 길이와 같아지도록 채웁니다. 이 옵션은 채우기로 인해 신경망에 잡음이 포함되더라도 데이터를 버리지 않습니다."shortest"
— 각 미니 배치의 시퀀스가 가장 짧은 시퀀스와 길이가 같아지도록 자릅니다. 이 옵션은 데이터를 버리게 되더라도 채우기를 추가하지 않습니다.
시퀀스 채우기 및 자르기의 효과에 대한 자세한 정보는 시퀀스 채우기와 줄이기 항목을 참조하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
SequencePaddingDirection
— 채우기 또는 자르기 방향
"right"
(디폴트 값) | "left"
채우기 또는 자르기 방향으로, 다음 옵션 중 하나로 지정됩니다.
"right"
— 시퀀스들을 오른쪽에서 채우거나 자릅니다. 시퀀스들은 동일한 시간 스텝에서 시작하며 각 시퀀스의 끝부분에서 자르기나 채우기를 수행합니다."left"
— 시퀀스들을 왼쪽에서 채우거나 자릅니다. 시퀀스들이 동일한 시간 스텝에서 끝나도록 각 시퀀스의 시작 부분에서 자르기나 채우기를 수행합니다.
순환 계층은 시퀀스 데이터를 한 번에 하나의 시간 스텝씩 처리하기 때문에 순환 계층의 OutputMode
속성이 "last"
인 경우 마지막 시간 스텝에서의 채우기가 계층 출력에 부정적인 영향을 줄 수 있습니다. 시퀀스 데이터를 왼쪽에서 채우거나 자르려면 SequencePaddingDirection
인수를 "left"
로 설정하십시오.
sequence-to-sequence 신경망의 경우(각 순환 계층의 OutputMode
속성이 "sequence"
인 경우), 첫 시간 스텝들에서의 채우기가 앞쪽에 있는 시간 스텝들의 예측에 부정적인 영향을 줄 수 있습니다. 시퀀스 데이터를 오른쪽에서 채우거나 자르려면 SequencePaddingDirection
옵션을 "right"
로 설정하십시오.
시퀀스 채우기 및 자르기의 효과에 대한 자세한 정보는 시퀀스 채우기와 줄이기 항목을 참조하십시오.
SequencePaddingValue
— 입력 시퀀스에 채울 값
0
(디폴트 값) | 스칼라
입력 시퀀스에 채울 값으로, 스칼라로 지정됩니다.
시퀀스를 NaN
으로 채우면 신경망을 통해 오류가 전파될 수 있으므로 유의하십시오.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
ExecutionEnvironment
— 신경망 훈련에 사용할 하드웨어 리소스
"auto"
(디폴트 값) | "cpu"
| "gpu"
| "multi-gpu"
| "parallel-auto"
| "parallel-cpu"
| "parallel-gpu"
신경망 훈련에 사용할 하드웨어 리소스로, 다음 값 중 하나로 지정됩니다.
"auto"
– 사용 가능한 로컬 GPU가 있으면 이를 사용합니다. 그렇지 않은 경우 로컬 CPU를 사용합니다."cpu"
– 로컬 CPU를 사용합니다."gpu"
– 로컬 GPU를 사용합니다."multi-gpu"
– 디폴트 클러스터 프로파일에 따라 로컬 병렬 풀을 사용하여 컴퓨터 1대에서 여러 개의 GPU를 사용합니다. 기존 병렬 풀이 없는 경우 사용 가능한 GPU의 개수와 동일한 풀 크기로 병렬 풀을 시작합니다."parallel-auto"
– 로컬 또는 원격 병렬 풀을 사용합니다. 기존 병렬 풀이 없는 경우 디폴트 클러스터 프로파일을 사용하여 병렬 풀을 시작합니다. 풀이 GPU를 사용할 수 있는 경우, 고유한 GPU를 갖는 워커만 훈련 계산을 수행하고 초과 워커는 유휴 상태가 됩니다. 풀에 GPU가 없는 경우, 사용 가능한 모든 CPU 워커에서 대신 훈련이 이루어집니다. (R2024a 이후)R2024a 이전:
"parallel"
을 대신 사용하십시오."parallel-cpu"
– GPU를 무시하고 로컬 또는 원격 병렬 풀에서 CPU 리소스를 사용합니다. 기존 병렬 풀이 없는 경우 디폴트 클러스터 프로파일을 사용하여 병렬 풀을 시작합니다. (R2023b 이후)"parallel-gpu"
– 로컬 또는 원격 병렬 풀에서 GPU를 사용합니다. 초과 워커는 유휴 상태가 됩니다. 기존 병렬 풀이 없는 경우 디폴트 클러스터 프로파일을 사용하여 병렬 풀을 시작합니다. (R2023b 이후)
"gpu"
, "multi-gpu"
, "parallel-auto"
, "parallel-cpu"
, "parallel-gpu"
옵션을 사용하려면 Parallel Computing Toolbox™가 필요합니다. 딥러닝을 위해 GPU를 사용하려면 지원되는 GPU 장치도 필요합니다. 지원되는 장치에 대한 자세한 내용은 GPU 연산 요구 사항 (Parallel Computing Toolbox) 항목을 참조하십시오. 이러한 옵션 중 하나를 선택했는데 Parallel Computing Toolbox 또는 적당한 GPU가 없는 경우, 오류가 반환됩니다.
서로 다른 실행 환경을 사용해야 하는 경우에 대한 자세한 내용은 Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud 항목을 참조하십시오.
병렬로 훈련시킬 때 성능 향상을 도모하려면 MiniBatchSize
및 InitialLearnRate
훈련 옵션을 GPU의 개수만큼 늘려 보십시오.
"multi-gpu"
, "parallel-auto"
, "parallel-cpu"
, 및 "parallel-gpu"
옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
PreprocessingEnvironment
— 데이터를 가져오고 전처리하기 위한 환경
"serial"
(디폴트 값) | "background"
| "parallel"
R2024a 이후
훈련 중에 데이터저장소에서 데이터를 가져오고 전처리하기 위한 환경으로, 다음 값 중 하나로 지정됩니다.
"serial"
– 직렬로 데이터를 가져오고 전처리합니다."background"
– 백그라운드 풀을 사용하여 데이터를 가져오고 전처리합니다."parallel"
– 병렬 워커를 사용하여 데이터를 가져오고 전처리합니다. 로컬 풀이 현재 열려 있지 않은 경우 디폴트 프로파일을 사용하여 병렬 풀을 엽니다. 로컬이 아닌 병렬 풀은 지원되지 않습니다. 이 옵션을 사용하려면 Parallel Computing Toolbox가 필요합니다. 이 옵션은 병렬 훈련(ExecutionEnvironment
옵션이"parallel-auto"
,"parallel-cpu"
,"parallel-gpu"
또는"multi-gpu"
인 경우)에 대해 지원되지 않습니다.
"background"
또는 "parallel"
옵션을 사용하려면 입력 데이터저장소는 서브셋이 될 수 있거나 분할 가능해야 합니다. 사용자 지정 데이터저장소는 matlab.io.datastore.Subsettable
클래스를 구현해야 합니다.
Shuffle
옵션이 "never"
인 경우 "background"
및 "parallel"
옵션이 지원되지 않습니다.
"background"
및 "parallel"
옵션을 사용하면 deep.gpu.deterministicAlgorithms
함수를 사용하더라도 훈련이 비결정적입니다.
미니 배치에 상당한 전처리가 필요한 경우 "background"
옵션을 사용하십시오. 스레드에서 전처리가 지원되지 않거나 워커 개수를 제어해야 하는 경우 "parallel"
옵션을 사용하십시오. 전처리 환경에 대한 자세한 내용은 Preprocess Data in the Background or in Parallel 항목을 참조하십시오.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
R2024a 이전: 데이터를 병렬로 전처리하려면 DispatchInBackground
훈련 옵션을 1
(true
)로 설정하십시오.
Acceleration
— 성능 최적화
"auto"
(디폴트 값) | "none"
R2024a 이후
성능 최적화로, 다음 값 중 하나로 지정됩니다.
"auto"
– 입력 신경망 및 하드웨어 리소스에 적합한 여러 최적화를 자동으로 적용합니다."none"
– 모든 최적화를 비활성화합니다.
CheckpointPath
— 검사 지점 신경망을 저장할 경로
""
(디폴트 값) | string형 스칼라 | 문자형 벡터
검사 지점 신경망을 저장할 경로로, string형 스칼라 또는 문자형 벡터로 지정됩니다.
경로를 지정하지 않으면(즉, 디폴트 값인
""
을 사용하는 경우), 검사 지점 신경망은 저장되지 않습니다.경로를 지정한 경우, 이 경로에 검사 지점 신경망을 저장하고 각 신경망에 고유한 이름을 할당합니다. 그러면, 사용자는 임의의 검사 지점 신경망을 불러와 해당 신경망에서 훈련을 재개할 수 있습니다.
폴더가 존재하지 않는 경우, 검사 지점 신경망을 저장할 경로를 지정하기 전에 먼저 폴더를 만들어야 합니다. 지정한 경로가 존재하지 않는 경우, 오류가 발생합니다.
데이터형: char
| string
CheckpointFrequency
— 검사 지점 신경망을 저장할 빈도
양의 정수
검사 지점 신경망의 저장 빈도로, 양의 정수로 지정됩니다.
solverName
이 "lbfgs"
인 경우 또는 CheckpointFrequencyUnit
이 "iteration"
인 경우 매 CheckpointFrequency
회 반복마다 검사 지점 신경망이 저장됩니다. 그렇지 않으면 매 CheckpointFrequency
회 Epoch마다 검사 지점 신경망이 저장됩니다.
solverName
이 "sgdm"
, "adam"
또는 "rmsprop"
인 경우 디폴트 값은 1
입니다. solverName
이 "lbfgs"
또는 "lm"
인 경우 디폴트 값은 30
입니다.
이 옵션은 CheckpointPath
가 비어 있지 않은 경우에만 효력이 있습니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
CheckpointFrequencyUnit
— 검사 지점 빈도 단위
"epoch"
(디폴트 값) | "iteration"
검사 지점 빈도 단위로, "epoch"
또는 "iteration"
으로 지정됩니다.
CheckpointFrequencyUnit
이 "epoch"
인 경우 매 CheckpointFrequency
회 Epoch마다 검사 지점 신경망이 저장됩니다.
CheckpointFrequencyUnit
이 "iteration"
인 경우 매 CheckpointFrequency
회 반복마다 검사 지점 신경망이 저장됩니다.
이 옵션은 CheckpointPath
가 비어 있지 않은 경우에만 효력이 있습니다.
이 옵션은 확률적 솔버만 지원합니다(solverName
인수가 "sgdm"
, "adam"
또는 "rmsprop"
인 경우).
출력 인수
options
— 훈련 옵션
TrainingOptionsSGDM
| TrainingOptionsRMSProp
| TrainingOptionsADAM
| TrainingOptionsLBFGS
| TrainingOptionsLM
훈련 옵션으로, TrainingOptionsSGDM
, TrainingOptionsRMSProp
, TrainingOptionsADAM
, TrainingOptionsLBFGS
, TrainingOptionsLM
객체로 반환됩니다. 신경망을 훈련시키려면 훈련 옵션을 trainnet
함수의 입력 인수로 사용하십시오.
팁
대부분의 딥러닝 작업의 경우, 사전 훈련된 신경망을 사용하고 이를 사용자 자신의 데이터에 맞게 적응시킬 수 있습니다. 새로운 영상 세트를 분류할 수 있도록 전이 학습을 사용하여 컨벌루션 신경망을 다시 훈련시키는 방법을 보여주는 예제는 Retrain Neural Network to Classify New Images 항목을 참조하십시오. 또는
trainnet
함수와trainingOptions
함수를 사용하여 신경망을 처음부터 만들고 훈련시킬 수 있습니다.trainingOptions
함수가 작업에 필요한 훈련 옵션을 제공하지 않는다면 자동 미분을 사용하여 사용자 지정 훈련 루프를 만들 수 있습니다. 자세한 내용은 Train Network Using Custom Training Loop 항목을 참조하십시오.trainnet
함수가 작업에 필요한 손실 함수를 제공하지 않는다면 사용자 지정 손실 함수를trainnet
에 함수 핸들로 지정할 수 있습니다. 예측값과 목표값보다 더 많은 입력값이 필요한 손실 함수(예: 신경망 또는 추가 입력값에 액세스해야 하는 손실 함수)의 경우 사용자 지정 훈련 루프를 사용하여 모델을 훈련시킵니다. 자세한 내용은 Train Network Using Custom Training Loop 항목을 참조하십시오.Deep Learning Toolbox™가 작업에 필요한 계층을 제공하지 않는다면 사용자 지정 계층을 만들 수 있습니다. 자세한 내용은 사용자 지정 딥러닝 계층 정의하기 항목을 참조하십시오. 계층 신경망으로 지정할 수 없는 모델의 경우 모델을 함수로 정의할 수 있습니다. 자세한 내용은 Train Network Using Model Function 항목을 참조하십시오.
어느 훈련 방법을 어느 작업에 사용해야 하는지에 대한 자세한 내용은 Train Deep Learning Model in MATLAB 항목을 참조하십시오.
알고리즘
초기 가중치와 편향
컨벌루션 계층과 완전 연결 계층의 경우, 가중치와 편향의 초기화는 각각 계층의 WeightsInitializer
속성과 BiasInitializer
속성으로 지정됩니다. 가중치와 편향의 초기화를 변경하는 방법을 보여주는 예제는 컨벌루션 계층에서 초기 가중치와 편향 지정하기 및 완전 연결 계층에 초기 가중치와 편향 지정하기 항목을 참조하십시오.
확률적 경사하강법
표준 경사하강법 알고리즘은 다음과 같이 각 반복에서 손실에 대한 음의 기울기 방향으로 작은 스텝을 취하여 손실 함수를 최소화하도록 신경망 파라미터(가중치와 편향)를 업데이트합니다.
여기서 은 반복 횟수이고, 은 학습률이고, 는 파라미터 벡터이고, 는 손실 함수입니다. 표준 경사하강법 알고리즘에서 손실 함수의 기울기 는 전체 훈련 세트를 사용하여 계산되며, 표준 경사하강법 알고리즘은 한번에 전체 데이터 세트를 사용합니다.
반면에 확률적 경사하강법 알고리즘은 각 반복에서 훈련 데이터의 일부를 사용하여 기울기를 계산하고 파라미터를 업데이트합니다. 각 반복에는 미니 배치라는 다른 서브셋이 사용됩니다. 미니 배치를 사용하여 훈련 알고리즘이 전체 훈련 세트를 완전히 한 번 통과하는 것을 Epoch 1회라고 합니다. 확률적 경사하강법은 미니 배치를 사용하여 계산되는 파라미터 업데이트가 전체 데이터 세트를 사용할 경우 결과로 생성될 파라미터 업데이트의 잡음이 있는 추정값이어서 확률적입니다.
모멘텀을 사용한 확률적 경사하강법
확률적 경사하강법 알고리즘은 최적해를 향해 가는 최속강하법 경로에서 진동이 발생할 수 있습니다. 이러한 진동을 줄이는 한 가지 방법으로 파라미터 업데이트에 모멘텀 항을 추가하는 것을 들 수 있습니다[2]. SGDM(모멘텀을 사용한 확률적 경사하강법) 업데이트는 다음과 같이 표현됩니다.
여기서 학습률 α와 모멘텀 값 는 직전 기울기 스텝이 현재 반복에서 차지하는 비중을 결정합니다.
RMS 전파
모멘텀을 사용한 확률적 경사하강법은 모든 파라미터에 대해 하나의 학습률을 사용합니다. 파라미터에 따라 다를 뿐만 아니라 최적화 중인 손실 함수에 자동적으로 적응할 수 있는 학습률을 사용하여 신경망 훈련을 개선하는 최적화 알고리즘도 있습니다. 그중 하나가 RMSProp(RMS 전파)입니다. RMSProp는 파라미터 기울기의 요소별 제곱의 이동평균을 유지합니다.
β2는 이동평균의 제곱 기울기 감쇠 인자입니다. 감쇠율의 일반적인 값은 0.9, 0.99, 0.999입니다. 제곱 기울기의 대응되는 평균 길이는 1/(1-β2), 즉 각각 10, 100, 1000의 파라미터 업데이트와 같습니다. RMSProp 알고리즘은 이러한 이동평균을 사용하여 각 파라미터의 업데이트를 개별적으로 정규화합니다.
여기서 나눗셈은 요소별로 이루어집니다. RMSProp를 사용하면 기울기가 큰 파라미터에 대해서는 학습률이 효과적으로 감소하고, 기울기가 작은 파라미터에 대해서는 학습률이 증가합니다. ɛ은 0으로 나누기를 방지하기 위해 더해진 작은 상수입니다.
적응적 모멘트 추정
Adam(적응적 모멘트 추정)[4]은 모멘텀 항이 추가된 것을 제외하면 RMSProp와 유사한 파라미터 업데이트를 사용합니다. 다음과 같이 파라미터 기울기와 그 제곱 값의 요소별 이동평균을 모두 유지합니다.
β1 및 β2 감쇠율은 각각 기울기 감쇠 및 제곱 기울기 감쇠 인자입니다. Adam은 이러한 이동평균을 사용하여 신경망 파라미터를 다음과 같이 업데이트합니다.
값 α는 학습률입니다. 여러 반복 동안 기울기가 비슷한 경우에 기울기의 이동평균을 사용하면 파라미터 업데이트가 특정 방향에서 추진력(모멘텀)을 갖게 됩니다. 기울기의 대부분이 잡음인 경우, 기울기의 이동평균이 작아지므로 파라미터 업데이트도 작아집니다. 전체 Adam 업데이트는 훈련 시작 시에 나타나는 편향을 정정하는 메커니즘도 포함합니다. 자세한 내용은 [4] 항목을 참조하십시오.
메모리 제한 BFGS
L-BFGS 알고리즘[5]은 BFGS(Broyden-Fletcher-Goldfarb-Shanno) 알고리즘과 유사한 준뉴턴 방법입니다. 단일 배치로 처리할 수 있는 소규모 신경망 및 데이터 세트에는 L-BFGS 알고리즘을 사용하십시오.
이 알고리즘은 다음과 같이 지정되는 업데이트 스텝을 사용하여 반복 k+1회에서 학습 가능한 파라미터 W를 업데이트합니다.
여기서 Wk는 반복 k회에서의 가중치를 나타내고, 는 반복 k회에서의 학습률, Bk는 반복 k회에서의 헤세 행렬의 근삿값, 는 반복 k회에서의 학습 가능한 파라미터에 대한 손실의 기울기를 나타냅니다.
L-BFGS 알고리즘은 행렬-벡터 곱 를 직접 계산합니다. 이 알고리즘에서는 Bk의 역행렬을 계산할 필요가 없습니다.
메모리를 절약하기 위해 L-BFGS 알고리즘은 조밀 헤세 행렬 B를 저장하거나 역행렬을 구하지 않습니다. 대신, 알고리즘은 근사 를 사용합니다. 여기서 m은 내역 크기이고, 역헤세 인자 는 스칼라이고, I는 단위 행렬입니다. 그런 다음 알고리즘은 스칼라 역헤세 인자만 저장합니다. 알고리즘은 각 스텝에서 역헤세 인자를 업데이트합니다.
행렬-벡터 곱 를 직접 계산하기 위해 L-BFGS 알고리즘은 다음 재귀 알고리즘을 사용합니다.
를 설정합니다. 여기서 m은 내역 크기입니다.
의 경우:
을 지정합니다. 여기서 와 는 각각 반복 회에 대한 스텝 및 기울기 차이입니다.
를 설정합니다. 여기서 는 , 및 손실 함수에 대한 손실의 기울기에서 파생됩니다. 자세한 내용은 [5] 항목을 참조하십시오.
을 반환합니다.
Levenberg–Marquardt
LM 알고리즘[6]은 경사하강법과 가우스-뉴턴 방법 사이를 보간하며 소규모 신경망에 대해 더 강인할 수 있습니다. 이 알고리즘은 야코비 행렬 외적을 사용하여 2계 도함수를 근사합니다. LM 알고리즘은 학습 가능한 파라미터의 개수가 적은 회귀 신경망에 사용하며, 이 경우 데이터 세트를 단일 배치로 처리할 수 있습니다.
이 알고리즘은 다음과 같이 지정되는 업데이트 스텝을 사용하여 반복 k+1회에서 학습 가능한 파라미터 W를 업데이트합니다.
여기서 ΔWk는 다음과 같이 지정되는 반복 k회에서의 가중치 변화입니다.
여기서 Hk는 반복 k회에서 근사된 헤세 행렬이고 는 반복 k회에서 학습 가능한 파라미터에 대한 손실 기울기입니다. 알고리즘은 다음을 사용하여 헤세 행렬을 근사합니다.
여기서 Jk는 반복 k회에서의 야코비 행렬이고, μk는 반복 k회에서의 감쇠 인자이며, I는 단위 행렬입니다.
솔버는 감쇠 인자를 사용하여 각 반복에서 취하는 스텝 크기를 조정하고 매 반복마다 이 값을 적응적 방식으로 업데이트합니다. 솔버는 해당 반복에서 손실이 증가하면 감쇠 인자를 증가시키고 손실이 감소하면 감쇠 인자를 감소시킵니다. 이러한 조정을 통해 최적화 함수는 손실이 증가하면 더 큰 스텝을 수행하고 손실이 감소하면 더 작은 스텝을 수행하게 됩니다.
솔버는 손실이 증가하거나 감소하면 감쇠 인자에 DampingIncreaseFactor
또는 DampingDecreaseFactor
를 곱하여 감쇠 인자를 적응적 방식으로 증가시키거나 감소시킵니다.
기울기 제한
기울기의 크기가 기하급수적으로 증가하는 경우, 훈련의 안정성이 떨어지고 반복 몇 회만에 발산할 수도 있습니다. 이러한 "기울기 폭주"는 NaN
또는 Inf
로 귀결되는 훈련 손실로 나타납니다. 기울기 제한을 사용하면 학습률이 높은 경우 및 이상값이 존재하는 경우에 훈련을 안정화하여 기울기 폭주를 방지하는 데 도움이 됩니다[3]. 기울기 제한을 사용하면 신경망을 더 빨리 훈련시킬 수 있고, 일반적으로 학습된 작업의 정확도에 영향을 주지 않습니다.
다음과 같이 두 가지 유형의 기울기 제한이 있습니다.
노름 기반 기울기 제한은 임계값을 기준으로 기울기를 다시 스케일링하며, 기울기의 방향은 바꾸지 않습니다.
GradientThresholdMethod
의"l2norm"
값과"global-l2norm"
값은 노름 기반 기울기 제한 방법입니다.값 기반 기울기 제한은 임계값보다 큰 편도함수를 모두 자르는데 이는 기울기의 방향이 임의로 바뀌는 결과로 이어질 수 있습니다. 값 기반 기울기 제한을 사용하면 예측할 수 없는 동작이 나타날 수 있으나, 충분히 작은 변경은 신경망의 발산을 유발하지 않습니다.
GradientThresholdMethod
의"absolute-value"
값은 값 기반 기울기 제한 방법입니다.
L2 정규화
과적합을 방지하는 한 가지 방법으로 손실 함수 에 대한 가중치에 대해 정규화 항을 추가하는 것을 들 수 있습니다 [1], [2]. 정규화 항은 가중치 감쇠라고도 합니다. 정규화 항이 있는 손실 함수는 다음과 같은 형태를 갖습니다.
여기서 는 가중 벡터이고, 는 정규화 인자(계수)입니다. 정규화 함수 는 다음과 같습니다.
편향은 정규화되지 않습니다[2]. 정규화 인자 는 L2Regularization
훈련 옵션을 사용하여 지정할 수 있습니다. 서로 다른 계층과 파라미터에 대해 서로 다른 정규화 인자를 지정할 수도 있습니다.
신경망 훈련에 사용하는 손실 함수에는 정규화 항이 포함됩니다. 그러나 훈련 중에 명령 창과 훈련 진행 상황 플롯에 표시되는 손실 값은 데이터에 대한 손실만이며 정규화 항은 포함되지 않습니다.
참고 문헌
[1] Bishop, C. M. Pattern Recognition and Machine Learning. Springer, New York, NY, 2006.
[2] Murphy, K. P. Machine Learning: A Probabilistic Perspective. The MIT Press, Cambridge, Massachusetts, 2012.
[3] Pascanu, R., T. Mikolov, and Y. Bengio. "On the difficulty of training recurrent neural networks". Proceedings of the 30th International Conference on Machine Learning. Vol. 28(3), 2013, pp. 1310–1318.
[4] Kingma, Diederik, and Jimmy Ba. "Adam: A method for stochastic optimization." arXiv preprint arXiv:1412.6980 (2014).
[5] Liu, Dong C., and Jorge Nocedal. "On the limited memory BFGS method for large scale optimization." Mathematical programming 45, no. 1 (August 1989): 503-528. https://doi.org/10.1007/BF01589116.
[6] Marquardt, Donald W. “An Algorithm for Least-Squares Estimation of Nonlinear Parameters.” Journal of the Society for Industrial and Applied Mathematics 11, no. 2 (June 1963): 431–41. https://doi.org/10.1137/0111030.
버전 내역
R2016a에 개발됨R2024b: 신경망 훈련에 더 많은 학습률 조정 계획을 사용할 수 있음
다음 학습률 조정 계획을 trainingOptions
함수의 LearnRateSchedule
인수로 지정하여 신경망을 훈련시킬 수 있습니다.
"warmup"
— 워밍업 학습률 조정 계획"polynomial"
— 다항식 학습률 조정 계획"exponential"
— 지수 학습률 조정 계획"cosine"
— 코사인 학습률 조정 계획"cyclical"
— 순환 학습률 조정 계획
이러한 학습률 조정 계획을 사용자 지정하려면 다음 객체를 사용하십시오.
warmupLearnRate
— 워밍업 학습률 조정 계획 객체polynomialLearnRate
— 다항식 학습률 조정 계획exponentialLearnRate
— 지수 학습률 조정 계획cosineLearnRate
— 코사인 학습률 조정 계획cyclicalLearnRate
— 순환 학습률 조정 계획
이전 버전에서는 조각별 학습률 조정 계획을 사용하거나 학습률 조정 계획을 사용하지 않고 훈련시킬 수 있었습니다.
기존의 조각별 학습률 조정 계획을 사용자 지정하려면 piecewiseLearnRate
객체를 사용하십시오.
사용자 지정 조정 계획을 지정하려면 learnRate = f(initialLearnRate,epoch)
구문의 함수 핸들을 사용하거나, deep.LearnRateSchedule
에서 상속되는 클래스를 정의하여 고유한 사용자 지정 학습률 조정 계획 객체를 정의하십시오.
R2024b: Levenberg–Marquardt 솔버를 사용한 훈련
Levenberg–Marquardt(LM) 솔버를 사용하여 신경망을 훈련시킵니다. LM 알고리즘은 학습 가능한 파라미터의 개수가 적은 회귀 신경망에 사용하며, 이 경우 데이터 세트를 단일 배치로 처리할 수 있습니다.
LM 솔버를 trainnet
함수와 함께 사용하려면 solverName
인수를 "lm"
으로 지정하여 TrainingOptionsLM
객체를 생성하십시오. 다음과 같은 새 훈련 옵션을 사용하여 LM 솔버를 사용자 지정할 수 있습니다.
InitialDampingFactor
— 초기 감쇠 인자MaxDampingFactor
— 최대 감쇠 인자DampingDecreaseFactor
— 감쇠 감소 인자DampingIncreaseFactor
— 감쇠 증가 인자
R2024b: 훈련하는 동안 더 많은 메트릭을 모니터링하고 플로팅할 수 있음
훈련 및 테스트에 새 메트릭 객체와 업데이트된 메트릭 객체를 사용할 수 있습니다.
MAPEMetric
— 평균절대백분율오차(MAPE)AccuracyMetric
에 새 옵션NumTopKClasses
추가됨 — Top-k 정확도FScoreMetric
에 새 옵션Beta
추가됨 — Fβ-점수
다음과 같은 새 내장 메트릭 및 손실 이름을 직접 지정할 수도 있습니다.
"mape"
— 평균절대백분율오차(MAPE)"crossentropy"
— 교차 엔트로피 손실"index-crossentropy"
— 인덱스 교차 엔트로피 손실"binary-crossentropy"
— 이진 교차 엔트로피 손실"mse"
/"mean-squared-error"
/"l2loss"
— 평균제곱오차"mae"
/"mean-absolute-error"
/"l1loss"
— 평균절대오차"huber"
— Huber 손실
R2024b: L-BFGS 솔버의 초기 스텝 크기 지정
InitialStepSize
인수를 사용하여 L-BFGS 솔버의 초기 스텝 크기를 지정합니다.
R2024a: minibatchqueue
객체를 사용하여 검증 데이터 지정
ValidationData
인수를 사용하여 검증 데이터를 minibatchqueue
객체로 지정합니다.
R2024a: 자동 성능 최적화
자동 성능 최적화를 사용하여 훈련을 가속화합니다. trainnet
함수를 사용하여 신경망을 훈련시킬 때, 자동 성능 최적화가 기본적으로 활성화됩니다. trainingOptions
함수를 사용하여 Acceleration
옵션을 "none"
으로 설정하면 성능 최적화를 비활성화할 수 있습니다.
R2024a: 메트릭을 deep.DifferentiableFunction
객체로 지정
메트릭을 deep.DifferentiableFunction
객체로 지정합니다.
R2024a: SequenceLength
를 정수로 설정하는 것은 권장되지 않음
SequenceLength
를 정수로 설정하는 것은 권장되지 않습니다. 대신 SequenceLength
를 "longest"
또는 "shortest"
로 설정하십시오.
trainNetwork
워크플로(권장되지 않음)에서는 SequenceLength
를 정수로 설정할 수 있습니다. SequenceLength
가 정수이면, 미니 배치 중에서 가장 긴 시퀀스와 같은 길이가 되도록 각 미니 배치의 시퀀스를 채운 다음 이들 시퀀스를 지정된 더 작은 길이의 시퀀스로 분할합니다. 분할이 수행되면, 추가적인 미니 배치가 생성되며 이들 미니 배치 간의 신경망 순환 상태가 업데이트됩니다. 데이터의 시퀀스 길이가 지정된 시퀀스 길이로 균등하게 나뉘지 않는 경우, 해당 시퀀스의 끝을 포함하는 미니 배치의 길이는 지정된 시퀀스 길이보다 짧습니다.
R2024a: DispatchInBackground
훈련 옵션은 권장되지 않음
DispatchInBackground
훈련 옵션은 권장되지 않습니다. 대신 PreprocessingEnvironment
옵션을 사용하십시오.
PreprocessingEnvironment
옵션은 동일한 기능을 제공하며, PreprocessingEnvironment
를 "background"
로 설정할 경우 전처리에 backgroundPool
을 사용할 수도 있습니다.
다음 표는 코드를 업데이트하는 방법을 보여줍니다.
권장되지 않음 | 권장됨 |
---|---|
trainingOptions(solverName,DispatchInBackground=false) (디폴트 값) | trainingOptions(solverName,PreprocessingEnvironment="serial") (디폴트 값) |
trainingOptions(solverName,DispatchInBackground=true) | trainingOptions(solverName,PreprocessingEnvironment="parallel") |
DispatchInBackground
옵션을 제거할 계획은 없습니다.
R2024a: OutputNetwork
의 디폴트 값은 "auto"
임
R2024a부터 OutputNetwork
훈련 옵션의 디폴트 값은 "auto"
입니다. 검증 데이터를 지정한 경우에는 메트릭 값이 최적 검증인 신경망을 반환합니다. 검증 데이터를 지정하지 않은 경우에는 마지막 훈련 반복에 해당하는 신경망을 반환합니다. 검증 데이터가 있고 이전 디폴트 값을 복제하려면 OutputNetwork
를 "last-iteration"
으로 설정하십시오.
이 변경 사항은 훈련 옵션을 trainnet
에 사용할 때만 적용됩니다. 훈련 옵션을 trainNetwork
함수에 사용하는 경우에는 동작 변경이 없으며 기본적으로 마지막 훈련 반복에 해당하는 신경망을 반환합니다.
R2024a: OutputNetwork
값 "best-validation-loss"
는 권장되지 않음
OutputNetwork
를 "best-validation-loss"
로 지정하는 것은 권장되지 않습니다. OutputNetwork
가 "best-validation-loss"
로 설정된 코드가 있으면 "best-validation"
을 대신 사용하십시오. 메트릭 값이 ObjectiveMetricName
옵션에 지정된 최적 검증에 해당하는 신경망을 반환합니다. 기본적으로 ObjectiveMetricName
값은 "loss"
로 설정됩니다. 이 동작은 훈련 옵션을 trainnet
함수에 사용할 때만 적용됩니다.
훈련 옵션을 trainNetwork
함수에 사용하는 경우 OutputNetwork
를 "best-validation"
으로 지정하면 항상 손실 값이 최적 검증에 해당하는 신경망을 반환합니다.
R2024a: ExecutionEnvironment
값 "parallel"
은 권장되지 않음
R2024a부터 ExecutionEnvironment
옵션을 "parallel"
로 지정하는 것은 권장되지 않습니다. "parallel-auto"
를 대신 사용하십시오.
"parallel-auto"
는 "parallel"
에 비해 다음과 같은 이점이 있습니다.
종류에 관계없이 사용 가능한 하드웨어를 사용하여 자동으로 병렬로 훈련시키므로 옵션 이름이 실행 환경을 더 정확하게 설명합니다.
이 옵션 이름은 직렬(serial)에 상응하는
"auto"
와 일관됩니다.
"parallel"
옵션을 제거할 계획은 없습니다. "parallel-auto"
는 trainnet
함수만 지원합니다. 훈련 옵션을 trainNetwork
함수에 사용하는 경우에는 "parallel"
을 계속 사용하십시오.
R2024a: WorkerLoad
훈련 옵션은 권장되지 않음
R2024a부터 WorkerLoad
훈련 옵션을 지정하는 것은 권장되지 않습니다 대신 spmd
(Parallel Computing Toolbox) 또는 CUDA_VISIBLE_DEVICES
환경 변수를 사용하십시오.
trainNetwork
함수를 사용한 신경망 훈련에서는 WorkerLoad
에 대한 지원을 제거할 계획은 없습니다. trainnet
함수를 사용한 신경망 훈련에서는 WorkerLoad
가 지원되지 않습니다.
다음 표에서는 WorkerLoad
의 몇 가지 일반적인 사용법과 spmd
또는 CUDA_VISIBLE_DEVICES
환경 변수를 대신 사용하도록 코드를 업데이트하는 방법을 보여줍니다.
권장되지 않음 | 권장됨 |
---|---|
options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu", ... WorkerLoad=[1 1 0 1]); | % Alternative 1 pool = parpool(3); spmd if spmdIndex == 3 gpuDevice(spmdIndex + 1); else gpuDevice(spmdIndex); end end options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu"); % Alternative 2 % Set this environment variable immediately after your start MATLAB. setenv("CUDA_VISIBLE_DEVICES","0,1,3"); options = trainingOptions(solver, ... ExecutionEnvironment="multi-gpu"); |
options = trainingOptions(solver, ... ExecutionEnvironment="parallel", ... WorkerLoad=[1 1 0 1]); | pool = parpool(3); spmd if spmdIndex == 3 gpuDevice(spmdIndex + 1); else gpuDevice(spmdIndex); end end options = trainingOptions(solver, ... ExecutionEnvironment="parallel-auto"); |
이전에 WorkerLoad
옵션을 사용하여 데이터를 전처리할 워커를 예약한 경우 PreprocessingEnvironment
옵션을 "background"
로 지정하여 백그라운드에서도 데이터를 전처리해 보십시오.
R2023b: L-BFGS 솔버를 사용하여 신경망 훈련
solverName
을 "lbfgs"
로 지정함으로써 L-BFGS 솔버를 사용하여 신경망을 훈련시킬 수 있습니다. 단일 배치로 처리할 수 있는 소규모 신경망 및 데이터 세트에는 L-BFGS 알고리즘을 사용하십시오. L-BFGS 솔버를 사용자 지정하려면 배치 솔버 옵션 속성을 사용하십시오.
이 옵션은 trainnet
함수만 지원합니다.
R2023b: 입력 데이터 및 목표 데이터 형식 지정
InputDataFormats
옵션 및 TargetDataFormats
옵션을 사용하여 각각 입력 데이터와 목표 데이터 형식을 지정할 수 있습니다.
이 옵션은 trainnet
함수만 지원합니다.
R2023b: CPU 또는 GPU 리소스만 사용하여 병렬로 신경망 훈련
ExecutionEnvironment
를 "parallel-cpu"
또는 "parallel-gpu"
로 지정함으로써 특정 하드웨어 리소스를 사용하여 병렬로 신경망을 훈련시킬 수 있습니다.
이 옵션은 trainnet
함수만 지원합니다.
R2023b: BatchNormalizationStatistics
의 디폴트 값은 "auto"
R2023b부터 BatchNormalizationStatistics
훈련 옵션의 디폴트 값은 "auto"
입니다.
이 변경 사항은 함수의 동작에 영향을 주지 않습니다. BatchNormalizationStatistics
속성을 확인하는 코드가 있는 경우 "auto"
옵션을 처리하도록 코드를 업데이트하십시오.
R2022b: trainNetwork
는 SequenceLength
훈련 옵션을 정수로 지정한 경우 분할하기 전에 미니 배치를 가장 긴 시퀀스의 길이에 맞춰 채움
R2022b부터, trainNetwork
함수를 사용하여 시퀀스 데이터로 신경망을 훈련시킬 때 SequenceLength
옵션이 정수인 경우, 각 미니 배치에서 가장 긴 시퀀스의 길이에 맞춰 시퀀스들을 채운 다음 이들 시퀀스를 지정된 시퀀스 길이를 갖는 미니 배치로 분할합니다. 미니 배치의 시퀀스 길이가 SequenceLength
로 균등하게 나뉘지 않는 경우, 마지막 분할 미니 배치의 길이는 SequenceLength
보다 짧습니다. 이 동작은 채우기 값만 포함하는 시간 스텝에서 신경망이 훈련되는 것을 방지합니다.
이전 릴리스에서는, 미니 배치의 길이보다 크거나 같은 SequenceLength
의 가장 가까운 배수에 해당하는 길이가 되도록 미니 배치 시퀀스들을 채운 다음 데이터를 분할합니다. 이 동작을 재현하려면 데이터의 미니 배치를 전처리할 때 사용자 지정 훈련 루프를 사용하여 이 동작을 구현하십시오.
R2018b: ValidationPatience
훈련 옵션의 디폴트 값은 Inf
R2018b부터 ValidationPatience
훈련 옵션의 디폴트 값은 Inf
입니다. 즉, 검증을 통한 자동 중지가 꺼져 있습니다. 이 동작은 데이터로부터 충분한 학습이 이루어지기 전에 훈련이 중지되는 것을 방지합니다.
이전 버전의 디폴트 값은 5
였습니다. 이 동작을 재현하려면 ValidationPatience
옵션을 5
로 설정하십시오.
R2018b: 검사 지점 신경망에 대한 다른 파일 이름
R2018b부터 검사 지점 신경망을 저장할 때 net_checkpoint_
로 시작하는 파일 이름이 할당됩니다. 이전 버전에서는 convnet_checkpoint_
로 시작하는 파일 이름이 할당되었습니다.
검사 지점 신경망을 저장하고 불러오는 코드가 있는 경우, 코드가 새로운 이름으로 파일을 불러오도록 업데이트하십시오.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)