AlphaGoのValue Networkの出力にはtanhが使用されている。
一方、将棋AIでは評価関数から勝率に変換する際、sigmoidが使われている。
tanhとsigmoidのどちらがよいか、dlshogiの学習で検証してみたが、Policy NetworkとValue Networkのマルチタスク学習を行っているためはっきりした結果が得られなかった。
そこで、MNISTのデータセットで多層パーセプトロンを学習するというシンプルなケースで比較を行ってみた。
MNISTは0から9の数値分類のデータセットだが、tanhとsigmoidを比較するため、偶数か奇数かの2値分類を行う。
以下の3パターンで比較を行う。
出力関数 | 損失関数 | |
1 | tanh | 平均二乗誤差(MSE) |
2 | sigmoid | 交差エントロピー |
3 | sigmoid | 平均二乗誤差(MSE) |
考察
train lossは、それぞれスケールが異なるため大小では比較できないが、sigmoid+MSEは、lossの減少が他に比べて遅い。
test accuracyは、tanhが最も高くなっている。
このことから、MNISTの多層パーセプトロンによる2値分類では、tanh+MSEが最も効率よく学習できることがわかった。
また、出力関数がsigmoidならば、損失関数は平均二乗誤差より交差エントロピーにした方が良い。
他のデータセットや、深層畳み込みニューラルネットワークでも同じ傾向かは実験してみないとわからない。