Biologically plausible backpropagationまとめ②:Feedback Alignment
こんにちは、タイトルの通り「生物学的に妥当な誤差逆伝播法」の分野で、具体的に提案されている手法を紹介していきます。
ちなみに概要的な話はここに書いてあります。
今回紹介するのはFeedback Alignmentという手法で、2016年にnature communicationsから出版されています(初出はarxivで2014年)。
[1411.0247] Random feedback weights support learning in deep neural networks
Feedback Alignmentは「誤差逆伝播法の実行のためには順方向のシナプスと逆方向のシナプスが対称である必要があるが、現実の神経系と照らし合わせるとそれは不自然な仮定である(※)」という問題に対応するための手法です。
(※)この問題はweight transport problemと呼ばれ、あのフランシス・クリックも言及しています。
Back propagationとFeedback Alignmentの計算
Feedback Alignmentの発想は極めてシンプルで、「対称なシナプスの代わりに、誤差を伝えるためのランダム行列をあらかじめ用意しておいてそれで勾配を計算しても案外学習はうまくいくんじゃないか?」というものです。これでほぼ尽きています。
具体的な計算を以下に書いていきます。ここでは簡単のために出力層の活性化関数はsoftmaxとして、タスクはクラス分類とします。
入力を、出力を、重み行列を、活性化関数をとして、順伝播計算はに対して以下のようになります。
ここで、とします。
通常の逆伝播計算であれば、targetをとしたときに誤差関数の各層毎の勾配は次のように計算されます。
ただし、Nはここではバッチサイズ、は要素毎の積(Frobenius積)を表します。
これによってを
と更新していきます。
一方でFeedback Alignmentではを計算するときに、の代わりにランダム行列(学習中固定しておく)を使います。具体的には、
とします。
なぜうまく行くのか?
この方法でMNISTを計算したときの結果が以下のようになります。
これを見ると分かるとおり、back propagationとほぼ同じ精度を誇ることが確認できます。
ではなぜ、全然違う、ある意味出鱈目とすら言えるやり方で計算してもうまく学習できるのか?
ここからは大雑把な議論になりますが、勾配法の直感的なイメージから考えてBPで計算したときのとFAで計算したときのとの角度が90度以下ならば、その更新によって誤差関数は小さくなるはずです。
で、当然学習の初期はランダム行列との間には何の相関もないので上の条件は満たされないのですが、学習していくとが
という関係を満たすようになります。(下図参照)
これによって学習が進みます。
なお、Dierct Feedback Alignmentという拡張も2016年のNIPSで提案されています。