【AI描画学習記】変分オートエンコーダVAE

教師なし学習VAE - 変分オートエンコーダ
機械学習手法の詳細解説 - エレガントモデル(1):変分オートエンコーダ(VAE)

言うまでもなく、この 2 つの記事を読んでください。この記事は主にこの記事や他の動画を見て理解できなかった解釈をまとめたものです。


こっち見て、こっち見て!

序文を読んでいない人がいる場合に備えて、もう一度繰り返して次の 2 つの記事を読みます:教師なし学習のための VAE -
機械学習手法の詳細を説明する変分オートエンコーダー - エレガントなモデル (1): 変分オートエンコーダー (VAE)


いくつかの用語の説明

NNとはニューラルネットワークの略称です。

潜在コードは潜在コーディングに変換できます

dim は次元を表します 次元

PCA は主成分分析であり、これらの 2 次元削減手法は PCA と SVD の記事で紹介されています。

Convとはコンボリューションconvolutionの略です

BN はバッチ正規化です。ニューラル ネットワークでは、入力と出力の同じ分布を維持するために正規化を使用する必要があります。バッチ正規化では、確率的勾配降下法のためにデータを小さなバッチに分割し、データの各バッチが順方向に渡されると、各バッチがのデータが転送され、各層で正規化処理が行われます。標準化のために、各全結合層と励起層の間に BN 層を接続する必要があります。

ここに画像の説明を挿入します

RBM は制限付きボルツマン マシンであり、RBM の構造は可視層と隠れ層の 2 層のみです。構造的な観点から見ると、RBM は 2 層ニューラル ネットワークに非常に似ていますが、ニューラル ネットワークとの違いは、RBM にはバックプロパゲーションがあるだけでなく、明示層と隠れ層が相互作用して伝播することです。同時に、RBM の値はバイナリです。つまり、各要素には 0 または 1 の 2 つの値しかありません。図1に示すように、

ロバストネス、私もこの翻訳に酔っていますが、堅牢性(耐性)とも訳せますが、これはシステムが内部構造に障害を与えた場合に、外部からの干渉に耐える能力を維持する能力を指します。つまり安定の強さ。

ボトルは非常に興味深い概念です。同様に、AE ネットワーク全体を花瓶 (形状) として見ることができ、以下に示すように、中央の最も薄い潜在空間部分を花瓶のボトルネック (ボトルネック) と呼びます。
ここに画像の説明を挿入します


潜在的なコーディング

参考:潜在コードをすぐに理解する 深層学習における潜在コーディング(潜在空間)
機械学習における潜在空間を理解する

潜在エンコーディングとは何ですか? 潜在エンコーディングは、より少ない情報でデータの本質を表現することを目的として、次元を削減またはデータを圧縮する方法として理解できます。例えば、カーネル関数を使った際に、高次元化手法としてカーネル手法を挙げましたが、その本質は、非線形原空間の特徴点をカーネル関数の変換によって高次元の特徴空間に送り込むことであり、新たに得られたこの高次元空間は、ポテンシャル空間としても捉えることができます。AE の例では、潜在空間は元の空間を次元削減した空間であり、エンコーダ変換を通じて潜在エンコーディングを取得します。
ここに画像の説明を挿入します
上の図は単純なエンコーダ/デコーダ アーキテクチャであり、ネットワーク全体を花瓶に見立てた場合、最も小さな部分がボトルネックと呼ばれます。次元を削減する場合、これは非可逆圧縮の一種であると考えられますが、損失がノイズや無駄な情報である場合は、それが好まれます (情報圧縮の目的が達成されるため)

エンコーダによる圧縮後、より重要なのは復元であり、復元できるものだけが正常に圧縮されていると信じるべきであり、この潜在空間表現が入力画像の最も重要な情報を実際に表現していると考えることができます。
ここに画像の説明を挿入します

