オートエンコーダとは
オートエンコーダとは、入力データを圧縮し、そのデータを再び元に近い形で復元できるように学習するニューラルネットワークの一種です。Pythonなどのプログラミング言語で実装できます。
ディープラーニングの仕組みの一つに、ニューラルネットワークがあります。これは人間の脳の神経細胞の働きをモデル化したものです。オートエンコーダは、そのニューラルネットワークを利用した手法の一つです。通常、データを圧縮すると情報の一部が失われます。そのため、元のデータを再現するには、重要な情報を残しておく必要があります。そこでオートエンコーダでは、データの中から重要度の高い特徴を抽出し、それ以外の情報を削ぎ落とすように学習します。
例えば、体格を表す場合、身長と体重の関係を二次元グラフで表すことができますが、その分布を一本の直線で近似すれば一次元で表現できます。オートエンコーダも同様に、意味を保ったままデータをより少ない次元で表現します。
このように、データを本質的な特徴だけにまとめる処理は「次元削減」や「特徴抽出」と呼ばれます。
オートエンコーダの仕組み
オートエンコーダは、主に「エンコーダ」「潜在変数」「デコーダ」という3つの要素で構成されています。入力されたデータはエンコーダによって圧縮され、潜在変数と呼ばれる低次元のデータとして表現されます。その後、デコーダによって元のデータに近い形に復元されます。
- ■エンコーダ(Encoder)
- エンコーダは、入力されたデータを圧縮して低次元の特徴量に変換する部分です。この過程で、データの中から重要な特徴だけを抽出します。
- ■潜在変数(潜在空間)
- エンコーダによって圧縮されたデータは、潜在変数(latent variable)として表現されます。潜在変数とは、データの本質的な特徴をまとめた内部表現のことです。
- ■デコーダ(Decoder)
- デコーダは、潜在変数から元のデータを再構築する役割を持ちます。このように、入力データを圧縮し、再び復元するよう学習するのがオートエンコーダの基本的な仕組みです。
このように、入力データを圧縮し、再び復元するよう学習するのがオートエンコーダの基本的な仕組みです。
オートエンコーダの必要性
オートエンコーダはなぜ必要とされたのでしょうか。
勾配消失を解決するため
ニューラルネットワークは、入力値と出力値の間に「隠れ層」と呼ばれる圧縮状態を挟むのが特徴です。
このようにすることで、従来では不可能だった複雑な処理も可能になりました。そこで、さらに多くの隠れ層を挟むことで、より高度な処理能力が実現するのではないかと考えられるようになりました。
ところが、実際に試みたところ、かえって性能が下がりました。この方法では予測と正解の誤差のフィードバックが必要ですが、階層をさかのぼるごとに誤差が減少し、学習速度が低下したのです。この問題を「勾配消失」と言います。
オートエンコーダは勾配消失を解決する方法として期待されました。ニューラルネットワークの初期値に、オートエンコーダで学習させたものを用います。事前学習を行うことで、勾配消失による学習速度低下を防止します。
過学習を解決するため
過学習とは、特定のデータへの対応にのみ長けてしまうことです。訓練に使ったデータを完全に記憶してしまうと、処理の練習になりません。結果的に、未知のデータにはまったく対処できない状態になります。
そこで活用されたのがオートエンコーダです。オートエンコーダによりデータを粗な状態にすることで、過学習を防止します。
オートエンコーダを用いた事前学習の仕組み
オートエンコーダを用いた事前学習による、勾配消失の防止手順は以下のとおりです。
- 1.層を分割する
- ネットワークを構築する多層構造を、複数の単層に分割します。入力層、隠れ層1、隠れ層2……出力層と分割され、それぞれに事前学習を行います。
- 2.入力層から学習させる
- 分割する前の構造を想定し、入力層から順に教師なし学習を行います。隠れ層1と同じサイズの訓練用隠れ層を1つだけ用意し、圧縮・出力させます。
- 3.すべての隠れ層で訓練を繰り返す
- ステップ2で得た訓練用隠れ層の値を入力値として、隠れ層1の訓練を行います。この際の訓練用隠れ層は、隠れ層2を想定し、それと同じサイズにします。この作業をすべての層で繰り返しましょう。
- 4.元のネットワークに戻す
- 学習させた層で元のネットワークを構築します。この状態で新しい層を追加して学習させると、勾配消失を防止できます。
オートエンコーダの代表的な種類
オートエンコーダにはさまざまな種類があり、目的に応じて使い分けられます。ここでは代表的なものを紹介します。
- ■デノイジングオートエンコーダ(Denoising Autoencoder)
- デノイジングオートエンコーダは、ノイズを含んだデータから元のデータを復元するように学習するモデルです。入力にノイズを加えたデータを与え、出力ではノイズのない元データを再現するように訓練します。この仕組みにより、ノイズに強い特徴を学習できるため、画像のノイズ除去やデータのクレンジングなどに利用されます。
- ■スパースオートエンコーダ(Sparse Autoencoder)
- スパースオートエンコーダは、隠れ層の一部のニューロンだけが活性化するよう制約を加えたモデルです。この方法では、重要な特徴だけを強調して学習できるため、より意味のある特徴抽出が可能になります。
- ■変分オートエンコーダ(VAE)
- 変分オートエンコーダ(Variational Autoencoder)は、確率分布を用いて潜在変数を学習するオートエンコーダです。通常のオートエンコーダとは異なり、データの分布を学習することで、新しいデータを生成することができます。そのため、画像生成やデータ生成モデルとしても活用されています。
オートエンコーダの活用方法
現在ではディープラーニングのアルゴリズムが改良され、初期値はランダム値で問題ないため、事前学習にオートエンコーダは使われていません。では、オートエンコーダはどのような場面で活用されるのでしょうか。
画像のノイズ除去
画像のノイズを除去するためには、ノイズをノイズだと認識できなければなりません。オートエンコーダにそれを学習させる方法が有効です。入力値としてノイズを混ぜた画像、正解として元の画像を与えて訓練することで、圧縮時にノイズを除去できるようになります。
こうして、オートエンコーダをデータクレンジングとして活用して得られたデータは、ほかの機械学習にも利用できます。特に分類器の作成において、ノイズのないデータは分類精度を高めるうえで欠かせない教材となります。
異常検知
ノイズ除去を学習したオートエンコーダは、異常(ノイズ)検知にも応用されます。正しく学習できていれば、何らかの異常を含むデータを処理した場合でも、オートエンコーダは異常のないデータを出力します。
つまり、入力値に異常がある場合、入力値と出力値の間に誤差が生じるということです。これを異常発生と定義し、オートエンコーダは異常検知システムとして機能します。具体的にどこに異常があるのか特定することも可能です。
クラスタリング
クラスタリングとは分類のことです。入力値がどのような特徴を持つグループに属するのかを見分けます。これにより、精度の高い異常検知が実現します。
クラスタリングに応用する際に活用するのは、教師なし学習です。正常品と異常品を、どれが正常なのかラベルを付けずに与えます。その結果、データを圧縮した潜在変数は正常品の特徴を備えたものと、異常品の特徴を備えたものにグループ分けされます。
このように確率分布的に潜在変数を取得する仕組みを、VAEと言います。この学習を経たオートエンコーダにデータを入力することで、入力値がどちらのグループに属するのか判別可能です。
一口に異常と言っても、複数のパターンがあれば、その数だけグループが作られます。つまり、対象のデータが異常品というだけでなく、どのような異常を持つかを判別できるということです。
オートエンコーダのような技術は、異常検知や画像処理、データ分析機能を備えた開発ツール・AI開発基盤でも活用されることがあります。そのため、実際に業務へ取り入れる際は、自社の目的に合った開発ツールや関連システムを選ぶことが重要です。
「自社に合う製品がわからない」「自社に合う製品を診断してみたい」という方向けの診断ページもあります。
簡単な質問に答えるだけで、最適なシステムを案内します。
無料で今すぐ利用できますので、下のリンクから診断を開始してください。
オートエンコーダの現状を把握し機械学習の理解を深めよう
オートエンコーダとは、データの次元を削減し、圧縮する手法です。ニューラルネットワークが機能するための仕組みの1つとして、勾配消失や過学習を防ぐ目的で提唱されました。
今ではそれらの目的で使われることはあまりありません。しかし、画像ノイズ除去や異常検知システムの仕組みとして活用されています。
ぜひ、以上を参考にして、機械学習への理解を深めてください。


