<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能 正文
      發私信給谷磊
      發送

      0

      GAN的理解與TensorFlow的實現

      本文作者: 谷磊 2017-02-08 17:41
      導語:本文介紹了生成對抗式網絡的一些內容,從生成式模型開始說起,到GAN的基本原理,InfoGAN,AC-GAN的基本科普。

      雷鋒網按:本文作者想飛的石頭,首發于知乎專欄雷鋒網獲授權轉載。有興趣的朋友還可以移步作者的個人博客:小石頭的碼瘋窩GAN的理解與TensorFlow的實現

      前言

      本文會從頭介紹生成對抗式網絡的一些內容,從生成式模型開始說起,到GAN的基本原理,InfoGAN,AC-GAN的基本科普,如果有任何有錯誤的地方,請隨時噴,我剛開始研究GAN這塊的內容,希望和大家一起學習。

      生成式模型

      何為生成式模型?在很多machine learning的教程或者公開課上,通常會把machine learning的算法分為兩類: 生成式模型、判別式模型;其區別在于: 對于輸入x,類別標簽y,在生成式模型中估計其聯合概率分布,而判別式模型估計其屬于某類的條件概率分布。 常見的判別式模型包括:LogisticRegression, SVM, Neural Network等等,生成式模型包括:Naive Bayes, GMM, Bayesian Network, MRF 等等

      研究生成式模型的意義

      生成式模型的特性主要包括以下幾個方面:

      • 在應用數學和工程方面,生成式模型能夠有效地表征高維數據分布;

      • 生成式模型能夠作為一種技術手段輔助強化學習,能夠有效表征強化學習模型中的state狀態(這里不擴展,后面會跟RL的學習筆記);

      • 對semi-supervised learning也有比較好的效果,能夠在miss data下訓練模型,并在miss data下給出相應地輸出;

      • 在對于一個輸入伴隨多個輸出的場景下,生成式模型也能夠有效工作,而傳統的機器學習方法通過最小化模型輸出和期望輸出的某個object function的值 無法訓練單輸入多輸出的模型,而生成式模型,尤其是GAN能夠hold住這種場景,一個典型的應用是通過場景預測video的下一幀。

      生成式模型一些典型的應用:

      生成式模型族譜

      GAN的理解與TensorFlow的實現

      上圖涵蓋了基本的生成式模型的方法,主要按是否需要定義概率密度函數分為:

      Explicit density models

      explicit density models 又分為tractable explicit models和逼近的explicit model,怎么理解呢,tractable explicit model通常可以直接通過數學方法來建模求解,而基于逼近的explicit model通常無法直接對數據分布進行建模,可以利用數學里的一些近似方法來做數據建模, 通常基于逼近的explicit model分為確定性(變分方法:如VAE的lower bound)和隨機性的方法(馬爾科夫鏈蒙特卡洛方法)。

      • VAE lower bound:

      GAN的理解與TensorFlow的實現

      馬爾科夫鏈蒙特卡洛方法(MCMC),一種經典的基于馬爾科夫鏈的抽樣方法,通過多次來擬合分布。比較好的教程:A Beginner’s Guide to Monte Carlo Markov Chain MCMC Analysis, An Introduction to MCMC for Machine Learning.

      Implicit density models

      無需定義明確的概率密度函數,代表方法包括馬爾科夫鏈、生成對抗式網絡(GAN),該系列方法無需定義數據分布的描述函數。

      生成對抗式網絡與其他生成式網絡對比

      生成對抗式網絡(GAN)能夠有效地解決很多生成式方法的缺點,主要包括:

      • 并行產生samples;

      • 生成式函數的限制少,如無需合適馬爾科夫采樣的數據分布(Boltzmann machines),生成式函數無需可逆、latent code需與sample同維度(nonlinear ICA);

      • 無需馬爾科夫鏈的方法(Boltzmann machines, GSNs);

      • 相對于VAE的方法,無需variational bound;

      • GAN比其他方法一般來說性能更好。

      GAN工作原理

      GAN主要由兩部分構成:generator和discriminator,generator主要是從訓練數據中產生相同分布的samples,而discriminator 則是判斷輸入是真實數據還是generator生成的數據,discriminator采用傳統的監督學習的方法。這里我們可以這樣類比,generator 是一個偽造假幣的專業人士,discriminator是警察,generator的目的是制造出盡可能以假亂真的假鈔,而discriminator是為了能 鑒別是否為假鈔,最終整個gan會達到所謂的納什均衡,Goodfellow在他的paperGAN的理解與TF的實現-小石頭的碼瘋窩中有嚴格的數學證明,當$p_G$==$p_{data}$時達到 全局最優:

      GAN的理解與TensorFlow的實現

      另一個比較明顯看得懂的圖如下:

      GAN的理解與TensorFlow的實現

      圖中黑色點線為真實數據分布$p_{data}$,綠色線為generator生成的數據分布$p_{G}$,而Discriminator就是藍色點線,其目的是為了將$p_{data}$和$p_{G}$ 區分,(a)中是初始狀態,然后會更新Discriminator中的參數,若干次step之后,Discriminator有了較大的判斷力即到了(b)的狀態,之后會更新G的模型使其生成的數據分布(綠色線)更加趨近與真實數據分布, 若干次G和D的模型參數更新后,理論上最終會達到(d)的狀態即G能夠產生和真實數據完全一致的分布(證明見上一張圖),如從隨機數據分布生成人臉像。

      如何訓練GAN

      因為GAN結構的不同,和常規訓練一個dl model方法不同, 這里采用simultaneous SGD,每一個step中,會有兩個兩個梯度優化的 過程,一個是更新discriminator的參數來最小化$J_{(D)}$,一個是更新generator的參數來最小$J_{(G)}$,通常會選用Adam來作為最優化的優化器, 也有人建議可以不等次數地更新generator和discriminator(有相關工作提出,1:1的在實際中更有效:Adam: A Method for Stochastic Optimization) 如何訓練GAN,在Goodfellow的GAN的tutorial還有一些代碼中有更多的描述包括不同的cost function, 這里我就不詳細展開了。

      DCGAN

      GAN出來后很多相關的應用和方法都是基于DCGAN的結構,DCGAN即”Deep Convolution GAN”,通常會有一些約定俗成的規則:

      GAN的理解與TensorFlow的實現

      • 在Discriminator和generator中大部分層都使用batch normalization,而在最后一層時通常不會使用batch normalizaiton,目的 是為了保證模型能夠學習到數據的正確的均值和方差;

      • 因為會從random的分布生成圖像,所以一般做需要增大圖像的空間維度時如77->1414, 一般會使用strdie為2的deconv(transposed convolution);

      • 通常在DCGAN中會使用Adam優化算法而不是SGD。

      各種GANGAN的理解與TensorFlow的實現

      這里有個大神把各種gan的paper都做了一個統計AdversarialNetsPapers

      這里大家有更多的興趣可以直接去看對應的paper,我接下來會盡我所能描述下infogan和AC-GAN這兩塊的內容

      InfoGAN

      InfoGAN是一種能夠學習disentangled representation的GAN,何為disentangled representation?比如人臉數據集中有各種不同的屬性特點,如臉部表情、是否帶眼睛、頭發的風格眼珠的顏色等等,這些很明顯的相關表示, InfoGAN能夠在完全無監督信息(是否帶眼睛等等)下能夠學習出這些disentangled representation,而相對于傳統的GAN,只需修改loss來最大化GAN的input的noise(部分fixed的子集)和最終輸出之間的互信息。

      原理

      為了達到上面提到的效果,InfoGAN必須在input的noise來做一些文章,將noise vector劃分為兩部分:

      • z: 和原始的GAN input作用一致;

      • c: latent code,能夠在之后表示數據分布中的disentangled representation

      那么如何從latent code中學到相應的disentangled representation呢? 在原始的GAN中,忽略了c這部分的影響,即GAN產生的數據分布滿足$P_{G}(x|C)=P(x)$,為了保證能夠利用c這部分信息, 作者提出這樣一個假設:c與generator的輸出相關程度應該很大,而在信息論中,兩個數據分布的相關程度即互信息, 即generator的輸出和input的c的$I(c;G(z,c))$應該會大。 所以,InfoGAN就變成如下的優化問題:

      GAN的理解與TensorFlow的實現

      因為互信息的計算需要后驗概率的分布(下圖紅線部分),在實際中很難直接使用,因此,在實際訓練中一般不會直接最大化$I(c;G(z,c))$

      GAN的理解與TensorFlow的實現

      這里作者采用和VAE類似的方法,增加一個輔助的數據分布為后驗概率的low bound: 所以,這里互信息的計算如下:

      GAN的理解與TensorFlow的實現

      這里相關的證明就不深入了,有興趣的可以去看看paper。

      實驗

      我寫的一版基于TensorFlow的Info-GAN實現:Info-GANburness/tensorflow-101 random的label信息,和對應生成的圖像:

      GAN的理解與TensorFlow的實現

      GAN的理解與TensorFlow的實現

      不同random變量控制產生同一class下的不同輸出:

      GAN的理解與TensorFlow的實現

      AC-GAN

      AC-GAN即auxiliary classifier GAN,對應的paper:[1610.09585] Conditional Image Synthesis With Auxiliary Classifier GANs, 如前面的示意圖中所示,AC-GAN的Discriminator中會輸出相應的class label的概率,然后更改loss fuction,增加class預測正確的概率, ac-gan是一個tensorflow相關的實現,基于作者自己開發的sugartensor,感覺和paper里面在loss函數的定義上差異,看源碼的時候注意下,我這里有參考寫了一個基于原生tensorflow的版本AC-GAN.

      實驗

      各位有興趣的可以拿代碼在其他的數據集上也跑一跑,AC-GAN能夠有效利用class label的信息,不僅可以在G時指定需要生成的image的label,同事該class label也能在Discriminator用來擴展loss函數,增加整個對抗網絡的性能。 random的label信息,和對應生成的圖像:

      GAN的理解與TensorFlow的實現

      GAN的理解與TensorFlow的實現

      不同random變量控制產生同一class下的不同輸出:

      GAN的理解與TensorFlow的實現

      總結

      照例總結一下,本文中,我基本介紹了下生成式模型方法的各個族系派別,到GAN的基本內容,到InfoGAN、AC-GAN,大部分的工作都來自于閱讀相關的paper,自己相關的工作就是 tensorflow下參考sugartensor的內容重現了InfoGAN、AC-GAN的相關內容。

       當然,本人菜鳥一枚,難免有很多理解不到位的地方,寫出來更多的是作為分享,讓更多人了解GAN這塊的內容,如果任何錯誤或不合適的地方,敬請在評論中指出,我們一起討論一起學習 另外我的所有相關的代碼都在github上:GAN,相信讀一下無論是對TensorFlow的理解還是GAN的理解都會 有一些幫助,簡單地參考mnist.py修改下可以很快的應用到你的數據集上,如果有小伙伴在其他數據集上做出有意思的實驗效果的,歡迎分享。

      雷峰網版權文章,未經授權禁止轉載。詳情見轉載須知

      GAN的理解與TensorFlow的實現

      分享:
      相關文章

      編輯

      專注報道人工智能。微信:ydxy301
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 3atv精品不卡视频| yin荡护士揉捏乱p办公室视频| 婷婷四房综合激情五月在线| 亚洲第一成年网| 精品一区二区三区免费播放| 亚洲午夜理论片在线观看| 岛国av无码免费无禁网站| 夜夜夜影院| AV色色色| 这里只有精品免费视频| 国产乱码精品一区二三区| 久久精品人妻中文系列| 亚洲精品97福利在线| 亚洲欧美日韩综合一区二区 | av不卡在线观看| 略阳县| 丝袜人妻一区二区三区网站| 一本到无码AV专区无码| 亚洲欧美中文字幕| 少妇一夜三次一区二区| 国产免费又黄又爽又色毛| 影音先锋成人片| 美女内射毛片在线看| 免费激情网址| 亚洲小说少妇区图片| 潮喷失禁大喷水aⅴ无码| 996久久国产精品线观看| 日韩丰满少妇无吗视频激情内射| 久久精品午夜一区二区福利| 久久天天躁狠狠躁夜夜网站| 南漳县| 亚洲最大中文字幕无码网站| 亚洲V色| 亚洲?日韩?中文字幕?色综合 | 久久久这里只有精品10| 国产精品久久久久7777按摩| 超碰日韩| 偷偷色噜狠狠狠狠的777米奇| 久久久久人妻精品一区三寸 | 中文字幕熟妇人妻在线视频| 在线视频?制服?中文|