AI-For-Beginners/translations/ja/lessons/4-ComputerVision/09-Autoencoders
leestott 3ac667ea23 🌐 Update translations via Co-op Translator 2025-08-30 10:45:29 +00:00
..
AutoEncodersPyTorch.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 10:45:29 +00:00
AutoencodersTF.ipynb 🌐 Update translations via Co-op Translator 2025-08-30 10:45:29 +00:00
README.md 🌐 Update translations via Co-op Translator 2025-08-24 22:28:16 +00:00

README.md

オートエンコーダー

CNNをトレーニングする際の問題の一つは、大量のラベル付きデータが必要になることです。画像分類の場合、画像を異なるクラスに分ける必要があり、これは手作業で行う必要があります。

事前講義クイズ

しかし、CNNの特徴抽出器をトレーニングする際に、生データラベルなしデータを使用したい場合があります。これを自己教師あり学習と呼びます。ラベルの代わりに、トレーニング画像をネットワークの入力と出力の両方として使用します。オートエンコーダーの主なアイデアは、入力画像を潜在空間(通常は小さなサイズのベクトル)に変換するエンコーダーネットワークを持ち、その後、元の画像を再構築することを目指すデコーダーネットワークを使用することです。

オートエンコーダーは「ラベルなしデータの効率的なコーディングを学習するために使用される人工ニューラルネットワークの一種」です。

オートエンコーダーをトレーニングする際、元の画像から可能な限り多くの情報を正確に再構築するためにキャプチャしようとするため、ネットワークは入力画像の意味を捉える最適な埋め込みを見つけようとします。

オートエンコーダーの図

画像提供:Kerasブログ

オートエンコーダーの使用シナリオ

元の画像を再構築すること自体はあまり有用ではないように思えますが、オートエンコーダーが特に役立ついくつかのシナリオがあります:

  • 画像の次元を下げて可視化する、または画像埋め込みをトレーニングする。通常、オートエンコーダーはPCAよりも良い結果をもたらします。これは、画像の空間的な性質や階層的な特徴を考慮するためです。
  • ノイズ除去、つまり画像からノイズを取り除くこと。ノイズは多くの無駄な情報を含むため、オートエンコーダーは比較的小さな潜在空間にすべてを収めることができず、画像の重要な部分のみをキャプチャします。ノイズ除去器をトレーニングする際には、元の画像を使用し、人工的にノイズを追加した画像をオートエンコーダーの入力として使用します。
  • 超解像、画像の解像度を向上させること。高解像度の画像を使用し、低解像度の画像をオートエンコーダーの入力として使用します。
  • 生成モデル。オートエンコーダーをトレーニングした後、デコーダー部分を使用してランダムな潜在ベクトルから新しいオブジェクトを作成することができます。

変分オートエンコーダー (VAE)

従来のオートエンコーダーは、入力データの次元を何らかの方法で削減し、入力画像の重要な特徴を見つけます。しかし、潜在ベクトルはあまり意味を持たないことがよくあります。例えば、MNISTデータセットを例にとると、異なる潜在ベクトルがどの数字に対応するかを理解するのは簡単ではありません。近い潜在ベクトルが必ずしも同じ数字に対応するわけではないからです。

一方で、生成モデルをトレーニングするには、潜在空間を理解する方が望ましいです。このアイデアが変分オートエンコーダー (VAE) につながります。

VAEは、潜在パラメータの統計分布、いわゆる潜在分布を予測することを学習するオートエンコーダーです。例えば、潜在ベクトルが平均zmeanと標準偏差zsigmaどちらも次元dのベクトルを持つ正規分布に従うようにしたい場合があります。VAEのエンコーダーはこれらのパラメータを予測し、デコーダーはこの分布からランダムなベクトルを取り出してオブジェクトを再構築します。

まとめると:

  • 入力ベクトルからz_meanz_log_sigmaを予測します(標準偏差そのものではなく、その対数を予測します)
  • 分布N(zmean,exp(zlog_sigma))からベクトルsampleをサンプリングします
  • デコーダーはsampleを入力ベクトルとして使用して元の画像をデコードしようとします

画像提供:Isaak Dykemanのブログ記事

変分オートエンコーダーは、2つの部分からなる複雑な損失関数を使用します

  • 再構築損失は、再構築された画像がターゲットにどれだけ近いかを示す損失関数です平均二乗誤差、MSEなど。通常のオートエンコーダーと同じ損失関数です。
  • KL損失は、潜在変数分布が正規分布に近い状態を維持することを保証します。Kullback-Leiblerダイバージェンスという概念に基づいており、2つの統計分布がどれだけ似ているかを推定する指標です。

VAEの重要な利点の一つは、潜在ベクトルをサンプリングする分布が分かっているため、新しい画像を比較的簡単に生成できることです。例えば、MNISTで2次元の潜在ベクトルを使用してVAEをトレーニングした場合、潜在ベクトルの成分を変化させることで異なる数字を得ることができます

vaemnist

画像提供:Dmitry Soshnikov

画像がどのように互いにブレンドされるかを観察してください。潜在パラメータ空間の異なる部分から潜在ベクトルを取得し始めると、画像が変化していきます。この空間を2次元で可視化することもできます

vaemnist cluster

画像提供:Dmitry Soshnikov

✍️ 演習:オートエンコーダー

以下の対応するノートブックでオートエンコーダーについてさらに学びましょう:

オートエンコーダーの特性

  • データ特化型 - トレーニングした画像の種類にのみ適しています。例えば、花の超解像ネットワークをトレーニングした場合、ポートレートにはうまく機能しません。これは、ネットワークがトレーニングデータセットから学習した特徴を使用して細かい詳細を取り込むことで高解像度画像を生成するためです。
  • 損失あり - 再構築された画像は元の画像と同じではありません。損失の性質はトレーニング中に使用される損失関数によって定義されます。
  • ラベルなしデータで動作します。

事後講義クイズ

結論

このレッスンでは、AI研究者が利用できるさまざまな種類のオートエンコーダーについて学びました。それらを構築する方法や、画像を再構築するための使用方法について学びました。また、VAEについて学び、それを使用して新しい画像を生成する方法も学びました。

🚀 チャレンジ

このレッスンでは、画像にオートエンコーダーを使用する方法について学びました。しかし、音楽にも使用できますMagentaプロジェクトのMusicVAEプロジェクトをチェックしてみてください。このプロジェクトでは、オートエンコーダーを使用して音楽を再構築する方法を学習します。このライブラリを使用して実験を行い、何が作れるか試してみてください。

事後講義クイズ

復習と自己学習

参考として、以下のリソースでオートエンコーダーについてさらに学びましょう:

課題

TensorFlowを使用したこのートブックの最後に「タスク」があります - これを課題として使用してください。

免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書を正式な情報源としてお考えください。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当社は責任を負いません。