先日、金子勇さんの誤差拡散法(ED法)について神経生理になぞらえた記事を書かせていただいたところ、医学知識に興味のあるエンジニアの方が多くいらっしゃることを知りました。だからというわけでもないのですが、記事を書いた後に追加で学んだ内容もありましたので、その知識を基にED法とスパイキングニューラルネットワーク(SNN)の違いについて考えてみようと思います。
例によって、何かおかしい部分があればご指摘いただければ幸いです。
やねうら王さんのブログで、ED法についての記載を拝読させていただきました。
大変恥ずかしながら、SNNという分野があることを今回初めて知りました。その文中で、SNNについてまとめているサイトへの言及がありました。
大変面白く、今日にいたるまで時間を見つけては読んでいました。日本語でこのようにまとめてくださっている先人がいたことは大変うれしいことでした(あと医学会のいたるところにHodgkinさんいすぎだろ)。
このニューラルネットワークの特徴は色々ありますが、バックプロパゲーション(BP)を用いないこと、もう一つはLIF(Leaky integrate-and-fire)があることが大きな特徴だと思います。
先のサイト様から説明をお借りしますが、LIFとは一定の閾値を超えると途端に発火する仕組みのことだと理解しました。前回の記事(https://qiita.com/obgynengine/items/cd31cf9d03949d5aadbf )で、ED法の興奮性ニューロンと抑制性ニューロンはNa+イオンとCl-イオンに相当するんじゃないかみたいな話をしたとき、以下のような説明を付したと思いますが、これがまさにLIFに相当します。
実際の神経系は複数のシナプスから電気信号を受け取るため、この興奮性ニューロンからの情報と抑制性ニューロンからの情報の総和がある閾値に達すると、大きな電位(活動電位)が急速に発生し(脱分極)、閾値に達しなければ発火しないという仕組みです。つまり微分ではなく積分のような仕組みです。末梢神経も伝達物質は異なるものの大まかな仕組みは同じです。
閾値に達さなければ発火せず、閾値に達すると発火することは、高校生物にも記載のある程度の内容です。
余談ですが、この発火頻度のバランスが崩れたものがてんかんとか痙攣と呼ばれるものであり、したがって抗痙攣薬はCa2+-グルタミン酸-Na+の系を抑制したり、GABA-Cl-の系を賦活化することで余分な電気信号を抑えるものがほとんどです。(てことは抑制性ニューロンを大量に賦活すれば、ニューラルネットが暴走したときの抗痙攣薬のような物とかも出来るんですかね)
面白いことに、このLIFモデルは発火した後不応期に入るそうですが、実際の神経も発火した後に不応期を挟みます。
この仕組みは神経生理の世界では1960‐70年代ごろにはある程度解明されていたものですから、ここから着想を得てモデルを作成しようと思う人がいても不思議ではありません。事実としてこのモデル化は(やねうら王さんによれば)ED法よりも早くに実現したそうで、その後モデルの細かい部分は変われど骨組みとしては大きく変わらないままSNNの流れを今日まで残しています。
前回の記事を書いた時は、神経の仕組みをモデル化しているにもかかわらず、この閾値発火の部分がED法にないことが不思議でした。今回の考察に当たり@kanekanekaneko(aro kaneko)さんや@deep_samuraiさんの記事も参考にさせていただきましたが、発火についての言及はあまりなく、おそらく原点となっている金子さんのアーカイブに言及がされていないのではないかと思います。
上記のSNNのまとめを見て、ED法になくてSNNにあるのはLIFではないかということに気づきました。
@Carteletさんが以下の記事で、ED法の弱点として複数出力ができないこと、活性化関数が限定的であることを指摘されています。
ED法ではこの積分に相当するものをsign関数として表現しているようですが、おそらくこれが上記2つの問題の原因ではないかと思います。ここをLIFに変更すると、クラスごとに異なる発火閾値を設定できますので、多クラスにも対応できるのではないかと思います。Diehl&Cookモデルとかはそういうことなんじゃないかなと理解しました(間違ってたらすいません)。
まとめると、個人的にはED法はSNNの特殊な形式なのだと思います。アイデアの元ネタもおそらく同一でしょう。
この結論を見てなーんだというのは簡単ですが、今日までのSNNの流れは複数の人々が集まって作り上げた集合知である一方、ED法は(車輪の再発明だったとしても)お一人の力が成した技です。たった一人でアイデアを形にし、実装し、結果を出した金子さんの人間力に、私は改めて畏敬の念を抱きました。早逝されてしまったことは本当に残念でなりません。
私は他のエンジニアの方々のように計算科学が得意ではありませんので、およそ10日間で数学的な裏付けをしたり、実装を研ぎ澄ましたりしていく方々も同様にとんでもないなと思いながら勉強させていただきました。市井にこんな知的な人たちが普通に生活してる日本てやっぱすごいんじゃないか。ED法やSNNの分野も発展するポテンシャルはとてもあると思うし、発展していくはず、発展していってほしいと思います。
最後に:
いずれにせよ、BP法は、チート性能だ。人間より遥かに少ないニューロンで人間より高い性能が出せる(ことがある)のは、このBP法のお陰だと言っても過言ではないと思う。人間の脳はBP法なんて使っていない。使わせてもらえていない。だから学習がこんなに非効率なのだ。人間が社会人になるまで平均的には20数年かかけるのも、学習が非効率すぎるからだと言えよう。
やねうら王さんはこのように締めくくっていますが、個人的には生物は、あえてED法やSNNに準ずる機能を獲得したのではないかと思います。
上記記事で@pocokhc(ちぃがぅ)さんも指摘していますが、学習が高速で安定している点がこのフレームワークの優れた部分だと私も思います。BPは確かに強力ですが、ドロップアウトなどの工夫をしないと容易に勾配が発散したり消失してしまって学習がパーになってしまいます。人生のどこかでいきなり勾配消失する人生って怖くないですか?それにどんなに優れたモデルでもものすごい計算資源とエネルギーがなければ人並みの学習は(現状では)できません。おそらく生物は、限られた脳の容積とエネルギーの中で、多少非効率でも安定した学習を継代的に行える仕組みを作ろうとした結果、この仕組みにたどり着いたんじゃないかなあと思います(もちろんED法やSNNが容易に勾配の問題を起こす可能性もあるかとは思いますが)。
例によってとりとめのない内容になってしまいました。ここまでお読みいただき、ありがとうございました。