ただし、原理的には、AE は圧縮可能なカップに似ており、エンコーダを介して潜在空間に平坦化されて潜在コードが取得され、デコーダを介して再構成された画像に展開されます。得られる量はそれほど大きくありません。得られた結果が元の結果と類似している場合、特に他の画像を取得したい場合、AE 自体は生成モデルとしては適していません。

同様の潜在コード

ここに画像の説明を挿入します

ニューラル ネットワークが椅子と椅子などの同じ種類をどのように定義するかを理解する必要があります。上の写真の黄色い椅子と黒い椅子は、認知的定義では同じ種類ですが、ネットワーク内の特徴によって表される場合、黄色の椅子に含まれる機能: {椅子の一部の機能、パーソナライズされた機能、黄色}。黒い椅子の特徴: {椅子のいくつかの特徴、個性的な特徴、黒}。特徴空間内で、特徴が空間内の点として分布している場合、黄色の椅子と黒い椅子の特徴分布の類似性はそれほど高くないと想像してください (色、形状、構造、その他の個人化された特徴が影響を与えることも含まれます)。 2 つの分布) の近似度)。たとえば、潜在空間を圧縮して、個人化された特徴を削除し、「椅子の一部の特徴」のみを保持すると、潜在空間内の 2 つの椅子の特徴分布は非常に似ているため、ネットワークはこれら 2 つの椅子を考慮します。もちろん同じ種類です。

エッジや角度などのパターンを学習することで、これらすべてをモデルが「理解」することができます。説明したように、そのような特徴はデータの潜在空間表現にラップされます。したがって、次元が減少するにつれて、各画像とは異なる「外部」情報 (つまり、椅子の色) が潜在空間表現から「削除」されます。これは、各画像の最も重要な特徴のみが潜在空間に保存されるためです。スペース、空間表現。その結果、サイズを小さくすると、2 つの椅子の表現が不明確になり、より類似したものになります。宇宙でそれらを想像すると、それらは互いに「接近」するでしょう。

したがって、2 つの画像ピクセル間のユークリッド距離を大雑把に直接計算するよりも、潜在空間を見つけることが学習における重要なステップとなります。

削除された機能が多すぎると、結局のところ、誰もが 4 本の脚を持っているため、ネットワークは椅子とテーブルが同じ種類であると考えるかもしれません。

潜在空間補間

同じ種類のものは空間でも似ています。たとえば、2 つの椅子のベクトルは [0.1,0.1] と [0.12,0.12] です。この 2 つがネットワークに入力された場合、生成されるものは当然椅子になります。入力は [0.11,0.11] 毛織物? もちろん椅子でもあるので補間です。つまり、対応する区間で潜在コードが取得されれば、最終的な復号結果は当然ながら望ましい結果に近似することになります。以下の図は、補間の効果を示しています (水平補間と垂直補間の両方で結果が異なります)。潜在空間で補間し、モデル デコーダを使用して潜在空間表現を 2 次元画像に再構築し、元の入力と比較できます。 . 同じ寸法で異なる顔の構造を生成します同じタイプの補間は似ていますが、わずかな違いがあることがわかります。最も単純なアプリケーションは、データセットを拡張するためのデータ拡張として使用することです。

ここに画像の説明を挿入します
ここに画像の説明を挿入します
(上の写真は、VAE でトレーニングされたポケモンの画像です。中央の補間の一部が実際のポケモンのように見えることがわかりました。これは、私たちが期待していた生成結果です)

下の図は、2 つの椅子の間の線形補間の効果を示しています。補間が変化すると、最終的に生成される結果は線形変化効果を示すことがわかります。

ここに画像の説明を挿入します


混合ガウス

ここに画像の説明を挿入します

畳み込みネットワークの前文でフーリエ変換について話したときに、信号に関する知識について触れました。信号は、さまざまな周波数、振幅、位相の正弦波を重ね合わせたものに分解できます。同様に、混合モデルの全体的な分布は複数の部分分布モデルの重ね合わせに分解できるため、複数の正規分布の重ね合わせを使用して任意の分布を近似できます。
ここに画像の説明を挿入します


AEの層数を増やす

