識別関数、識別モデル、生成モデル

識別関数とは、データ x が入力された際に、そのデータが属するクラスの番号を直接出力する関数。
識別関数は 入力空間に識別超平面を引き、その平面によって分類を行う
実装が比較的容易な反面、どれくらい離れているのかがわかりにくい。

識別モデルとは、サンプルデータ x がクラス \(y_k\) に所属している確率 \(p(y_k|x)\) を直接構成するモデル。
つまり、どのくらい確からしいかがわかる。ただし、実装は複雑になる。

生成モデルとは観測データの分布を確率分布として観測データから推定するモデル。
識別モデルと同様に、条件付き確率 \(p(y_k|x)\) を予測するが、その方法が異なる。
学習によって取得した確率分布に従って、サンプルの生成が可能になる。

例としては、

\[p(y|x) = \frac{p(x, y)}{p(x)} = \frac{p(x|y)p(y)}{p(x)}\]

で、識別モデルでは左辺を予測したが、生成モデルでは右辺を予測する。
p(x) は p(y|x) の最終出力には寄与しないので、 \(y = argmax_y p(x|y)p(y)\) を求める。

また、上の式を変形すると、

\(p(y|x)p(x) = p(x, y)\) となり、これは x と y の同時分布を計算していることになる。

GAN (Generative Adversarial Network)

  • 生成器と識別器が存在する。
  • 生成器は本物に近い画像を生成できるよう学習する。識別器は本物と偽物を区別できるように学習する。

GAN の目的関数は下の式。

\[min_G max_D V(G, D) = E_(x∼p_{data})[logD(x)]+E_(x∼p_z)[log(1 - D(G(z)))]\]

前項は識別器が本物を見分ける能力。
G(z) は生成器が偽物を生成する能力なので、 D(G(z)) は偽物を本物と勘違いする確率。
つまり、 1-D(G(z)) は偽物を偽物と見抜く能力と考えられる。

この目的関数において、まずは識別器の D を最大化するよう学習し、偽物を本物とするように G に関して最小化するよう学習する。

学習が進み、生成器と識別器のそれぞれが理想的な性能を有するようになった場合、生成器の生成するデータ分布と訓練データの分布が一致するため、 0.5 に収束する。

conditional GAN

通常の GAN では、どのようなデータが出力されるかをコントロールできない。
そこで conditional GAN では生成するデータのクラス(例えば犬の画像を狙って生成するなど)を明示的にするために、訓練時に教師データのクラスラベルをGeneratorとDiscriminatorに入力する。

pix2pix

Neural Style Transferと呼ばれる深層学習による画風スタイル変換(以後単にスタイル変換とします)が普及している。
スタイル変換を適用すると、風景写真を油絵のような絵画に変換できる。
スタイル変換を実行する手法として、入力画像と変換を行う際に真似るスタイル画像の間で特徴量を混ぜる手法の他に、画像変換によって実行する手法がある。
画像変換では、風景写真から油絵風の変換や白黒画像からカラー画像への変換などを深層学習モデルに入力画像と対象のスタイル画像をペアとした訓練データを用いて画像間の変換を学習する。
この画像変換を実行する手法として、Conditional GAN(条件付きGAN)を応用したpix2pixと呼ばれる手法がある。

pix2pixでは、実際に画像変換を担う U-Net を用いた Generator と、Generator によって変換された画像なのか、真値の画像なのかを識別する Discriminator によって成り立つ。
Discriminatorは Patch GAN と呼ばれるある画像の一定範囲ごとに識別を実行する仕組みを取り入れている。
pix2pixの学習は、GANのように敵対的な損失関数と変換された画像の画素値と真値の画素値の差を最小にする回帰の最適化を行う。
Discriminatorを適用する効果(損失関数に含める効果)は、単に画素値の回帰では平均的な画素値に変換すると損失関数の値が下がる傾向があるが、それを回避する効果がある。
Discriminatorによって、真値と変換した画像を比較して、画像として整合性が取れているかのような評価ができる。

pix2pix では、 Conditional GAN の目的関数に L1 ノルムを追加することで、画像の大域的な情報を捉えられるようになり、より違和感のない画像を生成できるようになった。

