[論文解説] CVAE: Semi-supervised Learning with Deep Generative Models


以下の論文の解説(まとめ)になります．

[Semi-supervised Learning with Deep Generative Models](https://arxiv.org/abs/1406.5298)

この論文はDeep MindのKingmaさん([VAE](https://arxiv.org/abs/1312.6114)の著者)によるもので，NIPS 2014に採択されています．なお，この論文の**M2**の生成モデルは，Conditional VAEと呼ばれるモデルの一種になります．

記事中の図は，特に記載がない限りすべて論文からの引用です．
記事内容に不備がございましたら，ご指摘頂けると助かります．



## 概要

この論文は，**確率的生成モデルを用いた半教師あり学習の手法**と，**変分推論を用いた学習アルゴリズム**を提案しています．

検証実験により，

- MNISTの半教師ありクラス分類問題で既存の手法の精度を上回ること
- 入力画像から**クラス**と筆跡などの**画風**をそれぞれ独立に潜在表現できること

を示しました．特に後者は，確率モデルによって条件付き生成モデルが実現できることを示しており，GQNなどにも応用されています．

以下では，提案する確率的生成モデルとその学習アルゴリズムに関して，順に説明していきます．



## 確率的生成モデル

この論文では，以下のような半教師ありのクラス分類問題を考えています．

データは，$({\bf X}, {\bf Y}) = \{(x_1, y_1), ..., (x_N, y_N)\}$と表され，$x_i \in \rm R^D$，$y_i \in \{1, ..., L\}$です．各データは対応する潜在表現$z_i$を持っていると考えます．クラスラベル$y_i$は観測されたり観測されなかったりするので，ラベル付きのデータ分布を$\tilde p_l (x, y)$，ラベルなしのデータ分布を$\tilde p_u (x)$と表すことにします．



### 通常のVAE(M1)

クラス分類問題のシンプルなアプローチとして，まず入力データ$x$をより低次元の潜在表現$z$に変換して，その潜在表現を用いて別の分類器を学習することが考えられます．この手法ではラベルなしデータも含めて，潜在表現をクラス間で近い表現を持つように学習します．これにより，その後の(ラベル付きデータのみでの)分類器の学習が行いやすくなることが期待されます．

具体的な確率モデルは，

~~~math
\begin{align}
p(z) &= {\rm N}(z|0, {\rm I}) \\
p_\theta (x|z) &= f(x; z, \theta)
\end{align}
~~~

で表されます．$f(x;z,\theta)$はニューラルネットによって関数近似された尤度で，ベルヌーイ分布$p_\theta (x|z) = {\rm Bernoulli(x|\mu(z))}$などが用いられます．ただし，$\mu(\cdot)$はニューラルネットワークを表します．

事前分布$p(z)$と尤度$p_\theta(x|z)$が与えられたら，潜在表現に関する事後分布$p(z|x)$を考えることができます．クラス分類の際には，事後分布からのサンプルを用いてクラス分類を行うことで，前述のメリットを持つ分類を行うことができます．ただし，事後分布を解析的に求めることはできないので，次章で説明する変分推論の枠組みを用いて近似を行います．($\to $VAE)



### Conditional VAE(M2)

**M1**のモデルではデータの生成は潜在表現$z$にのみ依存していたのに対し，この論文では，データの生成が潜在表現$z$だけでなく，クラスラベル$y$にも依存するような確率モデルを提案しています．

~~~math
\begin{align}
p(y) &= {\rm Cat}(y|\pi) \\
p(z) &= {\rm N}(z|0, {\bf I}) \\
p_\theta(x|y,z) &= f(x;y,z,\theta)
\end{align}
~~~

ただし，${\rm Cat}(\cdot)$はカテゴリカル分布を表し，ラベルなしのデータでは$y$も潜在変数として扱われます．先ほどと同様に，尤度にはベルヌーイ分布$p_\theta(x|y,z)={\rm Bernoulli}(x|\mu(z, y))$などが用いられます．

このモデルでは$y$の事後分布$p_\theta(y|x)$を考えることができるので，クラス分類問題はこの事後分布からのサンプルとして行われます．($\to$Conditional VAE​)



### Stacked(M1+M2)

上記の**M1**と**M2**を合わせて利用することも考えられます．

まず，**M1**を用いて学習を行い，潜在表現$z_1$を求めます．次に，**M2**を用いた学習を$x$の代わりに$z_1$を用いて行います．得られる生成分布(尤度)は，$p_\theta(x,y,z_1,z_2) = p(y)p(z_2)p_\theta(z_1|y,z_2)p_\theta(x|z_1)$となります．



## 学習アルゴリズム

上記の確率モデルでは，事後分布は解析的に計算できないという問題がありました．そこで，最近よく利用されている変分推論の枠組みを用います．

### **M1**

まず，事後分布を以下のように関数近似します．

~~~math
q_\phi(z|x) = {\rm N}(z|\mu_\phi(x), {\rm diag}(\sigma_\phi^2(x)))
~~~

となります．(よくみるVAEのreparameterization trickです．)

次に，データ$x$の周辺対数尤度$\log p_\theta(x)$の変分下限を，以下のように求めます．

~~~math
\log p_\theta(x) \ge {\rm E}_{q_\phi(z|x)}[\log p_\theta(x|z)] - {\rm KL}[q_\theta(z|x)||p_\theta(z)] = - {J}(x)
~~~

学習の目的関数として変分下限の最大化，すなわち，Loss関数$J(x)$の最小化を行うことで，生成モデルを学習することができます(VAE)．全データで生成モデルを学習し，得られた事後分布$q_\theta(z|x)$とラベル付きデータのみを用いてクラス分類を行うことで，半教師ありクラス分類を行います．



### **M2**

まず，事後分布を以下のように関数近似します．

~~~math
q_\phi(z|y,x) = {\rm N}(z|\mu_\phi(y,x), {\rm diag}(\sigma_\phi^2(x))) \\q_\phi(y|x) = {\rm Cat}(y|\pi_\phi(x))
~~~


となります．

次に，周辺対数尤度の変分下限を求めるのですが，**M2**のモデルの場合，ラベル付きとラベルなしの場合の2パターンの最適化を考える必要があります．ただし，$H(\cdot)$はエントロピーを表します．

- ラベル付きデータの場合

~~~math
\log p_\theta(x,y) \ge {\rm E}_{q_\phi(z|y,x)}[\log p_\theta(x|y,z) + \log p_\theta(y) + \log p(z) - \log q_\phi(z|y,x)] = -L(x,y)
~~~

- ラベルなしデータの場合

~~~math
\begin{align}
\log p_\theta(x) &\ge {\rm E}_{q_\phi(y,z|x)}[\log p_\theta(x|y,z) + \log p_\theta(y) + \log p(z) - \log q_\phi(y,z|x)] \\
&= \sum_y q_\phi (y|x)(-L(x,y)) + H(q_\phi (y|x)) = -U(x)
\end{align}
~~~

まとめると，データ全体の周辺対数尤度の変分下限を正負反転したものは以下のようになります．

~~~math
J = \sum_{(x,y)\sim \tilde p_l} L(x,y) + \sum_{x\sim \tilde p_u} U(x)
~~~

ラベルのないデータに対して，$y$の事後分布$q_\phi(y|x)$を用いることでクラス分類を行うことができます．しかし，Loss関数$J$の事後分布に関する項は，ラベルのなしデータの場合にしか存在しません．ラベル付きデータに関して逆伝搬を行わないのは，クラス分類を行う上で不適切だと考えられます．そこで，ラベル付きデータに関してはクラス分類のLossを加えることで，この問題に対処します．

~~~math
J^\alpha = J + \alpha {\rm E}_{\tilde p_l(x,y)}[- \log q_\phi(y|x)]
~~~

これが，最終的なLoss関数となります．なお，論文中ではすべて$\alpha = 0.1 \times N$を用いています．



## 検証実験

![スクリーンショット 2019-10-03 15.57.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/248552/98e381d2-36f9-7cb0-d45f-0231fbe0a11f.png)

半教師ありクラス分類ベンチマークに関する検証結果は，ここでは省略させていただきます．簡単にだけまとめると，MNISTの半教師ありクラス分類で，学習データ50000枚のうち，ラベルの数を100〜5000として学習させたとき，**M1+M2**モデルでは平均で精度96%まで出るそうです．

またこの論文では，学習済みの生成モデルに関して検証実験を2つ行なっています．

- 検証1

    図上段では，クラスラベルを$2, 3, 4$に固定して潜在表現を変化させたときの生成画像を示しています．このとき，各クラスラベルの画像群では，同じ潜在表現を用いています．

    結果を見ると，クラスラベルによって生成される数字を決定し，潜在表現に応じた画風の画像を生成していることが読み取れます．このことから，提案した確率的生成モデルでは，画像の**クラス**と **画風**をそれぞれ分離して潜在表現できていることがわかります．

  

- 検証2

    図下段では，MNISTやSVHNのテスト画像の潜在表現を用いて，クラスラベル$y$のみを変化させたときの生成画像を示しています．

    結果を見ると，検証1と同様に，画像の**クラス**と **画風**をそれぞれ分離して潜在表現できていることが読み取れます．



これらの結果から，提案した確率的生成モデルを用いることで

- MNISTの半教師ありクラス分類問題で，既存の手法の上回る精度を出せること
- 入力画像から**クラス**と筆跡などの**画風**をそれぞれ独立に潜在表現できること

が示されました．



## 結論

この論文では，確率的生成モデルを用いた半教師あり学習の手法とその学習アルゴリズムを提案しました．

この論文の新規性・有用性としては

- 確率モデルを用いることで，新たな半教師あり学習の枠組みを定義したこと
- 入力画像から，**クラス**と**画風**をそれぞれ独立に潜在表現できる手法を提案したこと

が挙げられます．

また議論としては

- この論文では，Denseなネットワークのみを用いているので，CNNなどを用いたスパースなネットワークでも検証する必要があること
- ラベルなしデータの変分下限を求める際に$\sum_y q_\phi(y|x)(-L(x,y))$の部分で，クラス数の数だけ変分下限を計算する必要があるので，計算量がクラス数の増加に伴って増大してしまうこと．すなわち，計算量が非常に大きいこと

が挙げられます．