TenseorFlow入門から実装まで その5:VAE

TenseorFlow入門から実装まで その5:VAE

TensorFlowや機械学習についてこれまでみてきました。

今回からは機械学習の一つであるVAEを実際に実装していきましょう。

VAE (Variational Auto Encoder)は日本語では、変分オートエンコーダーと言います。

以下のように、実在する人の顔写真から特徴量を抽出して、実際には、存在しない人物の顔を生成した画像を見たことはあるのではないでしょうか?
VAEを持ちいればこのような画像を作成することができます。

https://deepage.net/deep_learning/2016/10/09/deeplearning_autoencoder.htmlより

今回の記事ではVAEについてわかりやすく説明していきます。
次回からは、実際にVAEを使って、MNIST (手書き文字のデータ)を解析していきましょう。

VAEとは?

冒頭でも言及しましたが、
VAE はVariational Auto Encoderの略語で、日本語では変分オートエンコーダーと言います。
変分オートエンコーダーは、オートエンコーダーの一種です。
とはいえ、急にオートエンコーダーと言われても馴染みがないと思いますので、

オートエンコーダーについて説明していきます。

オートエンコーダー

オートエンコーダーはたくさんあるデータ(高次元)から、特徴量を抽出することでより情報量を小さくすることです。
高次元データを、より小さいデータにすることを次元削除と言います。
オートエンコーダーでは次元削除にニューラルネットワークを用いることが特徴です。

また、オートエンコーダーは教師あり学習に分類されます。
少し、込み入った話をすると、一般的なオートエンコーダーは3層のニューラルネットワークから構成されており、Input層とOutput層には同じデータを用います。
二層目のことをHidden層と呼び、InputからHiddenの間をEncode、OutputからDecodeまでの層をDecodeと呼びます。

エンコーダーの前は、このEncodeが由来です。
Input層とOutput層には同じデータを用いますが、二層目のHidden層ではInput層とOutput層よりも少ないデータが用いられます。
つまり、オートエンコーダーでは、Hidden層で一度データが圧縮されるということです。

一般的なオートエンコーダーでは、データの特徴を学習し、特徴量を表す変数として、潜在変数を返しますが。この潜在変数がどのような構造なっているかはわかりません。

VAE

VAEでは、潜在変数を標準正規分布に従うように潜在変数を変形させているという点に特徴があります。
近年ではVAEがエンコーダーの中でもよく用いられています。また、他の深層学習と比べて比較的計算時間が短いというという特徴があります。

VAEは教師なし学習に分類されます。
これだけではよくわからないと思うので、
次回からは実際にプログラムを動かして、出力見ることでイメージを湧かしていきましょう!!

機械学習カテゴリの最新記事