[ディープラーニング] 変分オートエンコーダー (VAE)


オートエンコーダー

オートエンコーダーは、ラベルなしのトレーニング データから低次元の特徴表現を学習するための教師なし学習方法です。この表現は潜在空間特徴またはエンコーダーと呼ばれることが多く、その目的は入力データの効率的な圧縮表現を見つけることです。

構造

  • エンコーダ

    エンコーダはxxを入力するコードですx は機能zzzの関数。深層学習モデル、線形モデルまたは非線形モデルのいずれかになります。一般的な非線形関数には、シグモイドや ReLU などがあります。エンコーダ アーキテクチャは、完全接続または畳み込みニューラル ネットワークにすることができます。Encoder の目標は次元削減であるため、機能zzzの次元は通常、入力xxxの寸法

    z = f θ ( x ) z = f_{\theta}(x)z=f( × )

    其中 θ \theta θはエンコーダのパラメータf θ f_{\theta}fエンコーダーの機能です。

  • デコーダ

    デコーダは機能ですzzz を入力空間にマッピングし、再構成された入力x ^ \hat xバツ^Decoder の目的は、圧縮された特徴zz元の入力xx をzから再構築します×デコーダ アーキテクチャは、ディープ、線形または非線形、または完全接続または畳み込み (アップコンボリューションなど) にすることができます。

    x ^ = g ϕ ( z ) \hat x = g_{\phi}(z)バツ^=gϕ( z )

    ここで、ϕ \phiϕは Decoder のパラメータです。g ϕ g_{\phi}gϕデコーダの機能です。

電車

Autoencoder のトレーニング目標は、再構成された入力をx ^ \hat xにすることです。バツ^は元の入力xxに可能な限り近いものです×一般的に使用される損失関数は L2 損失です。

L ( x , x ^ ) = ∥ x − x ^ ∥ 2 L(x, \hat x) = \|x-\hat x\|^2L ( x ,バツ^ )=×バツ^2

この損失関数を最小化することで、Encoder と Decoder のパラメータを学習できます。

応用

オートエンコーダーのトレーニング後、通常、デコーダーは破棄され、入力データから特徴を抽出するためにエンコーダーのみが使用されます。必要に応じて、エンコーダーと分類器を一緒に微調整することもできます。

x → z → y ^ x \rightarrow z \rightarrow \hat yバツzy^

このプロセスでは、y ^ \hat yy^エンコーダと分類器を通じて取得された予測ラベル、yyyは実際のラベルです。ソフトマックス損失関数を使用して、分類タスクを最適化できます。

オートエンコーダーはデータを再構築し、特徴を学習して教師ありモデルを初期化できます。これらの機能は、トレーニング データの変動を捕捉します。

Autoencoder を使用して新しい画像を生成できますが、通常、これは主な用途ではありません。Autoencoder を使用して新しいイメージを生成する一般的な方法は、Autoencoder によって学習された潜在空間からサンプリングし、Decoder を通じて新しいイメージを生成することです。

変分オートエンコーダー (VAE)

VAE は、Autoencoder アーキテクチャを使用し、確率理論を追加した生成モデルです。従来のオートエンコーダとは異なり、VAE のエンコーダは特定のコードではなく、コード化された確率分布のパラメータを出力します。

構造

  • エンコーダ

    エンコーダの目的は、入力xxを変換することです。x を潜在空間にマッピングする分布パラメーター。通常は多変量ガウス分布の平均ベクトルmmmと分散ベクトルσ \sigmas

    m = f θ(x)、σ = g θ(x) m = f_{\theta}(x)、\\sigma = g_{\theta}(x)メートル=f( x )  p=g( × )

  • サンプリング

    サンプリング ステップでは、エンコーダによって学習された分布からエンコードzzを生成します。zこれは、次の式を使用して実現されます。

    ci = exp ⁡ ( σ i 2 ) ei + mi c_i = \exp(\frac{\sigma_i}{2})e_i+m_ic私は=経験値(2p私は) e私は+メートル私は

    ここで、σ i \sigma_ip私ははポテンシャル空間の対数分散を表すので、exp ⁡ ( σ i 2 ) \exp(\frac{\sigma_i}{2})経験値(2p私は)は標準偏差、ei e_ie私はは標準正規分布からサンプリングされた乱数です。

  • デコーダ

    デコーダはzzをサンプリングしますzは入力空間にマップバックされ、再構成された入力x ^ \hat xバツ^

    x ^ = h ϕ ( c ) \hat x = h_{\phi}(c)バツ^=hϕ( c )

