このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
深層学習のネットワークに学習させる場合、学習の進行状況を監視すると役に立つことがよくあります。学習中のさまざまなメトリクスのプロットにより、学習の進行状況を知ることができます。たとえば、ネットワークの精度が改善されているかどうか、その改善の速度、さらにネットワークで学習データへの過適合が始まっているかどうかを判定できます。
trainingOptions
で 'Plots'
の値として 'training-progress'
を指定してネットワークの学習を開始すると、trainNetwork
によって Figure が作成され、反復ごとに学習メトリクスが表示されます。各反復は、勾配の推定と、ネットワーク パラメーターの更新で構成されます。trainingOptions
に検証データを指定すると、trainNetwork
によってネットワークが検証されるたびに Figure に検証メトリクスが表示されます。Figure には次がプロットされます。
学習精度 — 個々のミニバッチの分類精度。
平滑化後の学習精度 — 学習精度に平滑化アルゴリズムを適用することによって求められる、平滑化された学習精度。精度を平滑化していない場合よりノイズが少なく、傾向を見つけやすくなります。
検証精度 — (trainingOptions
を使用して指定された) 検証セット全体に対する分類精度。
学習損失、平滑化後の学習損失、検証損失 — それぞれ、各ミニバッチの損失、その平滑化バージョン、検証セットの損失。ネットワークの最後の層が classificationLayer
である場合、損失関数は交差エントロピー損失です。分類問題と回帰問題の損失関数の詳細は、出力層を参照してください。
回帰ネットワークの場合、Figure には精度ではなく平方根平均二乗誤差 (RMSE) がプロットされます。
Figure では、影付きの背景を使用して各学習エポックがマークされます。1 エポックは、データセット全体を一巡することです。
学習中、右上隅の停止ボタンをクリックして学習を停止し、ネットワークの現在の状態を返すことができます。たとえば、ネットワークの精度が横ばい状態に達し、これ以上改善されないことが明確な場合に、学習の停止が必要になることがあります。停止ボタンのクリックの後、学習が完了するまでしばらくかかることがあります。学習が完了すると、trainNetwork
が学習済みネットワークを返します。
学習が終了すると、[Results] に最終検証精度と学習の終了理由が表示されます。最終検証メトリクスには、プロット内で [Final] というラベルが付いています。ネットワークにバッチ正規化層が含まれている場合、通常、最終検証メトリクスは学習中に評価される検証メトリクスとは異なります。これは、最終的なネットワークのバッチ正規化層では、学習中とは異なる処理が実行されるためです。
右側には、学習の時間と設定に関する情報が表示されます。学習オプションの詳細は、パラメーターの設定と畳み込みニューラル ネットワークの学習を参照してください。
ネットワークに学習させ、学習中にその進行状況をプロットします。
5000 個の数字のイメージが格納されている学習データを読み込みます。ネットワークの検証用に 1000 個のイメージを残しておきます。
[XTrain,YTrain] = digitTrain4DArrayData; idx = randperm(size(XTrain,4),1000); XValidation = XTrain(:,:,:,idx); XTrain(:,:,:,idx) = []; YValidation = YTrain(idx); YTrain(idx) = [];
数字のイメージ データを分類するネットワークを構築します。
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 classificationLayer];
ネットワーク学習のオプションを指定します。学習中に一定の間隔でネットワークを検証するための検証データを指定します。エポックごとに約 1 回ネットワークが検証されるように、'ValidationFrequency'
の値を選択します。学習時の進行状況をプロットするため、'Plots'
の値として 'training-progress'
を指定します。
options = trainingOptions('sgdm', ... 'MaxEpochs',8, ... 'ValidationData',{XValidation,YValidation}, ... 'ValidationFrequency',30, ... 'Verbose',false, ... 'Plots','training-progress');
ネットワークに学習をさせます。
net = trainNetwork(XTrain,YTrain,layers,options);
trainingOptions
| trainNetwork