深層学習

オートエンコーダ

入力を低次元の表現へ写してから再構成し、復元に必要な特徴を学習する決定的なニューラルネットワークです。

  • B|標準
  • 深層学習

数式の記号で止まったら 記号の読み方 (∂・⊙・転置・上付き添字を、読み方から)

ひとことで言うと

オートエンコーダは、入力 x\mathbf{x} をエンコーダでコード h\mathbf{h} にし、デコーダで x^\hat{\mathbf{x}} に戻すネットワークです。教師ラベルではなく、入力自身を再構成先にして表現を学びます。

長い設計図を、要点だけのメモに圧縮してから元の設計図を描き直す作業です。メモの容量を制限すれば、細部を丸写しできず、復元に効く構造が残ります。

なぜ必要か

入力と同じ次元の出力を、十分に大きなネットワークへ学習させるだけなら、恒等写像を覚えて終わります。したがって目的はコピーの成功ではなく、コピーを難しくした条件のもとで、データに繰り返し現れる特徴をコードへ押し込むことです。低次元コードなら次元削減や特徴抽出に使えます。

ボトルネックが入力より狭いと、失われた情報を復元するために相関や構造を利用します。線形層だけで二乗誤差を最小化する場合、得られる部分空間は主成分分析(PCA)が張る空間と一致します。非線形層を使う価値は、直線的な部分空間では表しにくい構造を扱える点にあります。

制約通過できる情報観察するもの
なしほぼ全入力恒等写像になっていないか
狭いコード再構成に必要な構造圧縮された特徴

仕組み

エンコーダを ff、デコーダを gg、入力を x\mathbf{x}、コードを h\mathbf{h}、再構成を x^\hat{\mathbf{x}} とすると、

h=f(x),x^=g(h)=g(f(x))\mathbf{h}=f(\mathbf{x}),\qquad \hat{\mathbf{x}}=g(\mathbf{h})=g(f(\mathbf{x}))

学習では再構成誤差を最小化します。θ\theta はエンコーダとデコーダの全パラメータ、nn は入力の個数です。

L(θ)=1n∑i=1nℓ(x(i),x^(i))\mathcal{L}(\theta)=\frac{1}{n}\sum_{i=1}^{n}\ell\left(\mathbf{x}^{(i)},\hat{\mathbf{x}}^{(i)}\right)

実装では順伝播で h\mathbf{h} と x^\hat{\mathbf{x}} を計算し、誤差を逆伝播して更新します。ノイズ除去型は入力だけを壊し、損失の正解には元の x\mathbf{x} を置きます。これによりノイズの丸写しではなく、壊れていないデータの規則性から復元することを強制します。スパース型はコードの多くをゼロに近づける罰則を加え、狭いボトルネックがなくても同時に発火する特徴を少数へ制限します。

条件強制されること主な狙い
低次元コード情報を圧縮する次元削減・特徴抽出
入力へのノイズ元データを復元するノイズに頑健な表現
スパース罰則コードをまばらにする選択的な特徴表現

試験でどう問われるか

問われ方正解に寄る条件引っかけ
学習の正解データ入力自身、またはノイズを加える前の入力別クラスのラベルを使う
ボトルネックの役割恒等写像を避け、情報を圧縮させる広い層なら必ず有用な特徴になる
線形・二乗誤差PCAの主成分空間に一致する非線形AEとPCAを常に同一視する
生成モデルか決定的AEは入力の再構成が目的コードから新しい標本を直接生成できる

実装で確かめる

NumPyで、2次元データを1次元へ圧縮して線形に再構成します。更新するのは再構成誤差だけで、ラベルは使いません。

import numpy as np
rng = np.random.default_rng(0)
x = rng.normal(size=(32, 2)); x[:, 1] = x[:, 0] * 0.8 + rng.normal(size=32) * 0.1
W = rng.normal(size=(2, 1)) * 0.1
for _ in range(300):
    h = x @ W; y = h @ W.T
    grad = (2 / x.shape[0]) * x.T @ (y - x) @ W
    W -= 0.05 * grad
print(np.mean((x - (x @ W) @ W.T) ** 2) < 0.1)

取り違えやすいもの

用語オートエンコーダとの切り分け
PCA線形AE・二乗誤差の解釈に現れるが、非線形AEまで同じではない
ノイズ除去型AE入力を壊し、元の入力を再構成先にするAEの学習形態
スパースAEコードの発火を罰則で制限するAEの学習形態
VAE潜在変数を確率分布として扱う別系統。決定的AEの再構成とは目的と仕組みが異なる
GAN生成器と識別器の対戦で生成を学ぶ。再構成誤差だけで学ぶAEではない

想起チェック

オートエンコーダの学習で、通常の教師ラベルの代わりに何を正解にするか

入力自身を再構成先にします。ノイズ除去型では、壊す前の入力を正解にします。

ボトルネックが必要な理由は何か

入力をそのまま通す恒等写像を避け、復元に必要な特徴を圧縮して学ばせるためです。

線形AEとPCAの関係、決定的AEとVAEの違いは何か

線形・二乗誤差のAEはPCAの主成分空間を張ります。決定的AEは入力を決まったコードへ写しますが、VAEは潜在変数の確率分布を扱います。

出典