GANs
這里寫目錄標題
- 1、GANs
- 1.1數學基礎
- 1.2 GANs算法原理
1、GANs
1、GAN的原理入門
2、李宏毅2017深度學習 GAN生成對抗神經網絡相關學習視頻合集
1.1數學基礎
1、概率與統計
概率與統計是兩個不同的概念。
概率是指:模型參數已知,XXX未知,p(x1)...p(xn)p(x_1) ... p(x_n)p(x1?)...p(xn?) 都是對應的xix_ixi?的概率
統計是指:模型參數未知,XXX已知,根據觀測的現象,求模型的參數
2、似然函數與概率函數
似然跟概率是同義詞,所以似然也是表示概率,但這個概率有些不一樣。
-
似然是指:模型在不同參數下, p(x1)...p(xn)p(x_1) ... p(x_n)p(x1?)...p(xn?) 發生的概率
-
似然估計是指:模型的參數未知,XXX已知,根據觀測現象(XXX),估計模型參數的過程.“模型已定,參數未知”
如果 θθθ 是已知確定的, xxx是變量,這個函數叫做概率函數(probabilityfunctionprobability\ functionprobability?function),它描述對于不同的樣本點xxx ,其出現概率是多少。
如果xxx 是已知確定的,θθθ 是變量,這個函數叫做似然函數(likelihoodfunctionlikelihood\ functionlikelihood?function), 它描述對于不同的模型參數,出現xxx 這個樣本點的概率是多少。
最大似然估計(為什么要最大):
對于觀測數據集x1,x2...xnx_1,x_2...x_nx1?,x2?...xn?, 在θθθ下發生的概率分別是p(x1∣θ),p(x2∣θ)...p(xn∣θ)p(x_1|θ),p(x_2|θ)... p(x_n|θ)p(x1?∣θ),p(x2?∣θ)...p(xn?∣θ), 所以出現該觀測數據集的概率為 P(X∣θ)=p(x1∣θ)p(x2∣θ)...p(xn∣θ)P(X|θ) = p(x_1|θ)p(x_2|θ)... p(x_n|θ)P(X∣θ)=p(x1?∣θ)p(x2?∣θ)...p(xn?∣θ), 那想一想為什么我一下就會抽出x1,x2...xnx_1, x_2 ... x_nx1?,x2?...xn?這nnn個數據呢?一種直觀的解釋就是 它們發生的概率大,所以 就是求讓 P(X)P(X)P(X)最大下的θθθ,這就是最大似然估計。
3、最大后驗概率
最大似然是求參數,讓P(X∣θ)P(X|θ)P(X∣θ)最大,最大后驗概率是讓P(X∣θ)P(θ)P(X|θ)P(θ)P(X∣θ)P(θ)最大,相當于給似然函數加了一個關于θθθ的權重。這有點像正則化里加懲罰項的思想,不過正則化里是利用加法,而MAPMAPMAP里是利用乘法)
為什么要讓 P(X∣θ)P(θ)P(X|θ)P(θ)P(X∣θ)P(θ) 最大?
我們是根據一群觀測數據X=(x1,x2...xn)X = (x_1, x_2 ... x_n)X=(x1?,x2?...xn?)估計模型的參數,即求 P(θ0∣X)P(θ_0 | X)P(θ0?∣X), 用貝葉斯改一下就是
P(θ0∣X)=P(X∣θ0)P(θ0)/P(X)P(θ_0 | X) = P(X|θ_0) P(θ_0) / P(X)P(θ0?∣X)=P(X∣θ0?)P(θ0?)/P(X) , 對于給定的觀測序列X來說P(X)P(X)P(X)是固定的,所以我們求后驗概率P(θ0∣X)P(θ_0 | X)P(θ0?∣X)最大就是求P(X∣θ0)P(θ0)P(X|θ_0) P(θ_0)P(X∣θ0?)P(θ0?)最大
對于貝葉斯公式來說, 其實就是 【后驗概率P(θ0∣X)P(θ_0 | X)P(θ0?∣X)】 等于 【似然函數 P(X∣θ0)P(X|θ_0)P(X∣θ0?)】 乘以 【先驗概率P(θ0P(θ_0P(θ0?)】
4、期望
(1)離散型
(2)連續型
5、最大似然估計與KL散度
6、GAN目標函數與JS散度
所以說,minmaxmin\ maxmin?max游戲本質上是最小化JSJSJS散度,即min?(?2log2+2×JSD(Pdata∣∣PG))\min(-2log2+2\times JSD(P_{data}||P_{G}))min(?2log2+2×JSD(Pdata?∣∣PG?))
參考:https://www.cnblogs.com/bonelee/p/9166084.html
1.2 GANs算法原理
前向傳播階段
- 模型輸入
1、我們隨機產生一個隨機向量作為生成模型的數據,然后經過生成模型后產生一個新 的向量,作為 FakeImageFake\ ImageFake?Image,記作D(z)D(z)D(z)。
2、從數據集中隨機選擇一張圖片,將圖片轉化成向量,作為 RealImageReal\ ImageReal?Image,記作 xxx - 模型輸出
將由 111 或者 222 產生的輸出,作為判別網絡的輸入,經過判別網絡后輸出值為一個 000 到 111 之間的數,用于表示輸入圖片為 RealImageReal\ ImageReal?Image 的概率,realrealreal 為 111,fakefakefake 為 000。 使用得到的概率值計算損失函數,解釋損失函數之前,我們先解釋下判別模型的輸入。 根據輸入的圖片類型是 FakeImageFake\ ImageFake?Image 或 RealImageReal\ ImageReal?Image 將判別模型的輸入數據的 labellabellabel 標記為 000 或者 111。即判別模型的輸入類型為(xfake,0)(x_{fake},0)(xfake?,0)或者(xreal,1)(x_{real},1)(xreal?,1)。
反向傳播階段
-
優化目標
(zzz表示輸入GGG的隨機噪聲)判別模型DDD要最大概率地分對真實樣本(最大化 log?(D(x)\log(D(x)log(D(x)),而生成模型GGG要最小化D(G(z))D(G(z))D(G(z)),即最大化 log?(1?D(G(z)))\log(1-D(G(z)))log(1?D(G(z)))。GGG和DDD同時訓練,但是訓練中要固定一方,更新另一方的參數,交替迭代,使對方的錯誤最大化。最終,GGG能估計出真實樣本的分布。
第一步:優化 DDD
優化 DDD,即優化判別網絡時,沒有生成網絡什么事,后面的 G(z)G(z)G(z)就相當于已經得到的假 樣本。優化 DDD 的公式的第一項,使得真樣本 xxx 輸入的時候,得到的結果越大越好,因為真樣 本的預測結果越接近1越好;對于假樣本G(z)G(z)G(z),需要優化的是其結果越小越好,也就是D(G(z))D(G(z))D(G(z)) 越小越好,因為它的標簽為 000。但是第一項越大,第二項越小,就矛盾了,所以把第二項改 為 1?D(G(z))1-D(G(z))1?D(G(z)),這樣就是越大越好。
第二步:優化 GGG
在優化 GGG 的時候,這個時候沒有真樣本什么事,所以把第一項直接去掉,這時候只有假 樣本,但是這個時候希望假樣本的標簽是 111 ,所以是 D(G(z))D(G(z))D(G(z)) 越大越好,但是為了統一成 1?D(G(z))1-D(G(z))1?D(G(z)) 的形式,那么只能是最小化 1?D(G(z))1-D(G(z))1?D(G(z)),本質上沒有區別,只是為了形式的統一。之 后這兩個優化模型可以合并起來寫,就變成最開始的最大最小目標函數了。 -
判別模型的損失函數
-
生成模型的損失函數
-
論文 :https://arxiv.org/abs/1812.04948
-
代碼 :https://github.com/NVlabs/stylegan
-
完整GANs筆記:http://www.gwylab.com/note-gans.html
-
StyleGAN詳細解讀:http://www.gwylab.com/pdf/Note_StyleGAN.pdf
-
基于StyleGAN的一個好玩的網站:http://www.seeprettyface.com/
-
ppt地址:http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html
總結
- 上一篇: USB3.0移动硬盘启动Win7的方法(
- 下一篇: 解决wsappx占cpu和内存过大问题