CrossEntropyLossLayer

CrossEntropyLossLayer["Index"]

入力クラス確率ベクトルとターゲットクラスを表す指標を比較することでクロスエントロピー損失を計算するネット層を表す.

CrossEntropyLossLayer["Probabilities"]

入力クラス確率ベクトルとターベットクラスの確率ベクトルを比較することでクロスエントロピー損失を計算するネットを表す.

CrossEntropyLossLayer["Binary"]

入力確率スカラーとターゲット確率スカラーを比較することでクロスエントロピー損失を計算するネット層を表す.各確率は二値選択を表すものとする.

詳細とオプション

  • CrossEntropyLossLayerは,NetGraph等で使用するために次のポートを開放する.
  • "Input"階数 n の実数配列
    "Target"階数 n の実数配列または階数 n-1の整数配列
    "Loss"実数
  • 多次元入力に対して使われた場合,CrossEntropyLossLayerは,事実上,任意の余分な配列次元に縫い込まれて損失の配列を生成し,それらの損失の平均を返す.
  • CrossEntropyLossLayer["Binary"]については,入力とターゲットは0から1までのスカラー値またはそれらの配列でなければならない.
  • CrossEntropyLossLayer["Index"]については,入力は合計すると1になる確率{p1,,pc} のベクトルあるいはそのようなベクトルの配列でなければならない.ターゲットは1から c までの整数あるいはそのような整数の配列でなければならない.
  • CrossEntropyLossLayer["Probabilities"]については,入力とターゲットは合計すると1になる確率のベクトルまたはそのようなベクトルの配列でなければならない.
  • 入力配列の次元が{d1,d2,,dn}"Index"形と"Probabilities"形については,最終次元 dnを使ってクラスに指標が付けられる.出力損失は残りの次元{d1,,dn-1}の平均であるとみなされる.
  • CrossEntropyLossLayer[][<|"Input"->in,"Target"target|>]は,層を適用して出力を明示的に計算する.
  • CrossEntropyLossLayer[][<|"Input"->{in1,in2,},"Target"->{target1,target2,}|>]は,initargetiの各出力を明示的に計算する.
  • NumericArrayが入力として与えられると,出力はNumericArrayになる.
  • CrossEntropyLossLayerは,NetGraph内で訓練ネットワークを構築するために使われることが多い.
  • CrossEntropyLossLayerは,"Varying"次元を含む配列に使うことができる.
  • 特定のネットワークの訓練中に,CrossEntropyLossLayer[]NetTrainの第3引数として与えることができる.
  • 明示的な損失指定が与えられていない場合には,適切であればNetTrainは自動的にCrossEntropyLossLayerを使う.入力ポートに使われる最終アクティベーションと付加された任意のNetDecoderの形に基づいて"Binary""Probabilities""Index"のいずれか一つが選ばれる.
  • CrossEntropyLossLayer[form,"port"->shape]で,指定された入力またはターゲットの形を指定することができる.次は,shape の使用可能な形である.
  • "Real"単一の実数
    "Integer"単一の整数
    n長さ n のベクトル
    {n1,n2,}次元 n1×n2×の配列
    "Varying"可変長のベクトル
    {"Varying",n2,n3,}最初の次元が可変長で残りの次元が n2×n3×の配列
    NetEncoder[]エンコーダ
    NetEncoder[{,"Dimensions"{n1,}}]次元 n1×の配列にマップされたエンコーダ
  • Options[CrossEntropyLossLayer]は層を構築する際のデフォルトオプションのリストを与える.Options[CrossEntropyLossLayer[]]はデータについて層を評価する際のデフォルトオプションのリストを与える.
  • Information[CrossEntropyLossLayer[]]はネット層についてのレポートを与える.
  • Information[CrossEntropyLossLayer[],prop]CrossEntropyLossLayer[]の特性 prop の値を与える.使用可能な特性はNetGraph同じである.

例題

すべて開くすべて閉じる

  (3)

確率ベクトルと指標を取るCrossEntropyLossLayerオブジェクトを作る:

入力が確率ベクトルでターゲットが指標であるCrossEntropyLossLayerを作る:

この層を入力とターゲットに適用する:

文字列から生成されたベクトルに作用するCrossEntropyLossLayerを作る:

これを入力とターゲットに適用する:

完全に正しい予測の損失は0である:

スコープ  (5)

