主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

trainingOptions

딥러닝신경망훈련옵션

설명

예제

选项= trainingOptions (solverNamesolverName으로지정된최적화함수에대한훈련옵션을반환합니다。신경망을훈련시키려면훈련옵션을trainNetwork함수의입력수로사용하십시오。

예제

选项= trainingOptions (solverName名称,值는하나이상의이름-값쌍通讯录수로지정된추가옵션을사용하여훈련옵션을반환합니다。

예제

모두 축소

모멘텀을사용한확률적경사하강법을이용해신경망을훈련시키는옵션세트를만듭니다。纪元5회마다학습률을0.2배만큼줄입니다。훈련을진행할최대时代횟수를20으로설정하고,각반복마다64개의관측값을갖는미니배치를사용합니다。훈련진행상황플롯을켭니다。

选项= trainingOptions(“个”...“LearnRateSchedule”“分段”...“LearnRateDropFactor”, 0.2,...“LearnRateDropPeriod”5,...“MaxEpochs”, 20岁,...“MiniBatchSize”, 64,...“阴谋”“训练进步”
options = TrainingOptionsSGDM with properties: Momentum: 0.9000 InitialLearnRate: 0.0100 LearnRateSchedule: 'piecewise' LearnRateDropFactor: 0.2000 LearnRateDropPeriod: 5 L2Regularization: 1.0000 -04 GradientThresholdMethod: 'l2norm' GradientThreshold: Inf MaxEpochs: 20 MiniBatchSize: 64 Verbose: 1 VerboseFrequency: 50 ValidationData: [] ValidationFrequency: 50 ValidationPatience: Inf Shuffle: 'once' CheckpointPath: " ExecutionEnvironment: 'auto' WorkerLoad: [] OutputFcn: [] Plots: "'training-progress' SequenceLength: 'longest' SequencePaddingValue: 0 SequencePaddingDirection: 'right' DispatchInBackground: 0 ResetInputNormalization: 1 BatchNormalizationStatistics: 'population'

딥러닝을위해신경망을훈련시킬때는훈련진행상황을모니터링하는것이유용한경우가종종있습니다。훈련중에다양한메트릭을플로팅하면훈련이어떻게진행되고있는지알수있습니다。예를들어,신경망정확도가향상되고있는지,향상되는속도는어느정도인지,신경망이훈련데이터를과적합하기시작하고있는지등을확인할수있습니다。

trainingOptions에서“训练进步”“阴谋”값으로지정하고신경망훈련을시작하면trainNetwork는图를만들고각반복에서훈련메트릭을시합니다。각반복은기울기의추정값이자신경망파라미터의업데이트입니다。trainingOptions에검데이터를지정하면trainNetwork가신경망을검할때마다图에검메트릭이시됩니다。图에는다음과같은내용이플로팅됩니다。

  • 훈련정확도-각개별미니배치의분류정확도。

  • 평활화된훈련정확도-훈련정확도에평활화알고리즘을적용하여얻은평활화된훈련정확도。평활화되지않은정확도보다잡음이적기때문에보다쉽게추세를파악할수있습니다。

  • 검정확도-전체검세트에대한분류정확도(trainingOptions를사용하여지정됨)。

  • 훈련 손실평활화된훈련손실검손실- - - - - -각미니배치에대한손실,각미니배치에대한평활화된손실,검증세트에대한손실。신경망의마지막계층이classificationLayer이면손실함수는교차엔트로피손실이됩니다。분류및회귀문제의손실함수에대한자세한내용은출력 계층항목을참조하십시오。

회귀신경망에서는图가정확도대신RMSE(평균제곱오차의제곱근)를플로팅합니다。

图는훈련되는각时代를음처리된배경으로시합니다。纪元1회는전체데이터세트를완전히한번통과하는것을의미합니다。

훈련중에오른쪽위코너에있는중지버튼을클릭하면훈련을중지하고신경망의현재상태를반환할수있습니다。예를들어,신경망의정확도가일정해지고더이상증가하지않는것이분명해지면훈련을중지하려할수있습니다。중지버튼을클릭하면훈련이완료되기까지얼마간의시간이걸릴수있습니다。훈련이완료되면trainNetwork는훈련된신경망을반환합니다。

훈련이끝나면결과에서최종검정확도와훈련이끝난이유를확합니다。최종검메트릭은플롯에서최종이라고@ @시됩니다。신경망에배치정규화계층이포함되어있는경우,최종검증메트릭이훈련중에계산된검증메트릭과다를수있습니다。이는훈련이완료된후배치정규화에사용되는평균통계량및분산통계량이다를수있기때문입니다。예를 들어“BatchNormalizationStatisics”훈련옵션이“人口”인경우훈련후에소프트웨어는훈련데이터를한번더통과시켜배치정규화통계량을완성하고결과로생성되는평균과분산을사용합니다。“BatchNormalizationStatisics”훈련옵션이“移动”인경우소프트웨어는동적추정값을사용하여훈련중에통계량을근사하고통계량의최신값을사용합니다。

오른쪽에서훈련시간과설정에대한정보를확합니다。훈련옵션에대한자세한내용은파라미터를설정하고컨벌루션신경망훈련시키기항목을참조하십시오。

훈련중에훈련진행상황플로팅하기

신경망을훈련시키고훈련중에훈련진행상황을플로팅합니다。

숫자숫자상5000개를포함하는훈련데이터를불러옵니다。신경망검을위해상1000개를남겨둡니다。

[XTrain,YTrain] = digitTrain4DArrayData;idx = randperm(size(XTrain,4),1000);XValidation = XTrain(:,:,:,idx);XTrain(:,:,:,idx) = [];YValidation = YTrain(idx);YTrain(idx) = [];

숫자상데이터를분류할신경망을구성합니다。

图层= [imageInputLayer([28 28 1])卷积2dlayer (3,8,“填充”“相同”maxPooling2dLayer(2,“步”2) convolution2dLayer(16日“填充”“相同”maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”“相同”batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];

신경망훈련옵션을지정합니다。훈련중에규칙적간격으로신경망을검하려면검데이터를지정하십시오。Epoch당한번정도씩신경망검이실시되도록“ValidationFrequency”값을선택합니다。훈련중에훈련진행상황을플로팅하려면“训练进步”“阴谋”값으로지정하십시오。

选项= trainingOptions(“个”...“MaxEpochs”8...“ValidationData”{XValidation, YValidation},...“ValidationFrequency”30岁的...“详细”假的,...“阴谋”“训练进步”);

신경망을훈련시킵니다。

net = trainNetwork(XTrain,YTrain,图层,选项);

입력marketing수

모두 축소

신경망훈련에사용할솔버로,다음중하나로지정됩니다。

  • “个”个(随机梯度下降势头:모멘텀을사용한확률적경사하강법)최적화함수를사용합니다。“动量”이름-값쌍通讯录수를사용하여모멘텀값을지정할수있습니다。

  • “rmsprop”- RMSProp최적화함수를사용합니다。“SquaredGradientDecayFactor”이름-값쌍通讯录수를사용하여제곱기울기이동평균의감쇠율을지정할수있습니다。

  • “亚当”-亚当최적화함수를사용합니다。“GradientDecayFactor”이름-값쌍수를사용하여기울기이동평균의감쇠율을,“SquaredGradientDecayFactor”이름-값쌍通讯录수를사용하여제곱기울기이동평균의감쇠율을지정할수있습니다。

다양한솔버에대한자세한내용은확률적경사하강법항목을참조하십시오。

이름-값쌍의通讯录수

선택적으로名称,值수가쉼로구분되어지정됩니다。여기서的名字은수이름이고价值는대응값입니다。的名字은따옴。Name1, Value1,…,的家과같이여러개의이름-값쌍의通讯录수를어떤순서로든지정할수있습니다。

예:“InitialLearnRate”,0.03,“L2Regularization”,0.0005,“LearnRateSchedule”、“分段”는초기학습률을0.03으로,l2정규화인자를0.0005로지정하고,주어진时代횟수마다특정인자를곱하여학습률을떨어뜨리라고지시합니다。
플롯및@ @시

모두 축소

신경망훈련중에시할플롯으로,“阴谋”와함께다음중하나가쉼@ @로구분되어지정됩니다。

  • “没有”-훈련중에플롯을시하지않습니다。

  • “训练进步”-훈련진행상황을플로팅합니다。이플롯은미니배치손실과정확도,검증손실과정확도,그리고훈련진행상황에대한추가정보를보여줍니다。이플롯은오른쪽위코너에중지버튼이있습니다。훈련을중지하고신경망의현재상태를반환하려면버튼을클릭합니다。훈련진행상황플롯에대한자세한내용은딥러닝훈련진행상황모니터링하기항목을참조하십시오。

예:“阴谋”,“训练进步”

명령창에훈련진행상황정보를程序程序시할지에대한程序程序시자로,“详细”와 함께1真正的)또는0)이쉼@로구분되어지정됩니다。

상세출력값은다음과같은정보를@ @시합니다。

분류신경망

필드 설명
时代 纪元횟수。纪元1회는데이터를한번완전히통과하는것을의미합니다。
迭代 반복횟수。반복1회는미니배치하나에대응됩니다。
时间 시,분,초단위의경과된시간。
Mini-batch准确性 미니배치에대한분류정확도。
验证准确性 검데이터에대한분류정확도。검데이터를지정하지않은경우에는함수가이필드를시하지않습니다。
Mini-batch损失 미니배치에대한손실。출력계층이ClassificationOutputLayer객체인경우,손실은상호배타적인클래스를갖는다중클래스분류문제에대한교차엔트로피손실입니다。
确认损失 검데이터에대한손실。출력계층이ClassificationOutputLayer객체인경우,손실은상호배타적인클래스를갖는다중클래스분류문제에대한교차엔트로피손실입니다。검데이터를지정하지않은경우에는함수가이필드를시하지않습니다。
基础学习率 기본학습률。소프트웨어가계층의학습률자에이값을곱합니다。

회귀신경망

필드 설명
时代 纪元횟수。纪元1회는데이터를한번완전히통과하는것을의미합니다。
迭代 반복횟수。반복1회는미니배치하나에대응됩니다。
时间 시,분,초단위의경과된시간。
Mini-batch RMSE 미니배치에대한rmse(제곱평균제곱근오차)。
验证RMSE 검데이터에대한rmse。검데이터를지정하지않은경우에는소프트웨어가이필드를시하지않습니다。
Mini-batch损失 미니배치에대한손실。출력계층이RegressionOutputLayer객체marketing경우,손실은평균제곱오차의절반입니다。
确认损失 검데이터에대한손실。출력계층이RegressionOutputLayer객체marketing경우,손실은평균제곱오차의절반입니다。검데이터를지정하지않은경우에는소프트웨어가이필드를시하지않습니다。
基础学习率 기본학습률。소프트웨어가계층의학습률자에이값을곱합니다。

검데이터를지정하려면“ValidationData”이름-값쌍을사용하십시오。

예:“详细”,假的

상세출력의빈도,즉명령창에출력하기까지진행할반복횟수로,“VerboseFrequency”와함께양의정수가쉼@ @로구분되어지정됩니다。이 옵션은“详细”값이真正的경우에만효력이있습니다。

훈련중에신경망을검하는경우,trainNetwork는검이실시될때마다명령창에도출력합니다。

예:“VerboseFrequency”,100年

미니배치옵션

모두 축소

훈련에사용할최대纪元횟수로,“MaxEpochs”와함께양의정수가쉼@ @로구분되어지정됩니다。

반복1회는경사하강법알고리즘에서미니배치를사용하여손실함수의최소화를향해취한스텝1개에해당합니다。时代1회는훈련알고리즘이전체훈련세트를완전히한번통과하는것을의미합니다。

예:“MaxEpochs”,20

각훈련반복마다사용할미니배치의크기로,“MiniBatchSize”와함께양의정수가쉼@ @로구분되어지정됩니다。미니배치는손실함수의기울기를계산하고가중치를업데이트하는데사용되는훈련세트의서브셋입니다。확률적경사하강법항목을참조하십시오。

예:“MiniBatchSize”,256年

데이터섞기옵션으로,“洗牌”과함께다음중하나가쉼@ @로구분되어지정됩니다。

  • “一次”-훈련전에훈련데이터와검데이터를1회섞습니다。

  • “永远”-데이터를섞지않습니다。

  • “every-epoch”- - - - - -각훈련时代전에훈련데이터를섞고,각신경망검증전에검증데이터를섞습니다。훈련샘플의개수가미니배치크기로균등하게나뉘지않는경우,trainNetwork는각纪元의최종전체미니배치에담기지않는훈련데이터를버립니다。매纪元마다동일한데이터가버려지지않도록하려면“洗牌”값을“every-epoch”로설정하십시오。

예:“洗牌”,“every-epoch”

검증

모두 축소

훈련중에검증에사용할데이터로,검증예측변수와검증응답변수를포함하는데이터저장소,테이블또는셀형배열로지정됩니다。

trainNetwork함수에서지원하는것과동일한형식을사용하여검증예측변수와검증응답변수를지정할수있습니다。검데이터를데이터저장소,테이블또는셀형배열}{预测,反应로지정할수있습니다。여기서预测는검예측변수를포함하고反应는검응답변수를포함합니다。

자세한내용은trainNetwork함수의图片序列特性입력수를참조하십시오。

trainNetwork는훈련중에검데이터에대한검정확도와검손실을계산합니다。검빈도를지정하려면“ValidationFrequency”이름-값쌍通讯录수를사용하십시오。검증의손실이더이상감소하지않으면자동으로훈련을중지하도록검증데이터를사용할수있습니다。자동검중지기능을켜려면“ValidationPatience”이름-값쌍通讯录수를사용하십시오。

신경망에훈련중동작과예측중동작이다른계층(예:드롭아웃계층)이있는경우,검증정확도가훈련(미니배치)정확도보다높을수있습니다。

검데이터는“洗牌”값에따라섞입니다。“洗牌”값이“every-epoch”경우,검데이터는각신경망검전에섞입니다。

신경망검빈도(단위:반복횟수)로,“ValidationFrequency”와함께양의정수가쉼@ @로구분되어지정됩니다。

“ValidationFrequency”값은검메트릭을평가하기까지진행할반복횟수입니다。검데이터를지정하려면“ValidationData”이름-값쌍通讯录수를사용하십시오。

예:“ValidationFrequency”,20

신경망훈련의검중지내도로,“ValidationPatience”와함께양의정수또는가쉼@ @로구분되어지정됩니다。

“ValidationPatience”값은신경망훈련을중지하기전에검증세트에대한손실이그전까지의가장작은손실보다크거나같게나오는건을허용하는횟수입니다。자동검중지기능을켜려면“ValidationPatience”값으로양의정수를지정하십시오。디폴트값를사용하는경우,최대纪元횟수뒤에훈련이중지됩니다。검데이터를지정하려면“ValidationData”이름-값쌍通讯录수를사용하십시오。

예:“ValidationPatience”,5

솔버 옵션

모두 축소

훈련에사용할초기학습률로,“InitialLearnRate”와함께양의스칼라가쉼@ @로구분되어지정됩니다。디폴트값은“个”솔버의경우0.01이고,“rmsprop”“亚当”솔버의경우0.001입니다。학습률이너무낮으면훈련시간이오래걸립니다。학습률이너무높으면훈련이최적의결과보다못한값에도달하거나발산할수있습니다。

예:“InitialLearnRate”,0.03

데이터형:|

훈련중학습률감소옵션으로,“LearnRateSchedule”과함께다음중하나가쉼@ @로구분되어지정됩니다。

  • “没有”-전체훈련동학습률이일정하게유지됩니다。

  • “分段”-소프트웨어가특정Epoch횟수마다특정자를곱하여학습률을업데이트합니다。이자의값을지정하려면LearnRateDropFactor이름-값쌍通讯录수를사용하십시오。곱셈이이루어지기전까지진행할纪元횟수를지정하려면LearnRateDropPeriod이름-값쌍通讯录수를사용하십시오。

예:“LearnRateSchedule”、“分段”

학습률을낮출纪元의주기로,“LearnRateDropPeriod”와함께양의정수가쉼@ @로구분되어지정됩니다。이 옵션은LearnRateSchedule값이“分段”경우에만유효합니다。

지정된时代횟수가경과될때마다소프트웨어가전역학습률에감소인자를곱합니다。감소자는LearnRateDropFactor이름-값쌍通讯录수를사용하여지정합니다。

예:“LearnRateDropPeriod”,3

학습률감소marketing자로,“LearnRateDropFactor”와함께0과1사이의스칼라가쉼로구분되어지정됩니다。이 옵션은LearnRateSchedule값이“分段”경우에만유효합니다。

LearnRateDropFactor는특정Epoch횟수가경과될때마다학습률에적용할승산자입니다。Epoch횟수는LearnRateDropPeriod이름-값쌍通讯录수를사용하여지정합니다。

예:“LearnRateDropFactor”,0.1

데이터형:|

l2정규화(가중치감쇠)자로,“L2Regularization”과함께음이아닌스칼라가쉼@ @로구분되어지정됩니다。자세한내용은L2정규화항목을참조하십시오。

학습가능한파라미터가있는신경망계층에대해2정규화에대한승수를지정할수있습니다。자세한내용은컨벌루션계층및완전연결계층에서파라미터설정하기항목을참조하십시오。

예:“L2Regularization”,0.0005

데이터형:|

모멘텀을사용한확률적경사하강법의파라미터업데이트단계에서현재반복에직전반복이차지하는비중으로,“动量”과함께0과1사이의스칼라가쉼로구분되어지정됩니다。값이0이면직전스텝의비중이없는것이고,값이1이면직전스텝이최대의비중을가짐을의미합니다。

“动量”값을지정하려면solverName“个”으로설정해야합니다。대부분의경우디폴트값이잘동작합니다。다양한솔버에대한자세한내용은확률적경사하강법항목을참조하십시오。

예:“动量”,0.95

데이터형:|

亚当솔버에대한기울기이동평균의감쇠율로,“GradientDecayFactor”와함께1보다작은음이아닌스칼라가쉼로구분되어지정됩니다。기울기감쇠율은[4]에서β1로나타냅니다。

“GradientDecayFactor”값을지정하려면solverName“亚当”으로설정해야합니다。대부분의경우디폴트값이잘동작합니다。다양한솔버에대한자세한내용은확률적경사하강법항목을참조하십시오。

예:“GradientDecayFactor”,0.95

데이터형:|

亚当및RMSProp솔버에대한제곱기울기이동평균의감쇠율로,“SquaredGradientDecayFactor”와함께1보다작은음이아닌스칼라가쉼로구분되어지정됩니다。제곱기울기감쇠율은[4]에서β2로나타냅니다。

“SquaredGradientDecayFactor”값을지정하려면solverName“亚当”또는“rmsprop”로설정해야합니다。감쇠율의일반적인값은0.9,0.99,0.999로,각각평균길이10,100年、1000年의파라미터업데이트에대응됩니다。亚当솔버의경우디폴트값은0.999입니다。RMSProp솔버의경우디폴트값은0.9입니다。

다양한솔버에대한자세한내용은확률적경사하강법항목을참조하십시오。

예:“SquaredGradientDecayFactor”,0.99

데이터형:|

亚当및RMSProp솔버에대한분모오프셋으로,‘ε’과함께양의스칼라가쉼@ @로구분되어지정됩니다。솔버는0으로나누기를방지하기위해신경망파라미터업데이트에서분모에오프셋을더합니다。

‘ε’값을지정하려면solverName“亚当”또는“rmsprop”로설정해야합니다。대부분의경우디폴트값이잘동작합니다。다양한솔버에대한자세한내용은확률적경사하강법항목을참조하십시오。

예:‘ε’,1 e-6

데이터형:|

입력계층정규화를초기화하는옵션으로,다음중하나로지정됩니다。

  • 真正的-입력계층정규화통계량을초기화하고이를훈련시점에다시계산합니다。

  • -정규화통계량이비어있는경우이를훈련시점에계산합니다。

배치정규화계층에서통계량을계산하는모드로,다음중하나로지정됩니다。

  • “人口”-모집단통계량을사용합니다。훈련후에소프트웨어는훈련데이터를한번더통과시켜통계량을완성하고결과로생성되는평균과분산을사용합니다。

  • “移动”-업데이트단계에서얻게되는동적추정값을사용하여훈련중에통계량을근사합니다。

    μ λ μ μ + 1 λ μ μ σ 2 λ σ 2 σ 2 + (1 - λ σ 2 σ 2

    여기서 μ σ 2 는각각업데이트된평균과분산을나타내고, λ μ λ σ 2 은각각평균감쇠값과분산감쇠값을나타내고, μ σ 2 은각각계층입력값의평균과분산을나타내고, μ σ 2 은각각이동평균값의최신값과이동분산값의최신값을나타냅니다。훈련후에소프트웨어는이동평균통계량및이동분산통계량의가장최신값을사용합니다。이옵션은CPU및단일gpu훈련만지원합니다。

기울기제한

모두 축소

기울기임계값으로,“GradientThreshold”와 함께또는양의스칼라가쉼@ @로구분되어지정됩니다。기울기가GradientThreshold의값을초과하면기울기는GradientThresholdMethod에따라잘립니다。

예:“GradientThreshold”6

기울기임계값을초과하는기울기값을자를때사용할기울기임계값결정방법으로,“GradientThresholdMethod”와함께다음중하나가쉼@ @로구분되어지정됩니다。

  • “l2norm”-학습가능한파라미터의기울기의2노름이GradientThreshold보다큰경우,l2노름이GradientThreshold와같아지도록기울기를스케일링합니다。

  • “global-l2norm”-전역l2노름l이GradientThreshold보다큰경우,모든기울기를GradientThreshold /L배만큼스케일링합니다。전역l2노름은모든학습가능한파라미터를고려합니다。

  • “绝对值”-학습가능한파라미터의기울기의개별편도함수의절댓값이GradientThreshold보다큰경우,GradientThreshold와같아지도록편도함수를스케일링하고편도함수의부호를그대로유지합니다。

자세한내용은기울기제한을참조하십시오。

예:“GradientThresholdMethod”、“global-l2norm”

시퀀스옵션

모두 축소

입력시퀀스를채우거나자르거나분할하는옵션으로,다음중하나로지정됩니다。

  • “最长”-각미니배치의시퀀스가가장긴시퀀스와길이가같아지도록채웁니다。이옵션은채우기로해신경망에잡음이포함되더라도데이터를버리지않습니다。

  • “最短”-각미니배치의시퀀스가가장짧은시퀀스와길이가같아지도록자릅니다。이옵션은데이터를버리게되더라도채우기를추가하지않습니다。

  • 양의정수-각미니배치에대해,미니배치의가장긴시퀀스길이보다큰지정된길이의가장가까운배수로시퀀스를채운다음,지정된길이를갖는더작은크기의시퀀스로분할합니다。분할이이루어지면소프트웨어가미니배치를추가로만듭니다。전체시퀀스가메모리에맞지않으면이옵션을사용하십시오。또는“MiniBatchSize”옵션을더낮은값으로설정하여미니배치당시퀀스개수를줄여보십시오。

입력시퀀스채우기,자르기,분할의효과에대한자세한정보는시퀀스채우기,자르기및분할항목을참조하십시오。

예:“SequenceLength”、“最短的

채우기또는자르기방향으로,다음중하나로지정됩니다。

  • “对”-시퀀스들을오른쪽에서채우거나자릅니다。시퀀스들은동일한시간스텝에서시작하며소프트웨어가시퀀스들의끝부분에서자르기나채우기를수행합니다。

  • “左”-시퀀스들을왼쪽에서채우거나자릅니다。시퀀스들이동일한시간스텝에서끝나도록소프트웨어가시퀀스들의시작부분에서자르기나채우기를수행합니다。

LSTM계층은시퀀스데이터를한번에하나의시간스텝씩처리하기때문에계층의OutputMode속성이“最后一次”경우마지막시간스텝에서의채우기가계층출력에부정적향을줄수있습니다。시퀀스데이터를왼쪽에서채우거나자르려면“SequencePaddingDirection”옵션을“左”로설정하십시오。

序列对序列신경망의경우(각LSTM계층의OutputMode속성이“序列”인경우),첫시간스텝들에서의채우기가앞쪽에있는시간스텝들의예측에부정적인영향을줄수있습니다。시퀀스데이터를오른쪽에서채우거나자르려면“SequencePaddingDirection”옵션을“对”로설정하십시오。

입력시퀀스채우기,자르기,분할의효과에대한자세한정보는시퀀스채우기,자르기및분할항목을참조하십시오。

입력시퀀스에채울값으로,스칼라로지정됩니다。이 옵션은SequenceLength“最长”또는양의정수경우에만유효합니다。시퀀스를으로채우면신경망전체로오류가전파될수있으므로유의하십시오。

예:“SequencePaddingValue”,1

하드웨어옵션

모두 축소

신경망훈련에사용할하드웨어리소스로,다음중하나로지정됩니다。

  • “汽车”-사용가능한하나의gpu가있으면이를사용합니다。그렇지않은경우cpu를사용합니다。

  • “cpu”- cpu를사용합니다。

  • “图形”- gpu를사용합니다。

  • “multi-gpu”——디폴트클러스터프로파일에따라로컬병렬풀을사용하여컴퓨터1대에서여러개의GPU를사용합니다。기존병렬풀이없는경우소프트웨어는사용가능한GPU의개수와동일한풀크기로병렬풀을시작합니다。

  • “平行”-디폴트클러스터프로파일에따라로컬또는원격병렬풀을사용합니다。기존병렬풀이없는경우소프트웨어는디폴트클러스터프로파일을사용하여병렬풀을시작합니다。풀이GPU를사용할수있는경우,고유한GPU를갖는워커만훈련계산을수행합니다。풀에gpu가없는경우,사용가능한모든CPU워커에서대신훈련이이루어집니다。

서로다른실행환경을사용해야하는경우에대한자세한내용은并行、gpu和云中扩展深度学习항목을참조하십시오。

“图形”옵션,“multi-gpu”옵션,“平行”옵션을사용하려면并行计算工具箱™가필합니다。딥러닝을위해gpu를사용하려면지원되는gpu장치도필uc합니다。지원되는장치에대한자세한내용은릴리스별gpu지원(并行计算工具箱)항목을참조하십시오。이러한옵션중하나를선택했는데并行计算工具箱또는적당GPU한가없는경우,오류가반환됩니다。

병렬로훈련시킬때성능향상을도모하려면MiniBatchSizeInitialLearnRate훈련옵션을gpu의개수만큼늘려보십시오。

장단기기억(lstm)신경망의훈련은단일CPU또는단일gpu훈련만지원합니다。

다중gpu훈련또는병렬훈련에사용되는데이터저장소는분할가능해야합니다。자세한내용은使用数据存储进行并行训练和后台调度항목을참조하십시오。

“multi-gpu”옵션을분할가능한입력데이터저장소및“DispatchInBackground”옵션과함께사용하는경우,소프트웨어는디폴트풀크기와동일한크기의병렬풀을시작합니다。고유한gpu가있는워커는훈련계산을수행합니다。나머지워커는백그라운드디스패치용으로사용됩니다。

예:“ExecutionEnvironment”、“cpu的

여러gpu또는CPU사이의병렬워커부하분배로,“WorkerLoad”와함께다음중하나가쉼@ @로구분되어지정됩니다。

  • 0과1사이의스칼라-각컴퓨터에서신경망훈련계산에사용할워커의비율。백그라운드디스패치가활성화된미니배치데이터저장소의데이터를사용하여신경망을훈련시키는경우,나머지워커들은백그라운드에서데이터를가져와서전처리합니다。

  • 양의정수-각컴퓨터에서신경망훈련계산에사용할워커의개수。백그라운드디스패치가활성화된미니배치데이터저장소의데이터를사용하여신경망을훈련시키는경우,나머지워커들은백그라운드에서데이터를가져와서전처리합니다。

  • 숫자형벡터-병렬풀에있는각워커의신경망훈련부하。벡터W에대해워커는작업(미니배치당)중일정비율(W(我)/ (W)和)을할당받습니다。백그라운드디스패치가활성화된미니배치데이터저장소의데이터를사용하여신경망을훈련시키는경우,특정워커에로드0을할당하여백그라운드에서데이터를가져오는용도로해당워커를사용할수있습니다。지정된벡터는병렬풀의워커하나당값하나를가져야합니다。

병렬풀이GPU를사용할수있는경우,고유한GPU가없는워커는훈련계산에사용되지않습니다。GPU가있는풀에대한디폴트동작은고유한GPU를갖는모든워커를훈련계산에사용하고나머지워커를백그라운드디스패치에사용하는것입니다。풀이GPU을사용할수없고훈련CPU에가사용되는경우,디폴트값은컴퓨터당워커하나를백그라운드데이터디스패치용도로사용하는것입니다。

데이터저장소에서훈련데이터를읽어들일때백그라운드디스패치(비동기식프리페치대기)를사용할지여부로,또는真正的로지정됩니다。백그라운드디스패치를사용하려면并行计算工具箱가필요합니다。

DispatchInBackground는분할가능한데이터저장소에서만지원됩니다。자세한내용은使用数据存储进行并行训练和后台调度항목을참조하십시오。

검사 지점

모두 축소

검사지점신경망을저장할경로로,“CheckpointPath”와함께문자형벡터가쉼@ @로구분되어지정됩니다。

  • 경로를지정하지않으면(즉,디폴트값)을사용하는경우),검사지점신경망은저장되지않습니다。

  • 경로를지정한경우,trainNetwork는매时代후에이경로에검사지점신경망을저장하고각신경망에고유한이름을할당합니다。그러면,사용자는임의의검사지점신경망을불러와해당신경망에서훈련을재개할수있습니다。

    폴더가존재하지않는경우,검사지점신경망을저장할경로를지정하기전에먼저폴더를만들어야합니다。지정한경로가존재하지않는경우,trainingOptions는오류를반환합니다。

신경망검사지점저장에대한자세한내용은검사지점신경망을저장하고훈련재개하기항목을참조하십시오。

예:“CheckpointPath”、“C: \ Temp \检查点”

데이터형:字符

훈련중에호출할출력함수로,“OutputFcn”과함께함수핸들또는함수핸들로구성된셀형배열이쉼@ @로구분되어지정됩니다。trainNetwork는훈련시작전에한번,각반복후에,그리고훈련을마친후에한번지정된함수를호출합니다。trainNetwork는다음과같은필드에정보가담긴구조체를전달합니다。

필드 설명
时代 현재纪元횟수
迭代 현재반복횟수
TimeSinceStart 훈련시작이후경과된시간(단위:초)
TrainingLoss 현재미니배치손실
ValidationLoss 검데이터에대한손실
BaseLearnRate 현재기본학습률
TrainingAccuracy 현재미니배치에대한정확도(분류신경망)
TrainingRMSE 현재미니배치에대한rmse(회귀신경망)
ValidationAccuracy 검데이터에대한정확도(분류신경망)
ValidationRMSE 검데이터에대한rmse(회귀신경망)
状态 현재훈련상태로,가능한값은“开始”“迭代”또는“完成”입니다。

특정필드가계산되지않았거나출력함수에대한특정호출과관련이없는경우,해당필드는빈배열을포함하게됩니다。

출력함수를사용하여진행상황정보를표시하거나플로팅할수도있고훈련을중단할수도있습니다。훈련을조기에중단하려면출력함수가真正的를반환하도록하십시오。출력함수가真正的를반환하면훈련이완료되고trainNetwork는가장최근의신경망을반환합니다。출력함수를사용하는방법을보여주는예제는딥러닝신경망훈련중의출력값사용자지정하기항목을참조하십시오。

데이터형:function_handle|细胞

출력marketing수

모두 축소

훈련옵션으로,TrainingOptionsSGDMTrainingOptionsRMSProp또는TrainingOptionsADAM객체로반환됩니다。신경망을훈련시키려면훈련옵션을trainNetwork함수의입력수로사용하십시오。

solverName“个”“rmsprop”또는“亚当”경우,훈련옵션은각각TrainingOptionsSGDMTrainingOptionsRMSProp또는TrainingOptionsADAM객체로반환됩니다。

TrainingOptionsSGDMTrainingOptionsADAMTrainingOptionsRMSProp객체의훈련옵션속성을직접편집할수있습니다。예를들어,trainingOptions함수를사용한후에미니배치크기를변경하려면다음과같이MiniBatchSize속성을직접편집할수있습니다。

options = trainingOptions('sgdm');选项。MiniBatchSize = 64;

알고리즘

모두 축소

초기가중치와편향

컨벌루션계층과완전연결계층의경우,가중치와편향의초기화는각각계층의WeightsInitializer속성과BiasInitializer속성으로지정됩니다。가중치와편향의초기화를변경하는방법을보여주는예제는컨벌루션계층에서초기가중치와편향지정하기완전연결계층에초기가중치와편향지정하기항목을참조하십시오。

확률적경사하강법

표준경사하강법알고리즘은다음과같이각반복에서손실에대한음의기울기방향으로작은스텝을취하여손실함수를최소화하도록신경망파라미터(가중치와편향)를업데이트합니다。

θ + 1 θ α E θ

여기서 은반복횟수이고, α > 0 은학습률이고, θ 는파라미터벡터이고, E θ 는손실함수입니다。준경사하강법알고리즘에서손실함수의기울기 E θ 는전체훈련세트를사용하여계산되며,표준경사하강법알고리즘은한번에전체데이터세트를사용합니다。

반면에확률적경사하강법알고리즘은각반복에서훈련데이터의일부를사용하여기울기를계산하고파라미터를업데이트합니다。각반복에는미니배치라는다른서브셋이사용됩니다。미니배치를사용하여훈련알고리즘이전체훈련세트를완전히한번통과하는것을时代1회라고합니다。확률적경사하강법은미니배치를사용하여계산되는파라미터업데이트가전체데이터세트를사용할경우결과로생성될파라미터업데이트의잡음이있는추정값이어서확률적입니다。“MiniBatchSize”이름-값쌍通讯录수를사용하여미니배치크기를지정하고“MaxEpochs”이름-값쌍수를사용하여최대纪元횟수를지정할수있습니다。

모멘텀을사용한확률적경사하강법

확률적경사하강법알고리즘은최적해를향해가는최속강하법경로에서진동이발생할수있습니다。이러한진동을줄이는한가지방법으로파라미터업데이트에모멘텀항을추가하는것을들수있습니다[2].모멘텀을사용한확률적경사하강법(sgdm)업데이트는다음과같이` ` `현됩니다。

θ + 1 θ α E θ + γ θ θ 1

여기서 γ 는직전기울기스텝이현재반복에서차지하는비중을결정합니다。이 값은“动量”이름-값쌍通讯录수를사용하여지정할수있습니다。모멘텀을사용한확률적경사하강법알고리즘을사용하여신경망을훈련시키려면solverName“个”으로지정하십시오。학습률의초기값을α로지정하려면“InitialLearnRate”이름-값쌍通讯录수를사용하십시오。서로다른계층과파라미터에서로다른학습률을지정할수도있습니다。자세한내용은컨벌루션계층및완전연결계층에서파라미터설정하기항목을참조하십시오。

RMSProp

모멘텀을사용한확률적경사하강법은모든파라미터에대해하나의학습률을사용합니다。파라미터에따라다를뿐만아니라최적화중인손실함수에자동적으로적응할수있는학습률을사용하여신경망훈련을개선하는최적화알고리즘도있습니다。그중하나가RMSProp(RMS전파)입니다。RMSProp는파라미터기울기의소별제곱의이동평균을유지합니다。

v β 2 v 1 + 1 β 2 E θ 2

β2는이동평균의감쇠율입니다。감쇠율의일반적marketing값은0.9,0.99,0.999입니다。제곱기울기의대응되는평균길이는1/(1-β2),즉각각10,100,1000의파라미터업데이트와같습니다。β2“SquaredGradientDecayFactor”이름-값쌍通讯录수를사용하여지정할수있습니다。RMSProp알고리즘은이러한이동평균을사용하여각파라미터의업데이트를개별적으로정규화합니다。

θ + 1 θ α E θ v + ϵ

여기서나눗셈은소별로이루어집니다。RMSProp를사용하면기울기가큰파라미터에대해서는학습률이효과적으로감소하고,기울기가작은파라미터에대해서는학습률이증가합니다。ɛ은0으로나누기를방지하기위해더해진작은상수입니다。ɛ은‘ε’이름——값쌍인수를사용하여지정할수있지만,통상적으로디폴트값으로도잘동작합니다。RMSProp를사용하여신경망을훈련시키려면solverName“rmsprop”로지정하십시오。

亚当

亚当(自适应矩估计에서유래)[4]은모멘텀항이추가된것을제외하면RMSProp와유사한파라미터업데이트를사용합니다。다음과같이파라미터기울기와그제곱값의소별이동평균을모두유지합니다。

β 1 1 + 1 β 1 E θ

v β 2 v 1 + 1 β 2 E θ 2

β1과β2감쇠율은각각“GradientDecayFactor”“SquaredGradientDecayFactor”이름-값쌍通讯录수를사용하여지정할수있습니다。亚当은이러한이동평균을사용하여신경망파라미터를다음과같이업데이트합니다。

θ + 1 θ α l v l + ϵ

여러반복동안기울기가비슷한경우에기울기의이동평균을사용하면파라미터업데이트가특정방향에서추진력(모멘텀)을갖게됩니다。기울기의대부분이잡음인경우,기울기의이동평균이작아지므로파라미터업데이트도작아집니다。ɛ은‘ε’이름-값쌍通讯录수를사용하여지정할수있습니다。디폴트값은대부분의경우잘동작하지만,특정문제에서는최대의1크기를갖는값이더좋은결과를낼수있습니다。亚当을사용하여신경망을훈련시키려면solverName“亚当”으로지정하십시오。전체亚当업데이트는훈련시작시에나타나는편향을정정하는메커니즘도포함합니다。자세한내용은[4]항목을참조하십시오。

“InitialLearnRate”이름-값쌍수를사용하여모든최적화알고리즘에대한학습률α를지정합니다。학습률의효과는각최적화알고리즘마다다르게나타나므로일반적으로최적의학습률도달라집니다。계층과파라미터에따라달라지는학습률을지정할수도있습니다。자세한내용은컨벌루션계층및완전연결계층에서파라미터설정하기항목을참조하십시오。

기울기제한

기울기의크기가기하급수적으로증가하는경우,훈련의안정성이떨어지고반복몇회만에발산할수도있습니다。이러한“기울기폭주”는또는로귀결되는훈련손실로나타납니다。기울기제한을사용하면학습률이높은경우및이상값이존재하는경우에훈련을안정화하여기울기폭주를방지하는데도움이됩니다[3].기울기제한을사용하면신경망을더빨리훈련시킬수있고,일반적으로학습된작업의정확도에영향을주지않습니다。

다음과같이두가지유형의기울기제한이있습니다。

  • 노름기반기울기제한은임계값을기준으로기울기를다시스케일링하며,기울기의방향은바꾸지않습니다。GradientThresholdMethod“l2norm”값과“global-l2norm”값은노름기반기울기제한방법입니다。

  • 값기반기울기제한은임계값보다큰편도함수를모두자르는데이는기울기의방향이임의로바뀌는결과로이어질수있습니다。값기반기울기제한을사용하면예측할수없는동작이나타날수있으나,충분히작은변경은신경망의발산을유발하지않습니다。GradientThresholdMethod“绝对值”값은값기반기울기제한방법입니다。

예제는딥러닝을사용한시계열전망딥러닝을사용한序列对序列분류항목을참조하십시오。

l2정규화

과적합을방지하는한가지방법으로손실함수 E θ 에대한가중치에대해정규화항을추가하는것을들수있습니다[1][2].정규화항은가중치감쇠라고도합니다。정규화항이있는손실함수는다음과같은형태를갖습니다。

E R θ E θ + λ Ω w

여기서 w 는가중벡터이고, λ 는정규화marketing자(계수)이고,정규화함수 Ω w 는다음과같습니다。

Ω w 1 2 w T w

편향은정규화되지않습니다[2].정규화자 λ “L2Regularization”이름-값쌍通讯录수를사용하여지정할수있습니다。서로다른계층과파라미터에대해서로다른정규화자를지정할수도있습니다。자세한내용은컨벌루션계층및완전연결계층에서파라미터설정하기항목을참조하십시오。

소프트웨어가신경망훈련에사용하는손실함수에는정규화항이포함됩니다。그러나훈련중에명령창과훈련진행상황플롯에표시되는손실값은데이터에대한손실만이며정규화항은포함되지않습니다。

호환성관련고려사항

모두 확장

R2018b에서동작이변경됨

R2018b에서동작이변경됨

참고 문헌

毕晓普,C. M.模式识别与机器学习。施普林格,纽约,纽约,2006。

[2]墨菲,k.p.机器学习:一个概率的角度。麻省理工学院出版社,剑桥,马萨诸塞州,2012年。

[3]帕斯卡努,R., T.米科洛夫,Y.本吉奥。"关于训练循环神经网络的难度"第30届机器学习国际会议论文集。Vol. 28(3), 2013, pp. 1310-1318。

[4]金玛,迪德里克和吉米巴。《亚当:随机优化方法》arXiv预打印arXiv:1412.6980(2014)。

R2016a에개발됨