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

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

* 重要と思った部分だけ独断で抽出しています.
* 本当にメモ書き程度なので本を読まずにいきなりこれを読んでもわからないかもです.すみません.
* 間違っている記述があるかもしれません.
* 心眼で書いている部分があるかもです.
* Bishop本の9章,10章をだいたい読んでおくことをオススメします.

## 19 Approximate inference

事後確率$p(h|v)$の計算はモデルが複雑になってくると解析的に行うことは不可能. でもどうにかしたいというのがこの章. ($h$は潜在変数,$ v$は観測変数)

### 19.1 Inference as Optimization 

* モデルエビデンスである$\log p(v;\theta)$を直接,最大化することは実際無理.
* よってEvidence Lower Bound(ELBO)を大きくすることにする.　ELBOは以下で定義される.
$L(v,\theta,q) = \log p(v,\theta) - D_{KL}(q(h|v)||p(h|v;\theta))$
* $q(h|v)$(しばしば$q(h)$と省略される)とposterior $p(h|v;\theta)$が一致するときELBOがモデルエビデンスと等しくなることに注意.
* 計算すると
$L(v,\theta,q)=E_{h\sim q}[\log p(h,v)]+H(q)$
となる. 
* $q$をどのように制限するかが重要

### 19.2 Expectation Maximization

* 以下を繰り返すのがEM algorithmである.
   * E step: $q(h|v)=p(h|v;\theta_{old})$求める
   * M step: 上の事後確率に基づいてELBOを計算してそれを最大化するように$\theta$を更新
* 確率的勾配法も一種のEM algorithmとみなすことができる.

### 19.3 MAP Inference and Sparse Coding 

* MAP inferenceは変分推論の枠組みで見ることができる.実際に$q$をDirac分布の形にすればELBOの最大化はMAP inferenceと同義になる.
* その場合,EM algorithmと同様にしてhの推定と$\theta$のupdateを交互に行う.
* 13章でやったSparse Codingの最適化もこの文脈で行うことができる.
* 具体的には$p(h)$にlaplace分布をpriorと仮定して,尤度として$p(x|h)=N(x;Wh+b,\beta I)$を仮定する. そして$h$の推定と$W$のupdateを交互に行っていく.

### 19.4 Variational Inference and Learning

* EM algorithmはパラメータ$\theta $と潜在変数$h$を分けて取り扱ってる点で不自然.どっちとも隠れ変数である.(Bishop本ではhみたいにデータ集合のサイズによって数が増えるものをintensive variable,　$\theta$みたいにデータ集合のサイズによって変わらないものをextensive variableとよんでいる)
* そこで$q(h|v)$としてfactorial distributionを仮定する
* 利点として$q$のfactorial以外の点で分布を制限する必要ないことがある.
* ELBOを見直すとKL divergenceの項において$p$と$q$が逆でもいいのではないかという疑問が生じる.状況によってどっちがいいかは違う. 
* 今回の場合は計算上の理由で$D_{KL}(q(h|v)||p(h|v;\theta))$の方が好ましい.

#### 19.4.1 Discrete Latent Vairables

#### 19.4.2 Calculus of Variations 

* 変分法の例としてエントロピーを最大にする平均$\mu$,分散$\sigma^{2}$の分布を求める. 実際に計算してみるとGaussianになる.
* 変分法は決して万能ではない. 例えば逆に上の例でエントロピーを最小にする関数を考えて見る. 答えはDirac分布になるが普通の変分法で求めることはできない. このように超関数が最適解である場合とかはうまく求めることができないので解を推測してそのあと実際に証明するという流れになる.

#### 19.4.3 Continuous Latent Variables

* $q(h|v)= \prod_{i} q(h_{i}|v)$としたとき変分法より次の式でだんだんupdateしていく.
$\bar{q}(h_{i}|v)=\exp (E_{h_{-i}\sim q(h_{-i}|v)}\log \bar{p}(v,h))$
* priorと尤度をGaussianと仮定して上を適用したときposteriorの近似分布$q$がGaussianになるというおきまりの例が書かれている.
* このとき$q$がGaussianであることを仮定していなかったことに注意.(qの仮定はただfactorialというだけ)

#### 19.4.4 Interactions between Learning and Inference

* 近似的なアルゴリズムなので$q$の形に事後確率が相当依存することに注意.
* 本当に変分推論がうまくいっているか知るためにはELBOがモデルエビデンスと十分近いことを確認する必要がある.
* 変分推論が実際にうまくいくかはなかなか難しいところもある.

### 19.5 Learned Approximate Inference

* 今までのやり方は推論を最適化として求めていた.(ELBOをだんだんあげていくように$q$を更新)しかし計算コストがかなり高い.そこで"Learning"によって代用する. 
* 言い換えると今までは$v$という潜在変数のinputに対して$L(v,q)$を最大化するような$q$へ写像していたと言える.　これをNeural Networkで置き換えようというのがモチベーションである.

#### 19.5.1 Wake-Sleep
* 先ほどいったように推論モデル$q(h|v)$としてNeural Networkをもってくる.
* hからvのDirected modelがあると仮定する. それに対して$v$から$h$へのinference networkを持ってくる.
* Wake phase: 経験分布$v$と$q(h|v)$からサンプリングされた$h$に基づいてgenerative model $p(h,v)$に対して最尤推定を行いparameterをupdateする.(hをsamplingすることで$p(v)=\sum p(v|h)$というモデルエビデンスの計算を防いでいる)
* Sleep phase: ancestral samplingを用いて$h,v$をサンプリングしてinference networkに対して最尤推定を行いparameterをupdateする.
* 要約するとinference model(Wake phase時)とgenerative model(Sleep phase時)を交互に更新していると言える.
* ここはBengioさんの
http://arxiv.org/pdf/1406.2751v4.pdf
を読んだほうがわかりやすいかも.

#### 19.5.2 Other Forms of Learned Inference

* このように推論モデルにNeural Netoworkを持ってきたものはかなり一般的になってる.(VAEなど)

## 参考文献
http://www.deeplearningbook.org/