ここに画像の説明を挿入します
上の図は元の記事に掲載されています. 上半分の右側に示されているモデルは元の単層 AE を表しています. 効果があまり良くないことがわかります. AE はまず 784 ピクセルの入力を 1 つのレイヤーに圧縮します30 ピクセルの潜在コードをデコーダーを使用して 784 ピクセルに再構築します。学習に 1 つの隠れ層のみを使用するため、出力結果は非常にぼやけており、効果は明ら​​かに非常に悪いです。

下段はレイヤー数を増やしたDeep AEで、784ピクセルから1000ピクセルに広げるなど幅を広くし、隠しレイヤーを複数追加するなど奥行きを増しています。元の記事の一文は、ニューラル ネットワークの深さと幅を増やすことの利点の概要を示しています。ネットワークが深くなるほど、より抽象的な高レベルの意味論的特徴を学習できるようになり、ネットワークが広くなるほど、各層の隠れ層はより豊富な特徴表現を学習できるようになります。したがって、最終的な出力結果は入力結果よりも鮮明に見え、効果が非常に優れていることがわかります。上部左側の Deep AE は、元の画像を処理した後の MNIST 結果でもこの点を証明しています。


AEの限界

上記では、AE を使用して PCA よりも明確なオートエンコーダー モデルを構築しましたが、これは真の生成モデルではありません。特定の生成モデルの場合、通常は次の 2 つの点を満たす必要があります。

(1) エンコーダーとデコーダーは独立して分割できます (GAN のジェネレーターとディスクリミネーターに似ています)。

(2) 固定次元でサンプリングされたコードは、デコーダを通じて鮮明で現実的な画像を生成できる必要があります。

では、なぜ AE は生成モデルではないと言えるのでしょうか? 2 番目の点を例に挙げてみましょう. 以下の図に示すように、AE を訓練するために満月チャートと半月チャートを使用します。 , モデルはこの画像を非常にうまく復元できます。2 枚の写真。次に、潜在コードの中央にある点、つまり 2 つの画像の符号化点の中央にある点を選択し、この点を復号化のためにデコーダに渡します。満月の写真と半月の写真(例:影の部分が3/4を占める)。しかし、ここで実際にデコードしてみると、AEで復元した画像はぼやけているだけでなく文字化けしていることがわかります。

ここに画像の説明を挿入します
(AE が満月画像と半月画像を復元できると仮定すると、直感によれば、上の画像の左側のコード ポイントが満月画像をデコードでき、右側のコード ポイントが半月画像をデコードできます。月の画像、その中から選択した任意のコードポイント(満月から半月の間の月をデコードできますが、実際はそうではありません。AEで復元した画像はぼやけているだけでなく、文字化けしています)

なぜこのようなことが起こるのでしょうか? 直感的な説明としては、AE のエンコーダとデコーダの両方が DNN (ディープ ニューラル ネットワーク) を使用しているということです。このニューラル ネットワークが線形変換であれば、上記の直感的な判断が可能ですが、すべてのニューラル ネットワークが線形変換であるわけではありません (これについては、次のセクションで説明しています)。前の記事では、すべての隠れ層が線形変換である場合、単層ニューラル ネットワークと多層ニューラル ネットワークの間に本質的な違いはありません)、DNN は非線形変換プロセスであるため、潜在的な点間の変換潜在空間では、従うべきルールがないことがよくあります。

この問題を解決するにはどうすればよいでしょうか? 1 つのアイデアは、ノイズを導入して画像のコーディング領域を拡大し、歪んだ空白のコーディング領域をカバーできるようにすることです。実際、端的に言えば、入力の多様性を高めることで出力の堅牢性を高めることです入力画像をエンコードする前に少しノイズを導入すると、各画像のエンコード ポイントが緑色の矢印の範囲内に表示されるため、結果として得られる潜在空間はより多くのエンコード ポイントをカバーできるようになります。現時点では、以下に示すように、中間点から抽出および復元して、希望する出力を取得できます。

ここに画像の説明を挿入します

