オートエンコーダ(Autoencoder)による次元削減

1. オートエンコーダ(autoencoder)とは [概要]

オートエンコーダ(Autoencoder)とは,画像データベクトルの「教師なし次元削減」をニューラルネットワークの学習を通じて行う手法である [Hinton and Salakhutdinov, 2006].ラベルなしの画像データから,そのコピーの画像データを再構成するような,砂時計型のEncoder-Decoderネットワークを学習することにより,効率的な低次元に圧縮された表現を,真ん中の中間層に学習する仕組みである .低次元の中間表現をラベルなしで学習できるので,教師なし学習による表現学習(特徴学習)の手法の1つであり,学習後は前半のEncoderを用いることで,高次元データを低次元データへ次元削減できる.

この記事では,オートエンコーダによる次元削減の仕組みと応用について説明する(2節).また,ディープラーニング時代になって以降の,オートエンコーダの発展モデルの紹介(3.1節)と,著者が個人的に感じている「オートエンコーダが提案された当初は期待されていなかった『後に出てきた重要性』」についてまとめてみたい(3.2節).

オートエンコーダの応用としては,オートエンコーダで圧縮した中間表現ベクトルを次元削減結果として使うことができたり,他にも検索タスクや異常検知などに中間表現を使用できる.とはいえ,何らかの予測タスクに対する教師ラベルは使わないのもあり,各タスクで識別性能が向上するかどうかは,使用するタスク次第ではある(とりあえず次元削減で圧縮できるメリットは常にある).

ディープラーニングの時代に入り深いネットワークが学習できるようになると,深層生成モデルの1種である変分オートエンコーダがオートエンコーダの発展型として登場し,よく応用されていくようになる.

1.1 記事の構成

この記事は,2節以降,以下の構成でオートエンコーダの基本と,その発展型・一般化について紹介する.

  • 2節 Autoencoderの基本型
    • 2.1 元論文での提案
    • 2.2 ディープラーニング以降の一般型
  • 3節 Autoencoderの発展
    • 3.1 変分オートエンコーダ
    • 3.2 Encoder-Decoderと,変換モデル全般への一般化
  • 4節 まとめ

2. autoencoder の基本型

オートエンコーダ(autoencoder)の概要
図1 オートエンコーダ(autoencoder)の概要

オートエンコーダのネットワークは,以下の2つの(異なる)サブネットワークを直列に繋いで構成されるEncoder-Decoder型のネットワークである(図1):

  • エンコーダネットワーク:$g_{\phi}(\bm{x})$
  • デコーダネットワーク:$f_{\theta}(\bm{z})$

ここで,$\phi$はエンコーダのパラメータ群で,$\theta$はそれとは異なるエンコーダのパラメータ群である.

学習済みのオートエンコーダを順伝搬すると,以下のようにエンコーダとデコーダを通じて,入力に近い出力$\hat{\bm{x}}$を復元する:

\[
\hat{\bm{x}}= f_{\theta}(g_{\phi}(\bm{x})) \tag{2.1}
\]

また,学習後にエンコーダだけ用いることで,$ \bm{z} = g_{\phi}(\bm{x})$と,低次元の潜在表現$\bm{z}$に変換することができる.

ディープラーニングの本格流行前であった「オートエンコーダの最初の提案」 [Hinton and Salakhutdinov 2006] は,3層MLP的を,エンコーダとデコーダの双方に使用するのが基本のネットワーク構造である(このあと2.1.1節).しかし,現代の画像オートエンコーダや画像Encoder-Decoder全般では,エンコーダにもデコーダにもCNNを用いる.よって,元論文の古典的な構成とは乖離があり,元論文の3層MLPベースの構成は既にobsoleteで使われない.

そこで,まずは,元論文におけるオートエンコーダの最初の提案 [Hinton and Salakhutdinov 2006] について,どのようなネットワーク構造と損失関数であったのかを確認する(2.1節).その次に,ディープラーニング・CNN流行以降の,現在用いる「画像データ向けのディープオートエンコーダ(もしくはEncoder-Decoder)の一般型」をみていきたい(2.2節).

2.1 元論文における提案

学習済みのオートエンコーダは,かつて主成分分析(PCA)などで行っていた線形の次元削減の代わりに,非線形で深いエンコーダによる変換$g_{\phi}(\bm{x})$をもちいて,$\bm{z}$への次元削減(低次元空間への射影)を実施することができる.

2.1.1 提案当時の autoencoderの構造

提案時のAutoencoderネットワークには,CNN・畳み込み層は使われおらず,エンコーダもデコーダも3層MLPであった.

入出力には,MNIST データセットのグレー画像(各画素値は[0,1])を展開してベクトル化したものを$\bm{x}$と,復元ベクトル$\hat{\bm{x}}$を使用する:

  • 入力$\bm{x}$:グレー画像(28 × 28)を展開した784次元ベクトル.
  • 中間表現$\bm{z}$:真ん中の中間層の30ニューロンをまとめた,30次元ベクトル.
  • 出力$\hat{\bm{x}}$:復元されたグレー画像の784次元ベクトル(28 × 28の画像に戻す).

