国科大高级人工智能6-GAN
生活随笔
收集整理的這篇文章主要介紹了
国科大高级人工智能6-GAN
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 生成式模型的基礎:極大似然估計
- GANs
- 最終版本
- 問題
- 非飽和博弈
- DCGAN
- 不同類型的GAN
- conditional GAN
- 無監督條件GAN--cycle GAN
- 對抗學習
https://blog.csdn.net/suyebiubiu/category_9372769.html
生成式模型的基礎:極大似然估計
- θ?=argmaxθExpdatalogPmodel(x∣θ)\theta^*=argmax_\theta E_{x~p_{data}}logP_{model}(x|\theta)θ?=argmaxθ?Ex?pdata??logPmodel?(x∣θ)
-
生成式模型都源于極大似然估計
- 顯示概率分布
- 馬爾科夫鏈/BM
- 隱式概率分布
- GSN
- GAN—唯一一個從數據觀測一步到位的模型
以前比較強大的模型都源于HMM模型
- 顯示概率分布
-
人工智能兩個階段
- 感知階段
- 認知階段
-
GAN(生成式模型
- 生成數據樣本的能力
- 反應了他的理解(不能產生就沒有理解)
GANs
-
和以前模型的的區別
- 使用了 latent code(缺省編碼)
- 數據會逐漸統一 (unlike variational methods)
- 不需要馬爾可夫鏈
- 被認為可以生成最好的樣本
- (沒有辦法評價No good way to quantify this
-
核心思想:博弈論的納什均衡——對抗達到平衡(共同進步)
- 生成器:盡量生成真實的分布——努力讓判別器認不出來
- 輸入向量,輸出圖或序列。。。
- 不同的向量表示不同的特征
- 想要發現數據的分布Pdata(x)P_{data}(x)Pdata?(x)
- 假設一個分布Pdata(x;θ),用極大似然去找θP_{data}(x;\theta),用極大似然去找\thetaPdata?(x;θ),用極大似然去找θ
- 判別器:區分是生成的還是真實的(努力讓他能認出生成器生成的數據)
- 輸入:圖片
- 輸出:標量評分
- 分越大,越真實–1
- 分小則假–0.1
- 生成器:盡量生成真實的分布——努力讓判別器認不出來
-
算法
-
固定生成器G,從真假圖中采樣,來更新(訓練)判別器D–>D1
- 版本1:$對V(G_0,D)找到D_0^* $===>D1
- 版本2:實際使用最小化交叉熵來進行二分類
- 原來:V(G,D)=ExPdata[log(D(x))]+ExPG[log(1?D(x))](G固定)原來:V(G,D)=E_{x~P_{data}}[log(D(x))]+E_{x~P_{G}}[log(1-D(x))] (G固定)原來:V(G,D)=Ex?Pdata??[log(D(x))]+Ex?PG??[log(1?D(x))](G固定)
- 目標函數==》maxV~=1mΣi=1mlog(D(xi))+1mΣi=1mlog(D(x~i))\tilde{V}=\frac{1}{m}\Sigma_{i=1}^{m}log(D(x^i))+\frac{1}{m}\Sigma_{i=1}^{m}log(D(\tilde{x}^i))V~=m1?Σi=1m?log(D(xi))+m1?Σi=1m?log(D(x~i))——均值代替期望
- 原來是對概率求和–>期望–>均值(Σi=1mlogPG(xi;θ)\Sigma_{i=1}^mlog P_G(x^i;\theta)Σi=1m?logPG?(xi;θ)
- 多迭代幾次:$\theta_d<–\theta_d+\eta d \tilde{V} $
- 原來:V(G,D)=ExPdata[log(D(x))]+ExPG[log(1?D(x))](G固定)原來:V(G,D)=E_{x~P_{data}}[log(D(x))]+E_{x~P_{G}}[log(1-D(x))] (G固定)原來:V(G,D)=Ex?Pdata??[log(D(x))]+Ex?PG??[log(1?D(x))](G固定)
-
固定D1,訓練生成器G–>G1
- v1:θG←θG?η?V(G,D0?)?θG\theta_G \leftarrow \theta_G-\eta \frac{\partial V(G,D_0^*)}{\partial \theta_G}θG?←θG??η?θG??V(G,D0??)?===>找到G1
- v2:假設D0?≈D1????也就是G變化很小(更新不能太頻繁D_0^*\approx D_1^*---也就是G變化很小(更新不能太頻繁D0??≈D1?????也就是G變化很小(更新不能太頻繁
- V~=1mΣi=1mlog(D(G(zi))),z來自Pprior(z)\tilde{V}=\frac{1}{m}\Sigma_{i=1}^{m}log(D(G(z^i))),z來自P_{prior}(z)V~=m1?Σi=1m?log(D(G(zi))),z來自Pprior?(z)–目標函數是一樣的
- 1mΣi=1mlog(D(xi))\frac{1}{m}\Sigma_{i=1}^{m}log(D(x^i))m1?Σi=1m?log(D(xi))與生成器無關,可以不考慮
- $\theta_G<–\theta_G- \eta d \tilde{V} $
- V~=1mΣi=1mlog(D(G(zi))),z來自Pprior(z)\tilde{V}=\frac{1}{m}\Sigma_{i=1}^{m}log(D(G(z^i))),z來自P_{prior}(z)V~=m1?Σi=1m?log(D(G(zi))),z來自Pprior?(z)–目標函數是一樣的
-
重復到平衡
-
生成器
- 極大似然估計L=Πi=1mPG(xi;θ),L=\Pi_{i=1}^mP_G(x^i;\theta),L=Πi=1m?PG?(xi;θ),
- θ?=argmaxθΠi=1mPG(xi;θ)\theta^*=argmax_\theta \Pi_{i=1}^mP_G(x^i;\theta)θ?=argmaxθ?Πi=1m?PG?(xi;θ)
- θ?=argmaxθΣi=1mlogPG(xi;θ)\theta^*=argmax_\theta \Sigma_{i=1}^mlog P_G(x^i;\theta)θ?=argmaxθ?Σi=1m?logPG?(xi;θ)
- θ?=argmaxθExPdata(logPG(xi;θ))\theta^*=argmax_\theta E_{x~Pdata}(log P_G(x^i;\theta) )θ?=argmaxθ?Ex?Pdata?(logPG?(xi;θ))—求和近似于期望
- =argmaxθ∫xPdata(x)logPG(x;θ)dx?∫xPdata(x)logPdata(xi)dx=argmax_\theta \displaystyle \int_x P_{data}(x)log P_G(x;\theta)dx-\displaystyle \int_x P_{data}(x)log P_{data}(x^i)dx=argmaxθ?∫x?Pdata?(x)logPG?(x;θ)dx?∫x?Pdata?(x)logPdata?(xi)dx—后面的只與真實數據有關
- =argminθKL(Pdata∣∣PG)=argmin_\theta KL(P_{data}||P_G)=argminθ?KL(Pdata?∣∣PG?)----=最小化KL散度(就是最小化他倆的差別KL=Div
- 如何產生通用的PGP_GPG??(通過神經網絡
- G?=argminθKL(Pdata∣∣PG)G^* =argmin_\theta KL(P_{data}||P_G)G?=argminθ?KL(Pdata?∣∣PG?)
- Pdata(從真實數據中),PG(生成的采樣)未知??通過采樣得到P_{data}(從真實數據中),P_G(生成的采樣)未知--通過采樣得到Pdata?(從真實數據中),PG?(生成的采樣)未知??通過采樣得到
- $D^*=-2log2+2JSD(P_{data}||P_G) $
- G?=argminGKL(Pdata∣∣PG)=argminGmaxDV(G,D)G^*=argmin_G KL(P_{data}||P_G)=argmin_G max_D V(G,D)G?=argminG?KL(Pdata?∣∣PG?)=argminG?maxD?V(G,D)
- 極大似然估計L=Πi=1mPG(xi;θ),L=\Pi_{i=1}^mP_G(x^i;\theta),L=Πi=1m?PG?(xi;θ),
-
判別器
- 希望判別器通過區分,以Pdata和以PG采樣得到的數據
- 目標函數:V(G,D)=ExPdata[log(D(x))]+ExPG[log(1?D(x))](G固定)V(G,D)=E_{x~P_{data}}[log(D(x))]+E_{x~P_{G}}[log(1-D(x))] (G固定)V(G,D)=Ex?Pdata??[log(D(x))]+Ex?PG??[log(1?D(x))](G固定)真實的+虛假的
- =∫xPdata(x)logD(x)dx+∫xPG(x)log(1?D(x))dx=\displaystyle \int_x P_{data}(x)log D(x) dx +\displaystyle \int_x P_{G}(x)log (1-D(x)) dx=∫x?Pdata?(x)logD(x)dx+∫x?PG?(x)log(1?D(x))dx
- =∫x(Pdata(x)logD(x)+PG(x)log(1?D(x)))dx=\displaystyle \int_x (P_{data}(x)log D(x)+ P_{G}(x)log (1-D(x))) dx=∫x?(Pdata?(x)logD(x)+PG?(x)log(1?D(x)))dx
- 假設D(x)能夠是任何函數–
- 所以D要足夠強–深度神經網絡
- 最大化(Pdata(x)logD(x)dx+PG(x)log(1?D(x)))(P_{data}(x)log D(x) dx + P_{G}(x)log (1-D(x)))(Pdata?(x)logD(x)dx+PG?(x)log(1?D(x)))
- 求導:
- d(f(D))dD=a?1D+b?11?D?(?1)=0\frac{d(f(D))}{dD}=a*\frac{1}{D}+b*\frac{1}{1-D}*(-1)=0dDd(f(D))?=a?D1?+b?1?D1??(?1)=0
- a?1D?=b?11?D?a*\frac{1}{D^*}=b*\frac{1}{1-D^*}a?D?1?=b?1?D?1?
- D?(x)=aa+b=Pdata(x)Pdata(x)+PG(x)D^*(x)=\frac{a}{a+b}=\frac{P_{data}(x)}{P_{data}(x)+P_{G}(x)}D?(x)=a+ba?=Pdata?(x)+PG?(x)Pdata?(x)?(在(0,1)之間
- 求導:
- 帶入$G^* $
- D?=maxDV(G,D)=V(G,D?)=ExPdata[log(Pdata(x)Pdata(x)+PG(x))]+ExPG[log(PG(x)Pdata(x)+PG(x))]D^*=max_DV(G,D)=V(G,D^*)=E_{x~P_{data}}[log(\frac{P_{data}(x)}{P_{data}(x)+P_{G}(x)})]+E_{x~P_{G}}[log(\frac{P_{G}(x)}{P_{data}(x)+P_{G}(x)})]D?=maxD?V(G,D)=V(G,D?)=Ex?Pdata??[log(Pdata?(x)+PG?(x)Pdata?(x)?)]+Ex?PG??[log(Pdata?(x)+PG?(x)PG?(x)?)]
- =?2log2+∫x(Pdata(x)logPG(x)(Pdata(x)+PG(x))/2+PG(x)log(PG(x)(Pdata(x)+PG(x))/2))dx=-2log2+\displaystyle \int_x (P_{data}(x)log \frac{P_{G}(x)}{(P_{data}(x)+P_{G}(x))/2} + P_{G}(x)log (\frac{P_{G}(x)}{(P_{data}(x)+P_{G}(x))/2)}) dx=?2log2+∫x?(Pdata?(x)log(Pdata?(x)+PG?(x))/2PG?(x)?+PG?(x)log((Pdata?(x)+PG?(x))/2)PG?(x)?)dx
- =?2log2+KL(Pdata∣∣Pdata(x)+PG(x)2)+KL(PG∣∣Pdata(x)+PG(x)2)=-2log2+KL(P_{data}||\frac{P_{data}(x)+P_{G}(x)}{2})+KL(P_{G}||\frac{P_{data}(x)+P_{G}(x)}{2})=?2log2+KL(Pdata?∣∣2Pdata?(x)+PG?(x)?)+KL(PG?∣∣2Pdata?(x)+PG?(x)?)
- =?2log2+2JSD(Pdata∣∣PG)=-2log2+2JSD(P_{data}||P_G)=?2log2+2JSD(Pdata?∣∣PG?)
- JSD(Pdata∣∣PG)=12D(P∣∣M)+12D(Q∣∣M),M=12(P+Q)JSD(P_{data}||P_G)=\frac{1}{2}D(P||M)+\frac{1}{2}D(Q||M),M=\frac{1}{2}(P+Q)JSD(Pdata?∣∣PG?)=21?D(P∣∣M)+21?D(Q∣∣M),M=21?(P+Q)
- 訓練:D?=argmaxDV(D,G)D^*=argmax_DV(D,G)D?=argmaxD?V(D,G)
最終版本
- 訓練:SGD,同時訓練兩組數據——深度神經網絡
- 真實的
- 生成的
- 優化
- 可以一組訓練跑一次時,另一組跑k次
- 可以一組訓練跑一次時,另一組跑k次
問題
- 在開始的時候,訓練較慢
非飽和博弈
- 更換后,極值點不變
- 原來D=1/2時,就無法訓練了,而這個里面,D=1/2時仍然可以對生成器進行訓練
DCGAN
- 反卷積生成圖像
不同類型的GAN
- 沒有任何條件的,
- 給定一個圖片,生成類似的圖片
- 給定圖片+圖片里的信息(條件)
- 傳統的神經網絡,容易輸出一個圖片的平均(不對)–用GAN
- 給定兩個領域的圖片
- 由一個領域的圖片可以生成另外一個領域的圖片
- 真實圖片–》漫畫風?
conditional GAN
- 生成器
- 不僅要生成火車,還要滿足條件
- 判別器
- 判別是不是真實圖片
- 判別是不是滿足條件
- 對于真實的圖片,不滿足條件也輸出0
無監督條件GAN–cycle GAN
- 直接使用會趨向于直接拿過來一個梵高的畫
- 需要用一個網絡,使得X≈YX \approx YX≈Y
- 也可以用生成器的逆過程反過來生成X’,X≈X′X \approx X'X≈X′
對抗學習
- 區別
- 一般機器學習只有一個機制點
- 對抗學習基于博弈論
- 有兩個player
- 一個取極大一個取極小—求個鞍點
- 用于
- 白天–>黑天
- 沒有真實對應的信息,只能通過對抗GAN網絡生成—視頻
- 加噪音–讓圖片不可識別–安全(攻擊分類器)
- 通過將對抗的x’加入分類其中,提高分類器的能力(穩定性)
- 白天–>黑天
- 損失函數
- 分類器loss(θ)=C(y0,ytrue)小,y0=fθ(x)loss(\theta)=C(y0,y_{true})小,y0=f_{\theta}(x)loss(θ)=C(y0,ytrue?)小,y0=fθ?(x)
- 對抗的就是loss(x′)=?C(y0,ytrue)+C(y′,yfalse,y0=fθ(x‘)loss(x')=-C(y0,y_{true})+C(y',y_{false},y0=f_{\theta}(x‘)loss(x′)=?C(y0,ytrue?)+C(y′,yfalse?,y0=fθ?(x‘)–優化x’
- 約束:d(x0,x′)<=?d(x0,x')<=\epsilond(x0,x′)<=?看著原圖沒啥變化
- 得到一個x’
總結
以上是生活随笔為你收集整理的国科大高级人工智能6-GAN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4 操作系统第二章 进程管理 进程控制
- 下一篇: Channel使用技巧