ノイズを追加するとこのような効果が得られるのは、ノイズによって潜在空間がより多くの領域をカバーできるようになりますが、カバーされていない場所がまだ多くあるためです。たとえば、上の図の右側の黄色の部分はカバーされていません。遠いのでカバーします。にエンコードされます。したがって、各入力サンプルのエンコードがエンコード空間全体をカバーできるように、より多くのノイズを使用することを試みることはできますか? ただし、ここで確認する必要があるのは、ソース コードに近いコードには高い確率値を与え、元のコード ポイントから遠く離れたコードには低い確率値を与える必要があるということです。はい、一般に、元の単一点をコーディング空間全体に拡張したいと考えています。つまり、以下に示すように、離散コーディング ポイントを正規分布に近い連続コーディング曲線に拡張します。

ここに画像の説明を挿入します
AE にノイズを付加するモデルはVAE 変分オートエンコーダと呼ばれます。VAE におけるノイズと潜在空間の関係は、ノイズが入力データに追加され、入力データがエンコーダーによって潜在空間表現にマッピングされることです。次に、デコーダはこの潜在空間表現を使用して出力データを生成します。つまり、ノイズを追加すると、潜在空間がより大きなコーディング空間をカバーできるようになり、コードの途中で補間して、新しく生成された結果を取得できるようになります。コード上の分布は、正規分布の混合ガウスとみなすこともできます。異なる結果の間。


VAEモデルのアーキテクチャ

ここに画像の説明を挿入します

