ホームページ > 記事 > テクノロジー周辺機器 > 実際の深い畳み込み敵対的生成ネットワーク
翻訳者 | Zhu Xianzhong
評者 | Sun Shujuan
Red Vineyard (著者: Vincent van Gogh)
ニューヨーク・タイムズ紙によると、企業が収集したデータのほとんどはいかなる形でも分析または使用されないため、データセンターのエネルギーの 90% が無駄になっています。より具体的には、これは「ダークデータ」と呼ばれます。
「ダーク データ」とは、さまざまなコンピューター ネットワーク操作を通じて取得されたものの、洞察を導き出したり意思決定を行うためにはまったく使用されなかったデータを指します。組織のデータ収集能力は、データ分析のスループットを超える場合があります。場合によっては、組織はデータが収集されていることさえ知らない場合があります。 IBM は、センサーとアナログからデジタルへの変換によって生成されたデータの約 90% が使用されないと推定しています。 — Wikipedia の「ダーク データ」の定義 このデータが機械学習の観点から洞察を引き出すのに役に立たない主な理由の 1 つは、ラベルが欠如していることです。このため、教師なし学習アルゴリズムは、このデータの可能性をマイニングする上で非常に魅力的になります。
敵対的生成ネットワーク
この論文は、現代の機械学習の分野において非常に重要なマイルストーンを設定し、教師なし学習の新しい道を切り開きます。 2015年にRadfordらによって発表された深層畳み込みGANの論文では、畳み込みネットワークの原理を適用することで2D画像の生成に成功しており、この論文では引き続きこのアイデアを発展させています。
この記事では、上記の論文で説明した主要なコンポーネントについて説明し、PyTorch フレームワークを使用して実装することを試みます。 GAN の魅力的な側面は何ですか?
GAN または DCGAN (Deep Convolutional Generative Adversarial Networks) の重要性を理解するために、まず、GAN または DCGAN がなぜこれほど人気があるのかを理解しましょう。
2. ジェネレーターとディスクリミネーターは、ラベル付きデータが限られたユースケースに対して非常に優れた特徴抽出器として機能するか、追加データを生成して二次モデルのトレーニングを改善します (代わりに偽のサンプルを生成できるため、拡張手法を使用します)。
3. GAN は、最尤法に代わる手法を提供します。敵対的学習プロセスと非ヒューリスティックなコスト関数により、強化学習にとって非常に魅力的になります。
4. GAN に関する研究は非常に魅力的であり、その結果は ML/DL の影響について広範な議論を引き起こしました。たとえば、ディープフェイクは、対象となる人物に人の顔を重ねる GAN のアプリケーションですが、不正な目的に使用される可能性があるため、本質的に非常に物議を醸しています。
5. 最後になりましたが、この種のネットワークを使用するのは素晴らしいことですし、この分野の新しい研究はどれも興味深いものです。
全体的なアーキテクチャ
深層畳み込み GAN のアーキテクチャ先ほど説明したように、DCGAN、DCGAN の実装を試みます。リアルな画像を生成する畳み込みネットワークである GAN の核となるアイデア。
DCGAN は 2 つの独立したモデルで構成されます。ジェネレーター (G) は入力としてランダム ノイズ ベクトルをモデル化し、データ分布を学習して偽のサンプルを生成しようとします。もう 1 つはトレーニング データを取得するディスクリミネーター (D) です。 (本物のサンプル) と生成されたデータ (偽のサンプル) を分類してみます。これら 2 つのモデル間の闘争は、敵対的トレーニング プロセスと呼ばれるもので、一方の損失が他方の利益になります。
ジェネレーター
ジェネレーター アーキテクチャ図ジェネレーターは、偽の画像を生成するジェネレーターであるため、最も関心のある部分です。差別者を騙そうとする。
ここで、ジェネレーターのアーキテクチャをさらに詳しく見てみましょう。
このうち、レイヤー 2 からレイヤー 5 はコア ジェネレーター ブロックを構成し、これを N 回繰り返すことで目的の出力画像形状を得ることができます。
以下は、PyTorch での実装方法の重要なコードです (完全なソース コードについては、アドレス https://github.com/akash-agni/ReadThePaper/blob/main/DCGAN/dcgan を参照してください) .py)。
PyTorch フレームワークのジェネレーターを使用してキー コードを実装します
Discriminatorアーキテクチャ 図
この図から、ディスクリミネーターは画像分類ネットワークに似ていますが、若干の調整が加えられていることが簡単にわかります。たとえば、ダウンサンプリングにプーリング層を使用する代わりに、ストライド畳み込み層と呼ばれる特別な畳み込み層を使用します。これにより、独自のダウンサンプリングを学習できます。
ここで、識別器のアーキテクチャを詳しく見てみましょう。
このアーキテクチャでは、レイヤー 2 からレイヤー 5 が識別器のコア ブロックを形成し、計算を N 回繰り返すことで、トレーニング データごとにモデルをより複雑にすることができます。
これを PyTorch で実装する方法を示します (完全なソース コードについては、アドレス https://github.com/akash-agni/ReadThePaper/blob/main/DCGAN/dcgan.py を参照してください)。
PyTorch で実装された弁別器のキー コード部分
正しい値を最大化するために弁別器 (D) をトレーニングします。ラベルがトレーニング サンプルとジェネレーターからのサンプルに割り当てられる確率 (G)。これは、log(D(x)) を最小化することで実現できます。同時に log(1 − D(G(z))) を最小化するように G を学習させます。ここで、z はノイズ ベクトルを表します。つまり、D と G の両方が値関数 V (G, D) を使用して、次の 2 プレイヤー ミニマックス ゲームをプレイします。
敵対的コスト関数の計算式
実際のアプリケーション環境では、上記の方程式は G が適切に学習するのに十分な勾配を提供しない可能性があります。学習の初期段階では、G が不十分な場合、サンプルはトレーニング データと大幅に異なるため、D は高い信頼度でサンプルを拒否できます。この場合、log(1 − D(G(z))) 関数は飽和に達します。 log(1 − D(G(z))) を最小化するように G を訓練する代わりに、logD(G(z)) を最大化するように G を訓練します。この目的関数は、動的 G と D に対して同じ固定点を生成しますが、学習の初期段階でより強力な勾配計算を提供します。 —— arxiv 論文
これは、2 つのモデルを同時にトレーニングしているため、難しい場合があります。GAN はトレーニングが難しいことで有名です。これについては後で説明します。既知の問題はモード崩壊と呼ばれます。
この論文では、学習率 0.0002 の Adam オプティマイザーを使用することを推奨しています。このような低い学習率は、GAN が非常に早く発散する傾向があることを示しています。また、値が 0.5 および 0.999 の 1 次および 2 次の運動量を使用して、トレーニングをさらに高速化します。モデルは、平均が 0、標準偏差が 0.02 の正規加重分布に初期化されます。
以下は、このためのトレーニング ループを実装する方法を示しています (完全なソース コードについては、https://github.com/akash-agni/ReadThePaper/blob/main/DCGAN/dcgan.py を参照してください)。
DCGAN のトレーニング ループ
理想的には、ジェネレーターがさまざまな出力を生成するようにします。たとえば、顔を生成する場合は、ランダムな入力ごとに新しい顔を生成する必要があります。ただし、ジェネレーターがディスクリミネーターを欺くのに十分な妥当性のある出力を生成する場合、同じ出力を何度も生成する可能性があります。
最終的に、ジェネレーターは単一の識別器を過剰に最適化し、少数の出力セットの間でローテーションすることになります。これは「モード崩壊」と呼ばれる状況です。
次の方法を使用して状況を修正できます。
つまり、上記の GAN と DCGAN に関する論文は、教師なし学習の新しい章、新しい方法を開いたという点で、単に画期的な論文にすぎません。その中で提案されている敵対的トレーニング方法は、現実世界の学習プロセスを厳密にシミュレートするモデルをトレーニングするための新しい方法を提供します。したがって、この分野がどのように発展するかを見るのは非常に興味深いでしょう。
最後に、この記事のサンプル プロジェクトの完全な実装ソース コードは、私の GitHub ソース コード リポジトリにあります。 翻訳者紹介
Implementing Deep Convolutional GAN 、著者: Akash Agnihotri
以上が実際の深い畳み込み敵対的生成ネットワークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。