chainerの出力値の範囲は適切にしよう ~~入門~~

 chainerの出力値の範囲はちゃんとしていないとよくないよという当たり前の話です。
 あまり意識していなかったのですが、出力値の範囲を適当にするとどうなるのか気になったので可視化してみたというだけです。
 sin関数のフィッティングを例に取ってみました。ニューラルネットの構造やエポック数などは全部統一してあります。活性化関数はsigmoid関数です。
 sin関数の取りうる値が[-1,1]のとき。
f:id:gasin:20170218200043p:plain
 sin関数の取りうる値が[-10,10]のとき
f:id:gasin:20170302013641p:plain
 sin関数の取りうる値が[-0.1,0.1]のとき
f:id:gasin:20170302013646p:plain

 グラフを見ると、[-10,10]のときはある程度大きい値から表現できていないので、範囲が大きすぎるとよくないということがわかります。逆に[-0.1,0.1]のときは精度があまりよくないです。
 これらはsigmoid関数の値域が[0,1]であることが原因だと思われます。最後の層で線形結合しているため、一応なんでも表現可能な気がするのですがそういうわけではないようです。