活性化関数とコスト関数
活性化関数φやコスト関数Cはsigmoid、2乗誤差以外のバリエーションもある。
(コスト関数は損失関数Lossと呼ぶ方が一般的だが、頭文字が層Layerとかぶるので避けた)
◇
【活性化関数φ】
前項でみたように、バックプロパゲーションを計算するにはφの微分が簡単に計算できなければならない。
expを使ったタイプとしてsoftmaxがある。これは複数個のクラス分類の出力層に使われるもので、k番目のクラスらしさを全クラスの和で割る。関数の形としてはsigmoidの平行移動なので、微分φ'=φ(1-φ)はsigmoidと同じ形になる。
expよりもっと簡単なReLUもある。これはsigmoidだとzがある程度大きくなるとφ'(z)=0すなわちdC/dwもゼロになって学習が進まなくなる問題があったので、zが大きくなるとφも1を超えて大きくなるようにしたものである。関数の形としては一次式ではあるが途中で折れ曲がっているので一応非線形になっている。
sigmoid |
|
|
softmax |
|
|
ReLU |
|
|
ちなみに次項のCNNでは最大を選ぶプーリングという演算も使うが、これも微分が簡単なのでパックプロパゲーションに支障はない。
◇◇
【コスト関数】
複数個のクラス分類にはクロスエントロピーというものが使われる。そのクラスらしさを期待値0<t<1として、出力yが1に近いほどCが小さくなる。これはlogを使っているのでdC/dwで1/φと割り算が必要になるが、sigmoidやsoftmaxならば分母のφがキャンセルされるので相性がよい。
2乗誤差 |
tの値域は任意 |
|
cross entropy |
0<t<1 |
|