Chapter 8 ボルツマンマシン - 深層学習本読み会
-
Upload
taikai-takeda -
Category
Engineering
-
view
715 -
download
5
Transcript of Chapter 8 ボルツマンマシン - 深層学習本読み会
深層学習chapter8 ボルツマンマシン
Waseda Univ. B4
Taikai Takeda
Twitter: @bigsea_t
ボルツマンマシンとは
対称的に接続された無向グラフ(マルコフ確率場)
エッジはノードの依存関係を表す
ユニット(ノード)はONかOFFのどちらかの状態(binary)を確率的にとる
4
0
1
1
0
ON
OFF
ボルツマンマシンの定式化Ⅰ
1. 状態の組み合わせ𝒙 = {𝑥1, … , 𝑥𝑁}によって値が変化するエネルギー関数Φを定義
2. そのエネルギー関数の値が小さい状態ほど生起しやすいような確率分布𝑝(𝒙|𝜽)を定義(𝜽はパラメータの集合)
5
ボルツマンマシンの定式化Ⅱ
エネルギー関数Φ
Φ(𝒙, 𝜽) = −
𝑖=1
𝑁
𝑏𝑖𝑥𝑖 −
𝑖,𝑗 ∈𝜖
𝑤𝑖𝑗𝑥𝑖𝑥𝑗
𝜖:エッジの集合
𝑏𝑖: ユニット𝑥𝑖のバイアス
𝑤𝑖𝑗: ユニット𝑥𝑖 , 𝑥𝑗をつなぐエッジの重み
𝒙 = {𝑥1, … , 𝑥𝑁}
6
𝑥2
𝑥1
𝑥3
𝑥4
𝑤12
𝑤13
𝑤14
𝑤34𝑤23
𝑤24
ボルツマンマシンの定式化Ⅲ
ユニットの状態𝒙の確率分布𝑝(𝒙|𝜽)
𝑝 𝒙 𝜽 =1
𝑍 𝜽exp(−Φ(𝒙, 𝜽))
正規化定数𝑍 𝜽 = 𝒙 exp(−Φ(𝒙, 𝜽))
分配関数 𝒙 = 𝑥1 𝑥2… 𝑥𝑁: 2
𝑁通りの加算
エネルギー関数が小さい値を取る状態の生起確率が高い
7
𝑥2
𝑥1
𝑥3
𝑥4
𝑤12
𝑤13
𝑤14
𝑤34𝑤23
𝑤24
ボルツマンマシンの学習Ⅰ
1. 対数尤度関数を考える
2. 対数尤度関数をパラメータで微分して勾配を導出
3. 勾配法でパラメータを更新
4. (経験分布を定義して表記を簡素化)
8
ボルツマンマシンの学習Ⅱ
対数尤度関数ln𝐿 𝜽
ln𝐿 𝜽 =
𝑛=1
𝑁
{−Φ 𝒙𝑛, 𝜽 − ln 𝑍(𝜽)}
𝒙𝑛: n個目の入力データ
対数尤度関数のパラメータ微分
𝜕 ln 𝐿 𝜽
𝜕𝑏𝑖=
𝑛=1
𝑁
𝑥𝑛𝑖 −𝑁𝐸𝜃 𝑥𝑖
𝜕 ln 𝐿 𝜽
𝜕𝑤𝑖𝑗=
𝑛=1
𝑁
𝑥𝑛𝑖𝑥𝑛𝑗 − 𝑁𝐸𝜃 𝑥𝑖𝑥𝑗
𝑥𝑛𝑖 , 𝑥𝑛𝑗: それぞれ𝒙𝑛のi成分,j成分
𝐸𝜃 𝑥𝑖 = 𝒙 𝑥𝑖𝑝(𝒙|𝜽)
9分配関数
(厳密な計算は厳しい)
勾配降下法でパラメータを最適化できる
𝑐𝑓. 𝑝 𝒙 𝜽 =1
𝑍 𝜽exp(−Φ(𝒙, 𝜽))
ボルツマンマシンの学習Ⅲ
経験分布𝑞 𝒙 (表記の簡易化のために定義)
𝑞 𝒙 =1
𝑁
𝑛=1
𝑁
𝛿(𝒙, 𝒙𝑛)
𝛿(𝒙, 𝒚) = 1 𝑖𝑓 𝒙 = 𝒚0 𝑖𝑓 𝒙 ≠ 𝒚
標本平均は経験分布の期待値として表せる
1
𝑁
𝑛=1
𝑁
𝑥𝑛𝑖 =
𝒙
𝑥𝑛𝑖𝑞(𝒙)
10
一致する𝒙𝒏の割合
ボルツマンマシンの学習Ⅳ
経験分布を用いてパラメータの勾配を書き換える
1
𝑁
𝜕 ln 𝐿 𝜽
𝜕𝑏𝑖= 𝑥𝑖 𝑑𝑎𝑡𝑎 − 𝑥𝑖 𝑚𝑜𝑑𝑒𝑙
1
N
𝜕 ln 𝐿 𝜽
𝜕𝑤𝑖𝑗= 𝑥𝑖𝑥𝑗 𝑑𝑎𝑡𝑎
− 𝑥𝑖𝑥𝑗 𝑚𝑜𝑑𝑒𝑙
⋅ 𝑑𝑎𝑡𝑎: 𝑞(𝒙)に関する期待値
⋅ 𝑚𝑜𝑑𝑒𝑙: 𝑝(𝒙|𝜽)に関する期待値
11
𝑛=1
𝑁
𝑥𝑛𝑖𝑥𝑛𝑗 =
𝑥
𝑥𝑖𝑥𝑗𝑞(𝒙)
実際に分配関数による計算をするわけではなく,単に表記の簡易化が目的
隠れ変数を持つボルツマンマシン
ボルツマンマシンに隠れ変数を追加したモデル
高い自由度を持ち,隠れ変数の数を十分大きくとれば任意の分布を近似できることが証明されている
学習がより難しい(後述)
12
𝑣2
𝑣1
𝑣3
ℎ1
ℎ2
隠れ変数
(hidden variable)
可視変数
(visible variable)
隠れ変数を持つボルツマンマシンの定式化
エネルギー関数Φ
Φ(𝐳, 𝜽) = −
𝑖=1
𝑀
𝑏𝑖𝑧𝑖 −
𝑖,𝑗 ∈𝜖
𝑤𝑖𝑗𝑧𝑖𝑧𝑗
𝒛: 𝒗, 𝒉を順に並べたベクトル{𝑣1, . . 𝑣𝐽, ℎ1, … , ℎ𝐾}
確率分布𝑝(𝒛|𝜽)
𝑝 𝒛 𝜽 =1
𝑍 𝜽exp(−Φ(𝒛, 𝜽))
→隠れ変数を持たない場合と同じ
13
隠れ変数を持つボルツマンマシンの学習Ⅰ
隠れ変数を持たない場合と同様,対数尤度を最適化する
ただし,モデル分布𝑝(𝒗, 𝒉|𝜽)の隠れ変数𝒉を周辺化する必要がある
14
隠れ変数の周辺化
𝑝 𝒗 𝜽 =
𝒉
𝑝 𝒗, 𝒉|𝜽
尤度関数のパラメータ微分𝜕 ln 𝐿 𝜽
𝜕𝑤𝑖𝑗∝ 𝑧𝑖𝑧𝑗 𝑑𝑎𝑡𝑎
− 𝑧𝑖𝑧𝑗 𝑚𝑜𝑑𝑒𝑙
𝑔(𝒗, 𝒉) 𝑑𝑎𝑡𝑎 = 𝒗 𝒉𝑔 𝒗, 𝒉 𝑝 𝒉 𝒗, 𝜽 𝑞 𝒗
経験分布の期待値の計算にも分配関数を含むので学習がより難しい
隠れ変数を持つボルツマンマシンの学習Ⅱ
15
(多分)本の誤植(p.139の一番下)
𝑔(𝑣, ℎ)の隠れ変数を周辺化
制約ボルツマンマシン(RBM)
隠れ変数を持つボルツマンマシンの一種
可視変数どうし,隠れ変数どうしはそれぞれ結合を持たないという制約を持つ
この制約のおかげで,隠れ変数による周辺化が必要なくなるため学習が簡単になる
16
𝑣2
𝑣1
𝑣3
ℎ1
ℎ2
RBMの定式化
エネルギー関数Φ
Φ 𝐯, 𝐡, 𝜽 = −
𝑖=1
𝑎𝑖𝑣𝑖 −
𝑖=1
𝑏𝑖ℎ𝑖 −
𝑖,𝑗
𝑤𝑖𝑗𝑣𝑖ℎ𝑗
参考:制約がない場合
Φ(𝐳, 𝜽) = −
𝑖=1
𝑀
𝑏𝑖𝑧𝑖 −
𝑖,𝑗 ∈𝜖
𝑤𝑖𝑗𝑧𝑖𝑧𝑗
確率分布𝑝(𝒗, 𝒉|𝜽)
𝑝 𝒗, 𝒉 𝜽 =1
𝑍 𝜽exp(−Φ(𝒗, 𝒉, 𝜽))
17
RBMにおける条件付き分布
条件付き分布𝑝(𝒉|𝒗, 𝜽)
𝑝 𝒉 𝒗, 𝜽 =
𝑗
𝑝 ℎ𝑗|𝒗, 𝜽
𝑝 ℎ𝑗 = 1 𝒗, 𝜽 = 𝜎(𝑏𝑗 +
𝑖
𝑤𝑖𝑗𝑣𝑗)
𝜎 𝑥 = 1/(1 + exp(−𝑥)):ロジスティック関数
順伝播型のニューラルネットと類似
対称性から,可視変数𝒗の分布も同様
18
条件付き独立
RBMの学習
条件付独立性を用いてパラメータ微分を計算
1
𝑁
𝜕 ln 𝐿 𝜽
𝜕𝑎𝑖=
𝑛=1
𝑁
𝑣𝑛𝑖 −
𝒗,𝒉
𝑣𝑖𝑝(𝒗, 𝒉|𝜽 )
1
𝑁
𝜕 ln 𝐿 𝜽
𝜕𝑏𝑖=
𝑛=1
𝑁
𝑝(ℎ = 1|𝒗) −
𝒗,𝒉
ℎ𝑗𝑝(𝒗, 𝒉|𝜽 )
1
N
𝜕 ln 𝐿 𝜽
𝜕𝑤𝑖𝑗=
𝑛=1
𝑁
𝑣𝑛𝑖𝑝(ℎ𝑗 = 1|𝒗) −
𝒗,𝒉
𝑣𝑖ℎ𝑗𝑝(𝒗, 𝒉|𝜽 )
19
簡単に計算できる 計算キツイ
ギブスサンプリングⅠ
ある分布 𝑝 𝒙 の上での関数𝑓 𝒙 の期待値を求めたいが,何らかの理由により厳密に求めるのが不可能な場合,サンプリングを用いてこれを近似的に計算できる
分布𝑝 𝒙 に従うサンプルを生成して,そのサンプルにより期待値を求める
ボルツマンマシンでは,ギブスサンプリングを用いることができる.
ここではフワっとした説明になるので詳細は
Bishop(2006), “Pattern Recognition and Machine Learning”などを参照してください
20
ギブスサンプリングⅡ
ユニット𝑖の条件付確率
𝑝 𝑥𝑖 𝒙−𝑖 , 𝜽 =exp 𝑏𝑖 + 𝑗∈𝑁𝑖
𝑤𝑖𝑗𝑥𝑗 𝑥𝑖
1 + exp 𝑏𝑖 + 𝑗∈𝑁𝑖𝑤𝑖𝑗𝑥𝑗 𝑥𝑖
𝑁𝑖:ユニット𝑖と結合を持つユニットの集合
𝒙−𝑖:𝑖番目を除いたユニット
あるユニットの確率分布は隣接するユニットの状態から計算できる
あるユニット𝑥𝑖以外のすべてのユニットの値(正確には𝑥𝑖と結合を持つユニットの値)がわかれば条件付確率を計算することができるので,サンプリングするユニット以外の値を固定してそのユニットに関するサンプリングができる
21
ギブスサンプリングⅢ
p 𝑥𝑖 𝒙−𝑖 , 𝜽 上のサンプルの生成方法1. p 𝑥𝑖 = 1 𝒙−𝑖 , 𝜽 を計算する
2. 区間[0,1]の一様乱数を生成し,これが𝑝 𝑥𝑖 = 1 𝒙−𝑖 , 𝜽 を下回れば0,そうでなければ1をサンプルの値とする
3. この値はp 𝑥𝑖 𝒙−𝑖 , 𝜽 に従う
22
ギブスサンプリングⅣ
ギブスサンプリングの手順
1. 各変数𝑥𝑖をランダムに初期化し𝒙0とする
2. 各成分𝑥𝑖について𝑖 = 1, . . , 𝑁と順番にサンプリングを行う
3. 一巡したらまた𝑖 = 1からこれを行い,繰り返す
t巡目の𝑥𝑖𝑡のサンプリング
𝑝(𝑥𝑖𝑡|𝑥1
𝑡, … , 𝑥𝑖−1𝑡 , 𝑥𝑖+1
𝑡−1, … , 𝑥𝑁𝑡−1)
23
ギブスサンプリングⅤ
十分に繰り返して得られるサンプル𝒙𝑡は高い精度で𝑝 𝒙 を近似できることが知られている
精度を高めるには計算コストが大きくなってしま
実際にはRBMでは,より計算コストの低いコントラスティブダイバージェンス(CD)を用いることができる
24
ブロックサンプリング
ブロックサンプリング RBMの𝒗, 𝒉の条件付独立性を利用する
𝒗, 𝒉を順番に,交互にサンプリングする
1. 𝒗𝟎にランダムな値をセット
2. 𝒗𝟎 → 𝒉𝟎 → 𝒗𝟏 → 𝒉𝟏… → 𝒗𝑻 → 𝒉𝑻
と交互にサンプリング
25
CD
コントラスティブダイバージェンス(CD) ギブスサンプリングの初期化の際にランダムに初期
化するのではなく𝒗𝟎 = 𝒗𝒏と,訓練サンプルの値を用いる
通常のギブスサンプリングと同様にこれをT回繰り返す(Tは小さくて良く,T=1でも良い)
コレだけ
この方式だと対数尤度でなくコントラスティブダイバージェンスを小さくする最適化を行っている 詳細はHinton(2002), ”Training products of
experts by contrastive divergence”を参照
26
CDの実装
CDにいくつかの改良を加えることができる 重み減衰
モメンタム
スパース正則化
27
持続的CD
持続的CD(persistent CD, PCD)
普通のCDでは𝒗𝟎 = 𝒗𝒏とし,𝒗𝟎 → 𝒉𝟎 → 𝒗𝟏とサンプリングしていく
PCDでは𝒗𝟎に前回のパラメータ更新時にサンプリングした𝒗を用いる
PCDは普通のCDの約10倍の効率
28
RBMとAutoencoder
似ている点 どちらもpre-trainingに用いられる
RBMの隠れ層⇔autoencoderの中間層
RBMの隠れ層の条件付き分布𝑝 ℎ𝑗 = 1 𝒗, 𝜽 = 𝜎(𝑏𝑗 + 𝑖𝑤𝑖𝑗𝑣𝑗)は順伝播型ニューラルネットの活性化関数がロジスティック関数であるときの計算と似ている
異なる点
RBMは可視層の状態の分布𝑝 𝒙 𝜽 がデータの生成分布に近くなるように定める
Autoencoderでは入力𝑥と出力 𝑥が直接近くなるようにパラメータを定める
29
その他のユニット
Binary Unit以外のUnit
ガウシアンユニット
二項ユニット
ReLU
連続値を出力にしたい場合があるため
30
ガウシアンベルヌーイRBMⅠ
可視層に連続値をとるガウシアンユニットを用いる
ガウシアンベルヌーイRBMのエネルギー関数
Φ 𝒗, 𝒉, 𝜽 = −
𝑖
𝑣𝑖 − 𝑎𝑖
2𝜎𝑖2 −
𝑗
𝑏𝑗ℎ𝑗 −
𝑖,𝑗
𝑤𝑖𝑗𝑣𝑖ℎ𝑗
𝜎𝑖
𝜎: ガウス分布の標準偏差
31
ガウシアンベルヌーイRBMⅡ
可視変数𝑣𝑖の条件付き分布
𝑝 𝑣𝑖|𝒉 ∝ exp −𝑣𝑖 − 𝑎𝑖 − 𝑗𝑤𝑖𝑗ℎ𝑗
2
2𝜎𝑖2
平均𝑎𝑖 − 𝑗𝑤𝑖𝑗ℎ𝑗 ,分散𝜎𝑖2のガウス分布
𝜎𝑖2は入力の平均を0,分散を1に正規化したう
えで𝜎𝑖2 = 1に固定するのが一般的
隠れ層をガウシアンにすることも理論的には可能だが学習が難しいため一般的でない
32
二項ユニット
二項ユニット(binominal unit) 同一のパラメータを持つ複数の二値ユニットをK個
複製
二項ユニットの状態は複数のユニットの状態の和で表される
期待値 Kp
分散 Kp(1-p)
ここでpは条件付確率
𝑝 𝑣𝑗 = 1 𝒉, 𝜽 = 𝜎(𝑏𝑗 +
𝑖
𝑤𝑖𝑗ℎ𝑗)
33
ReLU (Rectified Linear Unit)
二値ユニットの∞個の複製を考える
ただし,各ユニットのバイアスにはオフセット-0.5,-1.5,-2.5…をそれぞれ加える
ReLUの状態はこのユニットの合計値
ReLUの状態の期待値
𝑖
∞
𝜎 𝑥 − 𝑖 + 0.5 ≈ ln(1 + 𝑒𝑥)
正規化線形関数で近似
max(0, 𝑥 + 𝑁(0, 𝜎(𝑥))) 整数値を取るという制約は緩める
ノイズ付ReLUと呼ぶ
34
soft plus関数これを微分するとlogistic関数となる
ReLU (Rectified Linear Unit)
赤: 𝑖 𝜎(𝑥 − 𝑖 + 0.5)
青: log(1+exp(x))
緑: max(0,x+N(0,σ(x))
35
Nair, V., & Hinton, G. E. (2010).
Rectified Linear Units Improve
Restricted Boltzmann Machines.より
Deep Belief Network(DBN)
deep learningの火付け役となったモデル [Hinton et al. 2006. A Fast Learning
Algorithm for Deep Belief Nets]
最上位層のみ無向エッジでほかはすべて有効エッジ
下位層から順にRBMで学習(pre-
training)
学習した値を初期値に順伝播型のニューラルネットとして学習(fine-
tuning)
このとき,最上位に出力層を追加する(その重みはランダムに初期化)
36
Deep Boltzmann Machine(DBM)
層間が無向エッジで結ばれた構造
隠れユニット間に相互結合があるのでRBMのように簡単に計算ができない
平均場近似(隠れ層どうしの独立性を仮定して近似)で最適化を行う
38
Deep Boltzmann Machine(DBM)
DBMも順伝播型ネットワークに転換できる
そのとき,DBNの最上位層も入力として加えるという拡張を行うことができる
39Salakhutdinov, R., & Hinton, G. (2009).
Deep Boltzmann Machines より
Reference
Bishop(2006), “Pattern Recognition and Machine Learning”
Hinton(2002), ”Training products of experts by contrastive
divergence”
Nair, V., & Hinton, G. E. (2010). ”Rectified Linear Units Improve
Restricted Boltzmann Machines”
Salakhutdinov, R., & Hinton, G. (2009). “Deep Boltzmann
Machines”
Hinton et al. (2006). “A Fast Learning Algorithm for Deep Belief
Nets”
岡谷貴之(2015) “深層学習”
“RBMから考えるDeep Learning ~黒魔術を添えて~”
http://qiita.com/t_Signull/items/f776aecb4909b7c5c116
“Deep Learning Tutorial” http://deeplearning.net/tutorial/
40