機械学習で学習に使用されるモデルやアルゴリズムにはさまざまなものがありますよね。その中でも、オートエンコーダという技術は昔から使われているモデルで、ニューラルネットワーク(人間の脳の神経細胞(ニューロン)のつながりを模した数式なモデル全般)の仕組みの1つです。ニューラルモデルは機械学習の中でも最先端の技術であるディープラーニングに使われるため、オートエンコーダおよびオートエンコーダから派生したモデルも多くのディープラーニングに使われています。
しかし、オートエンコーダといわれても実際どこで使われているのかピンとこない、といった人も少なくないでしょう。そこで今回は、機械学習をする人には必須であるオートエンコーダという技術について解説しましょう。まずは、そもそもオートエンコーダとはなにかについてです。
オートエンコーダーってなに?
オートエンコーダはニューラルネットワークの一種です。そのためオートエンコーダについて解説する前に、ニューラルネットワークの解説をしましょう。
※ニューラルネットワークについて説明した記事はこちら
このニューラルネットワークの仕組みの一種として、中間層に特色を持つものがオートエンコーダという技術です。より詳細に、かつ簡潔に説明すると、ニューラルネットワークで入力された巨大なデータを中間層で圧縮するときに出力時に再現できるように重要な部分の情報(特徴)を洗い出し、抽出的な特徴を残す学習技術になります。このとき、中間層では情報(特徴)の重要な部分のみを維持したままより少ない次元へと圧縮するため、次元削減や特徴抽出と呼ばれることもあるとのこと。
このように次元圧縮、特徴抽出するオートエンコーダという技術がなぜ必要なのか気になるところ。次にオートエンコーダの必要性について解説します。
オートエンコーダーって必要?
オートエンコーダが必要である理由は、すなわち次元圧縮や特徴抽出するメリットとつながっています。次元圧縮、特徴抽出をする最大の理由は勾配消失と過学習の2つを回避することです。
中間層を多層化したニューラルネットワークでは、主に誤差逆伝播法(予測結果と実正解との誤差を最初の処理に返してやる手法)を用いることにより、計算量が膨大かつ複雑化します。勾配消失とは、その結果繰り返しの計算の過程で誤差(計算の重み)が少なく見積もられてしまう、すなわち勾配が消失してしまうという問題です。最初の層の情報伝達が上手くいかなくなり、そのため適切な最適解を求めることができなくなり、学習に時間がかかってしまいます。
このようにオートエンコーダは勾配消失や過学習という問題解決に対して力を発揮します。では、その内部はどうなっているのか。続いて、オートエンコーダの仕組みについて解説しましょう。
オートエンコーダーの仕組み
オートエンコーダは簡単にいってしまえば入力されたデータを圧縮(次元削減)するための技術です。これにより勾配消失や過学習という課題解決をすることができましたよね。
オートエンコーダによる次元削減は以下のように行われます。例えば入力層で入力されたデータを3次元としたならば、中間層で重要なデータのみを残してエンコーダにより2次元以下に圧縮し、その後圧縮されたデータはデコーダによって復元され、入力層で入力されたデータとほぼ同一のデータを出力します。
これがオートエンコーダの一般的な仕組みです。オートエンコーダは学習データのノイズ除去や異常検知に用いられ、それぞれ仕組みについて解説します。
学習データにノイズが入っていると、画像認識といったデータの認識が必要な処理において認識率が下がってしまいます。このデータのノイズを除去するためにオートエンコーダが使われ、ます。このオートエンコーダはノイズなしデータで訓練をおこなうことで入力したデータのノイズが除去できるようになります。
異常検知とは正常でないものを見つける技術です。不良品を画像で探す仕組みを例にしましょう。その仕組みは、ノイズ処理を応用し、ノイズが残っている入力画像と、多くの場合ノイズとして処理されてしまう傷やヒビがなくなっている出力画像と比較し、この画像の製品は不良品なのか、どこに不良があるのかを見分けるというものです。
※異常検知についてはこちらの記事でも取り扱っています
オートエンコーダはこのような仕組みで成り立っています。ところで、オートエンコーダを使うのはどのようなメリットがあり、どのようなデメリットがあるのでしょうか。最後にオートエンコーダを使うことのメリットやデメリットを解説します。
オートエンコーダーを活用するメリットデメリット
オートエンコーダを活用するに当たって、他の手法に比べて有利な点のひとつとして、ノイズ処理のモデル構築の容易さがあげられます。先ほど紹介したオートエンコーダによるノイズ処理は同じくノイズ処理によく使われる主成分分析(複数の変数を合成してひとつの変数として扱う手法)に比べて構築が容易で、比較的複雑な開発をする必要はありません。
また、オートエンコーダを利用する最大の目的である次元圧縮をすることのメリットは前述したように勾配消失や過学習への対策といったことだけでなく、単純に計算量が抑えられるため他の処理に容量を割けることがあります。他にも、データが単純化されるため、データの特徴を視覚的にわかりやすく説明することが可能となるというメリットも。
デメリットとしては、次元圧縮すると当然ながら情報の一部が失われてしまうため、次元圧縮前のデータで処理をおこなうのに比べて精度が劣ることがあります。また、圧縮の次元がより低いほど(より圧縮するほど)情報の損失が大きくなり、使い物にならなくなってしまうこともあるので、注意しましょう。
このようなメリットやデメリットをオートエンコーダは持っています。
さて、今回は機械学習をするなら知っておきたいオートエンコーダという技術について解説しました。
オートエンコーダとはニューラルネットワークの一種で、中間層にてエンコーダでデータの圧縮(次元圧縮)をおこない、デコーダで復元し、入力時と出力時のデータを同一にするというのがオートエンコーダの仕組みとなります。オートエンコーダを使う理由は主に勾配消失と過学習の回避にあります。
勾配消失とは主に誤差逆伝播法により計算量が膨大なものとなり、その過程で誤差(計算の重み)が少なく見積もられてしまうことです。これを避けるためにオートエンコーダにより事前に重みを学習させることで、勾配の消失や学習速度の低下を防ぎます。過学習とは訓練用のデータの答えばかり覚えてしまい、未知のデータにそれを応用できずにいる状態で、オートエンコーダの次元圧縮でデータを疎にすることで、元データに依存しすぎない学習が可能となります。
オートエンコーダを使うことは次元圧縮することとほぼ同義であるため、次元圧縮のメリットとデメリットがオートエンコーダを使うメリットデメリットとなります。最大のメリットは勾配消失や過学習の回避に加え、計算量の減少によって効率の良さが上がるというものです。対して、圧縮によって情報が失われてしまうので精度が下がる可能性があるというデメリットも持っています。
オートエンコーダは事前学習や異常検知などの分野で頻繁に用いられる技術です。この記事でオートエンコーダについてしっかりと押さえておき、機械学習に取り組みましょう。
【お知らせ】
当メディア(AIZINE)を運営しているAI(人工知能)/DX(デジタルトランスフォーメーション)開発会社お多福ラボでは「福をふりまく」をミッションに、スピード、提案内容、価格、全てにおいて期待を上回り、徹底的な顧客志向で小規模から大規模ソリューションまで幅広く対応しています。
御社の悩みを強みに変える仕組みづくりのお手伝いを致しますので、ぜひご相談ください。
オートエンコーダとは?事前学習の仕組み・現在の活用方法を解説!!
オートエンコーダ:抽象的な特徴を自己学習するディープラーニングの人気者
【機械学習入門】これならわかる!オートエンコーダーの使い方!
オートエンコーダー_Auto Encoder (Vol.21)
ニューラルネットワークにおける勾配消失問題とは?
勾配消失問題とは
VisualStudio + Pythonでディープラーニング 過学習の何が良くないのか?
自己符号化器(オートエンコーダ)と主成分分析との関係
主成分分析「使ってみたくなる統計」シリーズ第4回
【人工知能】自己符号化器(Auto encoder:オートエンコーダー)とは