TensorFlow Playgroundはニューラルネットを理解するのにおススメ

ネットワークの重みや各ニューロンがどういう入力の時に発火するのかが、学習していく過程で各時刻可視化されてとても良い教材です。 http://playground.tensorflow.org/

うずまきのデータセットに関して「中間層が1層しかないとうずまき(線形非分離な問題)は解けない」という誤解があるようなので、まずは1層でできるという絵を紹介。なお僕のタイムライン上では id:a2c が僕より先に気付いていたことを名誉のために言及しておきます。

で、じゃあよく言われる「線形非分離な問題が解けない」ってのはどういうことか。それはこんな問題設定。入力に適当な係数を掛けて足し合わせただけでは適切な境界を作ることができません。

こういうケースでは中間層を追加すると、中間層が入力の非線形な組み合わせを担当してくれるおかげで解けなかった問題が解けるようになります。


1つ目のデータセットでは特徴量の選択の重要さがわかります。このデータセットではx^2とy^2を入力にすると問題が線形分離になるのであっさり解けます。「x^2 + y^2 < R」ってのが「半径Rの内側」に対応するのです。

だけども、xとyだけでは線形には分離できません。

そこで中間層を追加してみると、それぞれの中間層が少しずつ分担して問題を解くのを観察できます。中間層のニューロンの個数を増やしたり減らしたりしてみても面白いでしょう。1個、2個、3個の各パターンを観察するのがおすすめ。




と、こんな感じできれいに可視化された環境でいじって試すことができるので、とても良い教材だと思います。