上でも紹介したように、VAE は元の AE 構造に基づいてエンコードに適切なノイズを追加します。まず、入力を NN エンコーダに入力し、2 セットのコードを計算します。1 セットのコードは平均コードですmmm、他のグループはノイズ干渉の程度を制御する分散コードσ \sigmaσ、分散エンコーディングσ \sigmaσは主にノイズをエンコードするために使用されますz = (e 1, e 2, e 3) z=(e_1,e_2,e_3)z=( e1e2e3NN の重みを非負にするためには、 σ \sigma も必要ですσ はe 指数演算を実行し、ci = exp (σ i) × ei + mi c_i=exp(\sigma_i)×e_i+m_i をc私は=e x p ( p私は×e私は+メートル私は最終的に、この損失関数 c を追加する必要があり、最終結果では損失関数 c と再構成誤差が最小限に抑えられる必要があります。
ここに画像の説明を挿入します

最後に、元のコード m と重み付け分配後のノイズ コードを重ね合わせて新しい潜在コードを取得し、NN Decoder に送信します。この損失がどのように得られるかについては説明しないで、その機能を見てみましょう。

この損失関数が追加されない場合、モデルによって生成される画像の品質がより高くなるようにするため (再構築誤差を最小限に抑えるため)、エンコーダは、生成する画像へのノイズの干渉が最小限になることを確実に期待します。ノイズの重みは低いほど良いです。制約が課されていない場合、ネットワークは分散エンコーディングを負の無限大に近い値、σ → − ∞ 、次に e σ → 0 \sigma \to -\infty、そして e^{\sigma}\to に設定するだけで済みます。 0pそれから、ep0結果として、ハンマー VAE は非常によく訓練されていることがわかりますが、生成される画像は非常に貧弱であることがよくあります。

後ろ向きに考えた後、正面から理解しましょう。この補助損失を追加することがなぜ役立つのでしょうか? 式の求め方については後述します。ここで、上記の式に従ってσ \sigmaを計算します。σを導関数するとc = e σ − 1 c=e^{\sigma}-1c=ep1 の場合、0 に等しいとします。 σ = 0のとき \sigma=0 であることがわかります。p=最小値は0で取得されるため、分散エンコーディングがチートのように負の無限大に達することを制限できます。これは、正則化制約の役割を果たすのと同等です。

ここに画像の説明を挿入します
青い線はe σ e^{\sigma}を表しますeσ、赤い線は( 1 + σ ) (1+\sigma)( 1+σ )、青い線から赤い線を引いて緑の線e σ − ( 1 + σ ) e^{\sigma}-(1+\sigma) をep( 1+σ )、最小値がノイズ パラメーターσ \sigmaσが 0 の場合σ \sigmaσ が負の無限大に向かう傾向があるため、代わりに損失値が増加するため、モデルに対するノイズ パラメーターの最小化の影響が制限されます。

元の記事に示されている例が非常に興味深いので書き直します: 高得点を取得したいだけの場合は、問題の知識ポイントの難易度係数 (ノイズ パラメーター) を非常に低く下げるだけで済みます。は無限小ですが、そうではありません 難易度を満たす試験は教師が望んでいることではないので、質問教師 (損失関数) が必要です。難易度係数が低くても問題ありません。私の問題作成者は、難易度の低い係数を直接使用して、計算量の多い問題を作成します。その問題は難しいものではありませんか? 試験(オンライン)の難易度が常にオンラインであることを保証するために、それはあなたをうんざりさせるでしょう。

ここに画像の説明を挿入します
VAE を選択して、潜在空間で得られたコードの確率混合分布を見てみましょう。非常に興味深い現象が見つかります。最高点では、上の写真のフシギダネのような実際のポケモンの出力が得られます。リザードンなど、低い点には、あまり良くないぼやけた生成画像がいくつかあります。補間でいくつかの高い点を見つけることができれば、実際のポケモンの画像を生成できます。


VAEの原則

ここに画像の説明を挿入します
(元の記事はここではあまり明確ではありません。ここでいくつかの拡張を加えたいと思います)
以前に混合ガウスについて話したときに、任意の分布は n 個の正規分布の混合によって近似できると述べたので、標準正規分布 zz からサンプリングしてみましょz を加えて混ぜます。しかし、実際には、単にいくつかの正規分布を取るのではなく、上の図に示すように、対応するサンプリング点によって与えられるガウス分布が実際には非正規であることがわかり、μ を取得するにはそれを NN に与える必要があります。 ( z ) とσ ( z ) \mu(z) と \sigma(z)μ ( z )σ ( z )

この手法はリサンプリング手法と呼ばれ、この手法が使用される理由はzzの問題を解決するためです。zは潜在変数問題です。なぜなら、正規分布の式を直接使用すると、ガウス分布に従うz 〜 N ( μ , σ 2 ) , z \sim N(\mu ,\sigma^2) をzN ( μ ,p2 )1 つは積分の計算が難しいこと、もう 1 つは明示的な関数関係を書くことができないことです。明示的な関数関係が書けない場合、バックプロパゲーションは実行できません。したがって、まず正規分布z ' 〜 N ( 0 , I ) z' \sim N(0,I) をzN ( 0 ,I),然后将 z = μ + σ z ′ z=\mu+\sigma z' z=メートル+σz_ _ _ そうすれば、z は関数を明示的に書くことができます。μ \muμσ \sigmaσ がパラメータzzzが出力、z ' z'z'が入力されると、ニューラル ネットワークを通じてこのzzを学習できますz 、その効果は N (μ, σ) N(\mu,\sigma)から直接描画するのと同等です。N ( μ ,zzはσからサンプリングされます)z上記のNNに対応するのはzzzサンプリング正規分布は、2 つのガウス分布 \mu(z),\sigma(z) のパラメーター μ ( z ) 、 σ ( z ) を直接出力します。m ( z ) σ ( z )
ここに画像の説明を挿入します
上記の確率的グラフィカル モデルを与えることができます。ここで、zzzは正規分布を満たすサンプリング点です (例:z 1 , z 2 . . . zn z_1,z_2...z_n)z1z2... zすべて正規分布を満たします)、X はサンプリングに基づいて決定したガウス分布を表します、θ \thetaθ はガウス分布のパラメータ μ を表しますメートルσリピートNN_混合ガウス分布はN回得られます。

ここに画像の説明を挿入します
混合ガウス分布が 2 値正規分布として表現されている右側の等高線プロットを見てみましょう. サンプルの分布が 2 つのガウス分布c 1 , c 2 c_1,c_2に分割できることが明確にわかります。c1c2赤い点のサンプルに注目してください。この点はc 1 c_1に従っているとみなすことができます。c1分布はc 2 c_2に従うとみなすこともできますc2分布していますが、確率の観点からはc 1 c_1に従います。c1確率はさらに高くなります。より良い表現方法はx 〜 zx \sim zです。バツz、z の確率密度は、x がこれらの分布に従う確率を表すことができます。混合ガウス分布は、複数のガウス分布の加重平均である必要があります。

ここに画像の説明を挿入します

VAE モデルの構造に戻ると、この構造では、データ セットがランダムなプロセスによって生成されると考えることができますzは、このランダムなプロセスでは観察できない隠れ変数です。データを生成するこの確率的プロセスは、次の 2 つのステップで構成されます。

1. 事前分布p ( z ) p(z)からp ( z )でサンプリングすると、zi z_iz私は
2.根据 z i z_i z私は、条件付き分布p ( x ∣ zi ) p(x|z_i)よりp ( x z私は)データ点xi x_iバツ私は
(ニューラル ネットワークでは、リサンプリング手法を使用して、対応するガウス分布を計算します)

ここに画像の説明を挿入します

分布 P(X) からmm をランダムにサンプリングします。m 個の離散点、各サンプリング点mi m_iメートル私は、ガウス分布N ( μ m , σ m ) N(\mu^{m},\sigma^{m}) に対応します。N mメートルpm )の場合、多項式分布は次のように表すことができます。