(※ オートエンコーダは,潜在表現の方を入力より高次元にすることもできるが,この記事では,その後も主に使われる「潜在表現の方が低次元」の構成のみを想定する).

この「入力・出力・中間表現」をつくるために,元論文では,例えば潜在変数が30次元になる,以下のような,『エンコーダもデコーダも「3層MLP」で構成されたネットワーク』を,オートエンコーダとして使用した:

  • エンコーダ $g_{\phi}(\bm{x})$:
    • 線形層:2000ユニット
    • 線形層:1000ユニット
    • 線形層:500ユニット
  • ボトルネック層 $\bm{z}$:30ユニット
  • デコーダ $f_{\theta}(\bm{z})$:
    • 線形層:500ユニット
    • 線形層:1000ユニット
    • 線形層:2000ユニット
    • 出力層:シグモイド関数([0,1]の値に出力を活性化)

デコーダは生成モデル代わりであり,その出力を元の画像と同じ範囲に正規化する必要がある.よって,最後の出力層には,シグモイド関数を用いる.

2.1.2 学習目的と損失関数

オートエンコーダの学習目的は,入力$\bm{x}$と出力$\hat{\bm{x}}$を,なるべく同じベクトルに近づけることにある:

\[
\bm{x} \approx \hat{\bm{x}}\tag{2.2}
\]

この目的の達成のために,入力画像をエンコーダで一旦潜在変数に次元削減したのち,元のデータをデコーダで復元できるような,エンコーダデコーダを学習したい.

したがって,式(2.1)と(2.2)に基づいて「入出力画像(ベクトル)の差をゼロにする」以下の最小自乗損失により,Encoder-Decoder全体を一括学習する:

\begin{align}
\frac{1}{n}\sum_{i=1}^{n}\mathcal{L}_{\phi,\theta}(\bm{x}_i,\hat{\bm{x}}_i) &= \frac{1}{n}\sum_{i=1}^{n}(\bm{x}_i -\hat{\bm{x}}_i)^2 \\
&= \frac{1}{n}\sum_{i=1}^{n}(\bm{x}_i -f_{\theta}(g_{\phi}(\bm{x}_i)) )^2 \tag{2.3}
\end{align}

当時は,6層も全結合層が含まれた「深いネットワーク」を,スクラッチから学習できる技術はまだ存在しなかった.よって,RBM(Restricted Boltzman Machine)を用いて,各層の事前学習を個別におこなっておく.RBMにより,各層の事前学習が終わったら,それらを各線形層間の重みの初期値に用いて,オートエンコーダの学習を,式(2.3)の合計損失により行う.

以上で,元論文での古典的なオートエンコーダの紹介は終わりである.

2.1.3 autoencoder で次元削減する利点

以前の機械学習では,主成分分析(PCA)や,その他の行列分解系の「線形次元削減手法」が主に用いられていた.しかし,オートエンコーダは,それらの線形手法ではフィットできないような,いびつで多様な$\bm{x}$の高次元データ分布に対しても,複雑な潜在低次元空間$\bm{z}$への写像$g_{\phi}(\bm{x})$を(エンコーダに)学習できる.

たとえばPCAの場合,元の$\bm{x}$がガウス分布としてある方向に対して(真っすぐ)ガウス分布的に分布していれば,そのデータ分布に対して主軸を1つフィットさせ,うまく低次元空間への写像行列を学習できる.しかし,データ分布がガウス的に固まっておらず,あちらこちらにバラバラに分布していると,単純な線形ガウスあてはめであるPCAでは,それらのいびつな分布をうまく低次元空間へ射影することができない.

また,古典的な非線形次元削減として多様体学習(manifold learning)を用いるアプローチも存在する.多様体学習は,オートエンコーダと同じく非線形次元削減手法であるが,高次元画像データ空間 $\bm{x}$ 上で,フィットさせたい多様体の仮定どおりのデータ分布(の多様体形状)を形成してないと,うまく多様体をフィットさせづらい側面があった.

以上のように,線形次元削減や多様体学習などではきびしい「いびつで多様な,高次元データサンプル群」に対しても,ニューラルネットワークで「任意の関数」を写像 $g$ (とその逆写像 $f$ ) に自己符号化でフィットさせることが可能なオートエンコーダの方が,データセットが持つ分布やデータ間距離のままの距離感で,よりよい低次元表現(埋込み空間)にデータをうまく埋込みやすい (※ [Hinton and Salakhutdinov 2006] には,PCAとの比較の可視化図あり ).

逆に言うと,低次元で綺麗な分布をしているデータであれば,PCAや多様体学習でも,十分良い次元削減写像を学習できる.

※(この例に限らないが)「このデータセットの分布には,どのモデルが適しているか」を考えることが,機械学習では非常に大事なことである

2.2 CNN登場以降の「一般化」

CNNが流行しはじめたころ,その応用発展のなかで,DCGAN やセマンティックセグメンテーションなどで,「転置畳み込みを用いたDecoder」がよく使われはじめた.これにより,EncoderもDecoderも畳み込み層中心の構成にした「CNN型のオートエンコーダ」を主に使用する時代になり,元のMLPベースのオートエンコーダはobsoleteとなった.

CNN化したオートエンコーダの構成も,同じくエンコーダとデコーダがそれぞれCNN化しただけである:

  • エンコーダCNN:$g_{\phi}(\bm{x})$
  • デコーダCNN:$f_{\theta}(\bm{z})$

これにより非CNN版の古典的オートエンコーダ(2.1節)と異なり,CNNで構成できるようになったおかげで「カラーサイズの大きな画像」を入出力に使用できる.また, 潜在表現ベクトル $\bm{z}$ は,エンコーダCNNの出力は特徴マップ(=テンソル)であり,わざわざベクトルに変形しなくても良い (※ ユーザーのネットワーク設計しだいである).

ただし,「オートエンコーダの目的のまま発展する」というよりは,セマンティックセグメンテーション(例えばU-Netなど)や,画像対画像変換モデルなどの「画像間の変換モデル」においてEncoder-Decoderの発展が主に行われていく(3.2節でのちほど述べる).

3. autoencoder の発展

3.1 変分オートエンコーダ

変分オートエンコーダ(VAE)は,オートエンコーダの中間表現をガウス確率分布化し,変分推論により近似学習できるようにしたものである.これにより,ガウス分布を事前分布として,ベイズ確率生成モデルとして,画像と潜在変数のあいだを条件付き確率モデル化することができ,潜在変数がガウス分布として学習できるようになり解釈性が高くなった.それに加えて,デコーダの生成モデルも質が高いものとなた.つまりは,VAEの登場により「わかりよい潜在変数分布を学習出来る上に,生成画像の質も高い」という深層生成モデルを初めて構築できた.

当時,同時期に登場した敵対的生成ネットワーク(GAN)は,生成モデルの出す画像の質は高いものの,潜在変数はただのランダムノイズであるので,きちんと整列されないし,解釈もできなかった.それと比べると,VAEは,元の画像の類似度どおり綺麗に整列された距離空間を,潜在ガウス分布Priorにより,ガウス分布の形状で学習できるメリットがあった.

この記事では詳細は省略するので,以下のVAEの記事をごらん頂きたい.

3.2 Encoder-Decoderと変換モデル全般への一般化

ニューラルネットワークやディープラーニングの歴史的に言うと,オートエンコーダは Encoder-Decoderネットワークを用いた種々の変換問題へと,元となるオートエンコーダが一般化されていった原点であるとみなすことができる.つまり,あとで色んな一般化や,別の使い道(主に変換モデル)への転用につながった意味で,今となっては基礎研究の側面が強いのがオートエンコーダの研究である.

画像生成や画像変換の文脈で言うと,セマンティックセグメンテーション画像対画像変換(image-to-image translation)[Isola et al., 2017] の登場と発展へもつながっていくとも言える.昨今では,種々の画像復元タスク(Inpainting,ブラー除去,霧除去など)も,Encoder-Decoderネットワークで学習することが普通になっている.この意味でも,オートエンコーダは,それら近年の多くの画像変換モデルの原点となる,重要な研究であった言える(※ Encoder-Decoderを変換モデルに使った場合は,入力と対応がある別ドメインの出力データへの変換を学習するので,もうオートエンコーダとは呼べないことに注意).

また,自然言語処理の機械翻訳向けに当初登場した系列対系列変換の登場や,その近年の発展モデルであるTransformerがNLP・音声分野で発展していった源流をもしたどるとしても,やはりオートエンコーダに源流があると言えよう.

こうして,のちにEncoder-Decoderの汎用性が示され,変換問題全般への一般化が続クコと担った意味で,オートエンコーダは(当初はそこまでの展開は読めなかったが)非常に重要な研究であったと,管理人は解釈している.

4. まとめ

以上,オートエンコーダの基本型と,その応用について紹介した.オートエンコーダは,画像の自分自身を復元する学習を,砂時計型ネットワークにより行うことで,次元削減ネットワークとしてのエンコーダを教師なし学習できる.そして,エンコーダにより次元削減した埋め込みベクトルを用いることで,計算効率化や検索などに応用できる.また学習後は,生成モデルであるデコーダも学習され,低次元表現ベクトルの各点からの画像復元も可能である.

CNN流行後は,オートエンコーダのEncoder-Decoderモデルが,種々の画像変換モデルへと一般化され,変換モデルが発展することとなった.また,変分オートエンコーダ(VAE)へも発展し,潜在空間の解釈性も高く,復元画像のクオリティも高い画像生成モデルへの発展へと,オートエンコーダが貢献していく.

関連書籍

References

  • [Hinton and Salakhutdinov, 2006] G. E. Hinton and R. R. Salakhutdinov. Reducing the dimensionality of data with neural networks. Science, 313(5786):504–507, 2006.

参照外部リンク