入力とターゲットがそれぞれ一つの確率であるCrossEntropyLossLayerを作る:

この層を入力とターゲットに適用する:

この層を入力バッチに縫い込む:

入力が確率ベクトルでターゲットが指標であるCrossEntropyLossLayerを作る:

この層を入力とターゲットに適用する:

入力とターゲットが確率ベクトルであるCrossEntropyLossLayerを作る:

この層を入力とターゲットに適用する:

入力とターゲットがバイナリクラス確率の行列を表す画像であるCrossEntropyLossLayerを作る:

この層を入力とターゲットに適用する:

小さい集合からの入力とターゲットからの可能なすべての損失を測定する:

損失が最小である入力とターゲットのペア:

損失が最大である入力とターゲットのペア:

入力が各色チャンネルがクラスを表す3チャンネル画像であり,ターゲットが各画素についての正しいクラスを表す指標の行列であるCrossEntropyLossLayerを含むグラフを作る:

ほとんど赤,緑,青である部分がターゲットではそれぞれ指標1,2,3と一致する,ターゲットの画像と行列についての損失を測定する:

色を置換すると画素ごとの分布がターゲットの行列と一致しなくなり,損失が増す:

アプリケーション  (2)

CrossEntropyLossLayer["Binary"]は,出力に使われる最終的なアクティベーションがElementwiseLayer[LogisticSigmoid]であるNetTrainによって自動的に使われる.数のベアを取ってTrueまたはFalseを生成するネットワークを作る:

ペアの最初の数が2番目の数より大きいかどうかを判定するようにネットワークを訓練する:

NetTrainが自動的に構築した訓練ネットワークには,バイナリタイプのCrossEntropyLossLayerが含まれている:

平面上で訓練されたネットワークの動作を示す:

ネットワークが学んだもとになっている確率をプロットする:

出力が使う最終的なアクティベーションがSoftmaxLayerのとき,CrossEntropyLossLayer["Index"]NetTrainによって自動的に使われる.正規分布に従う3つのクラスタから人工的なデータ集合を作る:

データ集合をプロットする:

訓練データは点をその点が含まれるクラスタにマップする規則からなる:

ネットを作り,点が各クラスタにある確率を計算し,"Class"デコーダを使って入力をRedGreenまたはBlueに分類する:

ネットをデータについて訓練する:

NetTrainによって自動的に構築された訓練ネットワークには,指標タイプのCrossEntropyLossLayerが含まれている:

ネットを各クラスタの中心で評価する:

各クラスが事後確率1.75に達する特徴空間で等高線を示す:

特性と関係  (4)

次は,CrossEntropyLossLayer["Binary"]で計算した関数である:

この関数をあるデータについて評価する:

これは,以下と等価である:

ターゲットが1に固定されているとき,損失は入力が1に近付くにつれて小さくなる:

一般に,ターゲットが入力に近付くときに損失は最小になる:

スカラー確率 p に適用されたCrossEntropyLossLayer["Binary"]は,ベクトル確率{p,1-p}に適用されたCrossEntropyLossLayer["Probabilities"] と同じである:

置換によって等価性を示す:

次はCrossEntropyLossLayer["Probabilities"]によって計算した関数である:

この関数をあるデータについて計算する:

これは以下に等しい:

CrossEntropyLossLayer["Probabilities"]はワンホットエンコーディングによるCrossEntropyLossLayer["Index"]に等しい:

疎なラベルデータについてこれらを評価すると同じ結果が得られる:

CrossEntropyLossLayer["Index"]CrossEntropyLossLayer["Probabilities"]より評価が速いことが多く,クラス数が非常に多い場合にメモリ量がはるかに少なくて済む.

Wolfram Research (2016), CrossEntropyLossLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/CrossEntropyLossLayer.html (2020年に更新).

テキスト

Wolfram Research (2016), CrossEntropyLossLayer, Wolfram言語関数, https://reference.wolfram.com/language/ref/CrossEntropyLossLayer.html (2020年に更新).

CMS

Wolfram Language. 2016. "CrossEntropyLossLayer." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/CrossEntropyLossLayer.html.

APA

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

BibTeX

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

BibLaTeX

@online{reference.wolfram_2024_crossentropylosslayer, organization={Wolfram Research}, title={CrossEntropyLossLayer}, year={2020}, url={https://reference.wolfram.com/language/ref/CrossEntropyLossLayer.html}, note=[Accessed: 17-November-2024 ]}