P ( x ) = ∑ m P ( m ) P ( x ∣ m ) = ∫ z P ( z ) P ( x ∣ z ) dz P(x)=\displaystyle\sum_mP(m)P(x|m)= \int_zP(z)P(x|z)dzP ( × )=メートルP ( m ) P ( x m )=zP ( z ) P ( x z ) d z

ここで、m 〜 P ( m ) m \sim P(m)メートルP ( m )x ∣ m 〜 N ( μ m , σ m ) x|m \sim N(\mu^{m},\sigma^{m})x mN mメートルpメートル式の変換から、サンプルの元の離散サンプリング∑ m P ( m ) P ( x ∣ m ) \displaystyle\sum_mP(m)P(x|m) がメートルP ( m ) P ( x m )は、ノイズ z に関して∫ z P ( z ) P ( x ∣ z ) dz \int_zP(z)P(x|z)dz にzP ( z ) P ( x z ) d z以下の図に対応します。
ここに画像の説明を挿入します

以上の操作により、歪み領域が多い元の離散符号化方式を連続的で効率的な符号化方式に変換することができます。ここでP ( x ) P(x)P ( x )は既知の変数、P ( x ∣ z ) P(x|z)x ∣ z〜 N ( μ ( z ) , σ ( z ) ) x|z \sim N(\mu(z),\sigma(z)) であるため、P ( x ∣ z ) は未知変数ですx zN ( μ ( z ) ) σ ( z ))なので、問題はμ \muμσ \sigmaσの式

ここに画像の説明を挿入します
ここに画像の説明を挿入します

