<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低版瀏覽器,為了您的雷峰網(wǎng)賬號(hào)安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
      此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
      人工智能開發(fā)者 正文
      發(fā)私信給AI研習(xí)社
      發(fā)送

      1

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      本文作者: AI研習(xí)社 2017-07-13 10:35
      導(dǎo)語:開發(fā)者是怎樣學(xué)習(xí) GAN(生成對(duì)抗網(wǎng)絡(luò))的?

      雷鋒網(wǎng)按:本文作者馬少楠,原載于作者知乎專欄,雷鋒網(wǎng)經(jīng)授權(quán)發(fā)布。

      Generative Adversarial Network,就是大家耳熟能詳?shù)?GAN,由 Ian Goodfellow 首先提出,在這兩年更是深度學(xué)習(xí)中最熱門的東西,仿佛什么東西都能由 GAN 做出來。我最近剛?cè)腴T GAN,看了些資料,做一些筆記。

      1.Generation

      什么是生成(generation)?就是模型通過學(xué)習(xí)一些數(shù)據(jù),然后生成類似的數(shù)據(jù)。讓機(jī)器看一些動(dòng)物圖片,然后自己來產(chǎn)生動(dòng)物的圖片,這就是生成。

      以前就有很多可以用來生成的技術(shù)了,比如 auto-encoder(自編碼器),結(jié)構(gòu)如下圖:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      你訓(xùn)練一個(gè) encoder,把 input 轉(zhuǎn)換成 code,然后訓(xùn)練一個(gè) decoder,把 code 轉(zhuǎn)換成一個(gè) image,然后計(jì)算得到的 image 和 input 之間的 MSE(mean square error),訓(xùn)練完這個(gè) model 之后,取出后半部分 NN Decoder,輸入一個(gè)隨機(jī)的 code,就能 generate 一個(gè) image。

      但是 auto-encoder 生成 image 的效果,當(dāng)然看著很別扭啦,一眼就能看出真假。所以后來還提出了比如VAE這樣的生成模型,我對(duì)此也不是很了解,在這就不細(xì)說。

      上述的這些生成模型,其實(shí)有一個(gè)非常嚴(yán)重的弊端。比如 VAE,它生成的 image 是希望和 input 越相似越好,但是 model 是如何來衡量這個(gè)相似呢?model 會(huì)計(jì)算一個(gè) loss,采用的大多是 MSE,即每一個(gè)像素上的均方差。loss 小真的表示相似嘛?

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      比如這兩張圖,第一張,我們認(rèn)為是好的生成圖片,第二張是差的生成圖片,但是對(duì)于上述的 model 來說,這兩張圖片計(jì)算出來的 loss 是一樣大的,所以會(huì)認(rèn)為是一樣好的圖片。

      這就是上述生成模型的弊端,用來衡量生成圖片好壞的標(biāo)準(zhǔn)并不能很好的完成想要實(shí)現(xiàn)的目的。于是就有了下面要講的 GAN。

      2.GAN

      大名鼎鼎的 GAN 是如何生成圖片的呢?首先大家都知道 GAN 有兩個(gè)網(wǎng)絡(luò),一個(gè)是 generator,一個(gè)是 discriminator,從二人零和博弈中受啟發(fā),通過兩個(gè)網(wǎng)絡(luò)互相對(duì)抗來達(dá)到最好的生成效果。流程如下:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      主要流程類似上面這個(gè)圖。首先,有一個(gè)一代的 generator,它能生成一些很差的圖片,然后有一個(gè)一代的 discriminator,它能準(zhǔn)確的把生成的圖片,和真實(shí)的圖片分類,簡而言之,這個(gè) discriminator 就是一個(gè)二分類器,對(duì)生成的圖片輸出 0,對(duì)真實(shí)的圖片輸出 1。

      接著,開始訓(xùn)練出二代的 generator,它能生成稍好一點(diǎn)的圖片,能夠讓一代的 discriminator 認(rèn)為這些生成的圖片是真實(shí)的圖片。然后會(huì)訓(xùn)練出一個(gè)二代的 discriminator,它能準(zhǔn)確的識(shí)別出真實(shí)的圖片,和二代 generator 生成的圖片。以此類推,會(huì)有三代,四代。。。n 代的 generator 和 discriminator,最后 discriminator 無法分辨生成的圖片和真實(shí)圖片,這個(gè)網(wǎng)絡(luò)就擬合了。

      這就是 GAN,運(yùn)行過程就是這么的簡單。這就結(jié)束了嘛?顯然沒有,下面還要介紹一下 GAN 的原理。

      3.原理

      首先我們知道真實(shí)圖片集的分布 Pdata(x),x 是一個(gè)真實(shí)圖片,可以想象成一個(gè)向量,這個(gè)向量集合的分布就是 Pdata。我們需要生成一些也在這個(gè)分布內(nèi)的圖片,如果直接就是這個(gè)分布的話,怕是做不到的。

      我們現(xiàn)在有的 generator 生成的分布可以假設(shè)為 PG(x;θ),這是一個(gè)由 θ 控制的分布,θ 是這個(gè)分布的參數(shù)(如果是高斯混合模型,那么 θ 就是每個(gè)高斯分布的平均值和方差)

      假設(shè)我們?cè)谡鎸?shí)分布中取出一些數(shù)據(jù),{x1, x2, ... , xm},我們想要計(jì)算一個(gè)似然 PG(xi; θ)。

      對(duì)于這些數(shù)據(jù),在生成模型中的似然就是

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      我們想要最大化這個(gè)似然,等價(jià)于讓 generator 生成那些真實(shí)圖片的概率最大。這就變成了一個(gè)最大似然估計(jì)的問題了,我們需要找到一個(gè) θ* 來最大化這個(gè)似然。

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      尋找一個(gè) θ* 來最大化這個(gè)似然,等價(jià)于最大化 log 似然。因?yàn)榇藭r(shí)這 m 個(gè)數(shù)據(jù),是從真實(shí)分布中取的,所以也就約等于,真實(shí)分布中的所有 x 在 P分布中的 log 似然的期望。

      真實(shí)分布中的所有 x 的期望,等價(jià)于求概率積分,所以可以轉(zhuǎn)化成積分運(yùn)算,因?yàn)闇p號(hào)后面的項(xiàng)和 θ 無關(guān),所以添上之后還是等價(jià)的。然后提出共有的項(xiàng),括號(hào)內(nèi)的反轉(zhuǎn),max 變 min,就可以轉(zhuǎn)化為 KL divergence 的形式了,KL divergence 描述的是兩個(gè)概率分布之間的差異。

      所以最大化似然,讓 generator 最大概率的生成真實(shí)圖片,也就是要找一個(gè) θ 讓 P更接近于 Pdata。

      那如何來找這個(gè)最合理的 θ 呢?我們可以假設(shè) PG(x; θ) 是一個(gè)神經(jīng)網(wǎng)絡(luò)。

      首先隨機(jī)一個(gè)向量 z,通過 G(z)=x 這個(gè)網(wǎng)絡(luò),生成圖片 x,那么我們?nèi)绾伪容^兩個(gè)分布是否相似呢?只要我們?nèi)∫唤M sample z,這組 z 符合一個(gè)分布,那么通過網(wǎng)絡(luò)就可以生成另一個(gè)分布 PG,然后來比較與真實(shí)分布 Pdata。

      大家都知道,神經(jīng)網(wǎng)絡(luò)只要有非線性激活函數(shù),就可以去擬合任意的函數(shù),那么分布也是一樣,所以可以用一直正態(tài)分布,或者高斯分布,取樣去訓(xùn)練一個(gè)神經(jīng)網(wǎng)絡(luò),學(xué)習(xí)到一個(gè)很復(fù)雜的分布。

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      如何來找到更接近的分布,這就是 GAN 的貢獻(xiàn)了。先給出 GAN 的公式:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      這個(gè)式子的好處在于,固定 G,max  V(G,D) 就表示 PG 和 Pdata 之間的差異,然后要找一個(gè)最好的 G,讓這個(gè)最大值最小,也就是兩個(gè)分布之間的差異最小。

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      表面上看這個(gè)的意思是,D 要讓這個(gè)式子盡可能的大,也就是對(duì)于 x 是真實(shí)分布中,D(x) 要接近與 1,對(duì)于 x 來自于生成的分布,D(x) 要接近于 0,然后 G 要讓式子盡可能的小,讓來自于生成分布中的 x,D(x) 盡可能的接近 1。

      現(xiàn)在我們先固定 G,來求解最優(yōu)的 D:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      對(duì)于一個(gè)給定的 x,得到最優(yōu)的 D 如上圖,范圍在 (0,1) 內(nèi),把最優(yōu)的 D 帶入

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      可以得到:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      JS divergence 是 KL divergence 的對(duì)稱平滑版本,表示了兩個(gè)分布之間的差異,這個(gè)推導(dǎo)就表明了上面所說的,固定 G。

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      表示兩個(gè)分布之間的差異,最小值是 -2log2,最大值為 0。

      現(xiàn)在我們需要找個(gè) G,來最小化

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      觀察上式,當(dāng) PG(x)=Pdata(x) 時(shí),G 是最優(yōu)的。

      4.訓(xùn)練

      有了上面推導(dǎo)的基礎(chǔ)之后,我們就可以開始訓(xùn)練 GAN 了。結(jié)合我們開頭說的,兩個(gè)網(wǎng)絡(luò)交替訓(xùn)練,我們可以在起初有一個(gè) G0 和 D0,先訓(xùn)練 D找到 :

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      然后固定 D0 開始訓(xùn)練 G0, 訓(xùn)練的過程都可以使用 gradient descent,以此類推,訓(xùn)練 D1,G1,D2,G2,...

      但是這里有個(gè)問題就是,你可能在 D0* 的位置取到了:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      然后更新 G0 為 G1,可能

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      了,但是并不保證會(huì)出現(xiàn)一個(gè)新的點(diǎn) D1* 使得

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      這樣更新 G 就沒達(dá)到它原來應(yīng)該要的效果,如下圖所示:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      避免上述情況的方法就是更新 G 的時(shí)候,不要更新 G 太多。

      知道了網(wǎng)絡(luò)的訓(xùn)練順序,我們還需要設(shè)定兩個(gè) loss function,一個(gè)是 D 的 loss,一個(gè)是 G 的 loss。下面是整個(gè) GAN 的訓(xùn)練具體步驟:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      上述步驟在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)中也是非常常見,易于理解。

      5.存在的問題

      但是上面 G 的 loss function 還是有一點(diǎn)小問題,下圖是兩個(gè)函數(shù)的圖像:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      log(1-D(x)) 是我們計(jì)算時(shí) G 的 loss function,但是我們發(fā)現(xiàn),在 D(x) 接近于 0 的時(shí)候,這個(gè)函數(shù)十分平滑,梯度非常的小。這就會(huì)導(dǎo)致,在訓(xùn)練的初期,G 想要騙過 D,變化十分的緩慢,而上面的函數(shù),趨勢(shì)和下面的是一樣的,都是遞減的。但是它的優(yōu)勢(shì)是在 D(x) 接近 0 的時(shí)候,梯度很大,有利于訓(xùn)練,在 D(x) 越來越大之后,梯度減小,這也很符合實(shí)際,在初期應(yīng)該訓(xùn)練速度更快,到后期速度減慢。

      所以我們把 G 的 loss function 修改為

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      這樣可以提高訓(xùn)練的速度。

      還有一個(gè)問題,在其他 paper 中提出,就是經(jīng)過實(shí)驗(yàn)發(fā)現(xiàn),經(jīng)過許多次訓(xùn)練,loss 一直都是平的,也就是

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      JS divergence 一直都是 log2,P和 Pdata 完全沒有交集,但是實(shí)際上兩個(gè)分布是有交集的,造成這個(gè)的原因是因?yàn)椋覀儫o法真正計(jì)算期望和積分,只能使用 sample 的方法,如果訓(xùn)練的過擬合了,D 還是能夠完全把兩部分的點(diǎn)分開,如下圖:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      對(duì)于這個(gè)問題,我們是否應(yīng)該讓 D 變得弱一點(diǎn),減弱它的分類能力,但是從理論上講,為了讓它能夠有效的區(qū)分真假圖片,我們又希望它能夠 powerful,所以這里就產(chǎn)生了矛盾。

      還有可能的原因是,雖然兩個(gè)分布都是高維的,但是兩個(gè)分布都十分的窄,可能交集相當(dāng)小,這樣也會(huì)導(dǎo)致 JS divergence 算出來 =log2,約等于沒有交集。

      解決的一些方法,有添加噪聲,讓兩個(gè)分布變得更寬,可能可以增大它們的交集,這樣 JS divergence 就可以計(jì)算,但是隨著時(shí)間變化,噪聲需要逐漸變小。

      還有一個(gè)問題叫 Mode Collapse,如下圖:

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      這個(gè)圖的意思是,data 的分布是一個(gè)雙峰的,但是學(xué)習(xí)到的生成分布卻只有單峰,我們可以看到模型學(xué)到的數(shù)據(jù),但是卻不知道它沒有學(xué)到的分布。

      造成這個(gè)情況的原因是,KL divergence 里的兩個(gè)分布寫反了

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      這個(gè)圖很清楚的顯示了,如果是第一個(gè) KL divergence 的寫法,為了防止出現(xiàn)無窮大,所以有 Pdata 出現(xiàn)的地方都必須要有 PG 覆蓋,就不會(huì)出現(xiàn) Mode Collapse。

      6.參考

      這是對(duì) GAN 入門學(xué)習(xí)做的一些筆記和理解,后來太懶了,不想打公式了,主要是參考了李宏毅老師的視頻:

      http://t.cn/RKXQOV0

      雷鋒網(wǎng)相關(guān)閱讀:

      提高駕駛技術(shù):用GAN去除(愛情)動(dòng)作片中的馬賽克和衣服

      只需 130 行代碼,用 GAN 生成二維樣本的小例子

      雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

      開發(fā)者自述:我是這樣學(xué)習(xí) GAN 的

      分享:
      相關(guān)文章

      編輯

      聚焦數(shù)據(jù)科學(xué),連接 AI 開發(fā)者。更多精彩內(nèi)容,請(qǐng)?jiān)L問:yanxishe.com
      當(dāng)月熱門文章
      最新文章
      請(qǐng)?zhí)顚懮暾?qǐng)人資料
      姓名
      電話
      郵箱
      微信號(hào)
      作品鏈接
      個(gè)人簡介
      為了您的賬戶安全,請(qǐng)驗(yàn)證郵箱
      您的郵箱還未驗(yàn)證,完成可獲20積分喲!
      請(qǐng)驗(yàn)證您的郵箱
      立即驗(yàn)證
      完善賬號(hào)信息
      您的賬號(hào)已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
      立即設(shè)置 以后再說
      主站蜘蛛池模板: 最新精品露脸国产在线| 囯产精品久久久久久久久久妞妞| h片无码| 国产成人精品人妻熟女a62v久久| 久久久久人妻精品区一| 国产乱妇乱子视频在播放| 日韩亚洲国产中文字幕欧美 | 少妇视频网站| 午夜亚洲av永久无码精品| 丁香五月综合| 啦啦啦啦www日本在线观看| 久久久久国产精品人妻| 欧美狠狠撸| 亚洲热妇无码av在线播放| 日韩一区二区三| 日韩一区中文免费视频| 免费99视频| 少妇真人直播免费视频| 亚洲AV影院| 亚洲国产精品自产拍久久| 特级毛片爽www免费版| 2021最新国产在线99| 一本久道中文无码字幕av| 国产菊爆视频在线观看| 欧美一区二区三区性视频| 亚洲丝袜熟女| 久久天天躁狠狠躁夜夜不卡公司| 中文字幕四区| 久久久无码视频| 人妻少妇精品无码专区二区| 朋友的丰满人妻hd| 中文字幕在线精品视频入口一区| 日韩亚洲中文图片小说| 亚洲6080yy久久无码产自国产| 欧美性爱一区| 久久九九久精品国产免费直播| 尚义县| 精品福利视频一区二区三区| 91亚瑟视频| 无码人妻精品一区二区三| 尹人成人|