❶ PyTorch 學習筆記(十):初識生成對抗網路(GANs)
生成對抗網路(GANs)由Ian Goodfellow於2014年提出,直到2016年,其引起了學界和業界的廣泛關注,成為研究的熱點。GANs的核心創新在於對抗機制,其由生成模型和對抗模型兩部分組成,通過生成網路生成假數據,對抗網路通過判別器判斷真假,最終目標是使生成的數據以假亂真。
生成模型部分,利用正態分布隨機初始化隱含向量,通過類似解碼的過程映射到高維空間,生成與輸入數據相似的假數據。與自動編碼器不同的是,自動編碼器通過像素點差異計算損失,而GANs通過對抗過程計算損失。
對抗模型部分是一個判斷真假的判別器,輸入真實和假數據,優化判別器使其准確判斷真偽。接著訓練生成器,調整參數,使生成數據盡可能接近真實數據,以通過判別器的測試。
數學原理上,利用KL散度衡量兩種分布的概率相似程度,通過生成網路使假數據分布接近真實數據分布。優化目標是最大化似然函數,即最小化KL散度。在訓練過程中,循環更新判別器和生成器,通過V(G,D)函數的極值求解,實現生成器和判別器的協同優化。
然而,GANs存在局限性。當真實分布與生成分布無交集時,JS散度無法提供有效的梯度信息,導致訓練困難。此外,GANs容易出現模型坍塌現象,即生成器僅生成有限的樣本類型,缺乏多樣性。
在實際應用中,BN層與ReLU的順序影響生成器性能,優化策略對訓練結果至關重要。盡管GANs面臨挑戰,但其在圖像生成、風格遷移等領域的應用展現出巨大潛力。