今回の記事は機械学習で将来性の高いと考えられている「オートエンコーダ」についてご紹介する記事です。そもそも「オートエンコーダ」とは何かについて初心者にも分かりやすいようにご説明していきます。是非参考にして見て下さい。
【機械学習】オートエンコーダとは?
オートエンコーダとはネットなどで検索すると、 オートエンコーダ(自己符号化器)と呼ばれる技術は、入力された記号をエンコード(符号化、圧縮)して別のものに変え、もとの形に戻して出力する手法です。この手法の独特な点は入力と出力が同じ、つまり「問題」と「答え」が同じ問題を学習させる点にあります。
これ意味あるのか?と言う疑問をもつ方が多いと思いますが、見た目上何をしているかは分かりずらいです。
一見すると意味がないように思われますが、上図に重要な要素が隠れています。それは入力層(左)と出力層(右)のニューロンに比べて中間層(中央)のニューロンが少ない点です。中央部分でネットワークが集中しているため、ネットワーク上で情報を処理する際には何らかの形で情報を減らさなければなりません。
情報を減らしても同じ答えを出せるようになるためには情報を圧縮させなければなりません。そこで中央部分のネットワークは「どんな情報を落としても大丈夫か」「どんな情報が必要なのか」という「情報の特徴」を学ばなければならなくなります。
これがオートエンコーダのキモです。多層ニューラルネットワークの各層それぞれにおいてオートエンコーダによる事前学習を行うことでバックプロパゲーションによる誤差が減り、多層ニューラルネットワークの学習効率が大幅に改善しました。
オートエンコーダの応用例
画像のノイズ除去
画像のノイズを除去するためには、ノイズをノイズだと認識できなければなりません。オートエンコーダにそれを学習させる方法が有効です。入力値としてノイズを混ぜた画像、正解として元の画像を与えて訓練することで、圧縮時にノイズを除去できるようになります。
こうして、オートエンコーダをデータクレンジングとして活用して得られたデータは、ほかの機械学習にも利用できます。特に分類器の作成において、ノイズのないデータは分類精度を高めるうえで欠かせない教材となります。
異常検知
ノイズ除去を学習したオートエンコーダは、異常(ノイズ)検知にも応用されます。正しく学習できていれば、何らかの異常を含むデータを処理した場合でも、オートエンコーダは異常のないデータを出力します。
つまり、入力値に異常がある場合、入力値と出力値の間に誤差が生じるということです。これを異常発生と定義し、オートエンコーダは異常検知システムとして機能します。具体的にどこに異常があるのか特定することも可能です。
クラスタリング
クラスタリングとは分類のことです。入力値がどのような特徴を持つグループに属するのかを見分けます。これにより、精度の高い異常検知が実現します。
クラスタリングに応用する際に活用するのは、教師なし学習です。正常品と異常品を、どれが正常なのかラベルを付けずに与えます。その結果、データを圧縮した潜在変数は正常品の特徴を備えたものと、異常品の特徴を備えたものにグループ分けされます。
このように確率分布的に潜在変数を取得する仕組みを、VAEと言います。この学習を経たオートエンコーダにデータを入力することで、入力値がどちらのグループに属するのか判別可能です。
一口に異常と言っても、複数のパターンがあれば、その数だけグループが作られます。つまり、対象のデータが異常品というだけでなく、どのような異常を持つかを判別できるということです。
AIの出力による表現
オートエンコーダの出力部のみを抽出し、実際には存在しない人の画像を作成したり、絵を書いたりする研究が行われています。まだまだ商用されているわけではありませんが、このような利用方法も存在します。
では今回の記事は以上です。他にも多数の機械学習関連の記事を記載しているので是非参考にして見て下さい。
コメント
[…] 詳しく知りたい方は下記記事でご紹介しているのでご確認ください。「オートエンコーダとは?」 […]