オートエンコーダの説明
1. 序章
情報理論は、今日のデータストレージとデータ分析の問題に対する答えを提供することが期待されているため、非常に興味深い科学分野です。 結局のところ、データ圧縮の理論的基盤を提供するのはこの分野です。 純粋に統計的なアプローチがありますが、機械学習は、さまざまなアプリケーションのデータを圧縮できる柔軟なニューラルネットワーク構造を提供します。
このチュートリアルでは、さまざまな一般的なオートエンコーダタイプの機能、構造、ハイパーパラメータ、トレーニング、およびアプリケーションについて説明します。
2. 関数
データを圧縮する方法はたくさんあり、主成分分析(PCA)などの純粋な統計手法は、データの変動の原因となる主要な機能を特定し、これらを使用してより少ないビット数で情報を表すのに役立ちます。 このタイプの圧縮は、「次元削減」と呼ばれます。 ただし、このPCAソリューションは、線形に相関のない機能を備えたエンコーディングしか提供できません。
機械学習の代替ソリューションは、オートエンコーダモデルとして構造化されたニューラルネットワークを提案します。オートエンコーダは、より豊富な非線形エンコーディング機能を学習できます。これらの機能は相互に相関する可能性があるため、必ずしも相互に直交しているとは限りません。 これらの関数を使用して、潜在空間で複雑なデータを表すことができます。
たとえば、顔認識用の畳み込みニューラルネットワーク(CNN)について説明する場合、これらは画像データのオートエンコーダーとして使用できます。 品質を少し下げることで画像をエンコードすることで、ユーザーはより少ないスペースで写真を保存できます。 出力画像と入力画像の品質の違いまたは損失は、再構成損失と呼ばれます。
オートエンコーダの主な目標は、再構築や「圧縮」の損失をほとんどまたはまったく伴わずに、可能な限り少ないコードを使用して複雑なデータを表現することです。 そのためには、オートエンコーダーがデータを調べて、データの特定のインスタンスを意味のあるコードに変換できる関数を作成する必要があります。 これは、より少ないディメンションを使用した元のデータの再マッピングと考えることができます。 また、このコードは、データにアクセスするためにデコーダーによって後で解釈される必要があることにも注意してください。
3. 一般的な構造
これらのモデルの機能をよりよく理解するために、モデルを個々のコンポーネントに分解します。 データがニューラルネットを移動するのと同じ順序で構造を説明し、最初にエンコーダー、次にボトルネックまたは「コード」、次にデコーダーについて説明します。これらのオートエンコーダーのセグメントは次のことができます。モデル内のノードの異なるレイヤーとして表示されます。 以下の画像は、これら3つの異なるコンポーネントを解釈するのに役立ちます。 矢印は、モデル内のデータの流れを示しています。
3.1. エンコーダー
エンコーダーの役割は、データをコードに圧縮することです。 ニューラルネットワークでは、一連のプーリングレイヤーを接続することでこの現象を実装できます。各レイヤーは、データに存在する次元の数を減らします。 これを行う際に、エンコードするのに十分な関連性のある部分のみを保持することにより、データのノイズを除去できます。
一般にすべての層の中央にある、次元が最も少ないニューラルネットワークの層は、ボトルネックと呼ばれます。 特定のインスタンスに関するより多くの情報を保持することに関心がある場合は、より大きなコードサイズが必要になります。 この「コードサイズ」ハイパーパラメータは、エンコードされるデータの量を定義し、同時にモデルを調整するため、重要です。 非常に大きなコードはより多くのノイズを表しますが、小さすぎるコードは手元のデータを正確に表さない可能性があります。
3.2. デコーダ
ネットワークのデコーダーコンポーネントは、コードのインタープリターとして機能します。 畳み込みニューラルネットの場合、特定のコードに基づいて画像を再構成できます。 このコンポーネントは、値の抽出、解釈、または解凍ツールと考えることができます。 画像のセグメンテーションは通常、デコーダーの仕事でもあります。 犬の写真を分類する最後の例を維持すると、以前の圧縮レイヤーのコピーをデコーダーノードの各レイヤーに追加しながら、デコードを続行できます。 そうすることで、写真内の犬を識別し、背景や他のオブジェクトから犬をセグメント化するピクセルのサブセットを含む写真を取得する必要があります。
4. 他の種類
オートエンコーダは、機械学習やコンピュータサイエンスのさまざまな分野で適用されています。 これが私たちが遭遇する可能性のある主なタイプとそれぞれの一般的なアプリケーションです。
4.1. ノイズ除去オートエンコーダ
これらのタイプのオートエンコーダは、ノイズの多いデータを効率的にエンコードして、コードからランダムノイズを排除することを目的としています。 そうすることで、オートエンコーダの出力はノイズ除去されることを意味し、したがって入力とは異なります。 次の画像に示すように、人気のあるMNISTデータセットを使用すると、この実装がどのようになるかを確認できます。
これらのタイプのオートエンコーダは、特徴抽出とデータノイズ除去に使用できます。
4.2. スパースオートエンコーダ
このタイプのオートエンコーダは、隠れノード接続の使用に明示的にペナルティを課します。 これにより、モデルが正規化され、データの過剰適合が防止されます。 この「スパースペナルティ」は、グローバル損失関数を取得するために再構成損失に追加されます。 または、隠しレイヤーで設定された数の接続を削除することもできます。
これは、さまざまな種類のエンコーダで使用できる正則化手法です。 アプリケーションは異なる場合があります。
4.3. ディープオートエンコーダ
ディープオートエンコーダは、2つの対称的なディープビリーフネットワークで構成されています。 この構造は、上記のノードと接続を使用したオートエンコーダの「一般的な構造」表現に似ています。 これらのミラーリングされたコンポーネントは、エンコーダーとデコーダーとして機能する2つの制限付きボルツマンマシンとして説明できます。
このタイプのオートエンコーダは、特徴抽出、次元削減、データ圧縮など、さまざまな目的で使用されます。
4.4. 収縮性オートエンコーダ
収縮性オートエンコーダは、入力に小さな変更が発生した場合にコードの大きな変動にペナルティを課します。これは、同様の入力が同様のコードを持つ必要があることを意味します。 これは通常、オートエンコーダによってキャプチャされた情報が意味を持ち、データの大きな変動を表すことを意味します。 これを実装するために、オートエンコーダのグローバル損失関数にペナルティ損失を追加できます。
データ拡張は、これらのタイプのオートエンコーダーに最適なタイプのアプリケーションです。
4.5. 不完全なオートエンコーダ
これらのオートエンコーダは、入力に比べて隠れた次元が小さくなっています。 これは、データに存在する最も重要な機能のみをキャプチャすることに優れていることを意味します。 これらのタイプのオートエンコーダーは、入力と同様の出力を再現することを目的としておらず、データ内の意味のある機能をキャプチャするために圧縮ステージに依存しているため、通常、正則化は必要ありません。
特徴抽出は、このタイプのオートエンコーダの主なタイプのアプリケーションです。
4.6. 畳み込みオートエンコーダ
畳み込みオートエンコーダは、さまざまな信号の合計を使用してエンコードおよびデコードできます。 これの最も一般的なバージョンは、おそらくU-Net畳み込みモデルです。 生物学的イメージングアプリケーション用に開発されたこのモデルは、画像全体のさまざまなフィルターの出力を解釈して、画像データを分類し、最終的にセグメント化します。 同様の畳み込みモデルは、今日、画像をセグメント化するために使用されています。
コンピュータビジョンおよびパターン認識におけるこれらのオートエンコーダのアプリケーションが見つかります。
4.7. 変分オートエンコーダー
変分オートエンコーダーまたはVAEは、空間内の単一のポイントではなく、分布としてデータをエンコードすることを前提としています。 これは、新しいデータを生成するためにより適切に使用できる、より規則的な潜在空間を持つ方法です。 したがって、VAEは生成モデルと呼ばれます。 Diederik PKingmaとMaxWellingによって発行されたオリジナルの「Auto-EncodingVariationalBayes」の論文では、これらの特定のモデルの完全な機能について詳しく説明しています。
この潜在的なスペースの分散を実現するプロセスにより、トレーニングプロセスは少し異なります。 まず、インスタンスを空間内のポイントとしてマッピングする代わりに、正規分布の中心としてマッピングします。 次に、その分布からポイントを取得して、ネットワーク全体に逆伝播される再構築エラーをデコードして計算します。
5. 結論
この記事では、さまざまな一般的なオートエンコーダタイプの役割、構造、ハイパーパラメータ、トレーニング、およびアプリケーションについて説明しました。