読者です 読者をやめる 読者になる 読者になる

オモンパカリスト

深層学習、計算論的神経科学に興味あります

生物学的に尤もらしい人工知能のサーベイ結果 ~そろそろテーマ決めたい~

Deep Learning 機械学習 人工知能

テーマは模索中で
生物学的に尤もらしい人工知能サーベイ
そろそろテーマ決めたい

俯瞰

実際の脳のダイナミクスを論じるときに、
ヘブ則、STDP、スパイクなどは基本用語として「脳の計算論」で勉強した。

この計算論的神経科学の知見を工学に当てはめると
必然的に確率的モデル(Energy-based Model: マルコフ確率場)になる。
神経活動を確率論的に論じるため、確率的モデルの理解が必須になる。
ボルツマンマシン、制限付きボルツマンマシン、ホップフィールドネットワーク
この辺の勉強をした。

生物学的(より脳に近い)な人工知能を研究する取り組みは現在盛んで、
DeepLearningの大家(Hinton, Bengioとか)もテクニカルレポートやTalkでバンバン発表し、
日本のIBM研究所では恐神さん達が「動的ボルツマンマシン(Dynamics Boltzmann Machine)」という
STDPを忠実に再現したモデルを開発している。

論文紹介

Seven neurons memorizing sequences of alphabetical images via spike-timing dependent plasticity : Scientific Reports

解説のスライド
この論文が提案するDyBM(動的ボルツマンマシン)のすごいところは、STDPを再現しており(世界初?)
時系列データ「SCIENCE」という文字列を記憶する学習を7つのニューロンシナプスを模倣したモデルで再現してる。
伝道遅延とメモリユニットの概念がある。
脳の知見から直感的にいうと「軸索」をモデル化したイメージ。
エネルギー関数の項がバイアスとLTPとLTDの3つの項がある。

[1602.05179] Towards a Biologically Plausible Backprop

Bengioの研究室が取り組んでる生物学的知見を深層学習に取り入れる取り組み。
SGDとしてSTDPをパラメータ更新に使う。
ニューロンはleaky-integratorというモデル。
どうやって実装するんだろう。。

勉強不足も相まって、数式が途中で理解できなくなるし、実装ってどうするんだ?って感じになる。
それでも手を動かさなければ始まらないので、そろそろtheanoをゴリゴリ触ってみるか

実装のフレームワーク

深層学習を初めて勉強し始めたころ、Chainerを触った。
直感的に層ごとに分けて記述(レイヤー型記述)するので、今回の取り組み的には不向きだと思う。

Theano(フレームワークというより数値計算ライブラリ)は、シンボル型記述といって、
数式を書くイメージに近い。上述の論文を試すにはぴったりだと思う。
ただ、Theanoはあくまで数値計算に強いライブラリなので、コード量は多くなる。
そこでラッパーライブラリのKerasが気になる。基本的なニューラルネットワークの関数が標準装備されてるみたい。

Google発のTensorflowもシンボル型の記述らしい。
こっちはニューラルネットワークフレームワークなので、Theanoが標準で持ってないような
関数やメソッドがすでに用意されている。Google発だからきっと一番伸びてくんだろうな。

クラッチで記述の場合も、numpyは必須といえる。
yusugomoriさんのブログが参考になる。
Yusuke Sugomori's Blog

僕は弱小CPU環境なので、大規模の実装はできない。
案外スクラッチが学習コストもなく記述しやすいなら、それでいいかもしれない。