主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

trainingOptions

深層学習ニューラル ネットワークの学習のオプション

说明

选项= trainingOptions (solverNameは,solverNameによって指定されるオプティマイザーの学習オプションを返します。ネットワークに学習させるには,学習オプションを関数Trainnetwork.への入力引数として使用します。

选项= trainingOptions (solverName名称,价值は、学習オプションと、1.つ以上の名前と値のペアの引数で指定された追加オプションを返します。

すべて折りたたむ

モーメンタム項付き確率的勾配降下法を使用したネットワーク学習の一連のオプションを作成します。5エポックごとに0.2ずつ学習率を下げます。学習のエポックの最大回数を20に設定し,反復ごとに64個の観測値があるミニバッチを使用します。学習の進行状況プロットをオンにします。

选择= trainingOptions (“个”...“LearnRateSchedule”“分段”...“LearnRateDropFactor”, 0.2,...“LearnRateDropPeriod”5,...'MaxEpochs'20,...“MiniBatchSize”,64,...“阴谋”“训练进步”
选项=培训选项带属性的SGDM:动量:0.9000初始LearnRate:0.0100 LearnRateSchedule:“分段”LearnRateDropFactor:0.2000 LearnRateDropPeriod:5 L2规则化:1.0000e-04梯度阈值方法:“l2norm”梯度阈值:Inf MaxEpochs:20小批量大小:64详细:1详细频率:50验证数据:[]ValidationFrequency:50 ValidationPatience:Inf Shuffle:'once'检查点路径:'ExecutionEnvironment:'auto'WorkerLoad:[]OutputFcn:[]绘图:'training progress'SequenceLength:'longest'SequencePaddingValue:0 SequencePaddingDirection:'right'DispatchingBackground:0 ResetInputNormalization:1

深層学習のネットワークに学習させる場合,学習の進行状況を監視すると役に立つことがよくあります。学習中のさまざまなメトリクスのプロットにより,学習の進行状況を知ることができます。たとえば,ネットワークの精度が改善されているかどうか,その改善の速度,さらにネットワークで学習データへの過適合が始まっているかどうかを判定できます。

trainingOptions“阴谋”の値として“训练进步”を指定してネットワークの学習を開始すると,Trainnetwork.によって 图形が作成され、反復ごとに学習メトリクスが表示されます。各反復は,勾配の推定と,ネットワークパラメーターの更新で構成されます。trainingOptionsに検証データを指定すると,Trainnetwork.によってネットワークが検証されるたびに图に検証メトリクスが表示されます。图には次がプロットされます。

  • 学習精度——個々のミニバッチの分類精度。

  • 平滑化後の学習精度——学習精度に平滑化アルゴリズムを適用することによって求められる,平滑化された学習精度。精度を平滑化していない場合よりノイズが少なく,傾向を見つけやすくなります。

  • 検証精度— (trainingOptionsを使用して指定された)検証セット全体に対する分類精度。

  • 学習損失平滑化後の学習損失検証損失-それぞれ,各ミニバッチの损失,その平滑化バージョン,検证セットの损失。ネットワークの最后の层がclassificationLayerである场合,损失关数は交差エントロピー损失です。分类问题と回帰问题の损失关数の详细は,出力层を参照してください。

回帰ネットワークの場合,图には精度ではなく平方根平均二乗誤差(RMSE)がプロットされます。

图では,影付きの背景を使用して各学习エポックがマークされます。1エポックは,データセット全体を一巡することです。

学习中,右上隅の停止ボタンをクリックして学习を停止し,ネットワークの现在の状态を返すことができます。たとえば,ネットワークの精度が横ばい状态に达し,これ以上改善されないことが明确な场合に,学习の停止が必要になることがあります。停止ボタンのクリックの后,学习が完了するまでしばらくかかることがあります。学习が完了すると,Trainnetwork.が学习済みネットワークを返します。

学習が終了すると,[结果]に最終検証精度と学習の終了理由が表示されます。最終検証メトリクスには,プロット内で(最终)というラベルが付いています。ネットワークにバッチ正規化層が含まれている場合,通常,最終検証メトリクスは学習中に評価される検証メトリクスとは異なります。これは,最終的なネットワークのバッチ正規化層では,学習中とは異なる処理が実行されるためです。

右側には,学習の時間と設定に関する情報が表示されます。学習オプションの詳細は,パラメーターの設定と畳み込みニューラルネットワークの学習を参照してください。

学習時の進行状況のプロット

ネットワークに学習させ,学習中にその進行状況をプロットします。

5000個の数字のイメージが格納されている学習データを読み込みます。ネットワークの検証用に 1000個のイメージを残しておきます。

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

数字のイメージデータを分类するネットワークを构筑します。

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

ネットワーク学習のオプションを指定します。学習中に一定の間隔でネットワークを検証するための検証データを指定します。エポックごとに約1回ネットワークが検証されるように,“ValidationFrequency”の値を選択します。学習時の進行状況をプロットするため、“阴谋”の値として“训练进步”を指定します。

选择= trainingOptions (“个”...'MaxEpochs'8...'vightationdata'{XValidation, YValidation},...“ValidationFrequency”30岁的...“详细”,错误的,...“阴谋”“训练进步”);

ネットワークに学習をさせます。

网= trainNetwork (XTrain、YTrain层,选择);

入力引数

すべて折りたたむ

ネットワークの学習用のソルバー。次のいずれかに指定します。

  • “个”——モーメンタム項付き確率的勾配降下法(个)オプティマイザーを使用します。モーメンタム項の値は,名前と値のペアの引数“动量”を使用して指定できます。

  • “rmsprop”——RMSPropオプティマイザーを使用します。勾配の二乗の移動平均の減衰率は,名前と値のペアの引数'SquaredGradientDecayFactor'を使用して指定できます。

  • “亚当”-亚当オプティマイザーを使用します。勾配の移動平均の減衰率と勾配の二乗の移動平均の減衰率は、名前と値のペアの引数'GradientDecayFactor''SquaredGradientDecayFactor'をそれぞれ使用して指定できます。

さまざまなソルバーの詳細は,确率的勾配降下法を参照してください。

名前と値のペアの引数

オプションの引数名称,价值のコンマ区切りペアを指定します。的名字は引数名で,价值は対応する値です。的名字は引用符で囲まなければなりません。名称1,值1,…,名称,值のように,复数の名前と値のペアの引数を,任意の顺番で指定できます。

例:“InitialLearnRate”,0.03,“L2Regularization”,0.0005,“LearnRateSchedule”、“分段”は,初期学習率を0.03,L.20.0005正則化係数をに指定し,指定されたエポック数ごとに特定の係数を乗算して学習率を下げるように指定します。
プロットと表示

すべて折りたたむ

ネットワークの学習中に表示するプロット。“阴谋”と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • '没有任何'——学習中にプロットを表示しません。

  • “训练进步”——学習の進行状況をプロットします。プロットには,ミニバッチの損失と精度,検証の損失と精度,および学習の進行状況に関する追加情報が表示されます。プロットの右上隅には,停止ボタンがあります。そのボタンをクリックすると,学習が停止し,ネットワークの現在の状態が返されます。学習の進行状況プロットの詳細は,深层学习における学习の进行状况の监视を参照してください。

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

コマンドウィンドウに学习の进行状况の情报を表示するかどうかのインジケーター。“详细”と,1真正的) または0.)のいずれかで構成されるコンマ区切りのペアとして指定します。

詳細出力には次の情報が表示されます。

分類ネットワーク

フィールド 说明
时代 エポック数。1.エポックは、データを一巡することに対応します。
迭代 反复回数,反复は,ミニバッチに対応します。
时间流逝 経過時間。時間、分、秒で示されます。
小批量精度 ミニバッチの分類精度。
验证准确度 検证データの分类精度。検证データを指定しない场合,このフィールドは表示されません。
Mini-batch损失 ミニバッチの損失。出力層がClassificationOutputLayerオブジェクトの場合,損失は,互いに排他的なクラスを含むマルチクラス分類問題の交差エントロピー損失です。
确认损失 検証データの損失。出力層がClassificationOutputLayerオブジェクトの場合,損失は,互いに排他的なクラスを含むマルチクラス分類問題の交差エントロピー損失です。検証データを指定しない場合,このフィールドは表示されません。
基本学习率 基本学習率。層の学習率係数とこの値が乗算されます。

回帰ネットワーク

フィールド 说明
时代 エポック数。1.エポックは、データを一巡することに対応します。
迭代 反复回数,反复は,ミニバッチに対応します。
时间流逝 経過時間。時間、分、秒で示されます。
Mini-batch RMSE ミニバッチの平方根平均二乗誤差(RMSE)。
验证RMSE 検証データのRMSE。検証データを指定しない場合、このフィールドは表示されません。
Mini-batch损失 ミニバッチの損失。出力層がRegressionOutputLayerオブジェクトの場合、損失は半平均二乗誤差になります。
确认损失 検証データの損失。出力層がRegressionOutputLayerオブジェクトの场合,损失は半平均二乘误差になります。検证データを指定しない场合,このフィールドは表示されません。
基本学习率 基本学習率。層の学習率係数とこの値が乗算されます。

検証データを指定するには、名前と値のペア'vightationdata'を使用します。

例:“详细”,假的

コマンドウィンドウへの表示间の反复回数を示す,详细出力の频度。“VerboseFrequency”と正の整数で構成されるコンマ区切りのペアとして指定します。このオプションは,“详细”の値が真正的に等しい場合にのみ有効です。

学習中にネットワークを検証する場合、Trainnetwork.でも,検证时に毎回,コマンドウィンドウへの出力が行われます。

例:“VerboseFrequency”,100年

ミニバッチオプション

すべて折りたたむ

学習に使用するエポックの最大回数。'MaxEpochs'と正の整数で構成されるコンマ区切りのペアとして指定します。

反复とは,勾配降下法アルゴリズムでミニバッチを使用して损失关数の最小化を目指して実行される1ステップのことです0.1エポックは,データセット全体を一巡することです。

例:'MaxEpochs',20

学習の各反復で使用するミニバッチのサイズ。“MiniBatchSize”と正の整数で構成されるコンマ区切りのペアとして指定します。ミニバッチとは,損失関数の勾配を評価し,重みを更新するために使用される学習セットのサブセットのことです。确率的勾配降下法を参照してください。

例:“MiniBatchSize”,256年

データのシャッフルのオプション。“洗牌”と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • '一次'——学習前に1回,学習データと検証データをシャッフルします。

  • “永远”- データをシャッフルしません。

  • “every-epoch”— 各学習エポックの前に学習データをシャッフルし、ネットワークの各検証の前に検証データをシャッフルします。ミニバッチのサイズによって学習標本の数が均等に分割されない場合、Trainnetwork.は,各エポックの最後の完全なミニバッチに収まらない学習データを破棄します。すべてのエポックで同じデータが破棄されるのを回避するには,“洗牌”の値を“every-epoch”に設定します。

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

検証

すべて折りたたむ

学习中に検证に使用するデータ。イメージデータストア,データストア,表,または细胞配列として指定します。検证データの形式はタスクのタイプによって异なり,关数Trainnetwork.への有效な入力に対応します。

検证データを次のいずれかとして指定します。

入力 Trainnetwork.の引数
イメージデータストア IMDS.
データストア ds
表格 tbl
细胞配列{X, Y} X X
y y
细胞配列{序列,Y} 序列 序列
y y

学习中に,Trainnetwork.は検証データの検証精度と検証損失を計算します。検証頻度を指定するには,名前と値のペアの引数“ValidationFrequency”を使用します。検証データを使用して、検証損失が減少しなくなったときに学習を自動的に停止することもできます。自動検証停止をオンにするには、名前と値のペアの引数“ValidationPatience”を使用します。

ネットワークに予測時と学習中で動作が異なる層(ドロップアウト層など)がある場合,検証精度が学習(ミニバッチ)精度より高くなる可能性があります。

検証データは,“洗牌”の値に従ってシャッフルされます。“洗牌”の値が“every-epoch”に等しい場合,検証データはネットワークの各検証の前にシャッフルされます。

ネットワークの検证の频度(反复回数)。“ValidationFrequency”と正の整数で構成されるコンマ区切りのペアとして指定します。

“ValidationFrequency”の値は,検証メトリクスの評価間の反復回数です。検証データを指定するには,名前と値のペアの引数'vightationdata'を使用します。

例:“ValidationFrequency”,20

ネットワークの学習の検証停止までの待機回数。“ValidationPatience”と,正の整数またはInfで構成されるコンマ区切りのペアとして指定します。

“ValidationPatience”の値は,ネットワークの学習が停止するまでに,検証セットでの損失が前の最小損失以上になることが許容される回数です。自動検証停止をオンにするには,“ValidationPatience”の値として正の整数を指定します。既定値のInfを使用すると,最大回数のエポックの后に学习が停止します。検证データを指定するには,名前と値のペアの引数'vightationdata'を使用します。

例:'ValidationPatience',5

ソルバーオプション

すべて折りたたむ

学习に使用する初期学习率。“InitialLearnRate”と正のスカラーで構成されるコンマ区切りのペアとして指定します。既定値は,“个”ソルバーでは 0.01、“rmsprop”および“亚当”0.001ソルバーではです。学習率が小さすぎる場合,学習に時間がかかります。学習率が大きすぎる場合,学習結果が準最適になったり,発散したりすることがあります。

例:“InitialLearnRate”,0.03

データ型:|

学習中に学習率を下げるオプション。“LearnRateSchedule”と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • '没有任何'——学習率は学習全体を通じて一定のままです。

  • “分段”——特定のエポック数ごとに特定の係数を乗算して学習率が更新されます。この係数の値を指定するには,名前と値のペアの引数LearnRateDropFactorを使用します。乘算の间隔のエポック数を指定するには,名前と値のペアの引数LearnRateDropPeriodを使用します。

例:“LearnRateSchedule”、“分段”

学習率を下げるまでのエポック数。“LearnRateDropPeriod”と正の整数で構成されるコンマ区切りのペアとして指定します。このオプションは,LearnRateScheduleの値が“分段”の場合にのみ有効です。

指定したエポック数が経過するたびに,グローバル学習率と低下係数が乗算されます。名前と値のペアの引数LearnRateDropFactorを使用して低下係数を指定します。

例:“LearnRateDropPeriod”,3

学習率を下げる係数。“LearnRateDropFactor”と0から1までのスカラーで构成されるコンマ区切りのペアとして指定します。このオプションは,LearnRateScheduleの値が“分段”の場合にのみ有効です。

LearnRateDropFactorは,特定のエポック数が経過するたびに学習率に適用される乗法係数です。名前と値のペアの引数LearnRateDropPeriodを使用してエポック数を指定します。

例:'LearnRateDropFactor',0.1

データ型:|

L.2正則化(重み減衰)の係数。“L2Regularization”と非負のスカラーで構成されるコンマ区切りのペアとして指定します。詳細については,L2正則化を参照してください。

学習可能なパラメーターのあるネットワーク層に対してL2正則化の乗数を指定できます。詳細については,畳み込み層と全結合層のパラメーターの設定を参照してください。

例:“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であり,平均化の長さとしては10100年および1000回のパラメーター更新にそれぞれ対応しています。亚当ソルバーの既定値は0.999です。RMSPropソルバーの既定値は 0.9 です。

さまざまなソルバーの詳細は,确率的勾配降下法を参照してください。

例:“SquaredGradientDecayFactor”,0.99

データ型:|

亚当およびRMSPropソルバーの分母のオフセット。‘ε’と正のスカラーで構成されるコンマ区切りペアとして指定します。ソルバーは,ネットワークパラメーターの更新時に分母にオフセットを追加して,ゼロ除算を回避します。

‘ε’の値を指定するには,solverName“亚当”または“rmsprop”に設定しなければなりません。ほとんどの問題において,既定値で良い結果が得られます。さまざまなソルバーの詳細は,确率的勾配降下法を参照してください。

例:'小量',1E-6

データ型:|

入力層の正規化をリセットするオプション。次のいずれかに指定します。

  • 真正的——入力層の正規化統計量をリセットし,学習時に再計算します。

  • ——正規化統計量が空の場合,学習時に計算します。

勾配クリップ

すべて折りたたむ

勾配のしきい値。'gradientthreshold'Infまたは正のスカラーで構成されるコンマ区切りのペアとして指定します。勾配がGradientThresholdの値を超えた场合,勾配はGradientThresholdMethodに応じてクリップされます。

例:“GradientThreshold”6

勾配のしきい値を超えた勾配の値をクリップするために使用する勾配しきい値法。“GradientThresholdMethod”と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • “l2norm”——学習可能なパラメーターの勾配のL2ノルムがGradientThresholdより大きい場合は,L2ノルムがGradientThresholdに等しくなるように勾配をスケーリングします。

  • “global-l2norm”- グローバル大号2ノルム大号がGradientThresholdより大きい场合は,すべての勾配をGradientThreshold /L倍にスケーリングします。グローバルL2ノルムでは,すべての学習可能なパラメーターが考慮されます。

  • “绝对值”——学習可能なパラメーターの勾配に含まれる個々の偏微分の絶対値がGradientThresholdより大きい場合,偏微分の符号を維持したまま,大きさがGradientThresholdに等しくなるように偏微分をスケーリングします。

詳細は,勾配クリップを参照してください。

例:'GradientThresholdMethod', '全球l2norm'

シーケンスオプション

すべて折りたたむ

入力シーケンスのパディング,切り舍て,または分割を行うオプション。次のいずれかに指定します。

  • “最长”——各ミニバッチで,最長のシーケンスと同じ長さになるようにシーケンスのパディングを行います。このオプションを使用するとデータは破棄されませんが,パディングによってネットワークにノイズが生じることがあります。

  • “最短的”——各ミニバッチで,最短のシーケンスと同じ長さになるようにシーケンスの切り捨てを行います。このオプションを使用するとパディングは追加されませんが,データが破棄されます。

  • 正の整数——各ミニバッチで,ミニバッチで最長のシーケンスより大きい,指定長の最も近い倍数になるようにシーケンスのパディングを行った後,それらのシーケンスを指定長のより小さなシーケンスに分割します。分割が発生すると,追加のミニバッチが作成されます。シーケンス全体がメモリに収まらない場合は,このオプションを使用します。または,“MiniBatchSize”オプションをより小さい値に设定して,ミニバッチごとのシーケンス数を减らしてみます。

入力シーケンスのパディング,切り捨て,および分割の効果の詳細は,シーケンスのパディング,切り捨て,および分割を参照してください。

例:“SequenceLength”、“最短的

パディングまたは切り舍ての方向。次のいずれかに指定します。

  • “对”——シーケンスの右側に対してパディングまたは切り捨てを行います。シーケンスは同じタイムステップで始まり,シーケンスの末尾に対して切り捨てまたはパディングの追加が行われます。

  • '剩下'- シーケンスの左侧に対してパディングまたは切り舍てを行いますシーケンスが同じタイムステップで终わるように,シーケンスの先头に対して切り舍てまたはパディングの追加が行われます。

LSTM层は1タイムステップずつシーケンスデータを处理するため,层のOutputMode.プロパティが'最后的'の場合,最後のタイムステップでパディングを行うと層の出力に悪影響を与える可能性があります。シーケンスデータの左側に対してパディングまたは切り捨てを行うには,“SequencePaddingDirection”オプションを'剩下'に設定します。

序列到序列ネットワークの场合(各LSTM层についてOutputMode.プロパティが'序列'である场合),最初のタイムステップでパティングを行うと,それ以前のタイムステップの予测に悪影响を与える可能性があります。シーケンスの右侧に対してパディングまたは切り舍てを行うには,“SequencePaddingDirection”オプションを“对”に設定します。

入力シーケンスのパディング,切り捨て,および分割の効果の詳細は,シーケンスのパディング,切り捨て,および分割を参照してください。

入力シーケンスをパディングする値。スカラーとして指定します。このオプションは,Sequencelength.“最长”または正の整数の场合にのみ有效です。ネットワーク全体にエラーが伝播される可能性があるため,でシーケンスをパディングしないでください。

例:'sequencdpaddingsvalue', - 1

ハードウェア オプション

すべて折りたたむ

ネットワークの学習用のハードウェアリソース。次のいずれかに指定します。

  • '汽车'——利用可能な場合,GPUを使用します。そうでない場合、CPUを使用します。

  • “cpu”——CPUを使用します。

  • “图形”- - - - - - GPUを使用します。

  • “multi-gpu”——既定のクラスタープロファイルに基づいてローカルの並列プールを使用して,1つのマシンで複数のGPUを使用します。現在の並列プールがない場合,使用可能なGPUの数と等しいプールサイズの並列プールが起動されます。

  • “平行”- 。既定のクラスタープロファイルに基づいてローカルまたはリモートの并列プールを使用します现在の并列プールがない场合,既定のクラスタープロファイルを使用して1つのプールが起动されますプールからGPUにアクセスできる场合,固有のGPUを持つワーカーのみが学习计算を実行します。プールにGPUがない场合,代わりに使用可能なすべてのCPUワーカーで学习が実行されます。

さまざまな実行環境をどのような場合に使用するかの詳細は,並列およびクラウドでの深層学習のスケールアップを参照してください。

GPU,マルチGPU,および並列オプションには并行计算工具箱™が必要です。深層学習にGPUを使用するには,以3.0计算能力上のCUDA®対応NVIDIA®GPUも必要です。これらのいずれかのオプションの選択時に并行计算工具箱または適切なGPUを利用できない場合,エラーが返されます。

并列学习の実行时に性能の改善を确认するには,MiniBatchSizeおよびInitialLearnRate学習オプションをGPUの数でスケールアップしてみてください。

长短期记忆ネットワークの学习では,1つのCPUまたは1つのGPUでの学习のみがサポートされます。

マルチGPUでの学習または並列学習に使用されるデータストアは分割可能でなければなりません。詳細については,并列学习およびバックグラウンドディスパッチへのデータストアの使用を参照してください。

“multi-gpu”オプションを分割可能な入力データストアおよび'DispatchInBackground'オプションと共に使用すると,既定のプールサイズと等しいサイズの並列プールが起動されます。固有のGPUを持つワーカーは学習計算を実行します。残りのワーカーはバックグラウンドディスパッチ用に使用されます。

例:“ExecutionEnvironment”、“cpu的

GPUまたはCPU間での並列ワーカーの負荷分割。“WorkerLoad”と次のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 0から 1.までのスカラー — ネットワーク学習計算に使用する各マシンのワーカーの割合。バックグラウンド ディスパッチを有効にしたミニバッチ データストアのデータを使用してネットワークの学習を行う場合、残りのワーカーはバックグラウンドでデータを取得して処理します。

  • 正の整数——ネットワーク学習計算に使用する各マシンのワーカー数。バックグラウンドディスパッチを有効にしたミニバッチデータストアのデータを使用してネットワークの学習を行う場合,残りのワーカーはバックグラウンドでデータを取得して処理します。

  • 数値ベクトル——並列プール内の各ワーカーのネットワーク学習の負荷。ベクトルW.の場合,ワーカー一世W(我)/ (W)和の割合の作业(ミニバッチあたりの例の数)を取得します。バックグラウンドディスパッチを有效にしたミニバッチデータストアのデータを使用してネットワークの学习を行う场合,ワーカーの负荷を0にすることで,そのワーカーをバックグラウンドでのデータ取得に使用できます。指定するベクトルには,并列プール内のワーカーごとに1つの値が含まれていなければなりません。

並列プールからGPUにアクセスできる場合,固有のGPUを持たないワーカーは学習計算に使用されません。GPUを持つプールの場合,既定では,固有のGPUを持つすべてのワーカーを学習計算に使用し,残りのワーカーをバックグラウンドディスパッチに使用します。プールからGPUにアクセスできず,CPUを学習に使用する場合,既定では,マシンあたり1つのワーカーをバックグラウンドデータディスパッチに使用します。

バックグラウンドディスパッチ(非同期事前取得キュー)を使用した,データストアからの学習データの読み取り。または真正的として指定します。バックグラウンドディスパッチには并行计算工具箱が必要です。

DispatchInBackgroundは、分割可能なデータストアでのみサポートされます。詳細については、并列学习およびバックグラウンドディスパッチへのデータストアの使用を参照してください。

チェックポイント

すべて折りたたむ

チェックポイントネットワークの保存用のパス。'checkpoinspath'と文字ベクトルで構成されるコンマ区切りのペアとして指定します。

  • パスを指定しない(既定の''を使用する)場合,チェックポイントネットワークは保存されません。

  • パスを指定すると,Trainnetwork.によってエポックの終了ごとにこのパスにチェックポイントネットワークが保存され,各ネットワークに一意の名前が割り当てられます。その後,いずれかのチェックポイントネットワークを読み込み,そのネットワークから学習を再開できます。

    フォルダーが存在していない場合,チェックポイントネットワークを保存するパスを指定する前に,まずフォルダーを作成しなければなりません。指定したパスが存在していない場合,trainingOptionsはエラーを返します。

ネットワークチェックポイントの保存の詳細は,チェックポイントネットワークの保存と学習の再開を参照してください。

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

データ型:字符

学習中に呼び出す出力関数。“OutputFcn”と、関数ハンドルまたは関数ハンドルの 细胞配列で構成されるコンマ区切りのペアとして指定します。Trainnetwork.は,学習の開始前に1回,各反復後,学習の終了後に1回,指定された関数を呼び出します。Trainnetwork.は,次のフィールドに情報を格納する構造体を渡します。

フィールド 说明
时代 現在のエポック数
迭代 現在の反復回数
TimeSinceStart 学習を開始してからの時間(秒単位)
TrainingLoss 現在のミニバッチの損失
ValidationLoss 検証データの損失
BaseLearnRate 現在の基本学習率
TrainingAccuracy 現在のミニバッチの精度(分類ネットワーク)
TrainingRMSE 現在のミニバッチのRMSE(回帰ネットワーク)
ValidationAccuracy 検证データの精度(分类ネットワーク)
ValidationRMSE 検証データのRMSE(回帰ネットワーク)
状态 現在の学習の状態(可能な値は“开始”“迭代”、または“完成”

フィールドが計算されない,または出力関数の特定の呼び出しに関連していない場合,そのフィールドには空の配列が含まれます。

出力関数を使用して,進行状況を表示またはプロットするか,学習を停止できます。学習を早期に停止するには,出力関数が真正的を返すようにします。いずれかの出力関数から真正的が返されると,学習が終了し,Trainnetwork.から最新のネットワークが返されます。出力関数の使用方法を示す例は,深層学習ネットワークの学習時の出力のカスタマイズを参照してください。

データ型:function_handle.|细胞

出力数

すべて折りたたむ

学習オプション。TrainingOptionsSGDM培训选项RMSPROP、またはTrainingOptionsADAMオブジェクトとして返されます。ニューラルネットワークに学習させるには,学習オプションを関数Trainnetwork.への入力引数として使用します。

solverName“个”“rmsprop”、または“亚当”に等しい場合,学習オプションはTrainingOptionsSGDM培训选项RMSPROP、またはTrainingOptionsADAMオブジェクトとしてそれぞれ返されます。

TrainingOptionsSGDMオブジェクト,TrainingOptionsADAMオブジェクト,および培训选项RMSPROPオブジェクトの学習オプションのプロパティを直接編集できます。たとえば,関数trainingOptionsを使用した後にミニバッチのサイズを変更するには,MiniBatchSizeプロパティを直接編集します。

选择= trainingOptions(个);选项。MiniBatchSize = 64;

ヒント

アルゴリズム

すべて折りたたむ

初期の重みとバイアス

畳み込み層と全結合層の場合,重みとバイアスの初期化はそれぞれ層のWeightsInitializerプロパティとBiasInitializerプロパティによって与えられます。重みとバイアスの初期化を変更する方法を示す例については,畳み込み層の初期の重みとバイアスの指定および全結合層の初期の重みとバイアスの指定を参照してください。

确率的勾配降下法

標準の勾配降下法アルゴリズムは,各反復で損失の負の勾配の方向に小さいステップで進むことによって損失関数を最小化するように,ネットワークパラメーター(重みとバイアス)を更新します。

θ + 1 = θ - α E. θ

ここで, は反復回数, α > 0. は学习率, θ はパラメーターベクトル, E. θ は損失関数を意味します。標準の勾配降下法アルゴリズムでは,損失関数の勾配 E. θ は,学習セット全体を使用して評価されます。標準の勾配降下法アルゴリズムでは,データセット全体を一度に使用します。

一方,“確率的“勾配降下法アルゴリズムは,各反復で学習データのサブセットを使用して勾配を評価し,パラメーターを更新します。各反復ではミニバッチと呼ばれる別のサブセットが使用されます。ミニバッチを使用して,学習セット全体に対する学習アルゴリズムを一巡することを,1“エポック”と言います。確率的勾配降下が確率的と言われるのは,ミニバッチを使用して計算されたパラメーター更新が,データセット全体を使用して得られるパラメーター更新のノイズを含む推定であるためです。名前と値のペアの引数“MiniBatchSize”'MaxEpochs'をそれぞれ使用して,ミニバッチのサイズとエポックの最大回数を指定できます。

モーメンタム项付き确率的勾配降下法

確率的勾配降下法アルゴリズムは,最適値への最急降下経路に沿って振動することがあります。パラメーター更新へのモーメンタム項の追加は,この振動を減らす方法の1つです[2]。モーメンタム项付き确率的勾配降下法(SGDM)の更新は,以下のとおりです。

θ + 1 = θ - α E. θ + γ θ - θ - 1

ここで, γ は,前の勾配ステップから现在の反复への寄与を决定します。名前と値のペアの引数“动量”を使用してこの値を指定できます。モーメンタム項付き確率的勾配降下法アルゴリズムを使用してニューラルネットワークの学習を行うには,solverName“个”に指定します。学習率αの初期値を指定するには,名前と値のペアの引数“InitialLearnRate”を使用します。層やパラメーターごとに異なる学習率を指定することもできます。詳細については,畳み込み層と全結合層のパラメーターの設定を参照してください。

RMSProp

モーメンタム項付き確率的勾配降下法は,すべてのパラメーターに対して1つの学習率を使用します。その他の最適化アルゴリズムでは,パラメーターごとに異なり,最適化対象の損失関数に自動的に適応できる学習率を使用して,ネットワーク学習の改善を試みます。RMSProp(平方根平均二乗伝播)は,そのようなアルゴリズムの1つです。これは,パラメーターの勾配について要素単位の二乗の移動平均を維持します。

V. = β 2 V. - 1 + 1 - β 2 [ E. θ ] 2

β2は移動平均の減衰率です。減衰率の一般的な値は,0.9,0.99,および0.999です。対応する勾配の二乗の平均化長は,1 /(1 -β2)に等しく,それぞれ10100年および1000回のパラメーター更新です。名前と値のペアの引数'SquaredGradientDecayFactor'を使用してβ2を指定できます.RMSPropアルゴリズムでは,この移动平均を使用して各パラメーターの更新を个别に正规化します。

θ + 1 = θ - α E. θ V. + ϵ

ここで,除算は要素単位で実行されます。RMSPropを使用すると、勾配が大きいパラメーターの学習率は効果的に減少し、勾配が小さいパラメーターの学習率は増加します。ɛ は、ゼロ除算を回避するために追加する小さい定数です。名前と値のペアの引数‘ε’を使用して,ɛを指定できますが,通常は既定値で良い结果が得られます.RMSPropを使用してニューラルネットワークの学习を行うには,solverName“rmsprop”に指定します。

亚当

亚当(自适应估计时刻,适応モーメント推定)[4]では,RMSPropに似ているが,モーメンタム項が追加されたパラメーター更新を使用します。これは,パラメーターの勾配とそれらの二乗値の両方について要素単位の移動平均を維持します。

m = β 1 m - 1 + 1 - β 1 E. θ

V. = β 2 V. - 1 + 1 - β 2 [ E. θ ] 2

减衰率β1とβ2は,名前と値のペアの引数'GradientDecayFactor''SquaredGradientDecayFactor'をそれぞれ使用して指定できます.Adamでは,移动平均を使用してネットワークパラメーターを次のように更新します。

θ + 1 = θ - α m L. V. L. + ϵ

多数の反復に対する勾配が類似している場合,勾配の移動平均を使用すると,パラメーター更新で特定方向のモーメンタム項を選択できます。勾配のほとんどがノイズである場合,勾配の移動平均が小さくなり,パラメーター更新も小さくなります。名前と値のペアの引数‘ε’を使用してɛを指定できます。通常は既定値で良い結果が得られますが,特定の問題では,1に近い大きな値の方がより良い場合があります。亚当を使用してニューラルネットワークの学習を行うには,solverName“亚当”に指定します。亚当の完全な更新には、学習の最初に現れるバイアスを補正するメカニズムも含まれています。詳細については、[4]を参照してください。

すべての最適化アルゴリズムの学習率αは,名前と値のペアの引数“InitialLearnRate”を使用して指定します。学習率の効果は最適化アルゴリズムによって異なるため、一般的に、最適な学習率も異なります。層やパラメーターごとに異なる学習率を指定することもできます。詳細については、畳み込み層と全結合層のパラメーターの設定を参照してください。

勾配クリップ

勾配の大きさが指数関数的に増加する場合,学習は不安定になり,数回の反復で発散する場合があります。この”勾配爆発“は学習損失がまたはInfになることによって示されます。勾配クリップでは那学習率が大きい場合や外れ値が存在する場合に学習を安定させることによって、勾配爆発を防ぎます[3]。勾配クリップを使用すると,ネットワークの学習が高速になり,通常は学習済みタスクの精度に影響はありません。

勾配クリップは2種類あります。

  • ノルムベースの勾配クリップでは,しきい値に基づいて勾配を再スケーリングし,勾配の方向は変更しません。GradientThresholdMethod“l2norm”値と“global-l2norm”値は,ノルムベースの勾配クリップ法です。

  • 値ベースの勾配クリップでは,しきい値より大きい任意の偏微分をクリップします。この場合,勾配の方向が任意に変化する可能性があります。値ベースの勾配クリップの動作は予測できないものになる場合がありますが,変化が十分に小さければ,ネットワークが発散することはありません。GradientThresholdMethodの値“绝对值”は,値ベースの勾配クリップ法です。

例については,深层学习を使用した时系列予测深层学习を使用した序列到序列分类を参照してください。

L.2正则化

損失関数 E. θ への重みの正則化項の追加は,過適合を抑える方法の1つです[1][2]。正則化項は,“重み减衰” とも呼ばれます。正则化项付きの损失关数は,以下の形式を取ります。

E. R. θ = E. θ + λ Ω W.

ここで, W. は重みベクトル, λ は正则化系数です。正则化关数 Ω W. は以下のようになります。

Ω W. = 1 2 W. T. W.

バイアスは正则化されないことに注意してください[2]。名前と値のペアの引数“L2Regularization”を使用して,正则化系数 λ を指定できます。层やパラメーターごとに异なる正则化系数を指定することもできます。详细については,畳み込み層と全結合層のパラメーターの設定を参照してください。

ネットワーク学习に使用される损失关数には,正则化项が含まれます。ただし,学习中にコマンドウィンドウと学习の进行状况プロットに表示される损失値はデータのみの损失であり,正则化项は含まれません。

互换性の考虑事项

すべて展開する

R2018bでの动作変更

R2018bでの动作変更

参照

[1] Bishop, c.m.模式识别与机器学习。施普林格,纽约,纽约,2006。

[2] Murphy, K. P.机器学习:概率视角。麻省理工学院出版社,剑桥,马萨诸塞州,2012年。

[3] 帕斯卡努,R.,T。米科洛夫和Y。班吉奥。”“关于训练递归神经网络的困难”。第30届机器学习国际会议记录。2013年第28(3)卷,第1310-1318页。

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

R2016aで導入