GANs笔记
GANs
判別模型與生成模型
**生成方法的特點:**可以從統計的角度表示數據的分布情況,能夠反映同類數據本身的相似度。但它不關心到底劃分各類的那個分類邊界在哪。生成方法可以還原出聯合概率分布P(Y|X),而判別方法不能。生成方法的學習收斂速度更快,即當樣本容量增加的時候,學到的模型可以更快的收斂于真實模型,當存在隱變量時,仍可以用生成方法學習。此時判別方法就不能用。
**判別方法的特點:**不能反映訓練數據本身的特性。但它尋找不同類別之間的最優分類面,反映的是異類數據之間的差異。直接面對預測,往往學習的準確率更高。由于直接學習P(Y|X)或P(X),可以對數據進行各種程度上的抽象、定義特征并使用特征,因此可以簡化學習問題。
*生成模型和判別模型的聯系*
? 由生成模型可以得到判別模型,但由判別模型得不到生成模型。
對抗網絡思想
對抗網絡只是提出了一種網絡結構,總體來說,整個框架還是很簡單的。GANs簡單的想法就是用兩個模型,一個生成模型,一個判別模型。判別模型用于判斷一個給定的圖片是不是真實的圖片(從數據集里獲取的圖片),生成模型的任務是去創造一個看起來像真的圖片一樣的圖片。
交叉熵損失函數:
L=?[ylogY+(1?ylog(1?Y))](Y為輸出值,y為0∣1)L=-[ylogY+(1-ylog(1-Y))](Y為輸出值,y為0|1) L=?[ylogY+(1?ylog(1?Y))](Y為輸出值,y為0∣1)
前向傳播階段:
- 兩種輸入,一種是faka image(生成模型生成),一種是隨機的從數據集中選出
- 經過判別網絡后輸入值為一個0到1之間的數,用于表示輸入圖片為Real Image的概率,real為1,fake為0。
- 使用得到的概率值計算損失函數。
損失函數:
判別模型的損失函數:
?((1?y)log(1?D(G(z)))+ylog(D(x)))-((1-y)log(1-D(G(z)))+ylog(D(x))) ?((1?y)log(1?D(G(z)))+ylog(D(x)))
實際上是D(x)的交叉熵損失函數,在將輸入的G(z)判斷為0時,反向傳播加強這部分。
當輸入的是從數據集中取出的real Iamge 數據時,我們只需要考慮第二部分,D(x)為判別模型的輸出,表示輸入x為real 數據的概率,我們的目的是讓判別模型的輸出D(x)的輸出盡量靠近1。
當輸入的為fake數據時,我們只計算第一部分,G(z)是生成模型的輸出,輸出的是一張Fake Image。我們要做的是讓D(G(z))的輸出盡可能趨向于0。這樣才能表示判別模型是有區分力的。
生成模型的損失函數
(1?y)log(1?D(G(z)))(1-y)log(1-D(G(z))) (1?y)log(1?D(G(z)))
對于生成模型來說,我們要做的是讓G(z)產生的數據盡可能的和數據集中的數據一樣。就是所謂的同樣的數據分布。那么我們要做的就是最小化生成模型的誤差,即只將G(z)產生的誤差傳給生成模型。
但是針對判別模型的預測結果,要對梯度變化的方向進行改變。當判別模型認為G(z)輸出為真實數據集的時候和認為輸出為噪聲數據的時候,梯度更新方向要進行改變。
反向傳播:
我們已經得到了生成模型和判別模型的損失函數,這樣分開看其實就是兩個單獨的模型,針對不同的模型可以按照自己的需要去是實現不同的誤差修正,我們也可以選擇最常用的BP做為誤差修正算法,更新模型參數。
總結
- 上一篇: 树莓派环境搭建(远程桌面、免驱摄像头、t
- 下一篇: java sqlserver2014_j