pix2pix は、 ConditionalGAN の方法を用いて、画像のスタイル変換を行う。
例えばエッジ(のみを描いたスケッチ)からカラー写真への変換タスクを学習する場合、エッジの画像を条件として生成器、識別器にそれぞれ与えるという動作になる。
また、 U-Net を生成器に用いる。
U-Net では、スキップ接続を用いてエンコーダの情報をデコーダへ渡し、連結するため、白黒画像からカラー画像への変換タスクでは、生成器において、入出力画像間でエッジの位置を共有するという処理をおこなう。

自己符号化器(Autoencoder)

autoencoder の中間表現の次元は、通常、入力 x よりも小さくする。
autoencoder でもペナルティ項 \(\lambda \sum ||\nabla_x h_i||^2\) を与えることで入力のわずかな違いの影響を受けにくくなる。

変分自己符号化器(Variational Autoencoder、VAE)

VAE は、深層学習とベイズ推論を組み合わせた一種の生成モデル。
従来の自己符号化器(Autoencoder)は入力データを低次元の潜在空間にエンコード(符号化)し、その後デコード(復号化)することで元のデータを再構成します。目標は、エンコードとデコードを通じて元の入力をできるだけ正確に再現することだった。
この過程を通じて、モデルはデータの重要な特徴を捉える能力を獲得する。

VAE はこの概念をさらに進め、潜在空間における確率的表現を学習する。
つまり、VAEは各データポイントを特定の潜在ベクトルにエンコードするのではなく、潜在ベクトルが従う確率分布(通常はガウス分布)のパラメータを推定する。

そのため、VAEはデータの生成モデルとして使用できる。
新たなデータポイントを生成するために、まず潜在空間からランダムなベクトル(ガウス分布からのサンプリング)を選び、それをデコーダに渡して新たなデータを生成する。
サンプリングしたものを隠れ変数と呼ばれる。 \(z~N(\mu, \sigma^2)\)
隠れ変数はそのままだと正常に学習できないので、以下のように近似する。

\[z = \mu + \varepsilon \sigma\]

また、VAEは損失関数として再構成損失とKLダイバージェンスという2つの項を考慮する。

\[L = -E_{z~p(z|x)}[log p(x|z)] + \text{KL}(q_{\phi}(z|x) || p(z))\]

第一項の再構成損失は入力データとデコードされたデータ(再構築データ)との間の誤差を示すもの。
一方、第二項は KL ダイバージェンスは学習した確率分布と事前分布(通常は標準正規分布)との間の差を計測する。
これが非負の正則化項になり、エンコーダが出力する潜在変数 z の分布を z のモデル分布に近づける。 VAEは、画像生成、テキスト生成、推薦システム、画像の欠損値補完など、様々な応用がある。

VQ-VAE (Vector Quantized Variational Autoencoder)

VQ-VAE は、離散的な潜在表現を学習するための変分自己符号化器 (VAE) の一種。
VQ-VAEは、連続的な潜在空間を持つ従来のVAEとは異なり、離散的な潜在空間を持つことが特徴。
VQ-VAEはエンコーダ、デコーダ、および量子化層 (VQレイヤ) の3つの主要なコンポーネントから成り立っている。

エンコーダは入力データ(例えば画像や音声など)を潜在空間の連続的な表現にマッピングする。これは一般的なVAEのエンコーダと同様です。
次に、この連続的な表現は、VQレイヤによって離散的な表現にマッピングされます。VQレイヤは、予め定義された数の離散的なベクトル(コードブックとも呼ばれます)から最も近いベクトルを選び出し、それを該当する連続的な表現の代替とします。
最後に、デコーダはこの離散的な表現を元の入力データの再構成にマッピングします。

VQ-VAEは、潜在空間の表現を離散的に符号化する。
さらに、離散的な符号化は、生成の際に自己回帰モデル(例えば、Transformerモデル)と組み合わせて使用されることが多い。

VQ-VAEの主な利点の一つは、離散的な潜在空間を使用することによる生成モデルの改善。
これにより、例えば自然言語処理のように、本質的に離散的なデータを扱う際に特に有用。
また、高品質の画像や音声の生成にも成功している。 さらに高度な応用例としては、VQ-VAE-2やGPT-3と組み合わせたDALL-Eなどがある。
これらはVQ-VAEの能力を利用して、テキストの説明から画像を生成したり、新しいクリエイティブなアートワークを生成したりすることが可能。