最近的一篇Wasserstein GAN火遍朋友圈,相關的文章也拿來讀一讀,趕個時髦
簡介
文章用博弈論,令生成模型和判別模型的相愛相殺後,得到與訓練數據分佈儘可能接近的生成模型,一個扮演打假者,一個扮演造假者,前者試圖在真貨與假貨中辨別哪個樣本是假貨(生成的),哪個是真貨(真實樣本),後者不斷提高自己的製假水平,不讓前者辨別出來
文章全名:Generative Adversarial Nets
這是生成對抗網絡的開山之作,發表之後,無數相關論文雪花般飄落
訓練目標與過程
判別模型可以認爲就是一般的二分類模型,分辨真僞,因此,當生成模型一定時,最優值即爲下式
分子爲真實數據,分母的右側爲生成模型造出的數據
生成模型要使得差別模型儘可能無法識別,因此目標函數同時包含二者的成分,即最小化下式
或最大化
所以,綜合目標爲
訓練過程分爲兩步:
1、訓練判別模型,迭代k次
2、訓練生成模型,只迭代1次
兩個模型都是神經網絡,對數據的分佈不作假設,因此極易過擬合,所以兩個步驟的訓練都採用了不充分的訓練,特別是生成模型,儘量讓擬合速度慢下來,擬合的過程如下圖:
黑點代表訓練數據分佈,藍色是判別界面,綠色是生成數據分佈。如(a)所示,一開始兩個模型都是離各自目標比較遠的,在(b)中,判別模型首先發力,取得了更爲清晰的判別面,在(c)中,生成模型與之對抗,生成模型與訓練數據越來越像,最後,如(d),生成數據分佈與訓練數據完全重合,判別模型的預測結果是50%-50%,完全不能區分。
具體的訓練過程:
效果示例
四組示例的最右邊一列,是臨近的左側的生成圖片的最接近實際樣本,所有數據均是隨機給出,並非精心挑選