GAN:
值函數(評價函數,非損失函數):
x表示真實圖片,z表示輸入噪聲,x~Pdata(x)與x~Pz(z)表示滿足各自的分佈律。理想狀態下,D(G(Z))=0.5
更新方式:
交替訓練G(Generator)和D(Discriminator), D加梯度,G減梯度
簡單講一下上面兩個公式,m指樣本個數,從評價函數出發:
第一個公式,更新的是D的w()
第二個公式,更新的是G的w()
CGAN條件對抗生成網絡:
參考網址:https://blog.csdn.net/stalbo/article/details/79359380
輸入增加額外信息y。在mnist數據集上進行CGAN的實驗,G網絡輸入是z噪聲及標籤y,輸出爲假圖片向量。D網絡輸入是圖像向量和標籤y,輸出是來自mnist數據集的概率
目標函數是帶有條件概率的二元極小極大博弈,x是mnist數據集的圖片向量
DCGAN深度卷積生成對抗網絡:
CNN(2個CNN替換了D和G)與GAN的結合。
stride代替pooling實現了G的可微,使評價函數平滑收斂
應用: 生成卡通頭像
代碼鏈接:https://zhuanlan.zhihu.com/p/24767059
爬蟲爬取圖站圖像——用opencv裁出頭像(用了detectMultiScale方法多尺度檢驗人臉)——用自己的數據集訓練及測試
Cycle GAN
F(G(X))=X
G(F(Y))=Y
用循環一致性損失
self-attention GAN(SAGAN) 帶自注意力機制的生成對抗網絡
https://blog.csdn.net/zhangyumengs/article/details/80555523
http://baijiahao.baidu.com/s?id=1602505761971177843&wfr=spider&for=pc
https://www.jianshu.com/p/0540fb554088
γ從0開始變大
Βj,i表示模型在合成第j個區域時對第i個位置的關注程度
spectral normalization譜歸一化
Wasserstein GAN(WGAN)
https://www.cnblogs.com/Charles-Wan/p/6501945.html
https://blog.csdn.net/zhl493722771/article/details/82781914
https://blog.csdn.net/qq_25737169/article/details/78857788
https://zhuanlan.zhihu.com/p/25071913
https://www.cnblogs.com/ranjiewen/p/9201631.html
《深度學習入門之Pytorch》
GAN的問題:
在優化判別器時,爲衡量生成樣本與 真實樣本的差異時,引入了JS散度JSD越小說明兩種分佈越接近。當兩種分佈沒有重疊或重疊很小時,JSD恆等於常數log2,梯度消失,無法進一步優化。換句話說,判別器訓練得太好,分佈不重疊,梯度消失;判別器訓練得不好,錯誤的優化方向。判別器不好不壞最好。
真實樣本是一個高維分佈,生成樣本是一個低維分佈。此外,不可能真正去計算兩個分佈,只能近似取樣,導致兩個分佈可能沒有重疊部分。
引入Wasserstein距離替換JS散度衡量兩個分佈差異。
相比原始GAN改進了4點:
- 判別器最後一層去掉sigmoid(WGAN做的是迴歸問題,而原始GAN做的分類問題)
- 生成器和判別器的loss不取log
- 每次更新判別器的參數之後把它們的絕對值截斷到不超過一個固定常數c(權重裁剪)
- 不要用基於動量的優化算法(包括momentum和Adam),推薦RMSProp,SGD也行(作者的實驗結論)
引入權重裁剪的目的:
滿足一階Lipschitz連續性,使關於輸入的樣本,D輸出變化比較平穩。引入一階Lipschitz連續性是爲了將一個無法求解的inf問題轉換爲求max問題。
WGAN提出使用wassertein距離作爲優化方式訓練GAN,但是數學上和真正代碼實現上還是有區別的,使用Wasserteion距離需要滿足很強的連續性條件—lipschitz連續性
Improving WGAN
WAN爲滿足一階lipschitz連續性,使用了權重衰減的方法。將一階lipschitz連續性等價於梯度範數處小於1
STARGAN(星型網絡)
https://blog.csdn.net/weixin_42445501/article/details/82748225
該2018CVPR做了變換表情方面的工作
多數據集訓練用來CelebA(膚色、年齡)和 RaFD(表情),這兩個數據集內容相交但類別不相交,使用Mask vector對標記進行處理,如下所示:
第一行代表CelebA屬性,第二行代表RaFD屬性,第三行爲數據集one-hot標籤
參考鏈接: