AI 101
オートエンコーダーとは何か?

無監督学習の技術について読んだことがある場合は、「オートエンコーダー」という用語に出会ったことがあるかもしれません。オートエンコーダーは、無監督学習モデルを開発する主な方法の1つです。ただし、オートエンコーダーとは正確に何ですか?
簡単に言うと、オートエンコーダーはデータを受け取り、データを圧縮してエンコードし、エンコードされた表現からデータを再構築します。モデルは、損失が最小化され、データが可能な限り正確に再現されるまでトレーニングされます。このプロセスを通じて、オートエンコーダーはデータの重要な特徴を学習できます。オートエンコーダーの簡単な定義は以上ですが、オートエンコーダーをより深く理解するために、オートエンコーダーのアーキテクチャとその応用について詳しく見ていきましょう。
オートエンコーダーとは何か
オートエンコーダーは、ニューラルネットワークです。ニューラルネットワークは複数の層で構成されており、オートエンコーダーの特徴は、入力層が出力層と同じ量の情報を含むことです。入力層と出力層が同じ数のユニットを持つ理由は、オートエンコーダーが入力データを複製することを目的としているからです。オートエンコーダーは、データを分析して再構築し、無監督の方法でデータのコピーを出力します。
オートエンコーダーを通過するデータは、入力から出力への直接的なマッピングではなく、ネットワークが入力データを単純にコピーするのではありません。オートエンコーダーには3つのコンポーネントがあります。入力(エンコード)部分がデータを圧縮し、圧縮されたデータ(ボトルネック)を処理するコンポーネント、出力(デコード)部分がデータを元のサイズに戻します。データがオートエンコーダーに与えられると、エンコードされて圧縮され、ネットワークはエンコードされた/圧縮されたデータでトレーニングされ、データの再構築を出力します。
なぜ、ネットワークをデータの再構築のみにトレーニングするのでしょうか。理由は、ネットワークが入力データの「本質」、または最も重要な特徴を学習するためです。ネットワークをトレーニングした後、モデルを使用して類似のデータを合成できます。特定の特徴を追加または削除することもできます。たとえば、オートエンコーダーをノイズの多い画像でトレーニングし、トレーニング済みモデルを使用して画像からノイズを除去することができます。
オートエンコーダーのアーキテクチャ
オートエンコーダーのアーキテクチャを見てみましょう。オートエンコーダーのアーキテクチャについて説明します。ここでは、オートエンコーダーの主なアーキテクチャについて説明します。後で説明するように、この一般的なアーキテクチャにはバリエーションがあります。

ミケラ・マッシによるウィキメディア・コモンズの写真、(https://commons.wikimedia.org/wiki/File:Autoencoder_schema.png)
前述のように、オートエンコーダーは基本的に3つのコンポーネントに分けることができます。エンコーダー、ボトルネック、デコーダーです。
オートエンコーダーのエンコーダー部分は、通常、フィードフォワード、密接に接続されたネットワークです。エンコーディング層の目的は、入力データを圧縮して潜在的な空間表現を生成し、データの次元を削減した新しい表現を生成することです。
コード層、またはボトルネックは、圧縮されたデータの表現を扱います。ボトルネックコードは、観測されたデータの最も関連する部分、またはデータの再構築に最も重要な特徴を決定するように慎重に設計されています。ここでの目標は、データを保存する必要がある側面と破棄できる側面を決定することです。ボトルネックコードは、表現サイズ(表現のコンパクトさ)と変数/特徴の関連性の 2 つの考慮事項のバランスをとる必要があります。ボトルネックは、ネットワークの重みとバイアスの要素ごとの活性化を実行します。ボトルネック層は、潜在的な表現または潜在的な変数とも呼ばれることがあります。
デコーダー層は、圧縮されたデータを取り込み、元の未変更のデータと同じ次元の表現に戻す責任があります。変換は、エンコーダーによって生成された潜在的な空間表現を使用して行われます。
オートエンコーダーの最も基本的なアーキテクチャは、シングル層パーセプトロンを使用するマルチレイヤーパーセプトロンと同様のフィードフォワードアーキテクチャです。通常のフィードフォワードニューラルネットワークと同様に、オートエンコーダーはバックプロパゲーションを使用してトレーニングされます。
オートエンコーダーの属性
オートエンコーダーにはさまざまな種類がありますが、すべてに共通する特性があります。
オートエンコーダーは自動的に学習します。ラベルは不要であり、十分なデータがあれば、特定の種類の入力データで高いパフォーマンスを達成することが容易です。
オートエンコーダーはデータに特化しています。つまり、オートエンコーダーは、すでにトレーニングされているデータと非常に似たデータのみを圧縮できます。オートエンコーダーはまた、損失が大きいことを意味します。つまり、モデルの出力は入力データよりも劣化しています。
オートエンコーダーを設計する際、機械学習エンジニアは、コードサイズ、層の数、層ごとのノードの数、損失関数の 4 つのモデルハイパーパラメータに注意する必要があります。
コードサイズは、ネットワークの中央部分のノードの数を決定します。ノードが少ないと、データがさらに圧縮されます。深層オートエンコーダーでは、層の数はエンジニアが適切と判断する任意の数になりますが、エンコーダーでは層ごとのノードの数は減少する必要があります。一方、デコーダーでは、層ごとのノードの数は最終層に近づくにつれて増加する必要があります。最後に、オートエンコーダーの損失関数は、通常、2進クロスエントロピーまたは平均二乗誤差のいずれかです。2進クロスエントロピーは、データの入力値が0〜1の範囲にある場合に適しています。
オートエンコーダーの種類
上で説明したように、クラシックなオートエンコーダーアーキテクチャにはバリエーションがあります。オートエンコーダーのさまざまなアーキテクチャを見てみましょう。
スパース

ミケラ・マッシによるウィキメディア・コモンズの写真、CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Autoencoder_sparso.png)
オートエンコーダーは通常、ボトルネックを介してデータを圧縮しますが、スパースオートエンコーダーは、その代替手段です。スパースネットワークでは、隠し層はエンコーダーとデコーダーの層と同じサイズを維持します。代わりに、層内の活性化が罰則を受けます。入力データの統計的特徴をより良く捉える損失関数が設定されます。言い換えると、スパースオートエンコーダーの隠し層には、従来のオートエンコーダーよりも多くのユニットがありますが、任意の時点で有効なのはその一部のみです。最も影響力のある活性化関数が保存され、他の関数は無視されます。この制約により、ネットワークは入力データの最も重要な特徴を見つけることができます。
収縮
収縮オートエンコーダーは、データの小さな変化に対して耐性があり、データの表現を一貫して維持するように設計されています。これは、損失関数に罰則を適用することで実現されます。この正則化技術は、入力エンコーダーの活性化に対するヤコビ行列のフロベニウスノルムに基づいています。この正則化技術の影響は、モデルが類似した入力に対して類似したエンコーディングを構築することを強制することです。
畳み込み
畳み込みオートエンコーダーは、入力データをサブセクションに分割し、それらを単純な信号に変換して、新しいデータの表現を生成します。畳み込みニューラルネットワークと同様に、畳み込みオートエンコーダーは、画像データの学習を専門に行います。画像全体にわたってセクションごとにフィルタを適用します。エンコーディング層によって生成されたエンコーディングは、画像を再構築したり、画像を反映したり、画像の幾何学的特性を変更したりするために使用できます。フィルタがネットワークによって学習されると、十分に似た入力に対して特徴を抽出するために使用できます。
ノイズ除去

MALによるウィキメディア・コモンズの写真、CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:ROF_Denoising_Example.png)
ノイズ除去オートエンコーダーは、エンコーディングにノイズを導入し、元の入力データの破損版を生成します。この破損したデータは、モデルをトレーニングするために使用されますが、損失関数は出力値を元の入力と比較し、破損した入力と比較しません。目標は、ネットワークが元の、破損していないバージョンの画像を再現できるようにすることです。破損したデータと元のデータを比較することで、ネットワークはデータの最も重要な特徴と、ノイズ/破損である特徴を学習します。言い換えると、モデルが破損した画像をノイズ除去するには、画像データの重要な特徴を抽出する必要があります。
変分
変分オートエンコーダーは、潜在変数の分布について仮定を行います。変分オートエンコーダーは、トレーニング画像/潜在的属性のさまざまな特徴に対して確率分布を生成します。トレーニング中に、エンコーダーは入力画像のさまざまな特徴に対して潜在的な分布を生成します。

ネットワークをトレーニングする際、エンコーディングされたデータが分析され、認識モデルは画像の平均と標準偏差を出力します。値に基づいて分布が作成されます。これは、さまざまな潜在的な状態に対して行われます。デコーダーは、対応する分布からランダムにサンプリングし、それらを使用してネットワークへの初期入力を再構築します。
オートエンコーダーの応用
オートエンコーダーは、幅広い応用で使用できますが、通常、次のようなタスクに使用されます。次元削減、データノイズ除去、特徴抽出、画像生成、シーケンス予測、レコメンデーションシステムです。
データノイズ除去は、オートエンコーダーを使用して画像からノイズを除去することです。同様に、オートエンコーダーは他の種類の画像の損傷、たとえばぼけた画像や部分が欠けている画像を修復するために使用できます。次元削減は、高容量ネットワークが画像の有用な特徴を学習するのに役立ちます。つまり、オートエンコーダーは、他の種類のニューラルネットワークのトレーニングを補うために使用できます。これは、オートエンコーダーを他のトレーニングデータセットの特徴を特定して他のモデルをトレーニングするために使用する場合の特徴抽出にも当てはまります。
画像生成の場合、オートエンコーダーは偽の人間の画像やアニメーションキャラクターを生成するために使用できます。これは、顔認識システムの設計やアニメーションの特定の側面の自動化に応用できます。
シーケンス予測モデルは、データの時間的構造を決定するために使用できます。つまり、オートエンコーダーはシーケンスの次のイベントを生成するために使用できます。したがって、オートエンコーダーはビデオを生成するために使用できます。最後に、深層オートエンコーダーは、エンコーダーがユーザーの関心度データを分析し、デコーダーが確立されたパターンに適合するレコメンデーションを生成することで、レコメンデーションシステムを作成するために使用できます。












