大きな画面での利用をおすすめします — アニメーションと操作がより快適になります。
入力

敵対的生成ネットワーク

敵対的生成ネットワーク(GAN)は二つのネットワークを交互に学習します。識別器は実データと生成例を見分け、生成器はその勾配で出力を改善します。個々の出力が妥当でも十分ではなく、分布全体が実データの多様性を表す必要があります。

識別器は採点基準を更新中の審査員です。生成器が基準へ適応すると、審査員も新しい生成例へ適応します。弱い審査員は悪い出力を見逃し、生成器は妥当な同じ例を繰り返しえます。分布として調べます。

二つの更新

生成器 G は潜在入力 z を G(z) に写します。画像では多数の画素ですが、ここでは数一つなので横軸上の全例を見られます。実訓練例は [-1.5,-1.1] と [1.1,1.5] に同数あります。

識別器 D は実例か生成値を受け、[0,1] の実データ由来スコアを返します。実例のラベルは 1、生成例は 0。曲線の高さは x での D の評価で、G の出現頻度を表す密度ではありません。

段階変わるもの固定するもの
D の学習D の重みと採点曲線G のパラメータ、固定入力の出力位置
G の学習G のパラメータと出力D のパラメータと曲線。ただし勾配は D を通す
学習後の生成抽出する z両モデルの重み。G だけ評価

識別器の更新

G を固定して最小化します。

L_D = -mean(log D(real)) - mean(log(1 - D(G(z))))

各平均は 64 例で、二項を足します。確信した出所誤判定は大きな損失です。D の更新は曲線を変えても、固定 z の不変な G 出力を移せません。共有パラメータはバッチ全体を最適化し、全実例のスコア上昇や全生成例の下降を各更新で保証しません。

固定 D を通して G を更新

D のパラメータを固定し、非飽和目標を使います。

L_G = -mean(log D(G(z)))

D の出力から生成標本へ、さらに G のパラメータへ微分します。D の重みを凍結しても入力への導関数を保ちます。D 出力を detach すると G に必要な勾配が切れます。

a を D の出力 logit とすると、一例の −log(sigmoid(a)) の a 微分は D(G(z)) − 1 で、残りは D が入力へ伝えます。G に対になる実画像を再構成目標として渡すわけではありません。点も独立の最適化粒子ではなく、共有 G 重みの変更で動きます。D 曲線を固定しても点が別位置へ移ればスコアは変わります。

既定の最初の注目例は dℓ/dx ≈ +0.1351 で、局所的には左移動が損失を下げます。その後のバッチ更新で出力は約 0.903 → 0.734。矢印は局所フィードバックで、各点に個別の最適化器を与えたり、全例の好む方向への移動を保証するものではありません。

元の GAN 論文第 3 節は交互更新と非飽和目標を説明します。元の minimax G 目標は mean(log(1 − D(G(z)))) の最小化で、初期に D が強く拒絶すると勾配が弱くなる場合があります。

ステップ実行

既定はノイズ範囲 1、G 一更新ごとに D 三更新、初期シード 42。実訓練例 64 と等間隔の潜在訓練入力 64 を使い、表示は別の 48 個の固定評価入力、[-1,1] を追います。固定することで新しい乱数と学習による移動を区別します。

  1. 未学習 G:48 出力は約 [-1.508,1.508]、左右近傍に十個ずつ、28 は両方の外です。D 平均は既に 0.500 ですが、分布学習の証拠にはなりません。
  2. D を三回:各更新を一場面にし、G の位置は不変で、D 曲線が実・生成の区別を学びます。
  3. 固定 D からフィードバック:最新 D で G のバッチ勾配を求めます。D の重みは更新せず、入力導関数は残します。
  4. G を一回:同じプローブの位置が変わり、左十、右七です。最初の近傍計数は改善しません。目標は学習した対抗信号で、この診断の直接最適化ではありません。
  5. 第二ラウンド:D 三回、G 一回で、左十一、右七になります。
  6. 400 ラウンドまで:後半は反復区間をまとめます。点が次へ動く間、棒は最後に完了したラウンドを示します。160 で左右十八ずつ、既定ブラウザの最後は左二十二、右二十、六つは外です。
  7. 多様性の二つの失敗:種子、データ、構造、最適化、比率を固定し潜在入力をすべてゼロへ。最後の 48 出力はすべて約 1.197、右群です。次に G ごとに D 五回の対照で範囲 1 と 0.25 を比べます。後者は入力が別でも右側でほぼ重なります。
  8. 新しいバッチを生成:最終 G 重みを固定し、新 z を各一回通します。D は不要で、学習更新もしません。

