通常、クロスエントロピーを用いた損失関数では、
正解ラベルには0または1を与えて、
ロスを計算すると思いますが、
正解ラベルに0,1以外を与えた場合、何が起きるのでしょうか。
たとえば、ある座標点の色が、
白ならば0、黒ならば1、
グレーならばグレースケールの0〜1の値、
としてラベル付けした場合、
どのような学習モデルができあがりますか。
ラベルが0.5、推論結果も0.5で、
ピシャリと当てた場合でも、
計算上ロスが発生するので、
正しく学習されないことになりますよね?
回帰問題にクロスエントロピー損失関数を用いた場合、
どうなるのでしょうか、という質問になるのかもしれません。
> 回帰問題にクロスエントロピー損失関数を用いた場合
合計したら1.0になる数値のペアを回帰で予測したい、とします
実際に予測したい数値が一つだけの場合でも、1.0からその数値を引いた数値を予め計算しておいて教師データの目的変数に追加したらいいだけですので、簡単ですよね
下記のコードは、「t」が正解、「y」が予測値で、ピッタリ正解を予測できた場合です
サンプル数は三つ
import numpy as np
t = np.array([[0.5, 0.5], [0.1, 0.9], [0.7, 0.3]])
y = np.array([[0.5, 0.5], [0.1, 0.9], [0.7, 0.3]])
# カルバック・ライブラー情報量
print(np.mean(np.sum(t * np.log(t), axis=1)) + np.mean(np.sum(-t * np.log(y), axis=1)))
# 交差エントロピー
print(np.mean(np.sum(-t * np.log(y), axis=1)))
上記をそのまま実行したり、「y」をちょっと「t」と変えて実行したりすれば分かりますが、ピッタリ正解を予測できた場合はカルバック・ライブラー情報量が0.0になり、交差エントロピーは0.0にはなりませんが最小値になります
https://qiita.com/ground0state/items/8933f9ef54d6cd005a69
の「Cross Entropy = 交差エントロピーの定義」に書かれてるように、交差エントロピーは、カルバック・ライブラー情報量から「y」に関係しない項(上記コードの計算式の前半)を省略したものです
> ピシャリと当てた場合でも、
計算上ロスが発生するので、
正しく学習されない
交差エントロピーが0.0にならなくても、最小値になるから大丈夫だと思います
ありがとうございます。
なるほど、t = yのとき必ず最小値を取るので、
t = yのときのエントロピー値をオフセットとして差し引き、最小値が必ず0になるように揃えたものが、カルバック・ライブラー情報量というイメージですかね。
確かに、ロスは0にはなりませんが、
必ず極小値を取るので収束はしていきそうですね。
納得できました、ありがとうございます。
それでも、回帰問題の場合は、二乗和誤差が損失関数として選ばれることが多いのは、何か理由があるのでしょうかね。
> 回帰問題の場合は、二乗和誤差が損失関数として選ばれることが多い
全サンプルでピッタリ正解を予測できる場合は、どちらでやっても同じですが、実際はほとんどそうではないわけで、それぞれのサンプルの予測にある程度の誤差を許容して、全体の誤差がバランスよくなるようにするわけですが、その「バランス」が、損失の計算方法で変わります
予測誤差が正規分布に従う場合は、二乗誤差でうまくいきます
参考
https://ai-laboratory-column.com/least_squares_maximum_likelihood_method
https://www.iwanttobeacat.com/entry/2018/01/10/233758
https://www.jstage.jst.go.jp/article/jjspe/76/10/76_10_1130/_pdf
の「2.3 誤差の分布と条件」
参考文献ありがとうございます。
非常に丁寧に、かつ端的に説明頂けて助かりました。
ありがとうございます。
回答1件
あなたの回答
tips
プレビュー