オートエンコーダーは、入力データを効率的にエンコードする方法を学習するために使用できるニューラル ネットワークです。ニューラル ネットワークは、何らかの入力が与えられると、まず一連の変換を使用してデータを低次元空間にマッピングします。ニューラル ネットワークのこの部分はエンコーダーと呼ばれます。 次に、ネットワークはエンコードされた低次元データを使用して入力を再構築しようとします。ネットワークのこの部分はデコーダーと呼ばれます。エンコーダーを使用して、データをニューラル ネットワークが理解できる形式に圧縮できます。ただし、通常はより効率的な手書きのアルゴリズム (jpg 圧縮など) があるため、オートエンコーダーがこの目的で使用されることはほとんどありません。 さらに、オートエンコーダはノイズ除去タスクを実行するためによく使用され、元の画像を再構築する方法を学習できます。 変分オートエンコーダとは何ですか? オートエンコーダに関連する興味深いアプリケーションは数多くあります。 そのうちの 1 つは変分オートエンコーダと呼ばれます。変分オートエンコーダを使用すると、単にデータを圧縮するだけでなく、オートエンコーダがこれまでに遭遇した新しいオブジェクトを生成することもできます。 一般的なオートエンコーダを使用する場合、ネットワークによって生成される特定のエンコーディングが何であるかはわかりません。異なるエンコーディング オブジェクトを比較することはできますが、内部的にどのようにエンコードされているかを理解することはほぼ不可能です。つまり、エンコーダーを使用して新しいオブジェクトを生成することはできません。入力がどのようになるかさえわかりません。 変分オートエンコーダを使用した逆のアプローチを使用します。潜在ベクトルの分布に注意を払う必要はなく、ネットワークにどのような分布を望むかを伝えるだけで済みます。 通常、単位正規分布特性を持つ潜在ベクトルを生成するようにネットワークを制約します。次に、データを生成するときに、この分布からサンプルを採取し、そのサンプルをデコーダーに渡すだけで、ネットワークのトレーニングに使用したオブジェクトとまったく同じ新しいオブジェクトが返されます。 以下では、Python と TensorFlow を使用してこれを行う方法について説明します。ネットワークに MNIST 文字を描画するように教えます。 最初のステップはトレーニングデータをロードすることです まず、いくつかの基本的なインポート操作を実行しましょう。 TensorFlow には、MNIST データセットに簡単にアクセスできる非常に便利な関数があります。
入力データと出力データの定義 MNIST 画像の寸法は 28 x 28 ピクセルで、モノクロ チャネルのみです。入力データ X_in は MNIST 文字のバッチであり、ネットワークはそれらを再構築する方法を学習します。次に、入力と同じ次元を持つ出力で、プレースホルダー Y にそれらを出力します。 Y_flat は後で損失関数を計算するときに使用され、keep_prob はドロップアウトを適用するときに(正規化方法として)使用されます。トレーニング中は、その値は 0.8 に設定されます。新しいデータを生成するときは、ドロップアウトを使用しないため、その値は 1 になります。 TensorFlow には定義済みの Leaky ReLU 関数がないため、lrelu 関数を独自に定義する必要があります。
エンコーダの定義 入力は画像なので、畳み込み変換を使用する方が合理的です。最も注目すべき点は、エンコーダーはガウス分布に従うオブジェクトを作成する必要があるため、エンコーダー内に 2 つのベクトルを作成することです。
後で、エンコーダーが正規分布に従うデータ ポイントを実際に生成するように「強制」する方法を説明します。デコーダーに入力されるエンコードされた値は、z として表すことができます。損失関数を計算するときは、選択した分布の平均と標準偏差が必要になります。
デコーダーの定義 デコーダーは、入力値が定義した特定の分布からサンプリングされたかどうかを気にしません。単純に入力画像を再構築しようとします。最後に、一連の転置畳み込みを使用します。
ここで、2 つの部分を接続します。
損失関数を計算し、ガウス隠れ分布を実装する 画像再構成の損失関数を計算するために、単純に二乗差を使用しました (これにより、画像が少しぼやけることがあります)。この損失関数には KL ダイバージェンスも組み込まれており、これにより、隠し値が標準分布からサンプリングされることが保証されます。このトピックについて詳しく知りたい場合は、この記事 (https://jaan.io/what-is-variational-autoencoder-vae-tutorial/) をご覧ください。
ネットワークのトレーニング これで、ついに VAE をトレーニングできるようになりました。 200 ステップごとに、現在の再構築がどのようになっているかを確認します。約 2000 回の反復の後、ほとんどの再構築は妥当なものに見えました。
新しいデータを生成する 最も驚くべきことは、新しいキャラクターを生成できるようになったことです。最後に、単位正規分布から値をサンプリングし、それをデコーダーに入力します。生成された文字のほとんどは人間の手書き文字と同一です。
一部自動生成された文字。 要約する これは、VAE アプリケーションの非常に単純な例です。しかし、可能性を想像してみてください。ニューラル ネットワークは音楽の作曲を学習でき、本やゲームの説明を自動的に作成できます。革新的な思考により、VAE は斬新なプロジェクトのためのスペースを創出できます。 |
<<: AIは敵ではなく友達でしょうか?自殺防止技術が25人の命を救うことに成功
>>: Python の高レベル自然言語処理ライブラリである SpaCy は、世界最速の構文解析ツールとして知られています。
海外メディアの報道によると、デザインソフトウェアプロバイダーのAdobeは最近、インドの生成AIスタ...
セキュリティ分野で広く使用されている技術の中で、生体認証技術のプライバシー問題が最も懸念されています...
実際の運転シナリオでは、観察と相互作用を通じて、インテリジェント運転車は知識を蓄積し、予測できない状...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[427712]] 2021年9月28日にarXivにアップロードされた論文「SafetyNet:...
2019年、人間と機械のゲームバトルにおいて、Open AI Fiveが圧倒的なパフォーマンスでD...
著者 | Fu Haoxian、Peng Xiangzhou 他グラフニューラルネットワークの長期的...
「霧深い春の朝、緑の枝に雪の結晶が舞い散る。」さあ、また雪のように雪の結晶が舞い散る季節がやってき...
AI スタートアップのアイデアは、わずか 2 か月の作業で商品化できるのでしょうか?今年のイノベーシ...
「我々の実験は制御不能になった!これは我々の世界の終わりだ!」 - デイ・アフター・トゥモローSF映...
分析会社フォレスターは7月24日、2023年のトップ10新興テクノロジーレポートを発表しました。生成...
[[200484]]週末、OpenAI は世界最高峰の DotA 2 イベント TI7 (The I...