次の画像のように、0の周辺には青クラスが、0から離れたところには赤クラスが存在しているようなデータを用意してあげます。このデータは前回と似たような形で、次のように用意できます。層の活性化関数には非線形関数を使用します。通常シグモイドなどの関数が使われるようですが、今回はガウシアンRBFという関数を使用します。この関数を使用する理由は、関数をプロットすると見えてきます。ガウシアンRBFは0の周辺で値が1に近くなり、0から離れると値が0に小さくなります。この関数を活性化関数と使用することで、0の周辺に集まっている青クラスと、0から離れている赤クラスをうまく分離できることを期待しているのです。いうわけで、ガウシアンRBFを定義しておきます。np.exp(-z**2)後ほどの計算で使用しますが、RBFの微分は簡単に計算でき、となります。バックプロパゲーションで重みの最適化バックプロパゲーション(誤差逆伝播法)を使用して、ネットワークの重みの更新をしていきます。個人的にはこのバックプロパゲーションは非常にややこしく、何度聞いてもなかなか直感的に理解できない場所です。Qiitaなどにも解説記事はたくさんあるので、私の説明でいまいち理解できない場合は、他の記事もいくつか目を通してみると良いかもしれません。誤差逆伝播法のノート誤差逆伝播法をはじめからていねいにバックプロパゲーションの概要バックプロパゲーションには大きく分けて2つのステップがあります。もとに、隠れ層の値、出力層の値を順に計算していきます。先に定義したガウシアンRBFを用いて次のように書くことができます。これをコードに落とすとこうなります。