デコーダのアーキテクチャを拡大してみましょう。正規分布からサンプリングされたz z_iをデコーダに入力します。z私は実際、θ \thetaまでに次のようになることを願っています。θパラメータ化されたデコーダは、マッピングを学習してzi z_iz私は対応する X 分布、つまりp θ ( X ∣ zi ) p_{\theta}(X|z_i)p( X z私は


式の導出

ここに画像の説明を挿入します


上記の証明プロセスはエンコーダーの導出部分で与えられ、次のような詳細を追加できます。
log P ( x ) = log P ( x ) × 1 = log P ( x ) ∫ zq ( z ∣ x ) dz logP(x)=logP(x)×1=logP(x)\int_zq(z|x)dzl o g P ( x )=l o g P ( x )×1=l o g P ( x )zq ( z x ) d zlog P ( x ) logP(x)l o g P ( x )zzzは独立しているため、
= ∫ zq ( z ∣ x ) log P ( x ) dz =\int_zq(z|x)logP(x)dz=zq ( z x ) l o g P ( x ) d z、そのうちP ( z , x ) P ( z ∣ x ) \frac{P(z,x)}{P(z|x)}P ( z x )P ( z , x )をベイズ公式で求め、次の式が導き出されます。

KL ダイバージェンスの公式を確認します。DKL ( p ∣ ∣ q ) = ∑ i = 1 np ( x ) logp ( x ) q ( x ) D_{KL}(p||q)_=\displaystyle\sum^n_{i=1}p(x )log\frac{p(x)}{q(x)}DKL _( p ∣∣ q )=i = 1p ( x )ログ_ _q ( x )p ( x )、右側の部分は KL 発散として表現できます。

別の動画を見てみると次のような式が出ていましたが、上の式と下の式は等価です。

ここに画像の説明を挿入します

上の図では、ポイントが欠落していますdz dzd zとKL発散を省略して希望の形で表現したものですが、最初はこれがどのように変形されるのか戸惑いましたが、後でこの部分についてはすでに話していることが分かりました。

ここに画像の説明を挿入します

つまり、分布の合計形式を、対応する分布の期待値に変換できます。これは簡単な言及ですが、個人的には最初に示された式の方が優れていると思います。

ここで、 log P ( x ) logP(x)を求めます。l o g P ( x )の下限:

log P ( x ) ≥ ∫ zq ( z ∣ x ) log ( P ( x ∣ z ) P ( z ) q ( z ∣ x ) ) dz = L b logP(x) \geq \int_zq(z|x)log (\frac{P(x|z)P(z)}{q(z|x)})dz=L_bl o g P ( x )zq ( z x ) l o g (q ( z x )P ( x z ) P ( z )) dz _=Lb

元の式を取り入れると、次のように書くことができます。log P ( x ) = L b + DKL ( q ( z ∣ x ) ∣ ∣ P ( z ∣ x ) ) logP(x)=L_b+D_{KL}( q(z |x)||P(z|x))l o g P ( x )=Lb+DKL _( q ( z x ) ∣∣ P ( z x ))、つまりP ( x ) P(x)P ( x )は P ( x ∣ z ) P(x|z) を同時に求めるように変換されます。P ( x z )q ( z ∣ x ) q(z|x)q ( z x )の問題については、 log P ( x ) logP(x)を見てみましょう。l o g P ( x )およびL b L_bLb関係:

ここに画像の説明を挿入します

P ( x ) = ∫ z P ( z ) P ( x ∣ z ) dz P(x)=\int_zP(z)P(x|z)dz によるP ( × )=zP ( z ) P ( x z ) d zなので、P ( x ∣ z ) P(x|z)P ( x z )が固定されている場合、 P ( z ) P(z)なので、P ( z )は固定なので、青い線分で log P ( x ) logP(x)l o g P ( x )は定数値です。そして、方程式はlog P ( x ) = KL + L b logP(x)=KL+L_b をl o g P ( x )=KL _+Lbしたがって、最尤度を最大化するためにL b L_bを最大化する必要がある場合Lbそうであれば、 L b L_bによれば、Lbこの式では、q ( z ∣ x ) q(z|x)を最大化する必要があります。q ( z x )、そして最後に右側の結果を取得し、次にL b L_bLbできるだけ大きく、KL はできるだけ小さくします (最大尤度が最小 KL 発散に等しいことにも言及します)。KL 発散がほぼ 0 になるまで、L b = log P ( x ) L_b=logP(x)Lb=l o g P ( x )、最終q ( z ∣ x ) q(z|x)q ( z x )およびP ( z ∣ x ) P(z|x)2 つの分布P ( z x )は完全に類似します。

つまり最尤法を解くM axlog P ( x ) = M ax L b MaxlogP(x)=Max L_b最大ログP ( x ) _ _ _ _=マックスL _ _b、マクロの観点からは、x ∣ z 〜 N ( μ ( z ) , σ ( z ) ) x|z \sim N(\mu(z),\sigma(z))x zN ( μ ( z ) ) σ ( z )),调节P ( x ∣ z ) P(x|z)P ( x z )は NN Decoder を調整するためのもので、逆にz ∣ x ∼ N ( μ ' ( z ) , σ ' ( z ) ) z|x \sim N(\mu^{'}(z ),\ Σ^{'}(z))z xN m' (z)p' (z))、调节q ( z ∣ x ) q(z|x)q ( z x )は NN エンコーダーを調整します。
ここに画像の説明を挿入します

