「潜在変数」（z）を多変量正規分布に近づけるβ-VAEモデルはなぜ、データが持つ特徴のもつれを解く（disentangle）ことができるのか？

__変分オートエンコーダ（β-VAE）モデルはどうやって、入力データが持つ「独立」した特徴属性を、潜在空間の各座標軸に表現しているのでしょうか？__

__変分オートエンコーダ（*Variational AutoEncoder*）__モデルや、__*β-VAE*__モデルをわかりやすく解説した記事は、すでにたくさんあります。そうした記事は、主に以下の２つの点に焦点を絞っているように見受けられます。

1. 変分下限を最大化させる問題に帰着させる数式の導出過程
2. 多変量正規分布が持つ確率変数（$mu$と$σ$）を、__AEモデル__の学習則であるBP（*Back Propagation*）法で誤差逆伝播させる実装方法 （__*Reparameterization Trick*__）

多くの記事は、これら２つの重要ポイントについて、わかりやすく論じてくれているのですが、この記事の表題に掲げた、次の素朴な質問には、スルーしてしまっていて、正面きって説明してくれていないような印象を受けます。

###（素朴な疑問）

- 「潜在変数」(z)を、__係数$β$を大きくすることで、多変量正規分布に近づける__と、__どうして、潜在空間の各次元は、データが持つ「独立した」特徴が写像される「意味軸」に育つ__のか？

数理統計学を十分に学習済みの方は、__多変量正規分布__は、__各次元軸どうしが互いに相関を持たない確率分布であるのだから__、当然そうなるよね、とすぐに理解することができます。

しかし、多くの解説書や解説ウェブサイトでは、__「係数$β$を大きくすることで、多変量正規分布に近づける。よって、潜在空間の各次元には、入力データが持つ、互いに独立した特徴が写像（表現）される」__と、あまりにもさらっと説明を終えてしまうものが多いため、こうした__「素朴な疑問」__に対する答えを求めている方も少なからず、いるのではないでしょうか。

__この記事は、そんな「素朴な疑問」・「モヤモヤ」に答えてみたいと思います。__

___

##（ 事実認識 ）

*β-VAE*モデルが生成する__潜在ベクトル空間の各次元軸上__には、__入力データから抽出した（互いに独立・自立した）属性の定量評価値__が、数値の大小で表現されます。まずはその様子を、確認するところから始めたいと思います。

__（ 以下、*β-VAE*モデルの提案論文より転載 ）__

