Skip to content

DNET_Autoencoder

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

自己符号化器(AE:オートエンコーダ)

概要

自己符号化器(AE:オートエンコーダ)、自己識別機とも呼ばれる。

  • 入力データを低次元の潜在表現にエンコードし、
    その後デコードして元のデータを再構築するためのモデル
  • データの次元削減や特徴抽出などのタスクに使用される。
  • 入力データの再構築誤差を最小化することで訓練される。
  • (余談だがVAEと違って、確率的生成モデルではない。)

歴史

  • 元々、(入出力兼務の)可視層と隠れ層の2層のニューラルネットワーク
    展開すれば、3層のニューラルネットワークで、

  • 勾配消失問題を事前学習とファイン・チューニング
    (いずれも 深層学習のテクニックの該当節を参照)に
    よって解決しニューラルネットワーク発展の礎となった。

  • AEのポイントは、可視層より隠れ層の次元(数)を少なくしてある(情報の圧縮)。

  • このAEを積み重ね、ディープAE、正確には、積層AEを作成(ジェフリー・ヒントン)。
    層の積み重ねは、事前学習とファイン・チューニングによって達成される。

    • はじめに事前学習を行い層を積み重ねていく。

    • 最上部に層を足し、教師あり学習にする(?)

      • ロジスティク回帰層
      • 回帰問題の場合、線形回帰層
    • 最後の仕上げにファイン・チューニング(全体で再学習)する。

特徴

教師あり、なし

  • 教師なし学習

    • エンコーダーで主成分分析と同じ次元削減を行う。
    • 中間層の次元削減されたデータを潜在変数と呼ぶ。
    • デコーダーで入力データと一致するデータを出力する。
    • (データ作成の観点では)教師なしだが(、学習の観点では)、
      入力データを用いた教師あり学習。
    • 出力データと入力データの誤差を再構成誤差(Reconstruct Error)と呼ぶ。
  • モデルの構造
    入力層、中間層、出力層の3層のAEの場合、

 y = f2(W2 f1(W1x + b1) + b2)
  • 入力層より中間層の方が小さいAEを不完備(undercomplete)なAEと呼ぶ。
  • 出力層の活性化関数f2は恒等関数(別に分類問題ではないので)

入出力を一致させる。

  • 入出力が一致するように各エッジの重みを調整
  • 出力と入力に対して誤差を算出し、その差が小さくなるように誤差逆伝播法
    深層学習の誤差逆伝播法)を用い重みを学習する。

特徴表現の獲得

隠れ層の次元を小さくして情報量を小さくした特徴表現を獲得する。
(入力の情報が圧縮される。→ 学習の結果、重みとして要約される。)

  • 入力したデータをEncoderで潜在空間上の特徴量(潜在変数z)に
    圧縮(次元削減・特徴抽出)し、

  • 潜在空間上の特徴量(潜在変数z)からDecoderで復元(再び戻して出力)する。

  • 潜在空間:何かしらの分布を仮定した潜在空間を学習

※ EncoderもDecoderもニューラルネットワーク

移行メモ(正誤): 元ページの「入力の情報を圧縮される。」は
「入力の情報が圧縮される。」の誤記と判断し修正した。

種類

様々な種類があるもよう。

スタック型AE

スパースAE

ディープAE

デノイジングAE

, etc.

できること

様々な用途で利用されている。

自然言語処理

言語処理(AI)の該当節を参照。

ロボティクス

人工知能(AI):ロボティクスの該当節を参照。

異常検知

AIの活用例の該当節を参照。

需要予測

AIの活用例の該当節を参照。

詳細

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

