食わず嫌いだった,Deep Learningに入門してみようと思う.
なんとなくChainerを使おうと思う.
今回は,使い方を覚える意味で,多層パーセプトロン (Multi Layer Perceptron, MLP) を扱ってみる.
タスクは分類で,線形分離不可なデータの代表例である,XORをデータとして用いる.
XORは↓みたいな形をしている.
これは以下のようにして生成できる.
chainerではfloat32, int32しか扱えないため,最後に型を変更している.
さて,多層パーセプトロンをchainerを使って実装していく.
chainerを使えば,様々なニューラルネットが本当に簡単に実装できる.
多層パーセプトロンは以下のように実装できる.
これは,入力も含めて3層からなるネットワークであり,以下のように式で表せる.
コード中で,出力層の活性化関数にソフトマックス関数ではなく,恒等写像を用いているのは,損失関数に交差エントロピーを用いるためである.
これは,このモデルを食わせるClassifier内部に実装がある (Tutorial抜粋).
実際に学習させていきます.
extensionsを使えば,損失の減少など,学習の様子を見ることができますが僕は何故か学習が進まなくなってしまうので,PROGRESSのみを表示しています.
これで学習は完了です.
以下のように予測します(実際にはminibatchみたいな感じで少しずつ予測した方が良い).
決定境界を図示すると以下のようになりました.