クラス分類問題の関数
-
機械学習系のクラス分類問題の関数にはSoftmax関数やCross Entropy関数が使用されている
-
調べると「情報量が~、エントロピーとは~」となり、どういう働きをしているのか理解が困難
-
今回は数学的な難しさは置いておいて、どういう嬉しさがあるのかを簡単に説明
クラス分類CNNの流れ
-
説明に入る前に全体の流れを復習
-
𝑁クラス分類器学習時の処理の流れは以下
- 画像入力
- N次元のベクトルを答えとして生成
- Softmax関数で正規化
- Cross Entropyで誤差計算
- 逆誤差伝播法で誤差最小化
N次元ベクトルを出力
-
N個のクラスがある分類問題を解かせる場合、画像を一枚入力して、N次元のベクトルを出力
-
別に1次元のベクトル(数値?)にして、最適化してもよかったはず・・・。(うまくいくかはわからない)
-
なぜN次元にしたか=答えがOne-hotで示せる
答えをOne-hotにする嬉しさ
答え𝒚をOne-hotベクトルとすることで、Cross Entropyに入れたとき、和の部分が消え、logだけの簡単な関数になる
Softmax関数
- やってることは単に正規化
- 正規化とは数値を0~1の範囲に収めること
- これができるのもN次元ベクトルのおかげ
- eを使っているのは誤差伝播のときに微分する必要があるため
クラス分類問題で正規化する嬉しさ
- 正規化することで𝑥_𝑖 は0~1になっている
- さらに総和が1になる
- これは各クラスに属する確率と考えられる
誤差伝播
- 誤差伝播時は誤差関数を微分し、その傾きに比例して更新値を決定する
- logのグラフをみると正解クラスに属する確率𝑥_𝑖が0に近いほど微分したときの傾きは大きくなり、1に近いほど傾きは小さくなる
- logの形は誤差関数に最適!
まとめ
- N次元出力、Softmax関数、Cross Entropy関数、逆誤差伝播について解説した
- logの関数の形(0~1範囲の勾配)が肝
- クラス分類問題以外の問題を解くときも誤差関数の形をきちんと設計することが大切
正確には(発展)
- 正確には微分するのは𝑥についてではなく、畳み込みなどの重み𝑤についてだと考えるべき
- だが誤差関数の重みについての微分は𝑥についての微分と出力𝑦との積で求まる
- よって誤差関数を考える際は𝑥についての微分について議論すればよい