カスタム学習ル,プ,損失関数,およびネットワ,クの定義
ほとんどの深層学習タスクでは,事前学習済みのネットワークを使用して独自のデータに適応させることができます。転移学習を使用して,畳み込みニューラルネットワークの再学習を行い,新しい一連のイメージを分類する方法を示す例については,新しいメジを分類するための深層学習ネットワクの学習を参照してください。または,layerGraph
オブジェクトを関数trainNetwork
および関数trainingOptions
と共に使用して,ネットワ,クを作成してゼロから学習させることができます。
タスクに必要な学習オプションが関数trainingOptions
に用意されていない場合,自動微分を使用してカスタム学習ル,プを作成できます。詳細にいては,カスタム学習ル,プ向けの深層学習ネットワ,クの定義を参照してください。
タスクに必要な層(損失関数を指定する出力層を含む)が深度学习工具箱™に用意されていない場合,カスタム層を作成できます。詳細にいては,カスタム深層学習層の定義を参照してください。出力層を使用して指定できない損失関数の場合,カスタム学習ル,プで損失を指定できます。詳細にいては,損失関数の指定を参照してください。層グラフを使用して作成できないネットワ,クの場合,カスタムネットワ,クを関数として定義できます。詳細にいては,モデル関数としてのネットワ,クの定義を参照してください。
どのタスクでどの学習手法を使用するかにいての詳細は,Matlabによる深層学習モデルの学習を参照してください。
カスタム学習ル,プ向けの深層学習ネットワ,クの定義
dlnetwork
オブジェクトとしてのネットワ,クの定義
ほとんどのタスクでは,関数trainingOptions
およびtrainNetwork
を使用して学習アルゴリズムの詳細を制御できます。タスク(たとえば,カスタム学習率スケジュ,ル)に必要なオプションが関数trainingOptions
に用意されていない場合,dlnetwork
オブジェクトを使用して自分でカスタム学習ル,プを定義できます。dlnetwork
オブジェクトを使用すると,自動微分を使用して,層グラフとして指定したネットワークに学習させることができます。
層グラフとして指定するネットワ,クの場合,関数dlnetwork
を直接使用して,層グラフからdlnetwork
オブジェクトを作成できます。
Net = dlnetwork(lgraph);
dlnetwork
オブジェクトによってサポトされている層の一覧にいては,dlnetwork
ペジの万博1manbetx支持层の節を参照してください。カスタム学習率スケジュルでネットワクに学習させる方法を示す例にいては,カスタム学習ル,プを使用したネットワ,クの学習を参照してください。
モデル関数としてのネットワ,クの定義
層グラフを使用して作成できないアーキテクチャ(重みの共有が必要なシャムネットワークなど)の場合,(日元…,YM] =模型(参数,X1,…,XN)
という形式の関数としてモデルを定義できます。ここで,参数
にはネットワ,クパラメ,タ,が含まれ,X1,…,XN
はN
個のモデル入力の入力デ,タに対応し,日元…,
は米
個のモデル出力に対応します。関数として定義される深層学習モデルに学習させるには、カスタム学習ループを使用します。例については、モデル関数を使用したネットワ,クの学習を参照してください。
関数として深層学習モデルを定義する場合は,層の重みを手動で初期化しなければなりません。詳細にいては,モデル関数の学習可能パラメ,タ,の初期化を参照してください。
カスタムネットワークを関数として定義するには,モデル関数が自動微分をサポートしていなければなりません。使用できる深層学習演算は次のとおりです。ここには一部の関数のみを示します。dlarray
入力をサポトしている関数の詳細な一覧にいては,Dlarrayをサポ,トする関数の一覧を参照してください。
関数 | 説明 |
---|---|
avgpool |
平均プーリング演算は,入力をプーリング領域に分割し,各領域の平均値を計算することによって,ダウンサンプリングを実行します。 |
batchnorm |
バッチ正規化演算は,観測値全体における入力デタの正規化を,各チャネルにいて個別に行います。畳み込みニュ,ラルネットワ,クの学習速度を上げ,ネットワ,クの初期化に対する感度を下げるには,线性整流函数(Rectified Linear Unit) など,畳み込み演算と非線形演算の間のバッチ正規化を使用します。 |
crossentropy |
交差エントロピー演算は,単一ラベルおよび複数ラベルの分類タスクについて,ネットワーク予測とターゲット値の間の交差エントロピー損失を計算します。 |
crosschannelnorm |
クロスチャネル正規化演算は,異なるチャネルの局所応答を使用して各活性化を正規化します。通常,クロスチャネル正規化は线性整流函数(Rectified Linear Unit) 演算に続きます。クロスチャネル正規化は局所応答正規化とも呼ばれます。 |
ctc |
CTC演算は,非整列シ,ケンス間のコネクショニスト時間分類(CTC)損失を計算します。 |
dlconv |
畳み込み演算は、入力デ、タにスラ、ディングフィルタ、を適用します。関数dlconv は,深層学習畳み込み,グル,プ化された畳み込み,チャネル方向に分離可能な畳み込みで使用します。 |
dlode45 |
ニュ,ラル常微分方程式(ode)演算は,指定された,odeの解を返します。 |
dltranspconv |
転置畳み込み演算は,特徴マップをアップサンプリングします。 |
嵌入 |
組み込み演算は,数値。ここで,。埋め込みを使用して,直言値や単語などの離散データを数値ベクトルにマッピングします。 |
fullyconnect |
全結合演算は,入力に重み行列を乗算してから,バesc escアスベクトルを加算します。 |
groupnorm |
グループ正規化演算は,グループ化されたチャネルサブセット全体における入力データの正規化を,各観測値について個別に行います。畳み込みニュ,ラルネットワ,クの学習速度を上げ,ネットワ,クの初期化に対する感度を下げるには,线性整流函数(Rectified Linear Unit) など,畳み込み演算と非線形演算の間のグル,プ正規化を使用します。 |
格勒乌 |
ゲート付き回帰型ユニット(格勒乌)演算では,時系列データとシーケンスデータのタイムステップ間の依存関係をネットワークに学習させることができます。 |
休伯 |
Huber演算は,回帰タスクのネットワーク予測とターゲット値の間のHuber損失を計算します。“TransitionPoint” オプションが1の場合,これは”滑らかなl1損失”とも呼ばれます。 |
instancenorm |
。畳み込みニューラルネットワークの学習の収束性能を上げ,ネットワークのハイパーパラメーターに対する感度を下げるには,线性整流函数(Rectified Linear Unit) など,畳み込み演算と非線形演算の間の。 |
l1loss |
l1損失演算は,ネットワ,ク予測とタ,ゲット値を指定して1損失を計算します。减少 オプションが“和” で,NormalizationFactor オプションが“批大小” のときの計算値は平均絶対誤差(mae)と呼ばれます。 |
l2loss |
l2損失演算は,ネットワ,ク予測とタ,ゲット値を指定して2損失を2ノルムの2乗に基づいて)計算します。减少 オプションが“和” で,NormalizationFactor オプションが“批大小” のときの計算値は平均二乗誤差(mse)と呼ばれます。 |
layernorm |
レヤ正規化演算は,チャネル全体における入力デタの正規化を,各観測値にいて個別に行います。再帰型多層パーセプトロンニューラルネットワークの学習速度を上げ,ネットワークの初期化に対する感度を下げるには,LSTM演算や全結合演算などの学習可能な演算を行った後に,レイヤー正規化を使用します。 |
leakyrelu |
漏洩(漏)正規化線形ユニット(ReLU)活性化演算は,非線形のしきい値処理を実行し,ゼロよりも小さい入力値を固定スケール係数で乗算します。 |
lstm |
長短期記憶(LSTM)演算では,時系列データおよびシーケンスデータのタイムステップ間の長期的な依存関係をネットワークに学習させることができます。 |
maxpool |
最大プーリング演算は,入力をプーリング領域に分割し,各領域の最大値を計算することによって,ダウンサンプリングを実行します。 |
maxunpool |
最大逆プーリング演算は,アップサンプリングとゼロを使ったパディングによって,最大プーリング演算の出力を逆プーリングします。 |
均方误差 |
半平均二乗誤差演算は,回帰タスクのネットワーク予測とターゲット値の間の半平均二乗誤差損失を計算します。 |
onehotdecode |
一热復号化演算は,分類ネットワ,クの出力などの確率ベクトルを分類ラベルに復号化します。 入力 |
线性整流函数(Rectified Linear Unit) |
正規化線形ユニット(ReLU)活性化演算は,非線形のしきい値処理を実行し,ゼロよりも小さい入力値をゼロに設定します。 |
乙状结肠 |
シグモ▪▪ド活性化演算は,入力デ▪▪タにシグモ▪▪ド関数を適用します。 |
softmax |
ソフトマックス活性化演算は,入力デ,タのチャネルの次元にソフトマックス関数を適用します。 |
損失関数の指定
カスタム学習ル,プを使用する場合,モデル勾配関数で損失を計算しなければなりません。ネットワ,クの重みを更新するための勾配を計算する際には,損失値を使用します。損失を計算するには,次の関数を使用できます。
関数 | 説明 |
---|---|
softmax |
ソフトマックス活性化演算は,入力デ,タのチャネルの次元にソフトマックス関数を適用します。 |
乙状结肠 |
シグモ▪▪ド活性化演算は,入力デ▪▪タにシグモ▪▪ド関数を適用します。 |
crossentropy |
交差エントロピー演算は,単一ラベルおよび複数ラベルの分類タスクについて,ネットワーク予測とターゲット値の間の交差エントロピー損失を計算します。 |
l1loss |
l1損失演算は,ネットワ,ク予測とタ,ゲット値を指定して1損失を計算します。减少 オプションが“和” で,NormalizationFactor オプションが“批大小” のときの計算値は平均絶対誤差(mae)と呼ばれます。 |
l2loss |
l2損失演算は,ネットワ,ク予測とタ,ゲット値を指定して2損失を2ノルムの2乗に基づいて)計算します。减少 オプションが“和” で,NormalizationFactor オプションが“批大小” のときの計算値は平均二乗誤差(mse)と呼ばれます。 |
休伯 |
Huber演算は,回帰タスクのネットワーク予測とターゲット値の間のHuber損失を計算します。“TransitionPoint” オプションが1の場合,これは”滑らかなl1損失”とも呼ばれます。 |
均方误差 |
半平均二乗誤差演算は,回帰タスクのネットワーク予測とターゲット値の間の半平均二乗誤差損失を計算します。 |
ctc |
CTC演算は,非整列シ,ケンス間のコネクショニスト時間分類(CTC)損失を計算します。 |
または,损失= myLoss(Y,T)
という形式の関数を作成して,カスタム損失関数を使用できます。ここで,Y
とT
はそれぞれネットワ,ク予測とタ,ゲットに対応し,损失
は返される損失です。
カスタム損失関数を使用してイメージを生成する敵対的生成ネットワーク(GAN)に学習させる方法を示す例については,敵対的生成ネットワ,ク(gan)の学習を参照してください。
自動微分を使用した学習可能なパラメ,タ,の更新
カスタム学習ループを使用して深層学習モデルに学習させる場合,ソフトウェアは,学習可能なパラメーターについての損失を最小化します。損失を最小化するために,ソフトウェアは,学習可能なパラメタにいての損失の勾配を使用します。自動微分を使用してこれらの勾配を計算するには,モデル勾配関数を定義しなければなりません。
モデル損失関数の定義
dlnetwork
オブジェクトとして指定されるモデルでは,[loss,gradients] = modelLoss(net,X,T)
という形式の関数を作成します。ここで,网
はネットワ,ク,X
はネットワ,クの入力で,T
にはタ,ゲットが格納され,损失
と梯度
にはそれぞれ損失と勾配が返されます。オプションで,損失関数が必要とする追加情報などを追加引数として勾配関数に渡すことや,更新されたネットワークの状態などを追加引数として返すことができます。
関数として指定されるモデルでは,[loss,gradients] = modelLoss(parameters,X,T)
という形式の関数を作成します。ここで,参数
には学習可能なパラメ,タ,が格納され,X
はモデルの入力で,T
にはタ,ゲットが格納され,损失
と梯度
にはそれぞれ損失と勾配が返されます。オプションで,損失関数が必要とする追加情報などを追加引数として勾配関数に渡すことや,更新されたモデルの状態などを追加引数として返すことができます。
カスタム学習ルプに対するモデル損失関数の定義の詳細にいては,カスタム学習ル,プのモデル損失関数の定義を参照してください。
学習可能なパラメ,タ,の更新
自動微分を使用してモデル損失関数を評価するには,自動微分を有効にして関数を評価する関数dlfeval
を使用します。dlfeval
の最初の入力では,関数ハンドルとして指定されるモデル損失関数を渡します。続く入力では,モデル損失関数に必要な変数を渡します。関数dlfeval
の出力では,モデル損失関数と同じ出力を指定します。
勾配を使用して学習可能なパラメ,タ,を更新するには,次の関数を使用できます。
関数 | 説明 |
---|---|
adamupdate |
適応モ,メント推定(亚当)を使用してパラメ,タ,を更新する |
rmspropupdate |
平方根平均二乗伝播(RMSProp)を使用してパラメ,タ,を更新する |
sgdmupdate |
モメンタム項付き確率的勾配降下法(sgdm)を使用してパラメタを更新する |
dlupdate |
カスタム関数を使用してパラメ,タ,を更新する |
参考
dlarray
|dlgradient
|dlfeval
|dlnetwork