「ニューラルネットワーク」の補足ankokudan.org/d/dl/pdf/pdf-prmll2edadditional.pdf62...
Transcript of 「ニューラルネットワーク」の補足ankokudan.org/d/dl/pdf/pdf-prmll2edadditional.pdf62...
61
第 5章
「ニューラルネットワーク」の補足
PRML5章では, 本来別の記号を割り当てるべきところに同じ記号を用いることがあり, 初読時
には混乱しやすい. 慣れてしまえば読むのは難しくないが, ここでは出来るだけ区別してみる.
5.1 フィードフォワードネットワーク関数
3章, 4章でやったモデルは基底関数 ϕj とパラメータ wj の線形和を非線形活性化関数に入れた
ものだった. ここではそれを拡張する. x1, . . . , xD を入力変数とし x0 = 1をバイアス項(定数項)
に対応する変数, w(1)ji をパラメータとして
aj =D∑i=0
w(1)ji xi
とする. PRMLでは上記の aj を aj と書いているがすぐあとに出てくる ak とは無関係である. こ
こでは異なることを強調するために aj とする.
aj を活性化関数 hで変換する.zj = h(aj).
hとしてはロジスティックシグモイドなどのシグモイド関数が用いられる. これらの線形和をとっ
て出力ユニット活性を求める. z0 = 1をバイアス項に対応する変数として
ak =
M∑j=0
w(2)kj zj .
この出力ユニット活性を活性化関数を通してネットワークの出力 yk とする. 2クラス分類問題
ならロジスティックシグモイド関数を使う.
yk = yk(x,w) = σ(ak).
ここで w は w(1)ji , w
(2)kj をまとめたベクトルである. これらの式を組み合わせると
yk = σ
M∑j=0
w(2)kj h
(D∑i=0
w(1)ji xi
) .
62 第 5章 「ニューラルネットワーク」の補足
5.2 ネットワーク訓練
回帰問題を考える. 入力ベクトル x と K 次元の目標変数 t があり, x, w における t の条件付
き確率が精度 βI のガウス分布とする. N 個の同時独立分布 x = x1, . . . , xNと対応する目標値t = t1, . . . , tNを用意し, 出力ユニットの活性化関数を恒等写像として yn = y(xn, w)とする.
p(t|x,w) =N∏
n=1
N (tn|y(xn, w), β−1I).
対数をとると
log p(t|x,w) = −∑n
(1
2(tn − yn)T (βI)(tn − yn)
)−∑n
K
2log(2π)−
∑n
1
2log |β−1I|
= −β2
∑n
||tn − y(xn, w)||2 −DN
2log(2π) +
NK
2log β. (5.1)
そうするとこの関数の w についての最大化は最初の項の最小化, つまり
E(w) =1
2
∑n
||y(xn, w)− tn||2
の最小化と同等である. 最小値を与える w(= wML)をなんらかの方法で求める. その値を式 (5.1)
に代入して β で微分して 0とおくと
−1
2
∑n
||tn − y(xn, wML)||2 +NK
2
1
β= 0.
よって1
βML=
1
NK
∑n
||tn − y(xn, wML)||2.
5.2.1 問題に応じた関数の選択
回帰問題を考える. ak の活性化関数を恒等写像にとる. すると二乗和誤差関数の微分は
∂E
∂ak= yk − tk.
クラス分類問題でも同様の関係式が成り立つことを確認しよう.
目標変数 tが t = 1でクラス C1, t = 0でクラス C2 を表す 2クラス分類問題を考える. 活性化
関数をロジスティックシグモイド関数に選ぶ.
y = σ(a) =1
1 + exp(−a).
この微分は dy/da = σ(a)(1 − σ(a)) = y(1 − y) であった. p(t = 1|x) = y(x,w), p(t = 0|x) =1− y(x,w)なので
p(t|x,w) = y(x,w)t (1− y(x,w))1−t.
5.2 ネットワーク訓練 63
よって 4章と同様にして交差エントロピー誤差関数は
E(w) = −N∑
n=1
(tn log yn + (1− tn) log(1− yn)) .
これを ak で微分すると
∂E
∂ak= −
(tkyk(1− yk)
yk+ (1− tk)
−yk(1− yk)1− yk
)= −(tk − tkyk − yk + yktk)
= yk − tk.
K 個の 2 クラス分類問題を考える. それぞれの活性化関数がロジスティックシグモイド関数と
する.
p(t|x,w) =K∏
k=1
yk(x,w)tk(1− yk(x,w))1−tk .
ynk = yk(xn, w) とし n 番目の入力 xn に対する目標変数を tnk で表す. tnk ∈ 0, 1 であり,∑k tnk = 1である.
E(w) = −∏n,k
(tnk log ynk + (1− tnk) log(1− ynk)).
ynj に対応する aを anj とすると
∂E(w)
∂anj= −(tnj(1− ynj) + (1− tnj)(−ynj)) = ynj − tnj .
最後に K クラス分類問題を考える. 同様に n 番目の入力 xn に対する目標変数 tnk で表す.
yk(xn, w)を tnk が 1となる確率 p(tnk = 1|xn)とみなす.
E(w) = − log p(t|x,w) = −∑n,k
tnk log yk(xn, w).
活性化関数はソフトマックス関数で
yk(x,w) =exp ak(x,w)∑j exp(aj(x,w))
のとき∂yk∂aj
= yk(δkj − yj).
よって anj = aj(xn, w)とすると
∂
∂anjlog yk(xn, w) =
1
ynk
∂ynk∂anj
= δkj − ynj .
よって
∂E
∂anj= −
∑k
tnk(δkj − ynj) = −tnj +
(∑k
tnk
)ynj = ynj − tnj .
64 第 5章 「ニューラルネットワーク」の補足
5.3 局所二次近似
スカラー xについての関数 E(x)の x = aにおけるテイラー展開を 2次の項で打ち切った近似
式は
E(x) ≈ E(a) + E′(a)(x− a) + 1
2E′′(a)(x− a)2
であった. これを n 変数関数 E(x1, . . . , xn) に拡張する. x = (x1, . . . , xn)T, a = (a1, . . . , an)
T
とおいて
E(x) ≈ E(a) + (x− a)T(
∂
∂xiE
)+
1
2(x− a)T
(∂2E
∂xi∂xj
)(x− a)
= E(a) + (x− a)T (∇E) +1
2(x− a)TH(E)(x− a)
となる. E(x)が x = aの付近で極小ならば, そこでの勾配 ∇E は 0なので
E(x) ≈ E(a) +1
2(x− a)TH(E)(x− a).
H(E)は対称行列なので 3.6節の議論より対角化することで
E(x) ≈ E(a) +1
2
∑i
λiy2i
の形にできる. そして E(x)が x = aの付近で極小となるのは H(E) > 0(正定値)であるときと
わかる.
なお, H(f) = ∇2f = ∇(∇f)という表記をすることがある. 微分作用素∇を 2回するので 2乗
の形をしている. ただ ∇f が縦ベクトルならもう一度 ∇をするときは結果が行列になるように, 入
力ベクトルの転置を取って作用するとみなす. n2 次元の長いベクトルになるわけではない.
5.4 誤差関数微分の評価
与えられたネットワークに対して誤差関数の変化の割合を調べる. この節ではどの変数がどの変
数に依存しているか気をつけて微分する必要がある. 誤差関数が訓練集合の各データに対する誤差
の和で表せると仮定する:
E(w) =
N∑n=1
En(w).
一般のフィードフォワードネットワークで
aj =∑i
wjizi, zj = h(aj) (5.2)
とする. 入力 zi が出力ユニット aj に影響を与え, その aj が非線形活性化関数 h()を通して zj に
影響を与える. ある特定のパターン En の重み wji に関する微分を考える. 以下, 特定のパターン
5.5 外積による近似 65
を固定することで En 以外の添え字の nを省略する. 式 (5.2)のように En は非線形活性化関数 h
の変数 aj を通して wji に依存している.
∂En
∂wji=∂En
∂aj
∂aj∂wji
.
aj は wji に関しては線形なので∂aj∂wji
= zi.
誤差と呼ばれる記号 δj = ∂En/∂aj を導入すると
∂En
∂wji= δjzi
とかける. δj は h()が正準連結関数の場合は 5.2節での考察により
δj =∂En
∂aj= yj − tj
で計算できる. ユニット j につながっているユニット k を通して En への aj の影響があると考え
ると
∂En
∂aj=∑k
∂En
∂ak
∂ak∂aj
. (5.3)
ここで aj と ak は z を経由して関係していると考えているので ∂ak/∂aj = δjk(クロネッカーの
デルタ)にはならないことに注意する. 実際,
ak =∑i
wkih(ai)
より∂ak∂aj
= wkjh′(aj).
これを式 (5.3)に代入して
δj =∂En
∂aj=∑k
δkwkjh′(aj) = h′(aj)
∑k
wkjδk.
5.5 外積による近似
E(w) =1
2
N∑n=1
(yn − tn)2
のときのヘッセ行列は
H = H(E) =∑n
(∇yn)(∇yn)T +∑n
(yn − tn)H(yn).
66 第 5章 「ニューラルネットワーク」の補足
一般には成立しないがもしよく訓練された状態で yn が目標値 tn に十分近ければ第 2項を無視で
きる. その場合 bn = ∇yn = ∇an(活性化関数が恒等写像なので)とおくと
H ≈∑n
bnbnT .
これを Levenberg-Marquardt近似という.
E =1
2
∫∫(y(x,w)− t)2p(x, t) dxdt
のときのヘッセ行列を考えてみると
∂E
∂wi=
∫∫(y − t) ∂y
∂wip(x, t) dxdt.
∂2E
∂wi∂wj=
∫∫ (∂y
∂wj
∂y
∂wi+ (y − t) ∂2y
∂wi∂wj
)p(x, t) dxdt.
(p(x, t) = p(t|x)p(x)より)
=
∫∂y
∂wj
∂y
∂wi
(∫p(t|x) dt
)p(x) dx
+
∫∂2y
∂wi∂wj
(∫(y − t)p(t|x) dt
)p(x) dx
(第 1項のカッコ内は 1. 第 2項は y(x) =
∫tp(t|x) dtを使うと 0)
=
∫∂y
∂wj
∂y
∂wip(x) dx.
ロジスティックシグモイドのときは
∇E(w) =∑n
∂E
∂an∇an = −
∑n
(tnyn(1− yn)
yn− (1− tn)yn(1− yn)
1− yn
)∇an
=∑n
(yn − tn)∇an.
よって yn ≈ tn なら
∇2E(w) =∑n
∂yn∂an∇an∇anT +
∑n
(yn − tn)∇2an
≈∑n
yn(1− yn)∇an∇anT .
5.6 ヘッセ行列の厳密な評価
この節は計算は難しくはないが, 記号がややこしいので書いてみる. 変数の関係式は aj =∑i w
(1)ji xi, zj = h(aj), ak =
∑j w
(2)kj zj , yk = ak である. PRMLの aj と ak は違う対象であるこ
とに注意する. ここでは aj の代わりに aj を使う.
添え字の i, i′ は入力, j, j′ は隠れユニット, k, k′ は出力である. また
δk =∂En
∂ak, Mkk′ =
∂2En
∂ak∂ak′
という記号を導入する. En 以外の添え字 nを省略する.
5.6 ヘッセ行列の厳密な評価 67
5.6.1 両方の重みが第 2層にある
∂ak
∂w(2)kj
= zj ,∂En
∂w(2)kj
=∂ak
∂w(2)kj
∂En
∂ak= zjδk.
よって
∂2En
∂w(2)kj ∂w
(2)k′j′
=∂a′k
∂w(2)k′j′
∂
∂ak′
(∂En
∂w(2)kj
)= zj′zj
∂δk∂ak′
= zjzj′Mkk′ .
5.6.2 両方の重みが第 1層にある
∂ak∂aj
= w(2)kj h
′(aj),∂aj
∂w(1)ji
= xi
より∂En
∂w(1)ji
=∂aj
∂w(1)ji
∂En
∂aj= xi
∑k
∂ak∂aj
∂En
∂ak= xi
∑k
w(2)kj h
′(aj)δk.
∂2En
∂w(1)ji ∂w
(1)j′i′
=∂aj′
∂w(1)j′i′
∂
∂aj′
(∂En
∂w(1)ji
)= xixi′
∂
∂aj′
(h′(aj)
∑k
w(2)kj δk
)︸ ︷︷ ︸
=:A
.
j = j′ のとき
A = h′′(aj′)∑k
w(2)kj δk +B, B := h′(aj)
∂
∂aj′
(∑k
w(2)kj δk
).
j = j′ のとき
B = h′(aj)∑k′
∂ak′
∂aj
∂
∂ak′
(∑k
w(2)kj δk
)=∑k,k′
h′(aj)h′(aj′)w
(2)k′j′w
(2)kj Mkk′ .
二つをまとめて
∂2En
∂w(1)ji ∂w
(1)j′i′
= xixi′
h′′(aj′)δjj′ ∑k
w(2)kj δk + h′(aj)h
′(aj′)∑k,k′
w(2)kj w
(2)k′j′Mkk′
.
δjj′ はクロネッカーのデルタ.
5.6.3 重みが別々の層に一つずつある
∂En
∂w(2)kj′
= zj′δk,∂2En
∂w(1)ji ∂w
(2)kj′
=∂aj
∂w(1)ji
∂
∂aj(zj′δk)︸ ︷︷ ︸=:A
,∂aj
∂w(1)ji
= xi.
68 第 5章 「ニューラルネットワーク」の補足
j = j′ のとき
A = h′(aj′)δk +B, B := zj′∂δk∂aj
.
j = j′ のとき
B = zj′∑k′
∂ak′
∂aj
∂δk∂ak′
= zj′∑k′
w(2)k′jh
′(aj)Mkk′ .
よって
∂2En
∂w(1)ji ∂w
(2)kj′
= xih′(aj)
δjj′δk + zj′
∑k′
w(2)k′jMkk′
.
5.7 ヘッセ行列の積の高速な計算
応用面を考えると最終的に必要なものはヘッセ行列H そのものではなくあるベクトル vとH の
積であることが多い. H を計算せず直接 vTH = vT∇∇を計算するために, 左半分だけを取り出し
て R· = vT∇という記法を導入する. 5.3節の終わりに書いたようにこの ∇は入力が縦ベクトルなら転置を取ってから作用するとみなす. なお, v に依存するものをあたかも依存しないかのよ
うにR·と書いてしまうのは筋がよいとは思わない.
簡単な例を見てみよう. 2変数関数 y = f(x1, x2)について
R· = (v1, v2)∇ = (v1, v2)
( ∂∂x1∂
∂x2
).
よって
Rx1 = (v1, v2)
(10
)= v1,
Rx2 = (v1, v2)
(01
)= v2,
これを, R は入力値の xi をその添え字に対応する vi に置き換える作用と考えることにする.
Rは xi について明らかに線形, つまり
Rax1 + bx2 = av1 + bv2 = aRx1+ bRx2 .
前節と同じ 2層ネットワークで考えてみる. aj =∑
i w(1)ji xi, zj = h(aj), yk =
∑j w
(2)kj zj であ
る. ak の代わりに yk を使うので aj ではなく PRMLと同じ aj にする. PRMLでは wji の肩の添
え字を省略しているが念のためここではつけておく.
w(1)ji に対応する値を vji とすると w
(1)ji の線形和である aj について
Raj =∑i
xiRw
(1)ji
=∑i
vjixi.
Rzj = vT∇
∑j
w(1)ji h(aj)
= vT(∂h(aj)
∂aj∇aj
)= h′(aj)Raj .
5.8 ソフト重み共有 69
Ryk = v(2)T
∇∑
j
w(2)kj zj
= v(2)T
∑j
(∇w(2)
kj
)zj +
∑j
w(2)kj ∇zj
=∑j
v(2)kj zj +
∑j
w(2)kj Rzj .
なんとなくルールが見えてきたであろう. R·はRw = v という記号の置き換え以外は積や合
成関数の微分のルールの形に従っている(もともと微分作用素を用いて定義しているので当然では
あるが).
逆伝播の式:
δ(2)k = yk − tk,
δ(1)j = h′(aj)
∑k
w(2)kj δ
(2)k
で考えてみると
Rδ(2)k
= Ryk .
Rδ(1)j
= h′′(aj)Raj
(∑k
w(2)kj δ
(2)k
)+ h′(aj)
(∑k
v(2)kj δ
(2)k +
∑k
w(2)kj R
δ(2)k
).
誤差の微分の式:
∂E
∂w(2)kj
= δ(2)k zj .
∂E
∂w(1)jk
= δ(1)j xi.
より
R
∂E
∂w(2)kj
= R
δ(2)k
zj + δ
(2)k Rzj .
R
∂E
∂w(1)jk
= xiR
δ(1)j
.
5.8 ソフト重み共有
ネットワークの, あるグループに属する重みを等しくすることで複雑さを減らす手法がある. し
かし重みが等しいという制約は厳しい. ソフト重み共有はその制約を外し, 代わりに正則化項を追
加することで, あるグループに属する重みが似た値をとれるようにする手法である. πk を混合係数
として確率密度関数は
p(w) =∏i
p(wi), p(wi) =M∑k=1
πkN (wi|µk, σ2k).
70 第 5章 「ニューラルネットワーク」の補足
p(wi)が確率分布なので混合係数は∑
k πk = 1, 0 ≤ πk ≤ 1を満たす. 2乗ノルムの正規化項は平
均 0のガウス事前分布の負の対数尤度関数とみなせた. ここでは複数個の重みに対応させるため混
合ガウス分布を用いてみる.
Ω(w) = − log p(w) = −∑i
log
(M∑k=1
πkN (wi|µk, σ2k)
).
最小化したい目的関数は誤差関数と正則化項の和で
E(w) = E(w) + Ω(w).
p(j) = πj とおいて負担率を導入する.
γj(wi) = p(j|wi) =p(j)p(wi|j)p(wi)
=πjN (wi|µj , σ
2j )
p(wi).
正規分布の微分
∂
∂xN (x|µ, σ) = N (x|µ, σ)
(−x− µ
σ2
),
∂
∂µN (x|µ, σ) = N (x|µ, σ)
(x− µσ2
)∂
∂σN (x|µ, σ) = N (x|µ, σ)
(− 1
σ+
(x− µ)2
σ3
)を思い出しておく. log p(wi)を wi で微分すると
∂
∂wilog p(wi) =
1
p(wi)
(∑k
πk∂
∂wiN (wi|µk, σ
2k)
)
=1
p(wi)
(∑k
πkN (wi|µk, σ2k)
(−wi − µk
σ2k
))
= −∑k
πkN (wi|µk, σk)
p(wi)
wi − µk
σ2k
= −∑k
γk(wi)wi − µk
σ2k
.
よって
∂E
∂wi=∂E
∂wi+∑k
γk(wi)wi − µk
σ2k
.
同様に
∂
∂µklog p(w) =
∑j
∂
∂µklog p(wj) =
∑j
πkN (wj |µk, σ2k)
p(wj)
wj − µk
σ2k
=∑j
γk(wj)wj − µk
σ2k
.
よって
∂E
∂µk=∑j
γk(wj)µk − wj
σ2k
.
5.9 混合密度ネットワーク 71
∂E
∂σk= −
∑j
∂
∂σklog p(wj) = −
∑j
πkN (wj |µk, σ2k)
p(wj)
(− 1
σk+
(wj − µk)2
σ3k
)
=∑j
γk(wj)
(1
σk− (wj − µk)
2
σ3k
).
πj に関する制約より補助変数 ηj を用いて
πj =exp(ηj)∑k exp(ηk)
と表すと 4.13節式 (4.1)より∂πk∂ηj
= πk(δkj − πj).
よって
∂E
∂ηj= −
∑i
∂
∂ηjlog p(wi) = −
∑i
∂
∂ηjlog
(∑k
πkN (wi|µk, σ2k)
)
= −∑i,k
N (wi|µk, σ2k)
p(wi)
∂πk∂ηj
= −∑i,k
N (wi|µk, σ2k)
p(wi)πk(δkj − πj)
= −∑i
(πjN (wi|µj , σ
2j )
p(wi)−πj∑
k πkN (wi|µk, σ2k)
p(wi)
)= −
∑i
(γj(wi)− πj) =∑i
(πj − γj(wi)).
5.9 混合密度ネットワーク
p(t|x) =K∑
k=1
πk(x)N (t|µk(x), σ2k(x)I)
という分布のモデルを考える. このモデルのパラメータを, x を入力としてえられるニューラル
ネットワークの出力となるようにとることで推論する. 前節と同様∑
k πk(x) = 1, 0 ≤ πk(x) ≤ 1
という制約があるので変数 aπl を導入し
πk(x) =exp(aπk )∑l exp(a
πl )
とする. 分散は 0以上という制約があるので変数 aσk を導入し
σk(x) = exp(aσk)
とする. 平均は特に制約がないのでµkj(x) = aµkj
72 第 5章 「ニューラルネットワーク」の補足
とする.Nnk = N (tn|µk(xn), σ
2k(xn)I)
とおくとデータが独立の場合, 誤差関数は
E(w) = −∑n
log
(∑k
πk(xn)Nnk
).
前節と同様 p(k|x) = πk(x)とおいて負担率を
γnk(tn|xn) = p(k|tn, xn) =p(k|xn)p(tn|k)
p(tn|xn)=
πkNnk∑l πlNnl
とする.∂πj∂aπk
= πj(δkj − πk)
より∂En
∂aπk= −
∑j πj(δkj − πk)Nnj∑
j πjNnj= −(γnk − πk) = πk − γnk.
N (t|µ, σ2I) =1
(2π)L/2
1
σLexp
(− 1
2σ2
L∑l=1
(tl − µl)2
)
なので∂
∂µlN (t|µ, σ2I) = N (t|µ, σ2I)
(− tl − µl
σ2
).
よって∂En
∂aµkl= − Nnk∑
j πjNnj
tnl − µkl
σ2k
= γnk
(µkl − tnl
σ2k
).
同様に∂
∂σN (t|µ, σ2I) = N (t|µ, σ2I)
(−Lσ+||t− µ||2
σ3
)より
∂
∂aµklNnj = δjkNnj
(tnl − µkl
σ2k
).
よって
∂Nnk
∂aσk=∂σk∂aσk
∂Nnk
∂σk= σkNnk
(− L
σk+||tn − µk||2
σ3k
)= Nnk
(−L+
||tn − µk||2
σ2k
).
よって∂En
∂aσk= γnk
(L− ||tn − µk||2
σ2k
).
5.10 クラス分類のためのベイズニューラルネットワーク 73
条件付き平均についての密度関数の分散は
s2(x) = E[||t− E[t|x]||2
∣∣x]=∑k
πk
∫ (||t||2 − 2tTE[t|x] + ||E[t|x]||2
)N (t|µk, σ
2kI) dt
=∑k
πk(σ2k + ||µk||2 − 2µk
TE[t|x] + ||E[t|x]||2)
=∑k
πk(x)
σk(x)2 + ||µk −∑j
πj(x)µj(x)||2 .
5.10 クラス分類のためのベイズニューラルネットワーク
ロジスティックシグモイド出力を一つ持つネットワークによる 2クラス分類問題を考える. その
モデルの対数尤度関数は tn ∈ 0, 1, yn = y(xn, w)として
log p(D|w) =∑n
(tn log yn + (1− tn) log(1− yn)).
事前分布を
p(w|α) = N (w|0, α−1I) =1
√2π
W |α−1|W/2exp
(−1
2αwTw
)とする(W は wに含まれるパラメータの総数). ノイズがないので β を含まない.
E(w) = log p(D|w) + α
2wTw
の最小化で wMAP を求め, A = −∇2 log p(w|D)∣∣w=wMAP
を何らかの方法で求める. ラプラス近
似を使って事後分布をガウス近似すると
q(w|D) = N (w|wMAP, A−1).
正規化項を求める 4.17節式 (4.2)を使って
log p(D|α) ≈ log
(p(D|wMAP)p(wMAP|α)
√(2π)W
|A|
)
= log p(D|wMAP)−W
2log(2π) +
W
2logα− 1
2αwMAP
TwMAP
+W
2log(2π)− 1
2log |A|
= −E(wMAP)−1
2log |A|+ W
2logα.
E(wMAP) = −∑n
(tn log yn + (1− tn) log(1− yn)) +1
2αwMAP
TwMAP.
予測分布を考える. 出力ユニットの活性化関数を線形近似する.
a(x,w) ≈ a(x,wMAP) +∇a(x,wMAP)T(w − wMAP)
(aMAP(x) = a(x,wMAP), b = ∇a(x,wMAP)として)
= aMAP(x) + bT (w − wMAP).
74 第 5章 「ニューラルネットワーク」の補足
p(a|x,D) =∫δ(a− a(x,w))q(w|D) dw
=
∫δ(a− aMAP(x)− wMAP
T b+ wT b)q(w|D) dw.
平均は
E[a] =
∫ap(a|x,D) da =
∫δ(a− a(x,w))w(w)a dadw
=
∫a(x,w)q(w) dw = (aMAP(x)− wMAP
T b) +
∫bTwq(w) dw
= aMAP(x)− wMAPT b+ bTwMAP = aMAP(x).
分散は wT bが効くのでσ2a(x) = bTA−1b(x)
予測分布は 4.20節式 (4.4)の近似式を使って
p(t = 1|x,D) =∫σ(a)p(a|x,D) da ≈ σ(κ(σ2
a)aMAP(x)).
11.1 「11.5.1 力学系」のところを違う方法で説明する試み 107
このボルツマン因子をより基本的な統計力学の定理から導くこともできるが,それは本筋からそ
れるので省略する.
11.1.3 ポテンシャルエネルギー
上記の話では,E は気体分子の運動エネルギーについてのみ議論したが,分子は運動エネルギー
に加えて位置エネルギー(ポテンシャルエネルギー)も持っている(無重力とかなら話は別だが).
そしてポテンシャルエネルギーについてもボルツマン因子は有効である.たとえば地面を無限に広
い平面で近似し,各分子がポテンシャルエネルギー E = m · g · h を持つとする(hは地面からの高さ).そうすると高いところの分子は低いところに比べて高いポテンシャルエネルギーを持って
いるといえる.当然のことながら,ボルツマン因子によれば高いところまでのぼれる分子はそう多
くない.高さに対して指数関数的に少なくなる.つまり上空ほど空気は薄くなる.これは私たちの
常識と一致している.
ちなみに温度 300K のときに窒素分子 (分子量 28) の存在確率 p をボルツマン因子で計算する
と,標高 0mと標高 2000mでの pの比が 0.80倍と出る.温度 300K というのは 27に相当し,
窒素は空気の大半を占めることを考えれば,これはそう悪くない大気の近似である.そして標高
2000mでの一般的な気圧を Googleで調べたら 0.80気圧のようだ.まあ上空に行くほど気温が下
がるし,地球は平板ではないので,この近似はいろいろと問題があるが,しかし参考にはなるだ
ろう.
11.1.4 サンプリングへの応用
さてやっと本題に入ろう.私たちは p(z) を考えている.ここでの pはボルツマン因子の pでは
なくて,サンプリングしたい対象の確率の pである.この p(z)の分布にそった出現頻度の z の集
合がほしい.それならば,この pから対応するポテンシャル E を構成し,その中で物理学的なシ
ミュレーションをすれば,その(仮想的な)粒子の位置 z のログは,サンプリングにふさわしいも
のになりそうではないか*4.これが基本的なアイデアである.E をうまく作れれば,(そして精密
に物理学を再現しさえすれば)期待通りの確率で z がサンプルできる.
ということで,ついに (11.54)に似た式が登場する(この式はもちろん統計力学のボルツマン因
子に由来している).
p(z) =1
Zexp
(−E(z)
kT
)
教科書とは違い,私はまだこの kT を 1に置きかえない.この式だと,E から pを導く式のよう
に見えておかしいので,これを E について解いておこう.
E(z) = −kT · ln (p(z) · Z)
*4 z が位置を表す・・・という表現がよくわからなければ,z は仮想粒子の地面からの高さを表す,とでも思ってほし
い.z がスカラーであるときは,このたとえは悪くないと思う.
108 第 11章 「サンプリング法」のための物理学
与えられた確率分布 pに対して,こういうポテンシャルエネルギー E を持つ系の中での仮想的
な分子の動きをシミュレーションすればいい.つまりはそういうことだ.
PRMLではここから解析力学に突入するのだが,これは難易度が上がってしまうので私は違う
方法を選んだ.大丈夫,そんな小難しい理論を使わなくても,十分に説明できる.物理は私のよう
なものでも理解できるほどに簡単なのだ.ということで,私は高校物理でおなじみのニュートン力
学で進める.
さて,この仮想分子にはきっと質量があるだろう.これをとりあえず m としよう.この仮想
分子は常にポテンシャルエネルギーから力を受けているのだが,その力は,ポテンシャルエネル
ギーを z で偏微分し,−1を乗じれば求められる.
F = −dEdz
= kT · 1p· dpdz
この仮想分子の加速度を aとおけば,分子の質量mは時間変動しないので, F = m · aとなり,
a =kT
m· 1p· dpdz
となる.最初の因子 kT/m は適当に 1にしてしまってもいいかもしれない.また pも aに対し
てこの形でしか現れないので,つまり微分した関数との比だけが重要なので,pを正規化し忘れて
いても aの値は変わらない.
これでこの仮想粒子をこの加速度に沿って動かしていくシミュレーションをして z のログをとれ
ばいいだけなのだが,少し問題というか注意点がある.それについて,次の節に書こう.
11.1.5 注意点
私たちは,統計力学という「多数の分子が衝突しながら乱雑に動く」物理学を使っている.とい
うことは,このシミュレーションにおいて分子はどのくらいの個数を扱わなければいけないのだろ
う.100個くらいでいいのか? 1万個か? 100万個くらいだろうか.・・・いやいや欲を言って厳
密を期するのであれば 1モルくらいはほしいかもしれない.つまりは 1023 個程度である.
もちろんそんなことはやっていられない(メモリの消費量が尋常ではない).ということで 1個
の分子の動きをシミュレーションしていくだけで同等の結果を得る方法を考えよう.これはいわば
本質ではなくただの技巧(テクニック)である.
やることは簡単で,まずシミュレーション時間を十分に長くとることだ.そうすれば分子は(た
とえ一つであったとしても)さまざまなポテンシャルの場所を探検してくれる.そうすれば一分子
ながら E(z) 全体を十分に反映した zのログができて,サンプリングができる.・・・おっと言い
忘れたが,もちろんシミュレーション内に複数の分子を配し(つまり z や速度 v の初期値が違う),
それぞれシミュレーションしてもいい.それは並列化が有効な手法である.
またシミュレーションの最初のころの z は信用できないとしてログからは捨てることを推奨す
る.しばらくシミュレーションしていると仮想分子は E(z)を反映した場所をうろつくようになる
が,それまでは初期値の選び方の影響を強く受けてしまい,サンプリングに際して有効とは思えな
い.なお,初期値に恵まれないと(ポテンシャルエネルギー的な意味合いで)どこかのくぼみにハ
11.1 「11.5.1 力学系」のところを違う方法で説明する試み 109
マってなかなか出られない,なんてこともありうるだろう.こうなると E(z)全体を十分に反映し
ているとは言い難い.そこで,たまに zを乱数で初期化したらより良いと私は思う.つまり分子は
ワープするのだ.ただワープ後しばらくはやはり z は E(z)を反映していないので,サンプリング
用のログとしては使わずに捨てるのを推奨する.
次は温度の問題を論じよう.私たちは先ほど気楽に kT/mという係数を 1と置いたが,これは
T を定数として扱っていることになる.なぜなら,kもmも定数だからだ.つまりこのシミュレー
ションは温度が一定の仮想世界を考えているということである.
しかし普通のニュートン力学でシミュレーションをしているだけだと,これは達成できない.な
ぜなら,普通のニュートン力学だけのシミュレーションでは,系のエネルギーが(計算誤差を除い
て)一定値をとるからだ.つまり,ポテンシャルエネルギーが低い地点では運動エネルギーが多く
あって,高い地点では運動エネルギーが少ないことになる.しかし自然界の温度一定系では,そう
なってはいない.分子はほかの分子との衝突やもしくは輻射のやりとりで運動エネルギーを得たり
失ったりしており,結果的にポテンシャルエネルギーの値とは独立に運動エネルギーを得ている.
運動エネルギーの平均値は(周囲の)温度にしか依存しない.つまり,温度一定とエネルギー一定
は一般には両立しないのだ.
ということで,運動エネルギーをたまに調整してやらねばならない.これは分子同士の衝突現
象の代用である.つまりは速度を適当に決めなおすということだ.これをやらないと p(z)の分布
は実現しないので重要である(実は当初私はこれをミスっておかしなサンプリング結果になり泣
かされた).速度ベクトルの各成分は乱数で決めればいいだろう.運動エネルギーもボルツマン因
子に従うはずなので,正規分布な乱数を使えばいいだろう.このとき,温度や質量の関係が加速
度 aの算出に使ったものと矛盾しないようにすべきだろう.私がここで言わんとしていることは,
速度を決めなおすときに乱数を適当に使うわけだが,その速度による運動エネルギーの期待値が,
kT2 × (z の次元数) くらいになるように,乱数の分布に気を配ってほしいということである.
もし,z が 4次元以上のベクトルであれば,それはもはや物理学からは離れてしまうが,ニュー
トン力学は第 4 の座標変数があったとしても自然に拡張可能であり(誰でも容易に類推できる),
それでおそらく問題はないであろう.
はみだしコラム「分配関数 Z は z の関数なのか?」
分配関数 Z は,ボルツマン因子を確率として正規化するための定数である.
p(z) =1
Zexp
(−E(z)
kT
)107ページ参照
この Z は,系が取りうるエネルギーのついてのボルツマン因子をすべて計算し,それを足し合
わせることで求められる.これは確率の正規化の基本を思い起こしてもらえれば自明である.つま
り,すべての確率を足したら 1にならなければいけないので,正規化前のものをとにかく全部足し
て,それで割ってやればよいということだ.・・・正規化定数はその名の通り定数なのであるが,
しかし別の視点から見ると関数でもある.それゆえに Z は分配「関数」などという別名があるの
だ.その話を私はしたい.
いろいろと理屈をこねてもいいのだが,とにかく一回 Z を計算してみようではないか.それが
110 第 11章 「サンプリング法」のための物理学
一番わかりやすいだろう.今ここに,エネルギーがとびとびの値しか取れない実験装置がある.階
段のような地形でしかも物体がなんらかの理由で地面から離れられないと想定すればいいだろう.
もしくは,量子力学的に量子化された状態だと思ってもらってもいい.とにかく,ここではエネル
ギー E が 0, 1, 2, 3, 4, ...と整数値しかとりえない.そういう状況を考えてほしい*5.
このケースで Z を計算してみよう.実に簡単である.
Z = 1 + exp
(− 1
kT
)+ exp
(− 2
kT
)+ exp
(− 3
kT
)+ ...
これは無限等比数列の和なので,簡単に整理できる.
Z =1
1− exp(− 1
kT
)さてこの Z を見てほしい.これは何の関数だろうか.なんの定数だろうか.・・・まず,Z は
E を一切含んでいない.それは当然だ,なぜなら E に値を代入して数列を作り,それを全部足し
たのだから.代入したのだから,式中に E はもう残っていない.だから Z は E に対しては定数で
ある.また Z の式の中には T という値が残っている.つまり Z は T の関数なのだ.
私たちの考えている E は,p(z)から構成したものなので,当然のことながら z の関数であった.
しかしこの E はもう Z には残っていないので,Z は z の関数ではない.・・・おっとこれは言い
過ぎかもしれない.もし温度が場所によって違うような系を考えているのなら,T が z の関数にな
るので Z は z の関数であると言えるだろう.しかし私はそういう複雑な状況を今回は想定してい
ない.温度は系全体で共通な定数だと想定している.
さらに註・・・というかもはや追記
私はこの説明において,あまりよく考えずに PRMLの流れに合わせて kT/mを 1としてしまっ
たが,温度は本当はそんなに軽く扱っていいものではない.いやそれを言ったら質量だって適当に
してはいけないかもしれない.物理屋の意地があるので少々語ることにする.
まず温度だが,もし温度があまりに低いと分子はほとんどエネルギーを持てないので,最寄りの
ポテンシャルエネルギーの低い場所にすぐに収まってしまって,そこから二度と出てこない.もち
ろん zの初期値に恵まれて,そこから下る過程で高い運動エネルギーを一時的には持てるかもしれ
ないが,それも温度を考慮した速度 v の取り直しによって,結局失ってしまう.この場合,結局仮
想粒子はごく狭い範囲をちまちま動くことしかできず,それはつまり z の初期値に強く影響された
サンプリング,言い換えれば p(z)全体をほとんど反映していないサンプリングとなる.これでは
もちろんいけないだろう.
では温度を高くしてやればいいのか.確かにそうすればポテンシャルの丘が多少あっても難なく
飛び越えていくだろう.つまり仮想粒子は p(z)全体を十分に探検できるようになる.・・・しか
し話はそう単純ではないのだ.もし温度が不適切なほど高ければ,もはや仮想分子は p(z)に影響
されなくなる.なぜなら,自分が温度由来で与えられている速度 vに対して,ポテンシャルから与
*5 何か適当な定数 cを考えて,E = 0, c, 2c, 3c, 4c, ...とすればより一般的になるが,私は定数と言えども文字を増や
して話をややこしくしたくなかったのであえて単なる整数とした.エネルギーの単位を適当に調整したと思っても
らってもいい.いずれにせよ,結論は全く変わらない.
11.1 「11.5.1 力学系」のところを違う方法で説明する試み 111
えられた加速度 aが小さく,もはやノイズ程度にしかならないからだ.こうなってしまうと,どの
z に対しても p(z)は同じ,みたいな系のサンプリングをしたような結果にしかならず,これも不本
意だろう.
今度は質量 mについて考えてみよう.質量はポテンシャルエネルギーの傾きがどのくらい加速
度に変換されるかの比例定数である.分かりやすくするために極端な例を考えよう.もし質量が無
限大だったらどうだろう.そうとも,加速度 aは常にゼロとなり,仮想粒子は p(z)に影響される
ことなく,温度をベースに与えられた v のまま等速直進運動をすることになる.これは温度が高す
ぎた場合によく似ている.これはダメだ!・・・では質量が 0 にかなり近い小さい値だったらどう
か.これは温度が 0だった場合のようにふるまうことになり,これもダメだ.
・・・と言いたいところなのだが,速度の初期値や取り直しの際に,私のアドバイスに従い運動
エネルギー 12mv
2 の期待値が 12kT × (z の次元数) となるようにとっているのであれば,mが大
きいときには v が小さくなり,mが小さいときには v が大きくなるので,加速度 aのスケールと
自動的に同じになる.ということで,質量 mをどのくらいの値にすべきかについては,あまり深
刻に悩まずともよさそうである.
さらに温度についてもいいニュースがある.私たちはポテンシャルエネルギーを定義するときに
E(z) = −kT · ln (p(z) · Z) としている.つまり温度が高い場合は,相応にポテンシャルの起伏も激しくなるのだ.温度が低い場合は,それに合わせてポテンシャルの起伏もなだらかになるのだ.
だからたぶん温度についてもそこまで神経をとがらす必要はない.
あとは v の取り直しの頻度についても考えてみよう.v の取り直しが頻繁に起こる場合,これは
仮想世界中の粒子数が非常に多くて過密であることを意味する.だからしょっちゅうぶつかってい
るわけだ.また,取り直しの頻度が少ない場合,これはかなり希薄な気体をシミュレーションして
いるということになる.
まず頻度が低すぎるというのはよろしくない.なぜなら温度が安定しなくなるからだ.そもそも
そんなに希薄な気体では総分子数は相当に少ないということになるだろうが,そんな系では統計力
学的な温度の定義が通用しなくなる.統計力学は十分に多数の分子がエネルギーをやり取りしてい
るような状況を前提に組まれているのだ.だからこそやっかい極まりない揺らぎの問題を解消でき
ている.それが通用しなくなるほど希薄だとするとさまざまな前提が崩れて,今までの説明通りに
はいかなくなってしまう恐れが出てくる.・・・別の言い方をするなら,この場合の仮想粒子は,
運動エネルギーとポテンシャルエネルギーの和が一定になるような運動を過剰に長く続けてしま
う.これは先に書いたように,温度一定とは異なる挙動である.
・・・では頻度をうんと上げるのはどうだろう.今度は p(z)がほとんど反映されなくなってし
まう.ポテンシャルエネルギーから加速度を決めてようやくその向きに進み始めたところで,v が
リセットされてしまえば,結局 p(z) は仮想粒子の運動にほとんど影響できなかったことになる.
ということは上記で温度が大きすぎた場合の考察のような,残念な結果になるだろう.
11.1.6 余談
PRML 下巻の p.264 ではハミルトンを紹介しているが,私ならその場所に,ルートヴィッヒ・
ボルツマンを置くだろう.興味があれば wikipedia で彼について調べてみてほしい.