<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>GAN on YennJ12 Engineering Blog</title><link>https://yennj12.js.org/yennj12_blog_V4/tags/gan/</link><description>Recent content in GAN on YennJ12 Engineering Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 21 Jun 2026 17:00:00 +0800</lastBuildDate><atom:link href="https://yennj12.js.org/yennj12_blog_V4/tags/gan/feed.xml" rel="self" type="application/rss+xml"/><item><title>AI 工程從零開始｜Phase 8 Part 2：GAN 與影片生成 — 對抗的藝術</title><link>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase8-part2-gan-video-generation-zh/</link><pubDate>Sun, 21 Jun 2026 17:00:00 +0800</pubDate><guid>https://yennj12.js.org/yennj12_blog_V4/posts/ai-eng-from-scratch-phase8-part2-gan-video-generation-zh/</guid><description>大多數人以為 GAN 是「讓兩個神經網路互相競爭」。 正確答案是：GAN 是一個精心設計的賽局均衡問題—— 訓練的藝術在於讓 Generator 和 Discriminator 以恰好正確的速度成長， 任何一方跑太快，整個系統就會崩潰。
面試情境： 你的團隊需要為電商平台建立「商品圖片風格轉換」系統，目標是把用戶上傳的素人照自動轉成專業棚拍風格，日處理量 50 萬張，延遲要求 &amp;lt; 200ms。請問你會選 GAN 還是擴散模型？架構如何設計？
一、核心問題：對抗訓練的本質與脆弱性 GAN（Generative Adversarial Network）由 Ian Goodfellow 於 2014 年提出，核心概念極為優雅：一個 Generator（偽造者）和一個 Discriminator（鑑別者）相互對抗，在賽局均衡中收斂到完美生成能力。
理論之美與工程之痛的落差：
理論上，當 Generator 生成的分佈完全匹配真實資料分佈時，Discriminator 的最優策略是輸出 0.5（無法分辨）。這個均衡點在數學上可以被證明存在，且對應的 Generator 是完美的。
然而工程現實截然不同：
模式崩潰（Mode Collapse）：Generator 學會只生成幾種「能騙過 Discriminator」的樣本，多樣性消失。FID（Fréchet Inception Distance）飆升至 100+ 而訓練 loss 看起來正常。 梯度消失（Vanishing Gradient）：Discriminator 太強時，Generator 收到的梯度趨近於零，學習停滯。 訓練震盪：兩者的 loss 呈鋸齒狀，沒有明確的收斂信號。 超參數敏感性：學習率差距 10x 即可讓整個訓練崩潰。 這些不是 GAN 的「缺陷」，而是對抗訓練本質的體現——兩個玩家的賽局均衡遠比單一損失函數的最佳化複雜。
GAN 仍值得學習的理由：
推論速度：單次前向傳播，A100 上 512×512 圖片 &amp;lt; 15ms，Diffusion 需要 50–200 步去噪，約 1–5s 潛在空間可插值：StyleGAN 的風格空間允許精確控制人臉年齡、表情、髮型 訓練資料效率：CycleGAN 無需配對資料，只需兩個域的圖片集合即可訓練 特定任務 SoTA：pix2pix 在語義分割→照片轉換任務上 FID 仍優於早期 Diffusion 二、三個演進階段（含 ASCII 架構圖） ╔══ Phase 1：POC / &amp;lt; 10K 樣本 ══╗ 目標：驗證 GAN 能否學到目標分佈的基本形狀。</description></item></channel></rss>