Posted at

Goodfellow,Bengio,CourvilleさんのDeep Learning本の17章まとめ

More than 3 years have passed since last update.


Goodfellow,Bengio,CourvilleさんのDeep Learning本の17章のまとめ


  • 重要と思った部分だけ独断で抽出しています.

  • 本当にメモ書き程度なので本を読まずにいきなりこれを読んでもわからない可能性がかなりあります.すみません.

  • 間違っている記述があるかもしれません.

  • 心眼で書いている部分があるかもです.


17 Monte Calro Methods


17.1 Sampling and Monte Calro Methods


17.1.1 Why sampling?


17.1.2 Basics of Monte Carlo Sampling


17.1.3 Importance sampling


  • $Var(\bar{s_q})=Var[\frac{p(x)f(x)}{q(x)}]/n$となる.($s_q$はimportance sampling estimator)

  • importance samplingにおいて推定量の分散は提案分布の影響を相当受ける

  • 直感的な解釈としてq(x)がp(x)f(x)に対して大きいときいらないsample(重み小さい)として,q(x)がp(x)f(x)に対して小さいときいるsample(重み大きい)とする.

  • 提案分布が規格化されているときの推定量は不偏推定量

  • 提案分布が規格化されていないときの推定量は漸近的に不偏推定量

  • 高次元だと良い提案分布の選び方が難しいがdeep learningでも有用な時ある


17.2 Markov Chain Monte Carlo Methods


  • モデルがどの状態でも確率が0にならないときに有効. つまりenergy-based model $p(x)\sim exp(-E(x))$に対して有効 (たいていの分布がこの形になることに注意)

  • RBMのsamplingは普通にやると難しい.なぜならgraphはdirectedであったりacyclicalであるから. graphが方向づけされていたらancestral samplingすればいいのだがそういうわけにはいかない. そこでMCMC.(MCMCの一種としてGibbs samplingがある)

  • 普通にMCMCすると相関が高いためn回に1回採用とかにすることもある.しかし今度は計算量が多くなる.つまり計算コストと独立のサンプルを取ってくることのトレードオフがある.

  • mixing time(収束するまでの時間)がわからない.あるけど手法がheuristic.


17.3 Gibbs Sampling


  • RBMでは有用. 実際,RBMにおいてvisible unitsはhidden unitsが与えられたときに条件付き独立であるため一気にGibbs samplingでupdateできる.


  • undirected modelではGibbs samlingは定番手法



17.4 The Challenge of Mixing between Separated Models


  • MCMCの欠点としてうまくmixしてくれないことがある. つまり本当は独立なサンプルが作られていろんなとこ行ってほしいけどなかなかそうはいかない.

  • 実際に山が何個かあったときなかなか移ることはない. (high energyによるbarrierという解釈も)

  • ジレンマの存在: $P_{model}(h|x)$という事後確率からsamplingしたいことあるけど早くmixしてほしいから事後確率はhigh entropyであってほしい. 一方で特徴量抽出の観点からhとxの相互情報量は大きくなってほしい.このことは対立している. ($I(h,x)=H(h)-H(h|x)$に注意)

  • クラス分類とかのsituationとかから想像できるようクラスごとに山みたいなのがあってそのような分布から上手くsamplingすることは難しい.


17.4.1 Tempering to Mix between Models


  • $p(x)\sim exp(-\beta E(x))$ とする. 本当は$\beta=1$のときからsampingしたいが$\beta<1$とすることで少し下駄を履かせる.


17.4.2 Depth May Help Mixing


  • 先ほどにも書かれていた通り$h$をよくencodeしたい(つまり相互情報量を大きくしたい)がそうすると$P(x|h)$と$P(h|x)$のエントロピーが下がって上手くmixしなくなる.

  • そこで$H(h)$をあげることにする. hの分布が均一なようにする.
    ($I(h,x)=H(h)-H(h|x)$に注意)

  • そのためにはdeepに構造をする必要がある.


参考文献

http://www.deeplearningbook.org/