電車

VAE のトレーニング目標は、再構成エラーと KL 発散 (カルバック-ライブラー発散) を最小限に抑えることです。ここで、再構成誤差は入力xxを測定します。xと再構成された入力x ^ \hat xバツ^違いに応じて、損失関数として平均二乗誤差 (MSE) またはクロス エントロピー (クロス エントロピー) を使用できます。KL 発散は、エンコーダーによって学習された基礎となる分布と事前の分布 (通常は標準正規分布) の間の差異を測定します。したがって、総損失関数は次のように記述できます。

L = MSE ( x , x ^ ) + DKL ( p θ ( z ∣ x ) ∣ ∣ p ( z ) ) L = \text{MSE}(x, \hat x) + D_{KL}(p_{\theta }(z|x)||p(z))L=MSE ( x ,バツ^ )+DKL _( p( z x ) ∣∣ p ( z ))

上の式では、DKL D_{KL}DKL _KL 発散、p θ ( z ∣ x ) p_{\theta}(z|x) を表します。p( z x ) は、エンコーダーによって学習されたポテンシャル分布p ( z ) p(z)p ( z )は事前分布です。通常、KL 発散は次の形式になります。

DKL ( p θ ( z ∣ x ) ∣ ∣ p ( z ) ) = 1 2 ∑ ( 1 + σ i − ( mi ) 2 − exp ⁡ ( σ i ) ) D_{KL}(p_{\theta}(z |x)||p(z)) = \frac{1}{2}\sum (1+\sigma_i-(m_i)^2-\exp(\sigma_i))DKL _( p( z x ) ∣∣ p ( z ))=21( 1+p私は( m私は)2exp ( p私は))

再構成誤差と KL 発散を最小限に抑えることで、VAE は潜在空間の分布を事前に設定された事前分布 (通常は標準正規分布) に近づけながら、入力データを再構成できる入力データを生成できます。これは、デコーダが潜在空間から新しい意味のあるサンプルを生成するのに役立ちます。

応用

VAE がデータを生成するとき、デコーダー部分と以前の配布からのzzのみを使用します。zをサンプリングします。デコーダは潜在空間からベクトルzz を入力し、対応するデータを生成します。VAE では、この潜在空間は通常、既知の分布 (通常はガウス分布) に近似するようにトレーニングされます。これは、この既知の分布からサンプルを抽出してデコーダに渡すだけで、新しいデータを生成できることを意味します。

z 〜 p ( z ), x ^ = h ϕ ( z ) z \sim p(z),\ \hat x = h_{\phi}(z)zp ( z )  バツ^=hϕ( z )

標準的な VAE では、再構成誤差 (平均二乗誤差やクロス エントロピーなど) を使用して入力データxxを評価します。xと再構成されたデータx ^ \hat xバツ^類似点。ただし、この評価方法では、特に画像などの高次元データの場合、データの複雑さをすべて完全に把握できない場合があります。

VAE-GAN モデルでは、VAE のエンコーダーとデコーダーを保持しますが、GAN の識別子を使用して従来の再構成エラーを置き換えます。具体的には、ディスクリミネーターの目的は、事前分布からのサンプルとエンコーダーによって生成されたサンプルを区別することです。これにより、VAE-GAN は効果的な潜在空間表現を学習できるだけでなく、高次元の複雑なデータを扱う場合でも高品質のサンプルを生成することができます。

おすすめ

転載: blog.csdn.net/weixin_45427144/article/details/131097883