したがって、VAE モデルのアルゴリズムは次のとおりです。デコーダが改善されるたびに、エンコーダはデコーダと一致するように調整され、トレーニング中にデコーダが「前方にのみ移動でき、後方には移動できない」ように強制するために制約が使用されます。

ここに画像の説明を挿入します
Decoder の結果も同じなので、L b = − DKL ( q ( z ∣ x ) ∣ ∣ P ( z ) ) + ∫ zq ( z ∣ x ) log P ( x ∣ z ) dz L_b=-D_{KL (q(z|x)||P(z))+\int_zq(z|x)logP(x|z)dzLb=DKL _( q ( z x ) ∣∣ P ( z ))+zq ( z x ) l o g P ( x z ) d z

右側の方程式の左半分を− A ∗ -A^*と書きます。−A _、右半分はB ∗ B^*B,すなわちL b = − A ∗ + B ∗ L_b=-A^*+B^*Lb=−A _+Bしたがって、MaxL b MaxL_bマックスL _ _bA ∗ A^*を求めるのと同じB ∗ B^*Bの最大値。

ここに画像の説明を挿入します

あ∗あ^*できるだけ小さくしたいので、拡張すると制約損失関数になります。
上記の期待値の意味は次のように表すことができます: 与えられた NN エンコーダー出力q ( z ∣ x ) q(z|x)q ( z x )分布の場合、最大のB ∗ B^*を得るにはB、次にデコーダ Decoder のP ( x ∣ z ) P(x|z)P ( x z )の値はできるだけ大きくする必要があります。分散が考慮されない場合、これは実際には自動エンコーダの損失関数に似ています。

ここに画像の説明を挿入します

(分散を考慮しない場合、全体の構造は実際には AE と同等になります)


制限

ここに画像の説明を挿入します
重要な制限は、VAE が実際には新しいイメージを生成しているのではなく、記憶している既存のイメージを補間しているだけであり、最終的な結果は既存のイメージと非常に似たものになるということです。

VAE は通常の AE モデルよりもはるかに優れていますが、VAE モデルをトレーニングしたことがある人なら誰でも、敵対的学習を直接使用する GAN と比較して生成される画像がぼやけていることを知っています。これは、VAE が直接敵対的学習を使用するためです。生成された画像と元の画像の間の値が異なるため、得られるのは「平均画像」になります。

  1. VAEとAEの違いは何ですか?

(1) AE の隠れ層表現の分布は不明ですが、VAE の隠れ変数は正規分布に従います。

(2) AE で学習されるのは NN エンコーダとデコーダのみですが、VAE では隠れた変数の分布、つまりガウス分布の平均と分散も学習します。

(3) AE は 1 つのサンプル x から対応する再構成 x しか取得できませんが、VAE は隠れ変数 z が従うガウス分布のパラメーターを学習し、新しい z を継続的に生成することができ、それによって新しいサンプル x を生成します。


要約する

VAE は、AE にノイズを導入することで潜在空間のコードを離散区間から連続区間に変換します。これにより、連続区間のコードの補間を取得して、特定のトレーニング結果コード間にいくつかのサンプルを生成できます。これらのサンプルと元の入力の間にはある程度の類似性がありますが、VAE の生成された画像は非常にぼやけており、生成モデルとして直接使用することはできません。

おすすめ

転載: blog.csdn.net/milu_ELK/article/details/129781919