Learning Disentangled Joint Continuous and Discrete Representationsのメモ

# CVAEにおける離散的ではない連続的な条件の学習

# abstract
- 教師なしの、解きほぐされ、解釈可能な共同連続および離散表現を学習するためのフレームワークを紹介
- 変動オートエンコーダの連続潜在分布を緩和された離散分布で補強
- 各潜在ユニットでエンコードされる情報の量を制御することにより、変動の連続およびカテゴリ要因をデータから自動的に検出する方法を示す
- 実験結果より、フレームワークがさまざまなデータセットの連続および離散生成因子を解きほぐし、離散生成因子が顕著である場合、現在の解きほぐし方法よりも優れていることを示している

# Disentangled(解きほぐし)な表現とは
- 潜在空間内の各次元が観測データ中の因子や性質ごとに分かれているような状態のこと
    - 画像認識の「色」「形」「大きさ」のようなもの
- 特徴としては、一つの次元の特徴を変えても他の要素が同時に変化することがない
- すなわち、観測データの情報が解釈可能で低次元な潜在空間に圧縮された表現

参考にしたサイトは[こちら](https://tech.preferred.jp/ja/blog/disentangled-represetation/)

# 1. Introduction
- 画像データの個別のオブジェクトや属性は離散変数で表される
- その一方で、位置やスケールといった情報は連続変数で表される
- disentangled representations(以下DR)の恩恵を受けているものとしては
    - 転移学習
    - zero-shot学習
    - 強化学習
    - 視覚的概念の学習
- DRはデータの変動によって変わるため、表現学習と違い解釈が可能
- InfoGANやβ-VAEといったフレームワークはDRに有効であることが示されている
- InfoGANは離散、連続的表現の両方に対応
    - ただし不安定
- β-VAEは訓練が安定
    - ただし連続的表現のみに対応
- この論文では、離散及び連続的表現を学習するVAEを提案
- 学習の安定性や、多様性、モデルの柔軟性が優れている

# 2. Analysis of β-VAE
## β-VAE
- β-VAEはデータ$x$と潜在変数$z$の結合分布をモデル化して、以下の式を最大化する
![](https://cdn.mathpix.com/snip/images/_Rs-WXQb0qAWdNnwtLaiDddLos1HKs8uVvRZkAJbaCc.original.fullsize.png)
- ここで、Encoder部は尤度項Eq
- $\beta D_{KL}$は潜在変数zの分布が事前分布p(z)とのKLダイバージェンス
- 通常のVAEと比べてKLlossの計算にβという定数値がかかっているのが特徴
- $\beta =1$の時通常のVAEに相当

## KL項の役割
- 学習時にはKLダイバージェンスの項は入力データxに対して最適化される?
![](https://cdn.mathpix.com/snip/images/Wiiz6Z40eYf3u2mewfeOh43E9I65qzjmmx00Mw7jI10.original.fullsize.png)

- すなわち、KL項を期待値として解釈すると、潜在変数と元のデータとの上界となる。
- 従って、KL項のミニバッチ推定はzがxについて送信できる情報の上限の推定に等しい

## CCI-VAE
- β-VAEはβをでかくすると、その分zがxの情報を落としてしまう問題が存在
![](https://cdn.mathpix.com/snip/images/LrWfOs2oyanMvGTvJBoFMvDVGWjXhbHBux-IKN3d8YM.original.fullsize.png)

- $\gamma (\beta)$を大きくするときに$C$を大きくしていくことで、モデルがエンコードできる情報の量を制御することができる
- $C$はエポックごとに単純に線形に増加
- ただし、情報が減るため、reconstruction lossが増える

# 3. JointVAE Model
- 連続と離散の同時分布をモデル化できるようにするβ-VAEの変更を提案
- zが連続潜在変数を示して、cが離散潜在変数を示すとするとβ-VAEはこのように表される
![](https://cdn.mathpix.com/snip/images/jEELNGDosJ2f7UiPEOgkjP8_sIKo7P-9prHXmovYBKQ.original.fullsize.png)
- ここで、KL項のzとcが独立であると仮定すると、
![](https://cdn.mathpix.com/snip/images/GrQHoz10GqXIPoXI-EG636buzKvNslMXKQ91-vcTxBg.original.fullsize.png)
となる
- なので最終的なLossの式は
![](https://cdn.mathpix.com/snip/images/sqKctm8DWoTZEw8GDHpINil-nmgo56kDCDJK0aT-4GA.original.fullsize.png)
となる
- CCI-VAEの実装に則ると、
![](https://cdn.mathpix.com/snip/images/B_kum1CErtAZW1i0dhfoiQnUuL17WmDM8ytK0EcuMf0.original.fullsize.png)

## 3.1. 連続潜在変数zのパラメータ化
$$
q_{\phi}\left(\mathbf{z} \mid \mathbf{x}\right) = \prod_{i} q_{\phi}\left(z_{i} \mid \mathbf{x}\right)
$$
- 事前分布は標準ガウス分布で仮定
- また、$q_{\phi}\left(z_{i} \mid \mathbf{x}\right)=\mathcal{N}\left(\mu_{i}, \sigma_{i}^{2}\right)$となり、NNでパラメータ化される

## 3.2. 離散潜在変数cのパラメータ化
- 学習のために、$q_{\phi}(\mathbf{c} \mid \mathbf{x})$は微分可能である必要がある
- しかし、カテゴリ分布では、パラメータ化することができない
- そのため、ガンベル行列に基づく離散確率変数の微分可能な緩和を提案
$$
y_{k}=\frac{\exp \left(\left(\log \alpha_{k}+g_{k}\right) / \tau\right)}{\sum_{i} \exp \left(\left(\log \alpha_{i}+g_{i}\right) / \tau\right)}
$$
- カテゴリ分布の連続近似からサンプリングしてonehotに変換?
- パラメータ化すると
$$
q_{\phi}\left(\mathbf{c} \mid \mathbf{x}\right) = \prod_{i} q_{\phi}\left(c_{i} \mid \mathbf{x}\right)
$$
このとき、$q_{\phi}\left(c_{i} \mid \mathbf{x}\right) =g\left(\boldsymbol{\alpha}^{(i)}\right)$に従う。
- $g\left(\boldsymbol{\alpha}^{(i)}\right)$はガンベルソフトマックス分布

## 3.3. アーキテクスチャ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598584/c219a12c-1524-1047-375d-7473ad02c873.png)

潜在変数を分けて導出し、それぞれを合体させて一つの潜在変数とするような形

## 3.4. ハイパーパラメータ
![](https://cdn.mathpix.com/snip/images/B_kum1CErtAZW1i0dhfoiQnUuL17WmDM8ytK0EcuMf0.original.fullsize.png)
の式より損失は$\gamma, C_c, C_z$に依存するため重要なハイパーパラメータ

# 4. Experiments

## 4.1.1 MNIST
- 10個の連続潜在変数と1個の離散潜在変数を使用して訓練

### (a)角度 (b)濃さ (c)数字 (d)太さを変化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598584/ae79dcb3-9f11-1015-cf5e-b8e47b197fd4.png)
それぞれしっかりと変化している

### 他の手法との比較
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598584/a1933e07-8bf8-6fa3-b183-1580f59baa3b.png)

JointVAEは他の手法と比べて潜在空間に連続的な太さや角度といった情報を解きほぐして(disentangled)いる状態になっている。(情報が分離できている)

### 離散潜在変数の変化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598584/0f7fbcd0-ea81-e8d3-c641-79f4ed59c81d.png)

(a):数字を条件として生成
一部似ている特徴(5と8のような)は解きほぐせていないが、ほぼ解きほぐせていること(disentangledな状態)がわかる

(b):ファッションタイプを条件として生成
要素が明確でないため数字ほど解きほぐせてはいないがある程度解きほぐせている


(c):FashionMNISTの潜在変数
シャツの色や、踵の長さなどの特徴量が解きほぐされていることがわかる。

## 4.1.2 CelebA
MNISTとほぼ同様の内容のため省略

## 4.1.3 dSprite
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598584/f37daf48-f075-5240-7667-7528290c2093.png)

- 現在の最優とも言える方法と近いスコアが出た

## 4.2 

- CzとCcが増加すると変動要素をエンコードする
- MNISTの場合、最初に数字が検出されて続いて角度、幅が続く
- KL項がほぼゼロのような要素は出力に影響を与えないことを確認

## 4.3

- ラベルとして、角度のような情報がデータが与えられていなくても、学習、推論することができる

## 4.4

- 数字のようなわかりやすい要素はともかく、衣類のようなわかりにくい要素は解きほぐしに失敗することがある

# 5. conclusion

- jointVAEを提案
- 離散と連続両方の潜在変数が学習できる

## 今後の展望
- FactorVAEやβ-TCVAEと組み合わせること
- 他の分布の使用の検討

# まとめ
- 連続的な特徴量を学習したいならFactor-VAEで良さそう
- まだまだわからないことが多いので間違えがあったら指摘をお願いします。