研究者の卵の卵

決して頭がいいとは言えない大学生が、日々おもったことや学んだことをつらつら書きます。人工知能や脳科学の話が多くなりそうです。

神経科学と確率 ~単一ニューロンからFEPまで~ 前編

はじめに

この記事は神経科学アドベントカレンダーの12月15日分の記事です.

もともと参加するかどうかすら結構迷ってたのですが,
わからないからやらない,というスピリットはあまりにもダサすぎるということで,
限られた知識の中から書けることを書いていきたいと思います.

確率論と神経科学は結構繋がりが深く,
単一ニューロンの発火ダイナミクスを解析するのにも使われますし,
最近注目を集めているFEP=自由エネルギー原理; Free-Energy Principle という脳の大統一原理を目指す理論でも
確率や情報理論のような道具がよく使われます. これは神経科学だからとかいう話ではなくて,単純に決定論的に動作しない対象を扱っていることが理由になっていると思います.

ほんとはひとつの記事でまとめるつもりだったのですが, かなり分量も多くまとめるスキルに乏しいので,前後編に分けて前編で単一ニューロンと確率の関わり, 後編でFEPについて書いていきたいと思います.

単一ニューロンの活動

まず,大きな神経ネットワークや生物システムそのものの話の前に,単一ニューロンの活動を確率で理解することを考えていきます. これは計算論的神経科学を勉強しようと思ったときに基礎的な話になってくるので, P.Dayanの著書 "Theoretical Neuroscience" やR.Rao先生によるCourseraコース "Computational Neuroscience" でも詳しく解説されています.

Neural Decoding

概説

まず,神経活動 (neuronal/neural activity)を観測した際に,それを引き起こした刺激 (stimulus/stimuli) が何であったかを予想することを考えていきます. 脳がエージェントが観測した情報をコンピュータのデジタル素子のように神経活動によって符号化していると考えたときに,
刺激を予想するのは神経活動からの情報の復号化であるという風に考え,これらは Neural Decoding と呼ばれています.

ただ,脳はコンピュータのように離散化された観測情報に対して決定的な応答を示すほど緻密に作られているわけではないようで,
殆どの場合「この活動なら絶対にこの刺激だ!」と言えるわけではないので,
そういう意味でneural decodingは確率的な手法を取るのが基礎的なやり方になっています.

当然そうでない場合もあり,そういう場合には刺激値が非線形なフィルタリング関数にかけられていると仮定し,
その結果として得られた神経応答 (neural/neuronal response) との関係からそのフィルタがどういうものなのかを調べよう,みたいなことも行われます. ただ,今回は確率の話と絡めた神経科学についての記事にしようと思っているので,そういう手法はまた別で記事にしたいと思います.

ということで,ここで知りたい値は神経活動 \mathbf{r}が与えられた際の刺激 sの条件付き確率分布なので,
 {\displaystyle P[s|r]}
であるということを念頭に置いて話を進めていきます.

この条件付き確率分布を見た時に脊髄 (spinal cord) はすぐに「ベイズの法則が使えるぞ!」と教えてくれますから,
とりあえずその直感に従ってみましょう.
 {\displaystyle P[s|r] = \frac{P[r|s]P[s]}{P[r]}} ここで,神経レスポンス \mathbf{r}が0でないことを仮定する必要がありますし,
逆に言うとこの方法で P[ s|r ]を知りたいのであれば r=0にならないような
 rの測り方を選ぶ必要があります. また,ベイズの法則を使ってdecodingを行おうとする時,どのような値についての知識が前提的に必要なのかを考える必要があります.
実際のところ,

  •  P(r)の分布
  •  P(s)の分布

の2者は必要不可欠になることが自明であると思います.
前者の方は比較的易しいはずです.
というのも,観測対象のニューロンはすでに手元にあるのだから,そのニューロンがどういう応答特性を持っているのかというのを,
何の前提条件もつけずに調べればいいのですから割と手に入ります.
どちらかというと問題になるのは後者の方でしょう.
後者は観測対象のニューロンが応答を示すと思われる文脈で可能なすべての刺激値の確率分布と言い換えると思います.
低次の,またはごく限定的な情報をコードしている細胞でない対象を扱う場合,これを予め得るというのは非常に難しくなるといえるでしょう.
ですから,実際に古典的な単一ニューロンに対するdecodingの研究では,
例えば一般物体のような複雑な図形の提示などは行われないことが多いようです.

Population Decoding of Wind Vector

確率論・ベイズ論的なneural decodingの例を示すために,ここでは有名なコオロギの尾毛器官を取り上げます.
コオロギの尾部には cerci と呼ばれる器官があり,それらから生えている細毛が風に当たって動くと細毛に接触しているニューロンが発火します.

これらの感覚神経はコオロギの体内にあるいくつかの介在ニューロンに軸索を伸ばしており,そこで細毛ニューロンが受け取った情報をもとに風がどの方向から吹いており,どこから危険が迫っているかについての情報を処理しています.

1991年にTheunissenとMillerがコオロギの尾毛に低い風速であらゆる角度から風を当てる実験1を行った結果,
たった4つの介在ニューロンで360度すべての角度情報を表現していることが明らかになりました.

