テクノロジー

機械学習に取り組むなら知っておきたい!オートエンコーダとは

機械学習に取り組むなら知っておきたい!オートエンコーダとは

機械学習で学習に使用されるモデルやアルゴリズムにはさまざまなものがありますよね。その中でも、オートエンコーダという技術は昔から使われているモデルで、ニューラルネットワーク(人間の脳の神経細胞(ニューロン)のつながりを模した数式なモデル全般)の仕組みの1つです。ニューラルモデルは機械学習の中でも最先端の技術であるディープラーニングに使われるため、オートエンコーダおよびオートエンコーダから派生したモデルも多くのディープラーニングに使われています。

しかし、オートエンコーダといわれても実際どこで使われているのかピンとこない、といった人も少なくないでしょう。そこで今回は、機械学習をする人には必須であるオートエンコーダという技術について解説しましょう。まずは、そもそもオートエンコーダとはなにかについてです。

オートエンコーダーってなに?

脳のイメージ

オートエンコーダはニューラルネットワークの一種です。そのためオートエンコーダについて解説する前に、ニューラルネットワークの解説をしましょう。

ニューラルネットワークとは人間の脳のニューロン同士のつながりを模した数理的モデルのこと。ニューラルネットワークは通常、外部からデータを入力する入力層、データを外部に出力する(結果を出力する)層を出力層と呼び、さらに、入力層と出力層の間には単層あるいは複数の層の中間層があり、入力層と出力層をつないでより複雑なデータを学習することが可能となりました。

※ニューラルネットワークについて説明した記事はこちら

このニューラルネットワークの仕組みの一種として、中間層に特色を持つものがオートエンコーダという技術です。より詳細に、かつ簡潔に説明すると、ニューラルネットワークで入力された巨大なデータを中間層で圧縮するときに出力時に再現できるように重要な部分の情報(特徴)を洗い出し、抽出的な特徴を残す学習技術になります。このとき、中間層では情報(特徴)の重要な部分のみを維持したままより少ない次元へと圧縮するため、次元削減や特徴抽出と呼ばれることもあるとのこと。

特徴として、次元削減といわれる通りオートエンコーダの中間層は入力層や出力層と比較して情報量(次元)が少ない、正確には圧縮するために意図的に情報量(次元を)少なくしています。なお、入力されて圧縮させた特徴(情報)はデコーダと呼ばれる技術で圧縮前の状態に復元し、不要な情報をそぎ落とした必要な特徴(情報)のみのデータを得ることができます。つまり、エンコーダとデコーダは対であるともいえますよね。

このように次元圧縮、特徴抽出するオートエンコーダという技術がなぜ必要なのか気になるところ。次にオートエンコーダの必要性について解説します。

オートエンコーダーって必要?

圧縮のイメージ
オートエンコーダが必要である理由は、すなわち次元圧縮や特徴抽出するメリットとつながっています。次元圧縮、特徴抽出をする最大の理由は勾配消失と過学習の2つを回避することです。

中間層を多層化したニューラルネットワークでは、主に誤差逆伝播法(予測結果と実正解との誤差を最初の処理に返してやる手法)を用いることにより、計算量が膨大かつ複雑化します。勾配消失とは、その結果繰り返しの計算の過程で誤差(計算の重み)が少なく見積もられてしまう、すなわち勾配が消失してしまうという問題です。最初の層の情報伝達が上手くいかなくなり、そのため適切な最適解を求めることができなくなり、学習に時間がかかってしまいます。

これを避けるためにオートエンコーダによりニューラルネットワークの重みを事前に学習させ、ランダムで決めていた重み付けに代わって事前学習の結果を採用することで、勾配の消失や学習速度の低下を防ぐことが可能となったのです。
過学習とは、訓練で使う特定のデータの学習が集中してしまうことで、未知のデータに対応できなくなってしまう問題を指します。すなわち訓練用のデータの答えばかり覚えてしまい、結果として汎用性が低いモデルができあがってしまうという困った事態になるのだとか。過学習への対応として、オートエンコーダで次元削減し、データを疎にすることで学習の元データに依存しすぎない学習が可能となり、結果として他のデータにも柔軟に対応できるモデルが得られることになります。

このようにオートエンコーダは勾配消失や過学習という問題解決に対して力を発揮します。では、その内部はどうなっているのか。続いて、オートエンコーダの仕組みについて解説しましょう。

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

抽出のイメージ
オートエンコーダは簡単にいってしまえば入力されたデータを圧縮(次元削減)するための技術です。これにより勾配消失や過学習という課題解決をすることができましたよね。

