はじめに
Pythonによるベイズモデルの実装をきちんと学ぼうと思い,森賀新・木田悠歩・須山敦志 著 「Pythonではじめるベイズ機械学習入門」を読むことにした。
本記事は,第5章「深層学習モデル」のうち変分自己符号化器に関する読書メモである。
- 本書の紹介ページ
5.2 変分自己符号化器
本節では,ニューラルネットワークを用いた教師無し学習モデルの代表例である変分自己符号化器(Variational Auto Encoder; VAE)を紹介している。
5.2.1 モデル概要
変分自己符号化器は,線形次元削減モデルに対してニューラルネットワークによる非線形変換を導入した教師なしの学習モデルである。画像データなど,複雑な生成構造を持つデータをモデル化するために用いられる。
モデルの仮定として,潜在変数の集合から観測データの集合
が以下のような生成過程で生成されているとする。
このとき,は順伝播型のニューラルネットワークで,
は重みパラメータである。この
は,潜在変数
から観測データ
を生成するので,デコーダ(decoder)とも呼ばれている。
この潜在変数とパラメータの事後分布を求めるときに,変分推論法を用いる。すなわち近似分布を設計し,KLダイバージェンス
を最小化することが学習の目標となる。
近似分布は平均場近似を用いて,以下のように独立分解する。
すなわち,潜在変数と重みパラメータ
は独立であると仮定している。
については,
ここで,は与えられたベクトルを対角成分とする行列を出力する関数である。
すなわち,各潜在変数はそれぞれ独立である,と仮定している。
平均パラメータ関数のと分散パラメータ関数の
は両方とも順伝播型ニューラルネットワークで,推論ネットワーク(Inference Network)もしくはエンコーダ(Encoder)と呼ばれる。
エンコーダでは,に対する
nの近似分布
におけるパラメータを1つ1つ最適化していくのではなく,ニューラルネットワークの共通パラメータとして最適化することで計算量を削減する。このように,ニューラルネットワークのような回帰モデルによってデータ
から潜在変数
の事後分布を予測しながら推論していく手法を償却推論(Amortized Inference)と呼ぶ。
変分自己符号化器は,エンコーダとデコーダという2つのニューラルネットワークの結合であるとの説明がなされるが,
- エンコーダ
: 変分推論で用いる近似分布のパラメータ関数
- デコーダ
: 生成モデルの尤度
と解釈できる。
まとめと感想
深層学習モデルのうち,変分自己符号化器について学んだ。
変分自己符号化器に画像を入力すると,出力画像はぼやけた感じで出力されるが,入力にノイズが多い場合にはそのようなノイズがキャンセルされる効果があるのではと推察される。
変分自己符号化器によって,ノイズが取れたベクトルが得られるのであれば,元の入力との差を見ることで異常診断などにも使えるのではと考えている。
本記事を最後まで読んでくださり,どうもありがとうございました。