- [Irina Higgins et.al., β-VAE: LEARNING BASIC VISUAL CONCEPTS WITH A CONSTRAINED VARIATIONAL FRAMEWORK, ICLR 2017](https://openreview.net/pdf?id=Sy2fzU9gl)

__【 確認ポイント 】__

- __潜在ベクトル空間の各次元軸上の数値は、「ある次元軸」上の数値の大きさがなんであるのかは、「別の次元軸」上の数値の大きさがいくつであるのかということとは、まったく無関係に決定される。__

- __*β-VAE*モデルが、「ある人物の顔画像データ」から抽出（推定）する「肌の色合い」の属性値は、同じ*β-VAE*モデルが、「同じ画像データ」から抽出（推定）する「年齢の高低・ジェンダー区分」属性値や、「画像の輪郭の明瞭度合の強弱」属性値とはなんの関係もなしに、完全に独立して（孤立して）推定される。__

（１） 以下は、__[*CelebA*データセット](http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html)__に*β-VAE*モデルを適用させた結果です。

![スクリーンショット 2021-01-09 22.24.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/99db5d11-38c5-a835-5523-02edccbf3a59.png)

（2） 以下は、__[*chairs*データセット](https://github.com/mathieuaubry/seeing3Dchairs)__に*β-VAE*モデルを適用させた結果です。

![スクリーンショット 2021-01-09 22.26.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/381c7a2c-9d08-96e3-6f9b-12f89b3da2e5.png)

次に示す図（__*Figure 7*__）の1行目（最上段）には、潜在空間の各次元（$z_{1}$, $z_{2}$など）軸上の潜在変数の頻度分布グラフ（確率密度無能）が掲載されています。入力データが（*Encoder*によって）潜在空間に写像されるときに、写像先として、潜在空間の各次元軸のどの数値区間が選ばれているのかを示しています。

下の段にある背景が黒色の図は、潜在変数の各次元軸上の異なる数値を（*Decoder*に）入力したとき、*Decoder*によって再構成された（入力データの再現）画像が示されています。この図から、潜在空間の各次元軸上を移動（*traverse*）したとき、再現される画像がどう変容していくのかを眺めることで、各次元軸上に（入力データが持つ）どの特徴因子が埋め込まれている（写像されている）のかを確かめることができます。


![スクリーンショット 2021-01-10 18.32.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/1dd7b7bf-d96a-dbf1-4c6d-27413b455ecb.png)

この図では、比較のために、[ふつうの*VAE*モデル（*β = 1*と置いた場合の*β-VAE*に相当。提案年：2006年。 G. E. Hinton et.al）](http://www.cs.toronto.edu/~hinton/science.pdf)と、__[*DC-IGN*モデル（提案年：2015年。 Tejas et.al）](https://arxiv.org/pdf/1503.03167.pdf)__, __[*InfoGAN*モデル（提案年：2016年。Xi Chen et.al](https://arxiv.org/pdf/1606.03657.pdf)__の潜在ベクトル空間の様子も並べて掲載しています。

なお、__*β-VAE*モデルを提案した論文__は、同モデルが、入力データの中に（互いにもつれあった状態で）内在する複数の特徴属性（特徴因子）を、どれだけ（もつれをほどいて）独立した因子として（潜在空間の次元軸に写像することで）取り出すことができたのかを評価する指標も提案しています。

>__Abstract__
>
>Furthermore, we devise a protocol to quantitatively compare the degree of disentanglement learnt by different models, and show that our approach also significantly outperforms
all baselines quantitatively. 
>
> （　・・・省略・・・　）
>
> __3 DISENTANGLEMENT METRIC__
>
> It is important to be able to quantify the level of disentanglement achieved by different models.
>Designing a metric for this, however, is not straightforward. We begin by defining the properties that we expect a disentangled representation to have. Then we describe our proposed solution for quantifying the presence of such properties in a learnt representation.

![スクリーンショット 2021-01-10 18.27.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/1d286bcb-a39c-c542-bb32-9a40c3b47d60.png)

![スクリーンショット 2021-01-10 18.28.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/4583e517-9e32-1b1f-6386-7ac2f901d5ac.png)

この評価指標については、__*β-VAE*論文のあとに出た後続の論文__で、改良版の指標が複数、提案されています。このあたりについては、以下のスライドがまとめてくれています。（スライドのタイトルは英語ですが、中身は日本語のスライドです）

- [Hideki Tsunashima, Disentanglement Survey:Can You Explain How Much Are Generative models Disentangled?](https://www.slideshare.net/HidekiTsunashima/disentanglement-surveycan-you-explain-how-much-are-generative-models-disentangled)

__それでは、「潜在変数」（z）を多変量正規分布に近づけるβ-VAEモデルはなぜ、上でみたように、入力データが持つ複数の特徴因子（特徴属性）を、それぞれ個別に（特徴因子どうしのもつれあい・絡み合いをうまくほどいた上で）取り出して、潜在空間の各次元軸上に写像させることができるのでしょうか。__

__次の節から、この「カラクリ」を見ていきます。__

___


###1. *β-VAE*： 潜在変数*z*を、平均*0*, 標準偏差*1*の多変量正規分布に押し込む意味を理解する

__*β-VAEモデル*__は、2017年度に公開された論文の中で提案された手法です。この論文は、同年度のICLRに採択されています。

- [Irina Higgins et.al., β-VAE: LEARNING BASIC VISUAL CONCEPTS WITH A CONSTRAINED VARIATIONAL FRAMEWORK, ICLR 2017](https://openreview.net/pdf?id=Sy2fzU9gl)

####なぜ、*Auto Encoder*モデルに確率変数を持ち込む必要があるのか ？

__ところで、__*Auto Encoder*モデル__に、何らかの確率分布に従う確率変数を組み込む必要性は、そもそもなぜあるのでしょうか？__

__*β-VAE*モデルは、「何らかの確率分布」として、「平均値$0$, 分散共分散行列が単位行列$Σ = I$のときの多変量正規分布」を採用します。しかし、そもそも、なぜ「確率分布」を*AE*モデルに持ち込む必要があるのでしょうか。__

__まず最初に、＊AutoEncoder*モデルに確率分布を持ち込む意義をおさえたいと思います。__

__このことを理解した上で、組み込むべき何らかの「確率分布」として、*β-VAE*モデルでは、なぜ、「平均値$0$, 分散共分散行列が単位行列$Σ = I$のときの多変量正規分布」が選ばれるのか、の説明に進んでいきます。__

###【 正規項を持たないふつうの*AutoEncoder* 】

- 「あるデータA」が*Encoder*に入力されたとき、そのデータの特徴を表現する潜在変数$z$が、__決定論的に「ある１つの座標値」に__写像されてしまう。
- 「ある１つの座標値」から、潜在空間の各次元軸上で、ほんの少し離れた座標位置には、「あるデータA」を含めて、__どの「学習済みの入力データ」の特徴を表現する特徴ベクトルも写像されない、空白地帯が発生してしまう__確率が高い。
- __潜在空間__は__離散空間になる。__
- モデルの推論段階で、『「あるデータA」に、ある特徴が似ているが、少し見た目の異なる別の「データB」』がモデルに入力されたとき、__そのデータの特徴を表現する潜在ベクトルが、潜在空間の中の「空白地帯」に写像された場合、*Decoder*から「そのデータをうまく復元したデコーダ画像」を生成することができない。__

###【 係数*β*の強さで、潜在変数を多変量正規分布に近づける*β-AutoEncoder* 】

- 「あるデータA」が*Encoder*に入力されたとき、そのデータの特徴を表現する潜在変数$z$は、__「ある１つの平均値」を中心として、（潜在空間の各次元軸上で）「標準偏差$1$」だけ離れた場所に写像__される。どの座標位置に写像されるのかは、多変量標準正規分布（$μ, σ$）の確率過程に従って、確率論的に決定される。
- *Encoder*は、入力データを潜在空間のある座標地点に（多変量正規分布に従って）写像するために、__入力データ１つ１つについて、平均$μ$と分散共分散行列$Σ$を出力する。このとき、*Encoder*が生成する$μ$と$Σ$はそれぞれ、$0$と単位行列$I$になるように、パラメータ係数$β$の大きさだけ、誘導される（係数$β$が付いた正則化項による誘導効果）。__
- 「ある１つのデータ」の特徴を捉えた表現データは、潜在空間のなかで、__平均値$μ$__を中心として、各軸の方向に距離$1$離れた周囲の空間まで、確率論的に散らばって写像される。
（__平均値$μ$__から各軸上で離れれば離れるほど、その座標位置に特徴表現ベクトルが写像される確率は小さくなる）
- その結果、潜在空間の中で、どの「学習済みの入力データ」の特徴を表現する特徴ベクトルも写像されない、空白地帯が発生する可能性が低くなる。
- __潜在空間__は__連続空間になる。__
- モデルの推論段階で、『「あるデータA」に、ある特徴が似ているが、少し見た目の異なる別の「データB」』がモデルに入力されたとき、そのデータの特徴を表現する潜在ベクトルは、すでに学習済みの「似ている」データの写像先に近い座標地点に写像される。
- __潜在空間__は__連続空間であるため、__「そのデータをうまく復元したデコーダ画像」が、__*Decoder*から生成される可能性が高まる。__

__*β-VAE*モデルが上記の特質を持つこと__は、__David Foster（著）・松田晃一ほか（訳） 『生成Deep Learning』 オライリー・ジャパン__で、とてもわかりやすく解説されています。

__（ 以下、David Foster（著）・松田晃一ほか（訳） 『生成Deep Learning』 オライリー・ジャパンより抜粋 ）__

> （ __$p.87$__ ）
>
> オートエンコーダでは、各画像は潜在空間の1点に直接写像されます。変文オートエンコーダでは、各画像は潜在空間内のある点の周りを多変量正規分布に写像されます。
>
> （ __$pp.89-90$__ ）
>
> では、この少しの変更がなぜエンコーダの役に立つのでしょうか？
> 前に見たとおり、潜在空間は連続であることは求められていませんでした。点$(-2, 2)$をデコードすると形の整った$4$の画像になったとしても、$(-2.1, 2.1)$がそれと似たような形になることは要求されていなかったのです。今回は、$mu$の周りの領域からランダムに点をサンプリングするので、デコーダはその近傍にあるすべての点はよく似た画像にデコードして、復元の損失を小さくするようにしなければなりません。これは非常に良い性質で、これにより、デコーダがまだ見たことのない点が潜在空間から選ばれたとしても、形の整った画像にデコードされる確率が高いことが保証されます。
>
> （ __$p.93$__ ）
> これまでの損失間数は、入力画像と、それがエンコーダTOデコーダを通過して復元された画像との間の$RMSE$だけで構成されていました。この__復元画像__は変分オートエンコーダに出てきますが、追加の要素がもう１つ必要です。__KL情報量（Kullback-Leibler divergence）__です。
> KL情報量は、ある確率分布がもう１つの確率分布とどれだけ違っているかを測定する方法です。$VAE$では、$mu$と$log_var$をパラメータに持つ正規分布が、標準正規分布とどれだけ異なるのかを知りたいのです。この特別なケースでは、$KL$情報量は以下の関係式を持ちます。
>
>```python
>kl_loss = -0.5 +* sum(1 + log_var - mu ^ 2 - exp(log_var))
>```
> または、数学的に表記すると以下のようになります。
>
> $D_{KL}[N(μ, σ) || N(0, 1)] = \frac{1}{2}\sum(1 + log(σ^2) - μ^2)$
>
> この合計は、潜在空間のすべての次元にわたって計算されます。

##*β-VAE*モデルはどうやって、特徴空間の各次元を、入力データが持つ「独立した属性」を表現する座標軸（意味軸）にしているのか？

ここで、先ほど挙げた*β-VAE*モデルの特質のなかで、最初の要点に、再度注目してみましょう。

> - 「あるデータA」が*Encoder*に入力されたとき、そのデータの特徴を表現する潜在変数$z$は、__「ある１つの平均値」を中心として、（潜在空間の各次元軸上で）「標準偏差$1$」だけ離れた場所に写像__される。どの座標位置に写像されるのかは、多変量正規分布（$μ, σ$）の確率過程に従って、確率論的に決定される。

__*β-VAE*モデル__は、入力されたデータの「特徴」を捉えた表現ベクトルを、潜在空間のある座標値に写像するとき、$z$を、__「ある１つの平均値」を中心__として、__（潜在空間の各次元軸上で）__「標準偏差$1$」だけ離れた場所に写像します。

ここで重要なポイントとなるのが、各入力データの特徴表現ベクトルを、__係数$β$の大きさの強さで押し込める行先が、『「潜在空間の次元数」を持った「多変量」正規分布__（但し、平均$μ$）__』であるということ__です。

###多変量正規分布： すべての次元（座標軸）は互いに干渉しあわない（各次元（各軸）は互いに無相関（且つ）独立の関係）

ここで、__平均が0で、共分散行列が単位行列である多変量標準正規分布は、すべての次元（座標軸）は互いに干渉しあわない（各次元（各軸）は互いに無相関（且つ）独立の関係にあること__を、統計学の基本にたち返って、おさえておきたいと思います。

まず、Wikipediaをみてみます。

- [(Wikipedia） 多変量正規分布](https://ja.wikipedia.org/wiki/%E5%A4%9A%E5%A4%89%E9%87%8F%E6%AD%A3%E8%A6%8F%E5%88%86%E5%B8%83)

> __定義__
>
> __標準正規確率変数ベクトル__
>
> 実数値確率変数から成るベクトル${\displaystyle \mathbf {X} =(X_{1},\ldots ,X_{k})^{\mathrm {T} }}$が標準正規確率変数ベクトル（standard normal random vector）であるとは、それらの成分 ${\displaystyle X_{n}}$ が独立であって、いずれも平均 0、分散 1 の正規分布に従っている（全ての ${\displaystyle n} に対し、{\displaystyle X_{n}\sim \ {\mathcal {N}}(0,1)}）$ことを言う[1]:p. 454。

以下の解説スライドでは、__平均が0で、共分散行列が単位行列である多変量標準正規分布__は、__すべての次元（座標軸）が互いに独立（無相関）の関係にあること__が述べられています、

- [村澤 康友 「第 12 回 多変量正規分布(7.3–7.4)」](https://ymurasawa.web.fc2.com/us-sl12.pdf)

![スクリーンショット 2021-01-09 15.01.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/f6770969-27ee-08ed-4471-a35989ccf1d4.png)

__ここで重要なことは、$β-VAE$は、潜在空間が「平均$μ=0$」且つ「共分散行列が単位行列$I$」であることを仮定においている（モデル学習の初期値として、この多変量標準正規分布をおく）ことです。__

このことは、__*β-VAE*モデルを提案した論文の$p.5$の以下のくだりで述べられています。__
- [Irina Higgins et.al., β-VAE: LEARNING BASIC VISUAL CONCEPTS WITH A CONSTRAINED VARIATIONAL FRAMEWORK, ICLR 2017](https://openreview.net/pdf?id=Sy2fzU9gl)

__以下、該当する段落を抜粋します。なお、以下の太字の部分は、本記事執筆者によるもので、論文の原文では太字にはなっていません。__

> The conditionally dependent data generative factors w can remain entangled in a separate subset of z that is not used for representing v. __*In order to encourage this disentangling property in the inferred qφ(z|x)*__, we introduce a constraint over it by trying to match it to a prior p(z) that can both control the capacity of the latent information bottleneck, and embodies the desiderata of statistical independence mentioned above. This can be achieved if __*we set the prior to be an isotropic unit Gaussian (p(z) = N (0, I))*__, hence arriving at the constrained optimisation problem in Eq. 2, where  specifies the strength of the applied constraint.

__*we set the prior to be an isotropic unit Gaussian (p(z) = N (0, I))*__という部分が該当する箇所です。

![スクリーンショット 2021-01-11 12.28.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/5194c1b3-556f-6d7e-732a-84e2b2ae99fe.png)


日本語による解説としては、次のWebページが参考になります。
（以下の引用部分も、太字の部分は、本記事執筆者によるものです。）

- [【超初心者向け】VAEの分かりやすい説明とPyTorchの実装](https://tips-memo.com/vae-pytorch)

> 「潜在空間には__平均が$0$で共分散行列が単位行列の標準多次元ガウス分布を仮定__します。

__以下は、$β-VAE$ではなく、確率的主成分分析に関する解説文ですが、引用します。__

- [機械学習初心者が確率的主成分分析を頑張って理解しようとしてみた](https://hackmd.io/@eq2bdyXdSY-1qr4ZXl4kOg/By_K0Dw-S)

（以下の引用部分も、太字の部分は、本記事執筆者によるものです。）

> 潜在変数$z$の__事前分布は、平均が0で共分散行列が単位行列のガウス分布$p(z)=N(z|0,I)$で与えられると仮定__します。ここで__共分散行列が単位行列ということは、お互いの次元の共分散が0であることを表し、潜在変数$z$の各次元がお互いに独立であることを意味__します。

- [高校数学の美しい物語 「独立と無相関の意味と違いについて」](https://mathtrain.jp/uncorrelated)

> 確率変数 $X$ と $Y$ が
1：独立なら無相関
2：無相関でも独立とは限らない
3：多次元正規分布に従うとき独立 ⟺ 無相関

___

__多変量の正規分布とはそもそもどのような数式（確率密度関数）で表現できるのか、ということについては、次のスライドが参考になります。__

###（ 参考 ） 多変量標準正規分布の記述式（数式）

- [高校数学の美しい物語 「多変量正規分布の確率密度関数の解説」](https://mathtrain.jp/tahenryogauss)
 
![スクリーンショット 2021-01-09 15.10.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/5af72679-5e58-32f2-87cf-088d956f71bb.png)

- [高校数学の美しい物語 「分散共分散行列の定義と性質」](https://mathtrain.jp/varcovmatrix)

![スクリーンショット 2021-01-09 15.11.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/761fefcf-a884-80a9-fb04-01530cedd7f6.png)

___


以上、いくつか統計学の解説資料を抜粋・転載しましたが、__多変量正規分布__に従って生成（サンプリング）されるデータ（確率変数）は、__「各軸どうしが相関関係を持たない」確率過程（確率分布）__に従って、どこかの座標値に産みおとされるのです。

この、__多変量正規分布__が持つ、__「すべての座標軸が、互いに独立な確率分布である」という性質__によって以下のことが実現されます。

- __潜在表現ベクトル（潜在変数）$z$を構成するひとつひとつの数値は、潜在ベクトル空間の各次元軸上の数値（各座標軸上の数値）を意味している。ここで、それぞれの数値は、互いに独立である（各次元軸の座標値どうしの間に、相関関係はない）。__ 
- つまり、__潜在特徴ベクトル空間の各次元軸に写像される（入力データから抽出された）属性情報は、他の次元軸上に写像される別の属性情報とは無関係に、写像される。__
- 結果として、__潜在表現ベクトル（潜在変数）$z$を構成する「各数値」（各座標軸上の座標値）__は、__それぞれ独立した意味__を表現している。

ということです。

__（ 以下、*β-VAE*モデルの提案論文より再掲 ）__

以下のように、潜在空間の各次元軸（座標軸）には、__入力データ（人間の顔）が持つ、各々互いに独立した特徴（属性）情報である「肌の色合い」・「年齢の高低・ジェンダー区分」・「画像の輪郭の明瞭度合の強弱」__が表現される。（学習がうまくいった場合）

![スクリーンショット 2021-01-09 22.24.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/99db5d11-38c5-a835-5523-02edccbf3a59.png)

ところで以上は、__*β-VAE*モデルの学習が理想的にうまくいった場合__の話です。

現実には、学習済みの*β-VAE*モデルに、いろいろな見た目の特徴を持つ複数の画像のデータを*Encoder*に入力させたとき、特徴（潜在）ベクトル空間のそれぞれの座標軸方向に、入力した画像データが持つ__「どの属性の画像特徴」が写像（表現）されているのかを可視化__すると、__入力画像が持っている（と人間の目から見て認識できる）どの属性の特徴量も、うまく表現できていない座標軸が見つかる__ことがよくあります。

__*β-VAE*モデルを採用__しているGoogle DeepMindの__SCANモデル__を独自に学習させた三好氏は、スライドのなかで、こうした状況をわかりやすく可視化しています。

- [Irina Higgins et.al., Learning Abstract Hierarchical Compositional Visual Concepts, ICLR 2018](https://arxiv.org/pdf/1707.03389.pdf)
- [（SpeakerDeck） 三好 康祐 「SCAN」](https://speakerdeck.com/miyosuda/scan)

__（ 以下、上記の三好氏のスライドより転載 ）__

![スクリーンショット 2021-01-09 13.55.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/155b45d0-a3e8-7ed2-4c86-467b5558caf5.png)


__以上、「β-VAEモデルが、どうして、データが持つ特徴のもつれを解く（disentanglement）能力を持つのか？」という「素朴な疑問」に向き合ってみました。__

___

##*β-VAE*の計算過程： 「変分下限」の最大化による「近似解」を求める

以上、この記事の表題に掲げた次の「素朴な疑問」に対して、正面から向き合い、解説をしてみました。

###（素朴な疑問）

- 「潜在変数」(z)を、__係数$β$を大きくすることで、多変量正規分布に近づける__と、__どうして、潜在空間の各次元は、データが持つ「独立した」特徴が写像される「意味軸」に育つ__のか？

この「疑問」が、本記事を読んで頂く中で氷解したとしたら、モヤモヤ感をお腹の中に抱えないすっきりした気持ちで、専門書籍やWebサイト上にすでにたくさんアップされている、__*β-VAE*モデル__の数式の解説記事に進むことができると思います。

あまたある記事の中で、@kenmatsu4さんの次の記事がとりわけ分かりやすいと感じています。

- [@kenmatsu4さん 「Variational Autoencoder徹底解説」](https://qiita.com/kenmatsu4/items/b029d697e9995d93aa24)

その他、以下の__$2$__の点についても、ウェブ上の多くの解説サイトに分かりやすく解説されています。

1. 変分下限を最大化させる問題に帰着させる数式の導出過程
2. 多変量正規分布が持つ確率変数（$mu$と$σ$）を、__AEモデル__の学習則である$BP$法： $Back Propagation$で誤差逆伝播させる実装方法

1.については、@kenmatsu4さんの記事ほかで、__「イェンセンの不等式」__を用いて、__「変分下限を最大化させる問題に帰着させる」アプローチ__が導き出せる（数式の変換）過程が説明されています。

###（ 参考 ） *βーVAE*モデルの構造

原論文に掲載されているモデル模式図よりも、次のサイトに掲載されている図の方が、パラメータ$φ$と$θ$の埋め込み箇所を含めて、分かりやすく図示されていると思うので、転載させていただきます。

- （転載元） [【超初心者向け】VAEの分かりやすい説明とPyTorchの実装](https://tips-memo.com/vae-pytorch)

![スクリーンショット 2021-01-09 22.08.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/52760a12-151a-37de-94c8-946eaa24d5f4.png)

@kenmatsu4さんの記事に丁寧に記述されている計算式の変形作業を積み重ねていった結果、最終的に、*β-VAE*モデルは、次の式で表現される__変分下限（ELBO: Evidence Lower BOund）を最大化する問題に帰着__します。

__$L(X, z) = -D_{KL}[q(z|X)||p(z)]+E_{q(z|X)}[log p(X|z)]$__

このELBOは、次の2つの項で構成されています。

1. $-D_{KL}[q(z|X)||p(z)]$：2つの確率変数（$q(z|X)$と$p(z)]$）が互いにどれくらいかけ離れているかを定量評価する数値（KLダイバージェンス）
2. $E_{q(z|X)}[log p(X|z)]$：*Encoder*（$E_{q(z|X)}$）と*Decoder*（$log p(X|z)]$）を表す項

__1つ目の項目（KLダイバージェンス）__にはマイナスの符号が付いています。このため、__ELBOを最大化するためには、この項目は最小化する必要があります。__
KLダイバージェンスが最小化されるとき、2つの確率変数（$q(z|X)$と$p(z)]$）の距離は最も近くなります。$q(z|X)$と$p(z)]$の距離が最も近くなるということは、__*Encoder*が生成する（各入力データの潜在空間への写像先の）潜在変数ベクトルは、平均1, 分散共分散行列が単位行列$I$を持つ多変量正規分布に従ってサンプリングされる変数に（限りなく）近くことを意味します。__損失関数の観点から見たとき、__これは、KLダイバージェンスという損失関数が最小化される（*loss*が最小化される）ことを意味しています。__

__2つ目の項目__にはプラスの符号が付いています。このため、__ELBOを最大化するためには、この項目は最大化する必要があります。__
この項目が最大化されるとき、入力データ*X*を受け取った*Encoder*が生成した潜在変数*z*をもとに、*Decoder*が復元した入力データの復元値$\hat{x}$が、元々入力されたデータ*X*に近く確率が最大化されることを意味しています。
損失関数の観点から見たとき、__これは、最小二乗法で評価されるデータの「復元誤差（*Reconstruction loss*）」が最小化されることを意味します。__

ところで、__このELBOは、2つのパラメータ$φ$と$θ$によって算出__されます。
そのため、__*β-VAE*モデルは、誤差逆伝播法と確率的勾配降下法を使って、ELBOを最大にする$φ$と$θ$の組み合わせをパラメータ探索するタスクを解く演算になります。__

なお、$φ$と$θ$は、それぞれ*Encoder*と*Decoder*が持つパラメータです。

- $φ$： *Encoder*が持つパラメータ。 *Encoder*は、入力データ*X*から（潜在変数*z*を生成するために、乱数として用いる多変量正規分布のパラメータ）$μ$と$Σ$を生成する。
- $θ$： *Decoder*が持つパラメータ。 *Decoder*は、潜在変数*z*から、復元画像$\hat{x}$を生成する。

この係数*β*に関して、__*β-VAE*モデルの提案論文__のAbstractでは次のように説明されています。
 
- ハイパーパラメータ*β*は、潜在空間が、（入力データに内在する特徴量を、次元圧縮した上で）詰め込む収容スペース能力をどれだけ持つかの度合いの大きさと、（潜在空間の各次元軸の間の）独立性の度合いと、(*Encoder*で受け取った）入力データを（*Decoder*が）どれだけ忠実に再現できるのかという（3つの考慮すべき度合いを）調整（*balances*）させる係数です。

- *β>1*のとき、普通の*Variational Autoencoderモデル*（これは$β=1$と置いた場合の*β-VAE*モデルと同値）よりも、精度が良くなることが確認された。（検証に用いたデータセット： [*CelebA*](http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html), [*faces*](http://faces.cs.unibas.ch), [*3D chairs*](https://github.com/mathieuaubry/seeing3Dchairs）

> We introduce an adjustable hyperparameter β that balances latent channel capacity and independence constraints with reconstruction accuracy. We demonstrate that β-VAE with appropriately tuned β > 1 qualitatively outperforms VAE (β = 1), as well as state of the art unsupervised (InfoGAN) and semi-supervised (DC-IGN) approaches to disentangled factor learning on a variety of datasets (celebA, faces and chairs).

なお、*β-VAE*ではなく、*VAE*については、数式面での説明を含めて、次のスライドがとても丁寧に解説をしてくれています。

- [nzw 「Variational Auto Encoder」](https://nzw0301.github.io/assets/pdf/vae.pdf)

___

##（その他の素朴な疑問）
####*Variational*（「変分」）って何？

__変分オートエンコーダ__の__「変分」__とは、汎関数が最大値もしくは最小値の極値（微分係数が$0$になる点）を求める__「変分法」__と呼ばれる数学の演算法から取られたものです。

__変分オートエンコーダ__は、__この変分法を使って確率分布の近似値を求める「変分ベイズ」__から、__「変分」__の名前を受け継いだみたいです。

__「変分法」と「変分ベイズ」__については、以下を参照ください。

- [@takuro-Ishidaさん 「変分ベイズ法の解説」](https://qiita.com/takuro-Ishida/items/2ecfafc679260211a0ab)
- [@kento1109さん 「変分ベイズに関する復習」](https://qiita.com/kento1109/items/99a6bcbf18c1119d127c)
- [@harmegiddoさん 「変分法について入門する」](https://qiita.com/harmegiddo/items/f3d9377ae6ae89c2d40d)


___


###【 *β-VAE*の発展モデル 】

__ここまで、*β-VAE*モデルに関して、初めてみた方が抱くかもしれない「素朴な疑問」について、説明を加えてみました。__

__本記事の残りの部分では、この*β-VAE*モデルを使って、どのような応用研究がなされているのかをみてみたいと思います。多くの研究がありますので、ここでは、2, 3の事例だけをかいつまんでピックアップします。__

*β-VAE*モデルによって、入力された（画像その他の）データから抽出された、各属性の特徴量値は、入力データ（集合）において、互いにどのような関係にあるのかを可視化する研究があります。

例えば、「人間の顔」について、いろいろな人物の顔を解析した結果、「鼻の高さ」と「目尻の上がり方」には互いに（統計的に有意な）相関関係がありそうだ（どちらが原因で、どちらが結果なのかの「因果関係の方向性」は未知だが）、などです。

- [Xiao Liu & Junpeng Wang, LatentVis: Investigating and Comparing Variational Auto-Encoders via Their Latent Space, CIKM2020 Workshops](file:///Users/ocean/Downloads/LatentVis_CIKM_workshop_camera_ready.pdf)

> __Abstract__
>
> As the result of compression and the source of reconstruction, the latent space of Variational Auto-Encoders (VAEs) captures the essences of the training data and hence plays a fundamental role in data understanding and analysis. Focused on revealing what data features/semantics are encoded and how they are related in the latent space, this paper proposes a visual analytics system, i.e., LatentVis, to interactively study the latent space for better understanding and diagnosing image-based VAEs.
Specifically, we train a supervised linear model to relate the machine-learned latents with the human-understandable semantics. With this model, each important data feature is expressed along a unique direction in the latent space (i.e., semantic direction). Comparing the semantic directions of different features allows us to compare the feature similarity encoded in the latent space, and thus to better understand the encoding process of the corresponding VAE. Moreover, LatentVis empowers us to examine and compare latent spaces across various training stages, or different VAE models, which can provide useful insight into model diagnosis.

![スクリーンショット 2021-01-09 22.57.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/e7c59143-2297-4580-d74f-b9f73b88282c.png)

- [Jiawei He et.al., VARIATIONAL AUTOENCODERS WITH JOINTLY OPTIMIZED LATENT DEPENDENCY STRUCTURE, ICLR 2019](https://openreview.net/pdf?id=SJgsCjCqt7)

ここで強調しなくてはならないのは、*β-VAE*モデルが、「鼻の高さ」や「目尻の高さ」、「髪の長さ」、「目の大きさ」、「頬のふくらみ具合」などの「度合い」を（座標値として表現する）各次元軸は、意味的に、互いに独立しているということです。

つまり、仮に、人間の顔は一般的にみて、『「鼻の高さ」と「目尻の高さ」の間に相関関係がある』ことが明らかになったとしても、「鼻の高さ」という特徴量と、「目尻の高さ」という特徴量は、「特徴量」として、互いに混じり合うことがない、独立した「特徴属性」であり続けるということです。

このことは、例えば『足の長い人は、（一般的な傾向として）駆け足が早い』という知見が得られたとしても、ある人が持つ「個性」・「特徴」として、「その人の足の長さ」と「その人の駆け足の速さ」という２つの個性（特徴属性）は、互いに混じり合うことのない、別個の特徴属性であリ続けるということです。

*β-VAE*を用いたその他の研究として、質問文の類似度を、*β-VAE*モデルが生成した潜在空間ベクトル空間内の中で、各質問文が写像される座標値の距離で測ることを試みている例があります。

- [Michel Deudon, Learning semantic similarity in a continuous space, NeurIPS 2018](https://papers.nips.cc/paper/2018/file/97e8527feaf77a97fc38f34216141515-Paper.pdf)

![スクリーンショット 2021-01-09 23.36.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/f88a10ff-87c2-7f85-4e1c-4e6570fca57c.png)

![スクリーンショット 2021-01-09 23.37.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/0609c56b-e448-1c21-99f1-b46fa4402335.png)

![スクリーンショット 2021-01-09 23.37.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/8a733f21-fad9-a29a-f8cc-0e641241bc15.png)

さらに、*β-VAE*モデルが生成した潜在空間ベクトル空間内の中で、異なる次元軸上で表現される、複数の異なる属性の特徴量（異なるモダリティの特徴値）の間で、共通する特徴情報量を抽出する研究も行われています。

- [Masahiro Suzuki, Kotaro Nakayama, Yutaka Matsuo, JOINT MULTIMODAL LEARNING WITH DEEP GENERATIVE MODELS](https://openreview.net/pdf?id=Hk8rlUqge)

抽出された「共通（特徴）情報量」は、潜在空間ベクトルの各次元軸上で表現済みのどの属性軸よりも、一段、（概念の）抽象度が高い「属性」を持つ情報が写像される「新しい軸」となる。

__（イメージとしては、主成分分析が、統合情報軸（主成分）を組成するような感覚でしょうか）__

![スクリーンショット 2021-01-10 22.31.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/c2d1b324-a26c-b1d7-018d-7aad61d8a8b4.png)

（ 以下の図は、[鈴木 雅大 & 松尾 豊 「異なるモダリティ間の双方向性性のための深層生成モデル」情報処理学会論文誌 Mar.2018](https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=186818&item_no=1&attribute_id=1&file_no=1)から転載しました ）

![スクリーンショット 2021-01-11 0.51.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/e787cba6-6aeb-f1e5-078a-095e9cce1aaa.png)

> JMVAE-klは、モダリティの数が増えると、元のJMVAEのエンコーダのネットワークが増えるだけでなく、モダリティが欠損した場合を考慮したエンコーダも必要となるので、ネットワーク数が膨大になってしまうという問題がある。モダリティが2個の場合、JMVAE-klでは3.5節で述べたように、元のJMVAEのエンコーダ $q_{φ}(z|x, w)$と各モダリティが欠損した場合のエンコーダ $q_{λ}(z|x), q_{λ}(z|w)$が必要となる。ここで、各モダリティから潜在変数への写像を表現したネットワークがそれぞれ同じパラメータ数であると仮定し、そのパラメータ数を$M$とする。すると、$q_{φ}(z|x, w)$では$2M$, $q_{λ}(z|x)$と$q_{λ}(z|w)$ではそれぞれ$M$のパラメータが必要なので、エンコーダに必要なパラメータ数は合計$4M$となる。モダリティが3個となると、元のJMVAEのエンコーダ$q_{φ}(z|x, w{1}, w_{2})$のほかに、全モダリティのすべての欠損の組合せを考慮したエンコーダ$q_{λ}(z|x), q_{λ}(z|w_{1}), q_{λ}(z|w_{2}), q_{λ}(z|x, w_{1}), q_{λ}(z|w_{1}, w_{2}), q_{λ}(z|w_{2}, x)$が必要になる。よって、ネットワークのパラメータ数の合計は$12M$になる。モダリティ数が＄K＄個の場合では、エンコーダのパラメータ数は$2^{K-1}KM$となり、モダリティ数に対してネットワークのパラメータ数が指数的に爆発してしまう。
> 一方階層的JMVAEでは、モダリティの数が増えても、対応する元のJMVAEのエンコーダが式（８）のように因数分解され、それぞれの確率的階層間の決定論的な写像がパラメータ数$M$のネットワークで表現されていると仮定すると、$K$個のモダリティにおける$L$層の階層的JMVAEでは、エンコーダのパラメータ数が合計$(K + L - 1)M$となる。よって階層的JMVAEでは、JMVAE-klと比べて、モダリティの数に対するパラメータ数を大幅に抑えられる。
> したがって、階層的JMVAEとJMVAE-klにはそれぞれ長所と短所がある。階層的JMVAEはモダリティが3種類以上で欠損モダリティの次元がそれほど大きくない場合に有効で、JMVAE-klはモダリティが2種類のみで欠損モダリティが高次元の場合に有効であるといえる。

このように、*β-VAE*モデルに入力された__学習データや推論データには含まれていなかった、未知・新種の概念属性軸__を、AIモデルの内部回路の中で「生成」させる「使い方」は、「実在しない架空の人物の顔画像」を生み出すこととは、方向性を大きく異にする、*VAE*モデルの新たな「使い道」と言えるのかもしれません。

#####__（ 鈴木らが提案する3つのモデル JMVAEモデル, JMVAE-klモデル, 階層的JMVAEモデルによって生成された各モダリティの特徴量をすべて取り込んだ「共有表現」ベクトルを可視化した図 ）__

![スクリーンショット 2021-01-11 2.02.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/089fb48b-622c-230b-7517-a75c31958e55.png)


> __4-5-2 実験1-2: 潜在空間での共有表現の確認__
>
> 続いて, 潜在空間で異なるモダリティの共有表現が獲得されていることを確認する。
> 図5は, 各手法での潜在表現を可視化したものである。
>図5の左がすべてのモダリティを入力としたエンコーダからサンプリングしたもので, 右が単一のモダリティ $w$からサンプリングした潜在表現である。なお, 階層的JMVAEの場合は一番上の確率的層でサンプリングしている。ここでは, エンコーダの$f_{μ}$と$f_{σ^{2}}$を$D2$として訓練したものを用いている。
> まず図5左に着目すると, JMVAEとJMVAE-klは, いずれもラベルごとに分かれて分布しており, 2つのモダリティを含んだ共有情報が獲得できていることが確認できる。　
>一方, 階層的JMVAEでは, よりラベルごとにまとまった表現になっていて, 確率的階層化の効果が確認できる。
> 次に図5右に着目する。JMVAEの結果を見ると, 左と比べてかなり小さい領域にサンプルの分布が押しつぶされているのが分かる。また, ラベルごとのまとまりもほとんど見られなくなっている。 この結果から, 画像情報が欠損されると潜在表現が崩れてしまうことが実際に確認できる。 一方JMVAE-klの結果を見ると, 左のすべてのモダリティからのサンプリングとほぼ変わらない潜在表現が得られていることが分かる。右の図では楕円にまとまった表現となっているが, これは$w$からの情報量が$x$と$w$の両方の情報量と比べて小さいため, 不確かさが大きくなり, 比較的単純な分布となっているためである。JMVAEの場合のように, 小さい領域にまとまっていないことから, 明らかに欠損モダリティの問題が解決されていることが分かる。最後に階層的JMVAEの結果を見ると, 欠損していない左の結果とほぼ同様の, ラベルごとに分離した分布が獲得されている。この結果から, 階層的JMVAEでも潜在表現が壊れてしまう問題点は解消されたといえる。

（*β-VAE*モデルの潜在空間における「次元軸A」が表現する）「モダリティA」の概念属性と、（「次元軸B」が表現する）「モダリティB」の概念属性を足がかりにして、__一段、概念の抽象度が高い、（観測データには含まれていない新しい）「モダリティC」の特徴属性軸（属性概念）を組成する__と、何ができるようになるのでしょうか。

鈴木氏は、__抽象度の高い「モダリティC」を経由する形__で、__潜在空間の「次元軸A」が表現する「モダリティA」の情報から、潜在空間の「次元軸B」が表現する「モダリティB」の情報を推定（生成）したり、その逆方向の情報推定（「モダリティB」から「モダリティA」を推定）が実現可能である__ことが、鈴木氏の研究は示しています。

__（ 入力画像（左） -> 画像に含まれる各属性値（カテゴリ）を記述したテキストを生成 -> 当該テキストから、対応する画像を生成 ）__
![スクリーンショット 2021-01-10 22.32.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/e309eaa3-2964-74b8-08c7-41b2cd52fe8c.png)

> 最後に、JMVAEが顔画像と属性間を双方向に生成できることを示す。図9では、訓練事例集合に含まれない画像から属性を生成し, さらに属性値を変更することで様々な顔画像を生成できることを示している。これらの画像は次のようにして作成している。まず, JMVAEでラベルのない画像 $x$から対応する属性 $w$を生成する。次に, 生成した属性 $w$から平均顔 $x_{mean}$を生成する。そして、変更したい属性の値を変更した $w$から $x_{mean}^{\prime}$を生成する。最後に,  $x + x_{mean}^{\prime} - x_{mean}$ とすることで, 変更した属性値に対応した顔画像 $x$を得ることができる。なお図9のReconstructionは, 入力画像のみから再構成によって生成した画像である。
> 図9から, モダリティの次元が大きく異なるデータセットにおいても, 提案手法が両方のモダリティを双方向に生成できることが分かる。なお, 上記の属性から画像への生成方法はCMMA[5]と類似しているが, CMMAは1方向しか生成できないため, 属性情報のない画像を変化させることはできない。

![スクリーンショット 2021-01-10 22.33.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/8773e58f-628a-7a5c-17ca-6a406ecfbd7a.png)

なお、鈴木らの研究で、検証用(Experiment）データとして、__*Faces*や*MNIST*データセット__が選択されている理由は、以下の文章を参照してください。

__（ 出典： [鈴木 雅大 & 松尾 豊 「異なるモダリティ間の双方向性性のための深層生成モデル」情報処理学会論文誌 Mar.2018](https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=186818&item_no=1&attribute_id=1&file_no=1) ）__

> 既存のマルチモーダル学習のデータセットとしては、MIR Flickr25[24]やワシントン大学の　RGBーDデータセット[25]がある。しかし、これらのデータセットは異なるモダリティでも次元や構造が同じである例が多く,特にRGB-Dデータセットは物体画像のRGB情報と深さの情報を異なるモダリティとしていて、画像サイズはモダリティ間で同じとなっている。よって(1)を検証するには不向きである。一方,次元や構造が異なっている例として,一般物体画像とタグを異なるモダリティとするMIR Flickr25kなどがあるが,一般物体画像の生成自体が今現在も困難なタスクであるため(2)や(3)の検証には向かない。
>そもそも,通常のマルチモーダル学習では,通常複数のモダリティからより良い表現を獲得して識別精度を高めることが目的であり,本研究の目的とは異なる。そのため,既存のマルチモーダル学習のデータセットは本実験では用いないこととした。
> その代わり、本実験では上記の目的を達成するため,MNISTとCelebA[26]の2つのデータセットを用いることにした。
> MNISTは,本来マルチモーダルの学習のためのデータセットではない。しかし,ラベルをone-hotのタグと考えて1つのモダリティとすると,手書き数字画像とラベルでは次元や構造が大きく異なること, one-hotの情報なので潜在空間で多様体学習ができているか判断しやすいこと, そしてデータセットのサイズが小さく生成しやすいことから, 上記の目的に適していると考えられる。
>
> （　・・・省略・・・　）
>
> CelebAは202,599枚のカラー顔画像と対応する40の2値属性（男性, メガネ, 髭など）によって構成される。より一般的なマルチモーダルデータセットである。モダリティ間で次元や構造がより大きく異なるため, MNISTよりも困難な設定だが, 画像は顔に限定されているため, 一般物体画像などと比べて生成しやすいデータセットと考えられる。

（出典） [Masahiro Suzuki, Kotaro Nakayama, Yutaka Matsuo, JOINT MULTIMODAL LEARNING WITH DEEP GENERATIVE MODELS](https://openreview.net/pdf?id=Hk8rlUqge)

__これは、「異なるモダリティ間」で、双方向的に、新しいデータの生成を行う取り組み__です。

自然言語処理モデルとして注目されているOpenAI財団のGPT-3モデルが、「テキストデータ」から「画像データ」を生成する用途で使えることが、ニュースになっています。

- [2021年01月06日 13時54分公開 「OpenAI、自然な言葉の説明からイラストを描くAI「DALL・E」発表」](https://www.itmedia.co.jp/news/articles/2101/06/news078.html)
- [npaka 2021/01/08 07:25 「DALL・E：テキストからの画像生成」](https://note.com/npaka/n/n412754686518)

次に示す鈴木氏の研究は、「テキストデータ」から「画像データ」を生成するといった、「テキスト」と「画像」という異なる「モダリティ」間で、データを相互生成しあう道を、*β-VAE*モデルの枠組みで切り開く力作です。

補足すると、鈴木氏が提案するモデルは、__「テキスト」からの「画像」の生成と、「画像」からの「テキスト」の生成の両者を可能にできるモデルです。つまり、「テキスト」属性（モダリティ）のデータと、「画像」属性（モダリティ）のデータを、双方向に変換できる点が、画期的です。__

「モダリティA」と「モダリティB」の間での__双方向のデータ生成__は、__「モダリティA」が持つ特徴量と、「モダリティB」が持つ特徴量の両者を情報量として内包する「より抽象度の高い高次の特徴ベクトル（潜在ベクトル）」を生成する（経由する）ことで__、可能になります。

- [鈴木 雅大 & 松尾 豊 「異なるモダリティ間の双方向性性のための深層生成モデル」情報処理学会論文誌 Mar.2018](https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=186818&item_no=1&attribute_id=1&file_no=1)

> __3-2 Joint multimodal variational autoencoder__
>
>本研究では、データセット ${(x_{1}, w_{1}), ... , (x_{N}, w_{N})}$ を考える。ただし、$x$と$w$はそれぞれ異なる種類の次元や構造を持つとし、それぞれを異なる__モダリティ__と呼ぶ。データセットの各事例のモダリティの組 $(x_{i}, w_{i})$ は同じ対象を表現しているものとする。本研究の目標は、これら2種類のモダリティ間を双方向に生成することである。ここでの「双方向に生成する」とは、$x$から$w$の生成と$w$から$x$の生成の両方を行うことを指す。
> 提案手法では、これらは同一の潜在的な概念$z$, すなわち共有表現の下で条件付き独立であるとし、各モダリティは異なる分布から生成されると仮定する。したがって、潜在変数および各モダリティの生成過程は$z ~ p(x)$および$x, w ~ p_{θ}(x|z)p_{θ}(w|z)$となる。
> このモデルはすべてのモダリティの同時分布（joint distribution）をモデル化していることから、この提案モデルを__Joint Multimodal Variational AutoEncoder (JMVAE)__と呼ぶ。
> 近似時後分布を$q_{φ}(z|x, w)$とすると、対数尤度$log p(x, w)$の変分下界は次のようになる。
>
> $L_{JM}(X, W) = E_{q_{φ}(z|x, w)} [log \frac{p_{θ}(x, w, z)} {q_{φ}(z|x, w)}]$
> $ = -D_{KL} (q_{φ} (z|x, w) ||p(z))$
> $ + E_{qφ (z|x, w)} [logp_{θ}(x|z)]$
> $ + E_{qφ (z|x, w)} [log P_{θ}(w|z)]$      (5)
>
> この式には、各モダリティに対応した2つの負の再構成誤差項がある。VAEと同様に$q_{φ}(z|x, w)$をエンコーダ, $p_{θ}(x|z)$と$p_{θ}(w|z)$をデコーダと呼ぶ。
> 式(5)のエンコーダとデコーダは、深層ニューラルネットワークでパラメータ化し、VAEと同様に各パラメータ（$θ$と$φ$）に関して最適化できる。各モダリティは異なる特徴表現を持つので、デコーダ $p_{θ}(x|z)$と$p_{θ}(w|z)$に対して異なる分布や異なる構造のネットワークを設定する必要がある。分布やネットワーク構造の種類は、データセットにおける各モダリティに依存する。たとえば、あるモダリティの事例の各次元要素が連続値をとるならばガウス分布, 2値をとるならばベルヌーイ分布, 2値かつone-hotならばカテゴリ分布となる。エンコーダ $q_{φ}(z|x, w)$はガウス分布として、各モダリティに対して異なるネットワークを用意し、最終層で結合することでパラメータ化する。
> JMVAEは、CVAEやCMMAとは異なり全モダリティの同時分布をモデル化し、各モダリティは潜在変数の下で条件付き独立となっている。そのため、すベてのモダリティを含んだ共有表現を抽出できることが期待される。さらに、同時分布について各モダリティで条件付けることで、双方向の条件付き分布が得られるため、テキストから画像, 画像からテキストのように, 双方向のモダリティの生成も可能となる。加えてJMVAEは$p(x, w_{1}, w_{2}, ...）$のように3つ以上のモダリティも入力として扱うことができる。

ここで、__「条件付き独立」__について、以下が参考になります。

- [「条件付き独立の意味と例」](https://mathwords.net/jokentukidokuritu)

![スクリーンショット 2021-01-10 23.22.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/ca5e84e0-30eb-8e37-ee65-874c3849777b.png)


__（ 以下は、同じ [鈴木ら]の論文から、異なる段落を引用したものです ）__

> 異なるモダリティは、それぞれ異なる種類の次元や構造を持つ。そのため、モダリティ間の関係は強い非線形性を持つ。このような関係をモデル化するために、近年深層ニューラルネットワークyが広く使われている。
> モダリティを双方向に生成するための主要な手法は、モダリティごとに深層ニューラルネットワークを作成し、各モダリティの最も上位の隠れ層を共有するというものである。この手法の利点は、すべてのネットワークをend-to-endに学習でき、また共有した隠れ層で共有表現（joint-representation）が獲得できることである。各モダリティの情報を統合しているため、共有表現では、単一のモダリティよりも情報量の多い特徴量が得られる。また、この共有表現を介することで、あるモダリティから別のモダリティを容易に生成することができる。
>
> （　・・・省略・・・　）
>
> これまでも、VAEを使った複数のモダリティを学習する手法が提案されているが、これらはすべて条件付き分布のモデルであり、１方向でしかモダリティを生成できない。
> 本稿では、VAEを用いた複数のモダリティを扱うモデルとして、joint multimodal variational autoencoder (JM-VAE) を提案する。JMVAEでは、各モダリティに対応する生成モデルの潜在変数が共有されるようにモデル化されており、これは上記の深層ニューラルネットワークやDBMでのアプローチと同じである、したがって、JMVAEはVAEで双方向性を実現するための単純な拡張と言える。確率モデルとして考えると、JMVAEは潜在変数の下での各モダリティの条件付き分布によって、全モダリティの同時分布を構成している。この同時分布から、あるモダリティの下での別のモダリティの条件付き分布を求めることができるので、これを用いて双方向にモダリティを生成することができる。

- [鈴木 雅大 & 松尾 豊 「深層生成モデルを用いたマルチモーダル学習」2016年度人工知能学会](https://www.ai-gakkai.or.jp/jsai2016/webprogram/2016/pdf/727.pdf)
- [（SlideShare）鈴木 雅大「深層生成モデルを用いたマルチモーダル学習」Published on Jun 10, 2016](https://www.slideshare.net/masa_s/ss-62920389)

__JMVAEモデル__の実装コードは、__Tarsと名付けられた深層生成モデル（*Deep Generative Model*）を記述するためのPythonフレームワークを用いて記述されています。__

- [（JMVAEの実装コード） github.com/masa-su/jmvae](https://github.com/masa-su/jmvae)
- [（Tars） github.com/masa-su/Tars](https://github.com/masa-su/Tars)

> __Tars__
>
>[New] We are developing a PyTorch version of Tars made with more sophisticated API (which is named Pixyz). It is released now!
>
>Tars is a deep generative models library.

- [@mmsさん 「自作深層生成モデルライブラリの紹介」](https://qiita.com/mms/items/c548ac3268e5a325b129)

> 今回は，深層生成モデルの自作ライブラリ「Tars」を紹介します．以前から僕が一人で勝手に実装して勝手に使っていたもので，これまで非公開としていましたが，今回この記事を書くにあたって公開することにしました．
https://github.com/masa-su/Tars
もし需要がありましたら，今後も何回かに分けて紹介していきたいと思います．

AIモデルが、すでに学習（観測）済みの画像、音声、温度、湿度、速度などの各属性データをもとに、まだ観測したことのない新種のより抽象度の高い」概念（属性）を、AIの頭の中で「想像」・「創造」できる能力が、鈴木氏の研究の上に構築されていくのかもしれません。

__JMVAEモデルに近い研究__として、[Ramakrishna Vedantam et.al., GENERATIVE MODELS OF VISUALLY GROUNDED IMAGINATION, ICLR 2018](https://arxiv.org/pdf/1705.10762.pdf)があります。鈴木氏が書いた[スライド 「[DL輪読会]Generative Models of Visually Grounded Imagination」](https://www.slideshare.net/DeepLearningJP2016/dlgenerative-models-of-visually-grounded-imagination)の$p.2$でも、__「提案手法がJMVAE[Suzuki+ 2017]とほぼ一緒（論文内で引用&比較実験されている）」とのコメントが掲載__されています。 

なお、鈴木氏が提案しているJMVAE （*Joint multimodal variational autoencoder*）モデルは、この記事の中で引用済みのGoogle DeepMindのSCAN論文の中でも採用されています。

- [Irina Higgins et.al., Learning Abstract Hierarchical Compositional Visual Concepts, ICLR 2018](https://arxiv.org/pdf/1707.03389.pdf)
- [（SpeakerDeck） 三好 康祐 「SCAN」](https://speakerdeck.com/miyosuda/scan)

__（ 以下、上記の三好氏のスライドより転載 ）__

![スクリーンショット 2021-01-10 0.00.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/9c34ba42-f486-ac3d-9c2d-4a2da72c040a.png)

![スクリーンショット 2021-01-10 0.00.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/862466/192de1ce-5867-c3f2-0a82-c8c195c9ff15.png)

このSCAN論文も、『AIモデルが、未観測の新種の概念（属性）を、頭の中で「想像」・「創造」する能力』につながる研究と位置付けることができると思います。

この方向は、World Models, Dreamer, MERLINモデルなど、AIが、センサーを用いて現実の行動空間をひと通り観測した後で、現実世界に関して、形成した「頭の中」の「（主観）世界」・「世界イメージ（像）」・「夢」の中で、こういう場面でこういう行動をしたら、次の瞬間にこういう結果がえられるだろう、さらに次にこれをしたら・・・という行動の時間系列を、長時間の時間ステップ分、「イメトレ」する中で、目的を達成（報酬を最大化）するための最適な行動系列（行動の順序）を学習するモデルベース（深層）強化学習の研究とも、合流する可能性があります。いわゆる「世界（像）モデル」と呼ばれる研究です。

__（ World Modelsモデル ）__
- [（論文） David Ha & Jurgen Schmidhuber, World Models](https://arxiv.org/pdf/1803.10122.pdf)
- [（公式ウェブページ） World Models Can agents learn inside of their own dreams?](https://worldmodels.github.io/)

__（ Dreamerモデル ）__
- [（論文） Danijar Hafner et.al., DREAM TO CONTROL: LEARNING BEHAVIORS BY LATENT IMAGINATION, ICLR 2020](https://arxiv.org/pdf/1912.01603.pdf)
- [Google AI Blog Introducing Dreamer: Scalable Reinforcement Learning Using World Models](https://ai.googleblog.com/2020/03/introducing-dreamer-scalable.html)
- [（GitHub） github.com/google-research/dreamer](https://github.com/google-research/dreamer)

__（ PlaNet  ）__
- [Danijar Hafner, Learning Latent Dynamics for Planning from Pixels, ICNL2019](https://arxiv.org/pdf/1811.04551.pdf)
- [（GitHub） github.com/google-research/planet](https://github.com/google-research/planet)

__（ MERLIN  ）__
- [Greg Wayne et.al., Unsupervised Predictive Memory in a Goal-Directed Agent](https://arxiv.org/pdf/1803.10760.pdf)
- [（GitHub） github.com/Kajiyu/MERLIN](https://github.com/Kajiyu/MERLIN)