オートエンコーダによる次元削減は以下のように行われます。例えば入力層で入力されたデータを3次元としたならば、中間層で重要なデータのみを残してエンコーダにより2次元以下に圧縮し、その後圧縮されたデータはデコーダによって復元され、入力層で入力されたデータとほぼ同一のデータを出力します。

入力されるデータの次元が増える場合、n次元のデータをn-1次元のうち、必要なレベルまで圧縮するようにオートエンコーダを設計しましょう。エンコーダやデコーダと呼ばれるものは数理的にデータを変換することで圧縮したり、復元したりすることを可能とする処理です。

これがオートエンコーダの一般的な仕組みです。オートエンコーダは学習データのノイズ除去や異常検知に用いられ、それぞれ仕組みについて解説します。

学習データにノイズが入っていると、画像認識といったデータの認識が必要な処理において認識率が下がってしまいます。このデータのノイズを除去するためにオートエンコーダが使われ、ます。このオートエンコーダはノイズなしデータで訓練をおこなうことで入力したデータのノイズが除去できるようになります。

異常検知とは正常でないものを見つける技術です。不良品を画像で探す仕組みを例にしましょう。その仕組みは、ノイズ処理を応用し、ノイズが残っている入力画像と、多くの場合ノイズとして処理されてしまう傷やヒビがなくなっている出力画像と比較し、この画像の製品は不良品なのか、どこに不良があるのかを見分けるというものです。

※異常検知についてはこちらの記事でも取り扱っています

オートエンコーダはこのような仕組みで成り立っています。ところで、オートエンコーダを使うのはどのようなメリットがあり、どのようなデメリットがあるのでしょうか。最後にオートエンコーダを使うことのメリットやデメリットを解説します。

オートエンコーダーを活用するメリットデメリット

ノイズのイメージ
オートエンコーダを活用するに当たって、他の手法に比べて有利な点のひとつとして、ノイズ処理のモデル構築の容易さがあげられます。先ほど紹介したオートエンコーダによるノイズ処理は同じくノイズ処理によく使われる主成分分析(複数の変数を合成してひとつの変数として扱う手法)に比べて構築が容易で、比較的複雑な開発をする必要はありません。

また、オートエンコーダを利用する最大の目的である次元圧縮をすることのメリットは前述したように勾配消失や過学習への対策といったことだけでなく、単純に計算量が抑えられるため他の処理に容量を割けることがあります。他にも、データが単純化されるため、データの特徴を視覚的にわかりやすく説明することが可能となるというメリットも。

デメリットとしては、次元圧縮すると当然ながら情報の一部が失われてしまうため、次元圧縮前のデータで処理をおこなうのに比べて精度が劣ることがあります。また、圧縮の次元がより低いほど(より圧縮するほど)情報の損失が大きくなり、使い物にならなくなってしまうこともあるので、注意しましょう。

このようなメリットやデメリットをオートエンコーダは持っています。

まとめ
さて、今回は機械学習をするなら知っておきたいオートエンコーダという技術について解説しました。

オートエンコーダとはニューラルネットワークの一種で、中間層にてエンコーダでデータの圧縮(次元圧縮)をおこない、デコーダで復元し、入力時と出力時のデータを同一にするというのがオートエンコーダの仕組みとなります。オートエンコーダを使う理由は主に勾配消失と過学習の回避にあります。

勾配消失とは主に誤差逆伝播法により計算量が膨大なものとなり、その過程で誤差(計算の重み)が少なく見積もられてしまうことです。これを避けるためにオートエンコーダにより事前に重みを学習させることで、勾配の消失や学習速度の低下を防ぎます。過学習とは訓練用のデータの答えばかり覚えてしまい、未知のデータにそれを応用できずにいる状態で、オートエンコーダの次元圧縮でデータを疎にすることで、元データに依存しすぎない学習が可能となります。

オートエンコーダを使うことは次元圧縮することとほぼ同義であるため、次元圧縮のメリットとデメリットがオートエンコーダを使うメリットデメリットとなります。最大のメリットは勾配消失や過学習の回避に加え、計算量の減少によって効率の良さが上がるというものです。対して、圧縮によって情報が失われてしまうので精度が下がる可能性があるというデメリットも持っています。

オートエンコーダは事前学習や異常検知などの分野で頻繁に用いられる技術です。この記事でオートエンコーダについてしっかりと押さえておき、機械学習に取り組みましょう。

トップへ戻る
タイトルとURLをコピーしました