LossFunction

LossFunction

NetTrainのオプションで,ニューラルネットからの実際の出力とリクエストした出力をどのように比較するかを指定する.

詳細

  • LossFunctionは訓練中に最小にされる数量を指定する.
  • NetTrain[net,data,]におけるLossFunctionの可能な設定には次がある.
  • Automaticすべての層に自動的に損失層を加えるか,既存の損失出力を使うかする(デフォルト)
    "port"与えられたポートを損失として解釈する
    losslayerユーザ定義の損失層をネット出力に加える
    "port"losslayer複数出力ネットの1つの出力から損失を計算する
    {lspec1,lspec2,}複数の損失を同時に最小化する
    {,lpeciScaled[r],}個々の損失を因子 r でスケールする
  • LossFunction->losslayer で単一の損失層を指定するときは,訓練されるネットに厳密に1つの出力ポートがなければならない.
  • 次は,losslayer として使える層である.
  • Automatic損失を自動的に選択する(デフォルト)
    MeanAbsoluteLossLayer[]出力とターゲットの距離の平均
    MeanSquaredLossLayer[]出力とターゲットの平方距離の平均
    CrossEntropyLossLayer[form]出力確率とターゲット確率との距離
    ContrastiveLossLayer[]出力がターゲットを条件としてどれほどうまく最大化あるいは最小化されるか
    NetGraph[]NetChain[]ThreadingLayer[]"Input"と任意の"Target"ポートがある任意のネットワーク
  • ポートについて損失層が自動的に選択されるとき,使用する損失層は,出力がポートに接続されているネット内の層に基づいている.
  • SoftmaxLayer[]CrossEntropyLossLayer["Index"]を使う
    ElementwiseLayer[LogisticSigmoid]CrossEntropyLossLayer["Binary"]を使う
    NetPairEmbeddingOperator[]ContrastiveLossLayer[]を使う
    他の非損失層MeanSquaredLossLayer[]を使う
    損失層変更がないものを使う
  • 一般に,損失ポートの出力はスカラー値である.これが配列のときは,損失値が要素の和として計算される.
  • ユーザ定義の損失層はいくつかの出力ポートがあるネットワークでもよい.その場合は,すべての出力ポートの値の合計が最小化すべき損失として使用され,各ポートは別々の部分損失として報告される.
  • 付加された損失層に1つの入力ポート("Input")がある場合は,これがネットの出力に加えられ,訓練データのキーがネットのみの入力をフィードするポートを供給する(最初の図).
  • 付加された損失層に2つの入力ポート("Input""Target")がある場合は,入力がネットの出力に加えられ,ターゲットはネットの出力ポートの名前を使って訓練データからフィードされる(2番目の図).普通この名前は"Output"で,しばしば,{in1,in2,}->{out1,out2,}または{in1->out1,in2->out2,}と書かれる<|"Input"->{in1,in2,},"Output"->{out1,out2,}|>の形の訓練データになることが多い.
  • このような複数の層が連結されている場合は,訓練データに各層のターゲットをフィードするためのポートが1つある(3番目の図).

例題

  (4)

MeanSquaredLossLayerを使って単純なネットを訓練する.出力がSoftmaxLayerによって生成されたものではないときは,デフォルトの損失が出力に適用される:

訓練されたネットを入力集合について評価する:

ネットワークの出力に加える別の損失層を指定する.まず,損失層を作る:

この損失層は入力とターゲットを取って損失を生成する:

訓練中にこの損失層を使う:

訓練されたネットを入力集合について評価する:

長さ2のベクトルを取ってLessGreaterのクラスラベルのどちらか1つを生成するネットを作る:

NetTrainは,自動的にCrossEntropyLossLayerオブジェクトを正しいクラスエンコーダと一緒に使う:

訓練されたネットを入力集合について評価する:

ターゲットが各クラスについての確率の形であることを想定する明示的な損失層を作る:

これで,訓練データは記号的なクラスの代りに確率のベクトルからなるものとなるはずである:

訓練されたネットを入力集合について評価する:

訓練対象の「評価ネット」で開始する:

評価ネットの損失を明示的に計算する「損失ネット」を作る(ここでは,カスタム損失はMeanSquaredLossLayerに等しい):

"Loss"という名前の出力ポートを損失として解釈するように指定して,このネットを合成データについて訓練する:

NetExtractを使って訓練された「評価」ネットワークを入手する:

Partシンタックスを使うこともできる:

ネットの出力を平面上にプロットする:

出力と複数の明示的な損失の両方を計算する訓練ネットを作る:

このネットワークは,出力と損失を生成するために入力とターゲットを必要とする:

特定の出力を損失として使って訓練する.他のすべての出力は無視する:

訓練後に単一のペアについて損失を測定する:

複数の損失を一緒に訓練するように指定する:

NetTakeを使って望ましい入出力以外のすべての入出力を削除する:

このネットワークを入力集合について評価する:

Wolfram Research (2018), LossFunction, Wolfram言語関数, https://reference.wolfram.com/language/ref/LossFunction.html (2022年に更新).

テキスト

Wolfram Research (2018), LossFunction, Wolfram言語関数, https://reference.wolfram.com/language/ref/LossFunction.html (2022年に更新).

CMS

Wolfram Language. 2018. "LossFunction." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/LossFunction.html.

APA

Wolfram Language. (2018). LossFunction. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/LossFunction.html

BibTeX

@misc{reference.wolfram_2024_lossfunction, author="Wolfram Research", title="{LossFunction}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/LossFunction.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_lossfunction, organization={Wolfram Research}, title={LossFunction}, year={2022}, url={https://reference.wolfram.com/language/ref/LossFunction.html}, note=[Accessed: 22-November-2024 ]}