近傍は中心 −1.3 または 1.3 から 0.25 以内で、実訓練区間より両端へ 0.05 広いものです。計数や出力標準偏差は有限バッチの記述で、分布一致は証明しません。標準偏差だけでは形や左右の頻度も分かりません。

0.5 で成功と判断できない理由

理想的に分布が一致すると、最適識別器は支持集合で 0.5 を返します。逆は成立しません。弱い D は悪い例に迷い、平均 0.5 は 0 付近と 1 付近の強い評価の混合でも生まれます。

初期平均 0.500 でも多くの点が実近傍外という反例があります。位置と頻度を見て、理想解から有限モデル・交互更新・固定予算の均衡到達を推論しません。

まず更新比 3 を保って範囲をゼロへ、次に 1 へ戻して D 更新 1、3、5 を比べます。D 増加は力学と総計算量の両方を変え、被覆を単調に改善する保証はありません。

異なる入力でも出力は潰れる

「モード崩壊」は範囲 0.25、D/G 比 5 です。48 個の別入力の初期出力標準偏差は約 0.291、学習後約 0.005 で、全出力が右群へ寄り、左半分が欠けます。これはモード崩壊で、入力ゼロなら必ず同一になる退化とは異なります。

参照の範囲 1 は同じ D 五更新、シード、データ、構造、最適化、400 ラウンドで両群を表します。この対照は入力の変化だけでは十分でないことを示し、普遍的な範囲や治療法を与えません。

実際のチェックでは固定 z をチェックポイント間で追い、さらに新 z も抽出します。妥当でも繰り返す画像は種類の欠落を隠します。生成には学習済み G の順伝播だけが必要で、D は学習フィードバックの供給元でした。

境界ケース

  • 同じ潜在入力:決定的関数は同じ値を返します。更新でその値は動かせても、一つの固定入力から同時に多様な値は出せません。範囲ゼロでは新乱数もゼロ倍です。
  • 異なる入力の崩壊:範囲 0.25、比率 5 は学習で生じた失敗です。他の非ゼロ範囲でも被覆は悪くなりえ、制御項目は収束保証ではありません。
  • 更新比の変更:G は常に 400 更新で D 回数が変わるため、等計算量の比較ではありません。
  • 不完全な終点:既定も間や外に点が残り、予算終了は収束宣言ではありません。
  • 数値再生:同ブラウザ設定は同じ軌跡です。長い対抗訓練は実行環境の微差を増幅し、独立 NumPy の末尾小数は異なっても中心的な対照は再現できます。

よくある間違い

  • D 凍結と一緒に入力導関数も切り、G の勾配を失う。
  • 各生成例へ実例の再構成目標を対応させる。オートエンコーダの損失ではありません。
  • D スコアを画像品質の割合と読む。学習状態に依存する出所判定です。
  • 点を独立に実例へ動かす。最適化するのは共有重みで、位置は結果です。
  • 妥当な例があれば分布も正しいと思う。全例が右群なら左群が欠けています。
  • 生成にも D が必須と思う。学習済み G と新ノイズで生成できます。

モデルの範囲

一次元合成データ、小 tanh ネットワーク、固定訓練バッチ、決定的プローブ、有界 G 出力で、ブラウザが実際にパラメータを学習します。画像生成や一般収束は示しません。画像構造、確率的ミニバッチ、正規化、正則化、高度な安定化は省略します。

G は tanh 隠れユニット八個と有界出力、D は十二個と sigmoid 出力です。別々の Adam を学習率 0.01、beta1 = 0.5、beta2 = 0.999、epsilon = 1e-8 で使います。再現設定であって画像生成の推奨値ではありません。

逆伝播、学習ループ、または反復除去する拡散モデルと、GAN の学習後一回の G 評価を比較してください。