9『二項分類でのBCE誤差とCE誤差の学習比較』
二項分類であっても、バイナリクロスエントロピー(BCE)誤差ではなくクロスエントロピー(CE)誤差の式で誤差はだせる。そして、これらは結局同じ式になる。ということは、BCEとCEを誤差に用いる違いは、NNの出力が1値(BCE誤差を用いる場合)なのか、2値(CE誤差を用いる場合)なのかの違いと思われる。実際に、ほぼ同じネットワーク構成で同じデータを使い両モデルを比較すると、学習曲線に若干の違いが認められたが共にLossは順調に低下した。
|
modelのoutput(y) |
True(t) |
torch.nn. BCELoss() |
[[0.60] [0.64] …]、スカラ-→sigmoid→0~1の1値出力,、float32 |
[[1.] [0.] …]、正解ラベル、float32 |
torch.nn. CrossEntropyLoss() |
[[0.3 0.7] [-0.2 0.4] …]、スカラ-の2値出力、float32 |
[1 0 …]、正解ラベル、int64 |