Open1

VQ-VAE

osn_Lofiosn_Lofi

VAEでは潜在変数を連続値として扱っていたが、潜在変数を離散値として扱うようにしたのがVQ-VAE。
VQとはVector Quantised(ベクトル量子化)のこと。
潜在変数を連続値として扱うVAEでは、潜在変数が無視されてしまう問題があった。このため、GANなどに比べると画像がぼやけていた。潜在変数を離散化することでこれを解決する。

潜在変数zをK個の離散的なベクトルを使って表現する

エンコーダーの出力を離散値とするのではなく、エンコーダの出力値はあくまで連続値。その連続値をK種類の埋め込み表現にマッピングすることで離散化を実現する。

straight-through estimator(ストレートスルーエスティメーター)

潜在変数を離散化することで、VAEで使われてきた勾配をエンコーダに伝播するためのサンプリング方法リパラメタリゼーショントリックが使用できなくなる。
そこでVQ-VAEでは、勾配を計算する際に、埋め込み表現へのマッピングの箇所を跨いで逆伝播をさせる。
微分値をそのまま下位の層へ伝える処理をストレートスルー・エスティメーターという。

目的関数


第一項は再構築誤差を表す。VAEではKLダイバージェンスが含まれていたが、VQ-VAEではKLダイバージェンスが消えている。KL項が定数になるため。