AE(オートエンコーダ)とは?図解で分かりやすく解説!!

スポンサーリンク
AE(オートエンコーダ)とは図解で分かりやすく解説!!ディープラーニング
この記事を読んで分かること
  • AE(オートエンコーダ)とは何か
  • AE(オートエンコーダ)の仕組み
  • AE(オートエンコーダ)の実装例(python)

 

AE(オートエンコーダ)とは

AE(オートエンコーダ)とは、

ニューラルネットワークを使い、入力データを一度圧縮した後に復元するアルゴリズム

です。

 

入力データを入れると一度表現ベクトルに変換され、表現ベクトルを元に入力データにできるだけ近いデータを復元します。

AE(オートエンコーダ)略図

 

AE(オートエンコーダ)は2つのニューラルネットワークから構成されています。

AE(オートエンコーダ)のニューラルネットワーク
  • エンコーダ
  • デコーダ

 

エンコーダでは、入力データを圧縮して表現ベクトルに変換します。

デコーダでは、表現ベクトルを元にデータを復元します。

 

AE(オートエンコーダ)では入力層よりも中間層の方がノードを少なくすることで、次元を小さくして表現ベクトルを作っています。

つまり次元削減をしていることになるため、教師なし学習の1種だということができます。

 

オートエンコーダの仕組み

数字の画像を入力にしたオートエンコーダの例を見ながら、仕組みを解説していきます。

ここでは、784次元(28×28)の入力データをエンコーダで2次元の表現ベクトルに圧縮し、2次元の表現ベクトルを元にデコーダで784次元(28×28)に復元します。

オートエンコーダの圧縮例

 

入力データと復元データが同じになれば、オートエンコーダはきちんとできているといえます。

そのため、入力データと復元データの誤差を最小化するように、2つのニューラルネットワーク(エンコーダ・デコーダ)を学習させていけば良いです。

ここでは潜在空間を2次元としていましたが、もっと高次元にすることももちろん可能です。

 

理論的な説明

上記のオートエンコーダの仕組みを数学的に説明していきます。

細かい理論の説明になるので、興味のない方は読み飛ばして問題ありません。

 

まず前提として、ある画像データ\(x\)は、低次元の潜在変数(表現ベクトル)\(z\)からある変換(デコーダ)によって得られるものとします。

この時の確率分布\(p(z)\)と確率分布\(p(x|z)\)をモデリングすることで、\(p(x)\)を得ることを考えていきます。

つまり、デコーダのモデル\(p(x|z)\)を作り、任意のデータ\(x\)を作ろうとしています。

 

しかし、\(p(z)\)から適当に潜在変数をサンプリングしてきてもデータ\(x\)をうまく復元できる\(z\)を見つけるのは難しく、\(p(x|z)\)の学習は困難です。

そこで、確率分布\(p(z|x)\)をモデリングしてデータ\(x\)から潜在変数\(z\)をサンプルすることを考えます。

つまり、エンコーダのモデル\(p(z|x)\)を作り、データ\(x\)から潜在変数\(z\)を作成します。

 

この設定で、データ分布

$$p(x)=\int p\left( x|z\right)p(z) dz$$

の対数尤度\(\log p(x)\)を最大化するように学習していきます。

 

オートエンコーダの用途

オートエンコーダは以下のような用途に使うことができます。

オートエンコーダの用途
  • ノイズ除去
  • 異常検知
  • 生成
  • クラスタリング

 

ノイズ除去

ノイズのある画像等のデータからノイズを除去する事ができます。

オートエンコーダのノイズ除去

オートエンコーダの入力をノイズのあるデータにして、正解をノイズのないデータとして学習させることで、ノイズを取り除くモデルを実現しています。

ノイズの除去はデータクレンジングとして、機械学習の前処理に使うこともできます。

 

異常検知

オートエンコーダは、製品に傷があるなどの異常を検知することもできます。

オートエンコーダで異常検知

まず正常なデータだけを使い、正常な製品の表現ベクトル(潜在変数)を学習してモデルを作成します。

このモデルに異常のあるデータを入力すると、潜在変数が正常なデータの特徴とは異なり、異常を発見することができます。

異常検知は製品の検品などに応用することができます。

 

生成

オートエンコーダは表現ベクトルから独自のデータを生成する事もできます。

 

オートエンコーダで画像の生成

オートエンコーダでは、入力データをきれいに復元できる表現ベクトル(潜在変数)を見つけていきますが、それを潜在空間にプロットしていきます。

学習で作られた潜在空間から任意の表現ベクトルをデコーダで復元させてみると、全く新しい画像を生成することができます。

生成はデータのかさ増しなど、機械学習の前処理に使うこともできます。

また、AIにクリエイティブな創作物を作らせることにも応用できます。

 

クラスタリング

データの特徴ごとに分類するクラスタリングを行うことができます。

オートエンコーダのクラスタリング

学習で作られた潜在空間の潜在変数の分布から、近い特徴を持つものをグルーピングします。

クラスタリングは、データ分析や半教師あり学習に応用することができます。

 

オートエンコーダの種類

オートエンコーダは用途に特化して、様々な派生型が存在します。

その中から3種類の派生型を紹介します。

オートエンコーダの派生系
  • DAE(デノイジングオートエンコーダ)
  • VAE(変分オートエンコーダ)
  • CAE(畳み込みオートエンコーダ)

 

DAE(デノイジングオートエンコーダ)

DAE(デノイジングオートエンコーダ)は、ノイズ除去に使われます。

入力画像にノイズのあるデータを用いて学習を行うモデルとなります。

 

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

VAE(変分オートエンコーダ)は、データの生成によく使われます。

単純なオートエンコーダでは、独自データの生成能力が低いという問題点があるのですが、VAEでは潜在空間(潜在変数の分布)に制限を加え、連続になるようにして改善しています。

 

CAE(畳み込みオートエンコーダ)

CAE(畳み込みオートエンコーダ)は、画像に対してよく使われます。

CAEは、エンコーダとデコーダを全結合層ではなく、畳み込み層を使うため、空間的な情報を処理できるようになっています。

 

まとめ

AE(オートエンコーダ)とは、ニューラルネットワークを使い、入力データを一度圧縮した後に復元するアルゴリズムです。

オートエンコーダは、ノイズ除去・異常検知・生成・クラスタリングのような用途に使うことができます。

オートエンコーダには様々な派生系が存在し、用途に応じてモデルを特化させています。

 

参考

コメント

タイトルとURLをコピーしました