変分AE(VAE:Variational Autoencoder)

  • 画像生成、音声生成、異常検知などのタスクではAEを土台とした
    変分オートエンコーダ(VAE)を使う。

    • AEと異なり、確率的生成モデルの一種で、データの潜在表現を学習し、
      その表現から新しいデータを生成する。

    • 入力データが何らかの分布(一般的には多変量正規分布や正規分布)に
      基づいて生成されていると仮定している。

    • データを低次元の潜在空間にエンコードし、その後デコードして
      元のデータを再構築する。

      • エンコーダー
        ・入力データを潜在空間の平均と分散の潜在変数zにマッピングする。
        ・入力データが潜在空間内のどの位置に分布するかを表す確率分布を定義する。
        ・マッピングは厳密な分布ではなく、平均と分散のパラメタを持つ
         確率分布として表現される。

      • デコーダー
        ・潜在空間から潜在変数zをサンプリングし、元のデータを再構築する。
        ・潜在空間からサンプリングされた潜在変数zを元に、
         再構築データの確率分布を定義する。

    • 生成される画像は鮮明ではなく、ぼやけた画像になる。

移行メモ(正誤): 元ページの「VEと異なり」は「AEと異なり」の
誤記と判断し修正した。

仕組み

  • Encoder・Decoder

    • Encoder
      • 入力データが多次元ガウス分布として符号化され、
        その分布から潜在変数zをサンプリング。
      • つまり、多次元ガウス分布を記述する平均 μ と分散 σ^2 を
        返すようにEncoderを学習。
    • Decoder
      • サンプリングされた潜在変数zから、
        元々の入力データを再構成したものを出力。
  • 学習
    損失関数(「再構築誤差」と「潜在表現の分布」)を最小化する。

    • 損失関数

      • 一般的にKLダイバージェンス(Encoderによる誤差)や
        再構築誤差(Decoderによる誤差)の展開式を損失関数として使用する。
      • これらの損失関数は、再構築誤差を最小化し、
        同時に潜在表現の分布が事前に定義した正規分布に近づくように学習する。
    • 以下のように学習

      • 入力をエンコードした潜在変数をサンプリングしたzをデコードした
        出力が近くなるよう。
      • エンコードの分布が平均 0、標準偏差 Iのガウス分布に近くなるよう。
    • 潜在変数のサンプリング処理が入るため誤差逆伝播を行うことが困難となる。

      • これをReparameterization Trick(再パラメタ化トリック)で解決。
      • Encoderによってサンプリングに利用する変数μ,σを出力
      • 新たにサンプリング変数εを導入し潜在変数zを
        「z=μ+εσ (ε~N(0, I))」のように再定義
      • ネットワーク全体が微分可能になり、
        確率的な変数の勾配を正確に計算できるようになる。
  • 「D KL(N(μ,σ)∣N(0,I))」を正則化項として加えると集合の中心は原点付近となる。

    • KLダイバージェンスは事前分布と事後分布の情報量の差を表す。
    • D KL(事前分布|事後分布)
    • 事前分布:平均 μ、標準偏差 σ
    • 事後分布:平均 0、標準偏差 I

潜在変数z

  • 潜在空間上の特徴量、潜在変数z

    • 潜在変数zにガウス分布を仮定し、
      潜在変数zを(ガウス分布と言う)構造に押し込むことが出来る。
    • 潜在変数zは入力x1, x2を、異なる潜在変数の領域に正規分布に沿ってマッピング。
    • 潜在変数zが連続的な分布(正規分布)になっているので
      調整することで連続的に生成データが変化する。
    • Encoder

      • μ,σ^2 = encoder(x)
    • 中間層

      • z~N(μ, σ^2)
      • ノイズ : ϵ~N(0, I)
      • z = μ+σϵ
    • Decoder

      • X=decoder(z)

移行メモ(正誤): 元ページの「構造の押し込む」は「構造に押し込む」の
誤記と判断し修正した。

最適化

x をより良く表現する p(X) のパラメタを学習するには、
周辺尤度 logp(X) の最大化を考える。

記号 説明
X 再構成されるデータ
p(X) 再構成されるデータの確率分布
z 潜在変数z
p(z) 潜在変数zの確率分布
p(X|z) 潜在変数zが与えられた時のxの確率分布(Decoder)
q(z|X) データXが与えられた時のzの確率分布(Encoder)

ベクトル量子化変分オートエンコーダ(VQ-VAE)

...

(元ページに記載なし)

参考


Tags: 移行, 深層学習, オートエンコーダ, VAE, 生成モデル, 開発基盤

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally