2 一個のニューロン ── 膜電位のダイナミクスと発火率
前章で、人工ニューロンが生物のニューロンから何を捨てているかを見た。時間を捨て、スパイクを捨て、樹状突起の構造を捨てていた。
この章では、捨てる前のものを見る。
なぜそんなことをするのか。理由は二つある。
第一に、活性化関数の由来を知るためである。シグモイド関数はどこから来たのか。ReLU はなぜあの形なのか。深層学習の教科書では「経験的にうまくいくから」で済まされることが多いが、もともとは実在するニューロンの入出力特性の近似だった。その出所を見ておくと、後で活性化関数を選ぶときの感覚が違ってくる。
第二に、力学系の道具を手に入れるためである。微分方程式・相平面・分岐—これらは次章のウィルソン・コーワン方程式でそのまま使う。そして本章第4節では、本書を貫くことになるヤコビアンが最初に顔を出す。
ホジキンとハクスレーは1952年、ヤリイカの巨大軸索を使って活動電位の発生機構を解明した。彼らの方程式は、いまも計算論的神経科学の出発点である。まずはそこから始めよう。
各節は「なぜこれをやるか → 必要な数学 → 導出 → 数値で確かめる」の順に進む。
第1節の常微分方程式に見覚えがあれば飛ばしてよい。第4〜5節の相平面と分岐は、第3章のネットワークでそのまま使う道具なので、ここで手に馴染ませておきたい。
第6節のスパイク統計は、第6章のデコーディングで使う。ポアソン過程の性質(とくに平均と分散が等しいこと)だけは押さえてほしい。
第7節は、この章を深層学習につなぐ節である。急ぐならここだけでもよい。
1. 必要な数学:常微分方程式と数値解法
一階線形の方程式
本章と次章で繰り返し現れるのは、次の形の方程式である。
\tau \frac{dx}{dt} = -x + I
読み方はこうだ—x は I に向かって減衰していく。x > I なら右辺が負なので x は減り、x < I なら増える。x = I で止まる。
I が定数なら、解は手で書ける。y = x - I と置くと \tau\, dy/dt = -y となり、
y(t) = y(0)\, e^{-t/\tau} \quad\Longrightarrow\quad x(t) = I + \big(x(0) - I\big)\, e^{-t/\tau}
\tau は時定数である。t = \tau で、初期値と最終値の差が 1/e \approx 0.37 倍に縮む。\tau が小さいほど速く応答する。
この形の方程式は本書に何度も出る。膜電位の緩和(本章)、集団活動の緩和(第3章)、そして勾配流(第8章)。「今の値と目標値の差に比例して動く」という構造は、それだけ普遍的である。
数値解法
一般には解析解が得られないので、数値的に解く。もっとも単純なのが オイラー法である。
\frac{dx}{dt} = g(x, t) \quad\Longrightarrow\quad x(t + \Delta t) \approx x(t) + \Delta t\, g\big(x(t), t\big)
「いまの傾きで \Delta t だけ直進する」を繰り返すだけだ。実装は数行で済む。
def euler(g, x0, T, dt):
n = int(T / dt)
xs = np.empty((n, *np.shape(x0)))
x = np.array(x0, dtype=float)
for i in range(n):
xs[i] = x
x = x + dt * g(x, i * dt)
return xs注意すべきは刻み幅である。\Delta t が時定数 \tau に比べて大きいと、数値解が振動したり発散したりする。目安は \Delta t \ll \tau。ホジキン・ハクスレー方程式(Hodgkin–Huxley、第3節)では \tau が 0.1 ms 程度まで小さくなるので、\Delta t = 0.01 ms 程度が要る。
より精度の高い方法(Runge–Kutta 法など)もあるが、本書ではオイラー法で足りる場面がほとんどである。
2. 膜を RC 回路として見る
膜電位とは何か
ニューロンの細胞膜は、内外でイオンの濃度が違う。細胞内は \mathrm{K}^+ が多く、細胞外は \mathrm{Na}^+ が多い。この濃度差のせいで、膜の内外に電位差が生じる。これが膜電位 V である。静止時には約 -70 mV(細胞内が負)。
膜は脂質でできていて電気を通さないが、イオンチャネルという穴が開いていて、特定のイオンだけを通す。
この構造は、電気回路として書ける。
- 膜そのもの — 電気を通さない絶縁体が二つの導体(細胞内液と細胞外液)を隔てている。これはコンデンサである。容量を C とする
- イオンチャネル — イオンを通す経路。これは抵抗(コンダクタンス g)である
- 濃度差 — イオンを押し流す力。これは電池(平衡電位 E)である
膜方程式
回路の法則(電流の保存)から式が出る。膜を通って流れる電流の合計が、コンデンサに溜まる電流と外部から注入される電流の和に等しい。
C \frac{dV}{dt} = -g_L (V - E_L) + I_{\text{ext}}
右辺第一項が漏れ電流(leak)である。V が E_L より高ければ電流が外へ流れ、V を下げる。負号がついているのはそのためだ。
この式を、第1節の形に整理してみよう。両辺を g_L で割る。
\underbrace{\frac{C}{g_L}}_{=\,\tau_m} \frac{dV}{dt} = -(V - E_L) + \frac{I_{\text{ext}}}{g_L}
第1節の \tau\, dx/dt = -x + I そのものである。膜は「入力に向かって時定数 \tau_m = C/g_L で緩和する系」だと分かる。典型的には \tau_m \approx 10〜20 ms。
リーク積分発火モデル
上の式には、スパイクが出てこない。ずっと緩和し続けるだけである。
そこで、手で閾値を入れる。「V が閾値 V_{\text{th}} に達したらスパイクを出し、V を V_{\text{reset}} に戻す」という規則を付け加えるのだ。これがリーク積分発火モデル(leaky integrate-and-fire, LIF)である。
\tau_m \frac{dV}{dt} = -(V - E_L) + R I_{\text{ext}}, \qquad V \ge V_{\text{th}} \;\Rightarrow\; \text{スパイク発火},\; V \leftarrow V_{\text{reset}}
乱暴だが、驚くほど有用なモデルである。スパイクの波形は諦めるが、「いつ発火するか」だけなら実際のニューロンをかなりよく予測する。
f–I 曲線
LIF モデルで、入力電流を上げると発火率がどう変わるかを計算してみよう。これが後で活性化関数につながる。
定常入力 I を与える。V が V_{\text{reset}} から V_{\text{th}} まで上がるのにかかる時間を求めればよい。第1節の解を使うと、V(t) = E_L + RI + (V_{\text{reset}} - E_L - RI)e^{-t/\tau_m} である。V(T) = V_{\text{th}} と置いて T について解く。
T = \tau_m \ln \frac{E_L + RI - V_{\text{reset}}}{E_L + RI - V_{\text{th}}}
発火率は f = 1/T である。この関数を f–I 曲線(frequency–current curve)と呼ぶ。
形を読もう。E_L + RI < V_{\text{th}} のときは、対数の中身の分母が負になる—つまり閾値に届かず、発火しない。f = 0 である。閾値をわずかに超えると T が急激に小さくなり、f が立ち上がる。入力をさらに上げると f は増え続けるが、増え方は鈍る(対数の中身が 1 に近づくため)。
「閾値までゼロ、超えたら急に立ち上がり、やがて増え方が緩やかになる」—この形が、活性化関数の原型である。ただし LIF そのものは飽和しない(電流を上げれば発火率はいくらでも上がる)。飽和が現れるのは不応期を入れたときで、第7節でそこに戻る。第7節で回収する。
3. ホジキン・ハクスレー方程式
LIF モデルは閾値を手で入れた。ホジキンとハクスレーがやったのは、閾値そのものを導くことだった。
イオンチャネルは電位で開閉する
鍵となる発見はこうである。\mathrm{Na}^+ チャネルと \mathrm{K}^+ チャネルのコンダクタンスは、膜電位に依存して変化する。
しかも変化の仕方が違う。膜電位が上がると、
- \mathrm{Na}^+ チャネルは速く開き、その後ゆっくり閉じる(不活性化する)
- \mathrm{K}^+ チャネルはゆっくり開く
この時間差が、活動電位という現象を生む。
方程式
ホジキンとハクスレーは、コンダクタンスをゲート変数で表した。
C \frac{dV}{dt} = -\underbrace{\bar{g}_{\mathrm{Na}}\, m^3 h\, (V - E_{\mathrm{Na}})}_{\mathrm{Na}^+ \textsf{ 電流}} -\underbrace{\bar{g}_{\mathrm{K}}\, n^4\, (V - E_{\mathrm{K}})}_{\mathrm{K}^+ \textsf{ 電流}} -\underbrace{g_L (V - E_L)}_{\textsf{漏れ電流}} + I_{\text{ext}}
ゲート変数 m, h, n はそれぞれ [0,1] の値を取り、次の方程式に従う(x は m, h, n のいずれか)。
\frac{dx}{dt} = \alpha_x(V)\,(1 - x) - \beta_x(V)\, x
これも第1節の形である。実際、\tau_x(V) = 1/(\alpha_x + \beta_x)、x_\infty(V) = \alpha_x/(\alpha_x+\beta_x) と置くと、
\tau_x(V) \frac{dx}{dt} = -x + x_\infty(V)
「x は、その電位での目標値 x_\infty(V) へ、時定数 \tau_x(V) で緩和する」—という読み方ができる。時定数も目標値も電位に依存する、というのが HH モデルの心臓部である。
各変数の役割
三つのゲート変数の性格を、はっきりさせておこう。
| 変数 | 対象 | 電位が上がると | 速さ |
|---|---|---|---|
| m | \mathrm{Na}^+ 活性化 | 増える(開く) | 速い(〜0.1 ms) |
| h | \mathrm{Na}^+ 不活性化 | 減る(閉じる) | 遅い(〜1 ms) |
| n | \mathrm{K}^+ 活性化 | 増える(開く) | 遅い(〜1 ms) |
\mathrm{Na}^+ 電流の項に m^3 h という積が入っていることに注目してほしい。m が大きく、かつ h が大きいときだけ電流が流れる。m は速く上がり、h は遅れて下がる。だから \mathrm{Na}^+ 電流は「一瞬だけ流れて、すぐ止まる」。
活動電位が起きる筋書き
以上を組み合わせると、活動電位の物語が読める。一手ずつ追ってほしい。
- 外部電流で V が少し上がる
- m が速く増える → \mathrm{Na}^+ が流れ込む → V がさらに上がる
- これは正のフィードバックである。V が上がるほど m が増え、m が増えるほど V が上がる。爆発的に V が跳ね上がる(立ち上がり)
- 遅れて h が減る → \mathrm{Na}^+ 電流が止まる
- 同じく遅れて n が増える → \mathrm{K}^+ が流れ出る → V が下がる(立ち下がり)
- V が静止電位を下回る(過分極)。n がゆっくり戻るまで、次の発火が起きにくい(不応期)
ここがポイント
活動電位の本質は、速い正のフィードバック(m)と、遅い負のフィードバック(h と n)の組み合わせである。速い自己増強と遅い抑制—この構造は神経系のあちこちに現れ、第3章では集団レベルの振動を生む同じ構造を見ることになる。
そして「閾値」は、方程式のどこにも書かれていない。正のフィードバックが暴走を始める境目が、結果として閾値のように見えるだけである。LIF モデルが手で入れたものを、HH モデルは導出した—これが「機構モデル」の力である(第1章第2節)。
HH 方程式をオイラー法で解いてみよう。パラメータは原論文の値、刻み幅は \Delta t = 0.01 ms である。コードは コード/02_hh.py にある。
C, gNa, gK, gL = 1.0, 120.0, 36.0, 0.3 # μF/cm², mS/cm²
ENa, EK, EL = 50.0, -77.0, -54.387 # mV
DT = 0.01 # ms
def simulate(I, T=300.0):
V = -65.0
am, bm, ah, bh, an, bn = rates(V)
m = am/(am+bm) # 静止状態から始める
h = ah/(ah+bh)
n = an/(an+bn)
spikes = []
for i in range(int(T/DT)):
am, bm, ah, bh, an, bn = rates(V)
m += DT*(am*(1-m) - bm*m)
h += DT*(ah*(1-h) - bh*h)
n += DT*(an*(1-n) - bn*n)
I_ion = (gNa*m**3*h*(V-ENa) + gK*n**4*(V-EK)
+ gL*(V-EL))
V_new = V + DT*(I - I_ion)/C
if V < 0 <= V_new: # 0 mV の上向き通過=スパイク
spikes.append(i*DT)
V = V_new
return spikes(rates はゲート変数の \alpha, \beta を返す関数。全体は コード/02_hh.py を見てほしい。)
I_{\text{ext}} を階段状に与えると、活動電位が出る。V(t) と一緒に m(t), h(t), n(t) も描いてみてほしい。上の1〜6の筋書きが、グラフの上で読めるはずである。
そして I_{\text{ext}} を少しずつ上げて、発火が始まる電流を探す。結果はこうなる。
def firing_rate(I, T=300.0, warmup=100.0):
"""定常状態での発火率 [Hz]。最初の 100 ms は捨てる。"""
s = [t for t in simulate(I, T) if t > warmup]
if len(s) < 2:
return 0.0
return 1000.0*(len(s) - 1)/(s[-1] - s[0])
# 発火が始まる電流を二分法で詰める
lo, hi = 0.0, 10.0
for _ in range(40):
mid = (lo + hi)/2
if firing_rate(mid) > 0: hi = mid
else: lo = mid
print(hi, firing_rate(hi + 0.1))| I [μA/cm²] | 2.0 | 5.0 | 6.2 | 6.3 | 10 | 20 | 40 | 80 |
|---|---|---|---|---|---|---|---|---|
| 発火率 [Hz] | 0 | 0 | 0 | 53 | 69 | 87 | 109 | 0 |
発火率がゼロから 53 Hz へ飛んでいる。二分法で境目を詰めると I \approx 6.21 μA/cm² で、その直上の発火率は約 53 Hz である。いくらでも遅く発火することはできない—これが次節で扱う Type II の特徴である。
表のいちばん右に注目してほしい。電流をさらに上げると、発火が止まる。全体を描くと、こうなる。
コード/02_hh.py の出力)。I \approx 6.21 で発火率がゼロから 53 Hz へ飛ぶ—これが Type II の特徴である。そこから 127 Hz まで上がるが、I \approx 64 で脱分極ブロックが起き、発火が完全に止まる。強く押せば速く発火する、という素朴な期待は両端で裏切られる。
I \approx 64 を超えると、膜は脱分極したまま固定されてしまう。強く押せば速く発火する、という素朴な期待は成り立たない。なぜ止まるのかを、h の振る舞いから考えてみてほしい。
4. 相平面解析と次元削減
HH 方程式は4変数(V, m, h, n)の非線形系である。4次元は絵に描けない。2次元に落とせないだろうか。
縮約の論理
第3節の表を見返すと、手がかりがある。
- m は非常に速い。他の変数が動く時間スケールでは、m はすでに目標値に達している。だから m \approx m_\infty(V) と置いてよい(断熱近似)
- h と n は同じくらいの速さで、しかも h が減るときに n が増える。数値的に h + n \approx \text{const} が成り立つ。だから一つの変数にまとめられる
こうして4変数が2変数に減る。V と、まとめた回復変数 w である。
FitzHugh–Nagumo モデル
この縮約を、さらに単純化して数学的に扱いやすくしたのが FitzHugh–Nagumo モデルである。
\begin{aligned} \frac{dV}{dt} &= V - \frac{V^3}{3} - w + I \\ \tau_w \frac{dw}{dt} &= V + a - b w \end{aligned}
生物学的な意味は薄れたが、構造は保たれている。V の式の V - V^3/3 が正のフィードバック(小さい V では V が自己増強する)を表し、-w が負のフィードバックである。\tau_w が大きいので w は遅い。
相平面
2変数なら、(V, w) 平面に軌道を描ける。これが相平面である。
平面の上に、二本の特別な曲線を引く。ヌルクライン(nullcline)である。
- V-ヌルクライン — dV/dt = 0 となる曲線。ここでは軌道が垂直に動く
- w-ヌルクライン — dw/dt = 0 となる曲線。ここでは軌道が水平に動く
FitzHugh–Nagumo なら、V-ヌルクラインは w = V - V^3/3 + I という三次曲線(N 字形)、w-ヌルクラインは w = (V+a)/b という直線である。
二本の交点が固定点である。そこでは両方の微分がゼロだから、系は動かない。
FitzHugh–Nagumo モデルの相平面を描いたのが 図 2 である。
固定点の安定性
固定点があっても、それが安定とは限らない。少しずらしたとき、戻ってくるのか離れていくのか。
調べ方は、固定点のまわりで線形化することである。固定点を (V^*, w^*)、そこからのずれを (\delta V, \delta w) とすると、
\frac{d}{dt}\begin{pmatrix}\delta V \\ \delta w\end{pmatrix} \approx \underbrace{\begin{pmatrix} \partial \dot{V}/\partial V & \partial \dot{V}/\partial w \\ \partial \dot{w}/\partial V & \partial \dot{w}/\partial w \end{pmatrix}}_{= \, J \ \textsf{(ヤコビ行列)}} \begin{pmatrix}\delta V \\ \delta w\end{pmatrix}
ヤコビ行列 J が現れた。本書で五つの役目を負うことになる J の、最初の登場である(第1章第3節の表を参照)。ここでの役目は固定点の安定性を決めることである。
線形の方程式 \dot{\mathbf{u}} = J\mathbf{u} の解は、J の固有値 \lambda_i を使って e^{\lambda_i t} の重ね合わせで書ける。だから判定は単純である。
- すべての固有値の実部が負 → ずれは減衰する → 安定
- 一つでも実部が正 → ずれは増大する → 不安定
- 複素固有値 → 実部が振動の減衰・増大、虚部が振動の速さを与える
ここがポイント
固定点の安定性は、そこでのヤコビ行列の固有値の実部の符号で決まる。これは本書で最初に現れるヤコビアンの用法である。第3章でネットワークに、第9章で学習ダイナミクスに、第11章で表現の幾何に、同じ行列が別の顔で現れる。
5. 分岐 ── 発火が始まる瞬間の数学
前節の「手を動かす」で問うたことに答える。入力電流を上げていくと、発火はどう始まるのか。
分岐とは
パラメータ(ここでは I)を連続的に変えていくと、固定点の位置や安定性が変わる。ある値で、解の質的な性質が変わることがある。これを分岐(bifurcation)と呼ぶ。
「質的に変わる」というのは、固定点の数が変わる、安定だったものが不安定になる、周期解が生まれる—といったことである。
二つの型
神経モデルで主に現れるのは、次の二つである。
サドルノード分岐。安定な固定点と不安定な固定点(サドル)が近づいてきて、衝突して消滅する。固定点がなくなると、系は行き場を失って周期軌道に落ちる。
このとき、発火率はゼロから連続的に立ち上がる。消滅の直前には、軌道が「元固定点があった場所」の近くで長く足踏みするため、周期が非常に長くなる(=発火率が非常に低い)からだ。任意に低い発火率が実現できる。
Hopf 分岐。固定点は残るが、複素固有値の実部が負から正に変わり、不安定になる。同時に周りに周期軌道(リミットサイクル)が生まれる。
このとき、発火率はゼロでない値から突然始まる。振動の周波数は固有値の虚部で決まっており、それは分岐点で有限の値を持つからだ。
二つの分岐の違いは、f–I 曲線の形の違いとして現れる(図 3)。
Type I と Type II
この違いは、実際のニューロンで観察されている。
| 分岐の型 | f–I 曲線 | 発火開始 | |
|---|---|---|---|
| Type I | サドルノード | 連続的に立ち上がる | 任意に低い発火率が可能 |
| Type II | Hopf | 不連続に飛ぶ | 最低発火率が存在する |
Type II のニューロンは、低い発火率を出せない。これは機能的な違いを生む。Type I は入力の強さを発火率で細かく符号化できる(積分器として働く)が、Type II は特定の周波数の入力に共鳴しやすい(共鳴器として働く)。
そして興味深いことに、同じニューロンでも、神経修飾物質などの作用で Type I と Type II を行き来することが知られている。回路の計算特性が、その場で切り替わりうるわけである。
FitzHugh–Nagumo モデルで分岐図を描いてみよう。コードは コード/02_fhn.py にある。
DT = 0.005
def run(I, a=0.7, b=0.8, tau=12.5, T=2000.0, warm=1000.0):
V, w = -1.0, -0.5
n, nw = int(T/DT), int(warm/DT)
Vs = np.empty(n - nw); sp = []
for i in range(n):
dV = V - V**3/3 - w + I # 速い変数
dw = (V + a - b*w)/tau # 遅い変数
Vn = V + DT*dV
w += DT*dw
if i >= nw: # 前半は過渡なので捨てる
Vs[i-nw] = Vn
if V < 0 <= Vn: # 上向きのゼロ交差=発火
sp.append(i*DT)
V = Vn
f = 0.0 if len(sp) < 2 else \
1000.0*(len(sp) - 1)/(sp[-1] - sp[0])
return Vs.min(), Vs.max(), f # 分岐図の上下と発火率I を細かく動かしながら長時間シミュレーションし、定常状態での V の最大値と最小値を記録する。発火していなければ最大=最小(一点)、発火していれば二点に分かれる。
結果はこうなる。
| I | 0.30 | 0.32 | 0.33 | 0.40 | 0.80 | 1.42 | 1.50 |
|---|---|---|---|---|---|---|---|
| V の最小 | -0.99 | -0.98 | -1.99 | -1.98 | -1.93 | -1.76 | 1.03 |
| V の最大 | -0.99 | -0.98 | 1.76 | 1.82 | 1.91 | 1.99 | 1.03 |
| 発火率 [Hz] | 0 | 0 | 21 | 24 | 27 | 21 | 0 |
コード/02_fhn.py の出力)。上は定常状態での V の最大と最小。I \approx 0.32 で一点が二点に割れ、I \approx 1.43 でまた一点に戻る。あいだの灰色の領域がリミットサイクルである。下は同じ範囲の発火率で、両端でゼロから飛んでいる。
I=0.32 と 0.33 のあいだで、一点が二点に割れている。これが分岐である。二分法で詰めると I \approx 0.324、その直上の発火率は約 19 Hz—ゼロから飛んでいる。前節の HH 方程式と同じ Type II である。
表の右端にも注目してほしい。I=1.50 でまた一点に戻る。振動には上限もあるのだ(HH の脱分極ブロックと同じことが起きている)。
そして問い—パラメータ a, b, \tau_w を変えると、同じ方程式が Type I にもなる。どう変えればよいか、二本のヌルクラインの交わり方から考えてみてほしい。
6. スパイク列の統計
ここまでは決定的な方程式だった。だが実際のニューロンの応答は、同じ刺激を繰り返しても毎回違う。
発火率という記述
スパイクの時刻を t_1, t_2, \dots とする。この列そのものを扱うのは大変なので、多くの場合発火率に縮約する。
r(t) = \lim_{\Delta t \to 0} \frac{\textsf{区間 } [t, t+\Delta t) \textsf{ のスパイク数の期待値}}{\Delta t}
「期待値」と書いたことに注意してほしい。一回の試行では発火率は定義できない。多数の試行にわたる平均か、時間方向の平均(定常なら)が必要である。
ポアソン過程
もっとも単純なモデルは、各瞬間に独立に、確率 r\,\Delta t でスパイクが起きるというものである。これが(非斉次)ポアソン過程である。
このモデルの性質を三つ確認しよう。
性質1:時間 T の間のスパイク数 n はポアソン分布に従う。
P(n) = \frac{(rT)^n}{n!}\, e^{-rT}
性質2:平均と分散が等しい。\mathbb{E}[n] = \mathrm{Var}[n] = rT。
ばらつきの大きさが、平均の大きさで決まってしまう—独立なコイン投げの重ね合わせだから当然だが、この性質は第6章で決定的に効く。
性質3:スパイク間隔(ISI)は指数分布に従う。
p(\tau) = r\, e^{-r\tau}
導出は簡単だ。「次のスパイクまで \tau 以上待つ」確率は、区間 [0,\tau) にスパイクが一つもない確率、つまり P(0) = e^{-r\tau} である。これを \tau で微分して符号を変えれば密度が出る。
指数分布のモードは \tau = 0 である。つまり「直前に発火したばかりの瞬間」がもっとも起きやすい—これは実際のニューロンとは違う。不応期があるからだ。
変動性の指標
スパイク列のばらつきを測る指標として、変動係数(coefficient of variation)が使われる。
C_V = \frac{\sigma_{\text{ISI}}}{\mu_{\text{ISI}}}
指数分布では \sigma = \mu = 1/r だから、C_V = 1 である。ポアソン過程が基準値 1 を与える。
- C_V < 1 — ポアソンより規則的(不応期がある、周期的に発火する)
- C_V > 1 — ポアソンより不規則(バースト発火する)
皮質のニューロンを記録すると、C_V はしばしば 1 に近い。皮質は驚くほど不規則に発火している。これは長らく謎とされ、「興奮性入力と抑制性入力がほぼ釣り合っていて、その揺らぎで発火している」という説明(バランス状態)が提案されている。第3章で触れる。
発火率という近似はいつ妥当か
本書の以降の章では、ほとんどの場面で発火率を使う。だがそれが妥当でない場面もあることは、意識しておきたい。
- スパイクの正確なタイミングが情報を担っている場合(聴覚系の位相同期など)
- 発火が非常にまばらで、一回の試行に数個しかスパイクがない場合
- 同期が重要な場合(複数の細胞が揃って発火することに意味がある場合)
発火率への縮約は、こうした情報をすべて捨てている。捨ててよいかは、問いによる—第1章第2節の主題が、ここでも効いている。
7. 活性化関数はどこから来たのか
章の締めくくりとして、深層学習へ橋を架ける。
f–I 曲線と活性化関数
第2節で LIF モデルの f–I 曲線を計算した。形は「閾値までゼロ、超えたら急に立ち上がり、やがて緩やかになる」だった。
人工ニューロンの活性化関数は、この曲線の近似である。
シグモイド関数
\varphi(u) = \frac{1}{1 + e^{-u}}
滑らかに立ち上がり、上下に飽和する。飽和は、実際のニューロンが不応期のせいで最大発火率を持つことに対応している。
ReLU(正規化線形関数)
\varphi(u) = \max(0, u)
閾値以下でゼロ、以上で線形。f–I 曲線の閾値近傍を線形近似したものと読める。飽和を捨てているが、実際のニューロンも通常の動作範囲では飽和まで行かないことが多い。
そして ReLU は、勾配が消えないという計算上の利点を持つ(第8章第6節)。生物学的な妥当性と計算上の都合が、たまたま一致した例である。
対応の限界
ただし、この対応を過大評価してはいけない。
深層学習で活性化関数が選ばれる理由は、ほとんどが計算上の都合である。ReLU が普及したのは勾配消失を避けられるからであって、生物学的に正しいからではない。GELU や Swish といった近年の関数は、生物学的な動機をまったく持たない。
逆向きの対応も怪しい。実際のニューロンの入出力関係は、入力の時間的な構造や樹状突起での非線形な統合に依存し、単一の静的な関数では書けない。
それでも出所を知る価値はある。「活性化関数」という部品が、どこかから降ってきたのではなく、実在するものの単純化として生まれたことを知っていると、モデルを設計するときの判断が変わる。何を捨てているかが見えるからだ。
本書が置いている前提
ここでもう一歩踏み込んでおきたい。活性化関数だけの話ではなく、本書全体が何を前提にしているかである。
本書はこの先ずっと、情報はスパイクとして運ばれ、化学シナプスで受け渡され、発火率に要約される—という描像のうえに数学を組み立てる。これはニューロン説(neuron doctrine)と呼ばれる考え方の延長にある。神経系の機能単位は個々の細胞であり、細胞は接点を介して信号をやりとりする、という前提だ。
これは確定した事実ではなく、記述の選択である。実際の脳には、この枠に収まらない伝達の仕組みがいくつも見つかっている。
- 樹状突起の演算。樹状突起は入力を素直に足し合わせる導線ではない。局所的に活動電位を起こし、枝ごとに違う非線形演算をする(London と Häusser 2005)
- ギャップ結合(gap junction)。細胞膜が直接つながってイオンが行き来する。化学シナプスを経ないので速く、集団の同期に効く
- 体積伝達(volume transmission)。伝達物質が細胞外液に拡散し、接点を持たない多数の細胞に届く。宛先が一つに決まらない伝達である
- 電場介在伝達(ephaptic transmission)。細胞外の電場そのものが、隣の細胞の興奮性を変える
- グリア伝達(gliotransmission)。ニューロンでない細胞が伝達に加わる
さらに、スパイクを使わない伝達もある。網膜の光受容細胞や双極細胞では、膜電位の緩やかな変化がそのまま伝達物質の放出量に反映される。「情報はスパイクの列である」という前提は、脳のすべての場所で成り立つわけではない。
この一覧は Bullock ら (2005) の整理に沿っている。彼らはニューロン説を捨てよと言ったのではない。書き換えが必要だと論じたのである。
もっと大きな水準では、記述の切り方そのものを変える提案もある。皮質を離散した単位の集まりと見るのではなく、連続した媒質と見て、活動を進行波や形状の共鳴モードとして書く立場だ。これは次章の話題に直接関わるので、そこで改めて触れる(第3章第7節)。
では、なぜ本書はそれでもニューロン説の描像を採るのか。
正直に言えば、そこでしか脳とAIを同じ数学に載せられないからである。人工ニューラルネットワークは「ユニットと重み」の言葉で書かれている。脳の側を同じ言葉に翻訳して初めて、両者を並べて比べられる。本書の主題はその比較にあるから、この抽象化を採る。
ただし前提を前提として意識しているかどうかで、結論の読み方は変わる。脳とAIが「同じ数学で書ける」と確かめられたとして、それは脳をこの抽象化で切り取った限りでの話である。切り取り方を変えれば、似ている度合いも変わりうる。第1章第2節で述べた「どの水準で似ていると言っているのか」という問いは、実はもう一段手前から始まっている—どの水準で脳を記述すると決めたのか、である。
本書を読み終えたとき、あなたはこの前提のどこを外してみたいと思うだろうか。
次章へ
本章で扱ったのは一個のニューロンだった。だが脳の計算は、明らかに集団の性質である。
次章では、多数のニューロンの集団を一つの変数(集団発火率)に縮約し、その相互作用を微分方程式で書く。本章で使った道具—微分方程式、相平面、固定点、分岐—が、そのまま集団のレベルで使える。記述の水準が変わっても数学は変わらない、という本書の主題の最初の実例になる。
確認問題
[導出]\tau\,dx/dt = -x + I(I は定数)を解き、t = \tau で初期値と最終値の差が何倍になるかを示せ。(第1節)
[導出]HH 方程式のゲート変数の式 dx/dt = \alpha_x(1-x) - \beta_x x を \tau_x\,dx/dt = -x + x_\infty の形に変形し、\tau_x と x_\infty を \alpha_x, \beta_x で表せ。(第3節)
[確認]\mathrm{Na}^+ 電流の項が m^3h という積を含むことの意味を述べよ。m と h の速さの違いが、活動電位のどの局面に対応するか。(第3節)
[考える]HH 方程式には閾値が明示的に書かれていない。それにもかかわらず閾値のような振る舞いが現れるのはなぜか。(第3節・第5節)
[確認]2変数系の固定点の安定性が、ヤコビ行列の固有値でどう判定されるかを述べよ。(第4節)
[確認]サドルノード分岐と Hopf 分岐の違いを、f–I 曲線の形の違いとして説明せよ。(第5節)
[導出]ポアソン過程において、スパイク間隔が指数分布に従うことを導出せよ。(第6節)
[考える]シグモイド関数と ReLU が、f–I 曲線のどの性質を捉え、どの性質を捨てているかを述べよ。(第7節)
参考文献
- Hodgkin, A. L. & Huxley, A. F. (1952) A quantitative description of membrane current. J Physiol — 本章第3節の原典。読みやすい論文なので一度は当たってほしい
- Gerstner, W. et al. (2014) Neuronal Dynamics ch.2, 4 — 単一ニューロンモデルの標準的な教科書。無料で公開されている
- 宮川博義・井上雅司『ニューロンの生物物理 第2版』 — 生物物理の側から。膜と channel の記述が丁寧[3節・コラム C2]
- Izhikevich, E. M. (2007) Dynamical Systems in Neuroscience — 分岐による発火の分類を徹底的に扱う[4〜5節]
- Bullock, T. H. et al. (2005) The neuron doctrine, redux. Science — 本書が置いている前提を外から眺めるために。ギャップ結合・体積伝達・電場介在伝達など、化学シナプス以外の伝達を一望できる短い論文[7節]
- London, M. & Häusser, M. (2005) Dendritic computation. Annu Rev Neurosci — 樹状突起を「導線」ではなく演算装置として見る[7節・コラム C2]