f:id:arthurs_kurt:20191210094208p:plain
TheunissenとMillerによる風向のチューニングカーブ

上の図は横軸に当てた風の角度,縦軸にこれら介在ニューロンの発火率を取ってプロットしたもの(チューニングカーブ=tuning curves)です.
このグラフ上の発火率は各ニューロンの最大発火率によって正規化されていることに注意してください.

まず,確率やベイズを使わないdecodingの方法としては,単純にそれぞれのニューロンがある角度を担当しているという風に考えるのが直感的だと思います.
 a番目のニューロンのチューニングカーブを f_a(s)とすると,このチューニングカーブと実際の角度 sの関係は
 {\displaystyle f_a(s) = [\cos(s-s_a)]_+ = \max(0, \cos(s-s_a))}
と書くことができます.
 f_a(s)\simeq 1となる点においては右辺も 1となるので,これを使って a番目のニューロンが発火率のピークを示す角度 s_aを求めることができます.
上の図と照らし合わせると, s_aは1番目のニューロンからそれぞれ,だいたい45度,135度,225度,315度 となっていることがわかります.
つまり,1番目と3番目のニューロン,2番目と4番目のニューロンがそれぞれ対になって風向ベクトルの直交基底を成しているという見方もできるので,
 {\displaystyle f_a(s) = [\mathbf{v} \cdot \mathbf{c}_a ]_+ }
と書き直すこともできます.
 \mathbf{c}_a a番目のニューロンが発火ピークを見せる風向ベクトル, \mathbf{v}は実際の風向ベクトルです.
ですから,これら4つのニューロンの発火活動からdecodeできる風向ベクトルは
 {\displaystyle \mathbf{v} = \sum_{a=1}^4 f_a(s) \mathbf{c}_a }
という,各ニューロンによる風向ベクトル基底の線形結合によって表すことができます.

上記のような方法は "Vector Method" などと呼ばれ,非常に直感的に単一ニューロンレベルの活動から刺激を簡単に再構成できることが魅力的ですが,利用できるコンテキストが非常に限られたものになっているという短所もあります.
次に述べる確率論的なアプローチは,適用可能なコンテキストがより一般的なものになっています.

Optimal Decoding Methods

さぁ,こちらが本題になります.
遅いわな.

ここではベイズ推定=Bayesian InferenceとMAP推定=Maximum a Posteriori Inference; 事後確率最大推定,およびML推定=Maximum Likelihood Inference; 最尤推定で,上記と同じ刺激を同じ神経活動から再構成することを考えていきます.

以下では,真の刺激値を sニューロンの発火率を \mathbf{r} = (r_1, r_2, r_3, r_4)とします.
ここからは直接的に刺激値からニューロンの発火率へ写像を行うようなフィルタリング関数の存在は仮定しないので, r_iが最大の発火率で正規化されているという場合を必ずしも仮定する必要はありませんが,上記と同じ問題を考えているということを強調する目的で, r_iは上記の f_i(s)に対応していると考えます.

まずベイズ推定では何をするかというと,推定によって得られた刺激値の予測 s_{bayes}と真の刺激値 sの間の損失関数 L(s, s_{bayes})を考えます.
この損失関数を最小化するような \tilde{s}_{bayes}を与えられたどんな \mathbf{r}に対しても出力するような p[ s|\mathbf{r} ]の分布を得ることができれば,それはすなわち可能な限り正確なneural decodingに成功したと言うことができるよね,というのがベイズ推定の主張です.
では, s_{bayes}はどういう値であるべきかということですが, Lを二乗誤差とした場合は p[s|\mathbf{r}] の期待値とするのが良さそうです:
 {\displaystyle s_{bayes} = \mathbb{E}[p[s|\mathbf{r}]]}

次にMAP推定です.
そもそもベイズとかをやり始めた頃は,事前確率・事後確率・尤度といった言葉のニュアンスがきちんと掴めていませんでした.
基本的にすべての人間は僕よりも学習能力が高いようですが,万が一そういう人がいた場合のためにここで少し用語の整理をしておきます.
事前確率とは,「何もヒントが与えられていない状態での確率」と言い換えることができ,neural decodingの文脈では p[ s ] に相当します.
事後確率は,「ヒントが与えられたあとの確率」なので,ここでは p[s|\mathbf{r}]ということになります.

Neural decodingにおけるMAP推定の目的は,この事後確率を最大化するような s \mathbf{r}からのdecodingの結果とすることです.

ML推定はこれをもう一捻りしていて,尤度を最大化するような sを推定として選びます.
尤度というのは読んで字の如し,尤もらしさを表す指標です.
 P[\mathbf{r}|s] = \frac{P[s|\mathbf{r}]P[\mathbf{r}]}{P[s]}を, sの関数として見た時にこれを最大化する sを選びます.
つまり,  \mathbf{r}を与えられたとき,それを引き起こした刺激としてもっとも尤もらしい sを選ぶというわけです.


  1. “Representation of sensory information in the cricket cercal sensory system. II. Information theoretic calculation of system accuracy and optimal tuning-curve widths of four primary interneurons”. Theunissen and Miller. Journal of Neurophysiology (1991).