AE(オートエンコーダ)とは
AE(オートエンコーダ)とは、
です。
入力データを入れると一度表現ベクトルに変換され、表現ベクトルを元に入力データにできるだけ近いデータを復元します。
AE(オートエンコーダ)は2つのニューラルネットワークから構成されています。
エンコーダでは、入力データを圧縮して表現ベクトルに変換します。
デコーダでは、表現ベクトルを元にデータを復元します。
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(デノイジングオートエンコーダ)
DAE(デノイジングオートエンコーダ)は、ノイズ除去に使われます。
入力画像にノイズのあるデータを用いて学習を行うモデルとなります。
VAE(変分オートエンコーダ)
VAE(変分オートエンコーダ)は、データの生成によく使われます。
単純なオートエンコーダでは、独自データの生成能力が低いという問題点があるのですが、VAEでは潜在空間(潜在変数の分布)に制限を加え、連続になるようにして改善しています。
CAE(畳み込みオートエンコーダ)
CAE(畳み込みオートエンコーダ)は、画像に対してよく使われます。
CAEは、エンコーダとデコーダを全結合層ではなく、畳み込み層を使うため、空間的な情報を処理できるようになっています。
まとめ
AE(オートエンコーダ)とは、ニューラルネットワークを使い、入力データを一度圧縮した後に復元するアルゴリズムです。
オートエンコーダは、ノイズ除去・異常検知・生成・クラスタリングのような用途に使うことができます。
オートエンコーダには様々な派生系が存在し、用途に応じてモデルを特化させています。
コメント