RSGAN:对抗模型中的“图灵测试”思想
作者丨蘇劍林
單位丨廣州火焰信息科技有限公司
研究方向丨NLP,神經(jīng)網(wǎng)絡(luò)
個(gè)人主頁(yè)丨kexue.fm
這兩天無(wú)意間發(fā)現(xiàn)一個(gè)非常有意義的工作,稱(chēng)為“相對(duì)GAN”,簡(jiǎn)稱(chēng) RSGAN,來(lái)自文章 The relativistic discriminator: a key element missing from standard GAN,據(jù)說(shuō)該文章還得到了 GAN 創(chuàng)始人 Goodfellow 的點(diǎn)贊。這篇文章提出了用相對(duì)的判別器來(lái)取代標(biāo)準(zhǔn) GAN 原有的判別器,使得生成器的收斂更為迅速,訓(xùn)練更為穩(wěn)定。?
可惜的是,這篇文章僅僅從訓(xùn)練和實(shí)驗(yàn)角度對(duì)結(jié)果進(jìn)行了論述,并沒(méi)有進(jìn)行更深入的分析,以至于不少人覺(jué)得這只是 GAN 訓(xùn)練的一個(gè) trick。但是在筆者看來(lái),RSGAN 具有更為深刻的含義,甚至可以看成它已經(jīng)開(kāi)創(chuàng)了一個(gè)新的 GAN 流派。所以,筆者決定對(duì) RSGAN 模型及其背后的內(nèi)涵做一個(gè)基本的介紹。不過(guò)需要指出的是,除了結(jié)果一樣之外,本文的介紹過(guò)程跟原論文相比幾乎沒(méi)有重合之處。
“圖靈測(cè)試”思想
SGAN
SGAN 就是標(biāo)準(zhǔn)的 GAN(Standard GAN)。就算沒(méi)有做過(guò) GAN 研究的讀者,相信也從各種渠道了解到 GAN 的大概原理:“造假者”不斷地進(jìn)行造假,試圖愚弄“鑒別者”;“鑒別者”不斷提高鑒別技術(shù),以分辨出真品和贗品。兩者相互競(jìng)爭(zhēng),共同進(jìn)步,直到“鑒別者”無(wú)法分辨出真、贗品了,“造假者”就功成身退了。?
在建模時(shí),通過(guò)交替訓(xùn)練實(shí)現(xiàn)這個(gè)過(guò)程:固定生成器,訓(xùn)練一個(gè)判別器(二分類(lèi)模型),將真實(shí)樣本輸出 1,將偽造樣本輸出 0;然后固定判別器,訓(xùn)練生成器讓偽造樣本盡可能輸出 1,后面這一步不需要真實(shí)樣本參與。
問(wèn)題所在
然而,這個(gè)建模過(guò)程似乎對(duì)判別器的要求過(guò)于苛刻了,因?yàn)榕袆e器是孤立運(yùn)作的:訓(xùn)練生成器時(shí),真實(shí)樣本沒(méi)有參與,所以判別器必須把關(guān)于真實(shí)樣本的所有屬性記住,這樣才能指導(dǎo)生成器生成更真實(shí)的樣本。
在生活實(shí)際中,我們并不是這樣做的,所謂“沒(méi)有對(duì)比就沒(méi)有傷害,沒(méi)有傷害就沒(méi)有進(jìn)步”,我們很多時(shí)候是根據(jù)真、贗品的對(duì)比來(lái)分辨的。比如識(shí)別一張假幣,可能需要把它跟一張真幣對(duì)比一下;識(shí)別山寨手機(jī),只需要將它跟正版手機(jī)對(duì)比一下就行了;等等。類(lèi)似地,如果要想把贗品造得更真,那么需要把真品放在一旁不斷地進(jìn)行對(duì)比改進(jìn),而不是單單憑借“記憶”中的真品來(lái)改進(jìn)。
“對(duì)比”能讓我們更容易識(shí)別出真、贗品出來(lái),從而更好地制造贗品。而在人工智能領(lǐng)域,我們知道有非常著名的“圖靈測(cè)試”,指的是測(cè)試者在無(wú)法預(yù)知的情況下同時(shí)跟機(jī)器人和人進(jìn)行交流,如果測(cè)試者無(wú)法成功分別出人和機(jī)器人,那么說(shuō)明這個(gè)機(jī)器人已經(jīng)(在某個(gè)方面)具有人的智能了。“圖靈測(cè)試”也強(qiáng)調(diào)了對(duì)比的重要性,如果機(jī)器人和人混合起來(lái)后就無(wú)法分辨了,那么說(shuō)明機(jī)器人已經(jīng)成功了。
接下來(lái)我們將會(huì)看到,RSGAN 就是基于“圖靈測(cè)試”的思想的:如果鑒別器無(wú)法鑒別出混合的真假圖片,那么生成器就成功了;而為了生成更好的圖片,生成器也需要直接借助于真實(shí)圖片。
RSGAN基本框架
SGAN分析
首先,我們來(lái)回顧一下標(biāo)準(zhǔn) GAN 的流程。設(shè)真實(shí)樣本分布為 p?(x),偽造樣本分布為 q(x),那么固定生成器后,我們來(lái)優(yōu)化判別器 T(x):
這里的 σ 就是 sigmoid 激活函數(shù)。然后固定判別器,我們優(yōu)化生成器 G(z):?
注意這里我們有個(gè)不確定 h,我們馬上就來(lái)分析它。從 (1) 我們可以解出判別器的最優(yōu)解滿(mǎn)足(后面有補(bǔ)充證明):
代入 (2),可以發(fā)現(xiàn)結(jié)果為:
寫(xiě)成最后一個(gè)等式,是因?yàn)橹恍枰O(shè) f(t)=h(log(t)),就能夠看出它具有 f 散度的形式。也就是說(shuō),最小化 (2) 就是在最小化對(duì)應(yīng)的 f 散度。關(guān)于 f 散度,可以參數(shù)我之前寫(xiě)的?f-GAN 簡(jiǎn)介:GAN 模型的生產(chǎn)車(chē)間 [1]。
f 散度中的 f 的本質(zhì)要求是 f 是一個(gè)凸函數(shù),所以只需要選擇 h 使得 h(log(t)) 為凸函數(shù)就行。最簡(jiǎn)單的情況是 h(t)=?t,對(duì)應(yīng) h(log(t))=?logt 為凸函數(shù),這時(shí)候 (2) 為:
類(lèi)似的選擇有很多,比如當(dāng) h(t)=?logσ(t) 時(shí),也是凸函數(shù)(t>0 時(shí)),所以:
也是一個(gè)合理的選擇,它便是 GAN 常用的生成器 loss 之一。類(lèi)似地還有 h(t)=log(1?σ(t)),這些選擇就不枚舉了。
RSGAN目標(biāo)
這里,我們先直接給出 RSGAN 的優(yōu)化目標(biāo):固定生成器后,我們來(lái)優(yōu)化判別器 T(x):
這里的 σ 就是 sigmoid 激活函數(shù)。然后固定判別器,我們優(yōu)化生成器 G(z):
跟 SGAN 一樣,我們這里保留了一般的 h,h 的要求跟前面的 SGAN 的討論一致。而 RSGAN 原論文的選擇是:
看上去就是把 SGAN 的判別器的兩項(xiàng)換成一個(gè)相對(duì)判別器了,相關(guān)的分析結(jié)果有什么變化呢?
理論結(jié)果
通過(guò)變分法(后面有補(bǔ)充證明)可以得到,(7) 的最優(yōu)解為:
代入到 (8),結(jié)果是:
這個(gè)結(jié)果便是整個(gè) RSGAN 的精華所在了,它優(yōu)化的是 p?(Xr)q(Xf) 與 p?(Xf)q(Xr) 的 f 散度!?
這是什么意思呢?它就是說(shuō),假如我從真實(shí)樣本采樣一個(gè) Xr 出來(lái),從偽造樣本采樣一個(gè) Xf 出來(lái),然后將它們交換一下,把假的當(dāng)成真,真的當(dāng)成假,那么還能分辨出來(lái)嗎?換言之:p?(Xf)q(Xr) 有大變化嗎??
假如沒(méi)有什么變化,那就說(shuō)明真假樣本已經(jīng)無(wú)法分辨了,訓(xùn)練成功,假如還能分辨出來(lái),說(shuō)明還需要借助真實(shí)樣本來(lái)改善偽造樣本。所以,式 (11) 就是 RSGAN 中的“圖靈測(cè)試”思想的體現(xiàn):打亂了數(shù)據(jù),是否還能分辨出來(lái)?
模型效果分析
作者在原論文中還提出了一個(gè) RaSGAN,a 是 average 的意思,就是用整個(gè) batch 的平均來(lái)代替單一的真/偽樣本。但我覺(jué)得這不是一個(gè)特別優(yōu)雅的做法,而且論文也表明 RaSGAN 的效果并非總是比 RSGAN 要好,所以這就不介紹了,有興趣的讀者看看原論文即可。?
至于效果,論文中的效果列表顯示,RSGAN 在不少任務(wù)上都提升了模型的生成質(zhì)量,但這并非總是這樣,平均而言有輕微的提升吧。作者特別指出的是 RSGAN 能夠加快生成器的訓(xùn)練速度,我個(gè)人也實(shí)驗(yàn)了一下,比 SGAN、SNGAN 都要快一些。
我的參考代碼:
https://github.com/bojone/gan/blob/master/keras/rsgan_sn_celeba.py
借用 MingtaoGuo [2] 的一張圖來(lái)對(duì)比 RSGAN 的收斂速度:
▲?RSGAN收斂速度對(duì)比
從直觀(guān)來(lái)看,RSGAN 更快是因?yàn)樵谟?xùn)練生成器時(shí)也借用了真實(shí)樣本的信息,而不僅僅通過(guò)判別器的“記憶”;從理論上看,通過(guò) T(Xr)、T(Xf) 作差的方式,使得判別器只依賴(lài)于它們的相對(duì)值,從而簡(jiǎn)單地改善了判別器 T 可能存在的偏置情況,使得梯度更加穩(wěn)定。甚至我覺(jué)得,把真實(shí)樣本也引入到生成器的訓(xùn)練中,有可能(沒(méi)仔細(xì)證明)提升偽造樣本的多樣性,因?yàn)橛辛烁鞣N真實(shí)樣本來(lái)對(duì)比,模型如果只生成單一樣本,也很難滿(mǎn)足判別器的對(duì)比判別標(biāo)準(zhǔn)。
相關(guān)話(huà)題討論
簡(jiǎn)單總結(jié)
總的來(lái)說(shuō),我覺(jué)得 RSGAN 是對(duì) GAN 的改進(jìn)是從思想上做了改變的,也許 RSGAN 的作者也沒(méi)有留意到這一點(diǎn)。?
我們經(jīng)常說(shuō),WGAN 是 GAN 之后的一大突破,這沒(méi)錯(cuò),但這個(gè)突破是理論上的,而在思想上還是一樣,都是在減少兩個(gè)分布的距離,只不過(guò)以前用 JS 散度可能有各種問(wèn)題,而 WGAN 換用了 Wasserstein 距離。
我覺(jué)得 RSGAN 更像是一種思想上的突破——轉(zhuǎn)化為真假樣本混淆之后的分辨——盡管效果未必有大的進(jìn)步。(當(dāng)然你要是說(shuō)大家最終的效果都是拉近了分布距離,那我也沒(méi)話(huà)說(shuō))。?
RSGAN 的一些提升是容易重現(xiàn)的,當(dāng)然由于不是各種任務(wù)都有提升,所以也有人詬病這不過(guò)是 GAN 訓(xùn)練的一個(gè) trick。這些評(píng)論見(jiàn)仁見(jiàn)智吧,不妨礙我對(duì)這篇論文的贊賞和研究。?
對(duì)了,順便說(shuō)一下,作者 Alexia Jolicoeur-Martineau [3] 是猶太人總醫(yī)院(Jewish General Hospital)的一名女生物統(tǒng)計(jì)學(xué)家,論文中的結(jié)果是她只用一顆 1060 跑出來(lái)的 [4]。我突然也為我只有一顆 1060 感到自豪了,然而我有 1060 但我并沒(méi)有 paper。
延伸討論
最后胡扯一些延伸的話(huà)題。?
首先,可以留意到,WGAN 的判別器 loss 本身就是兩項(xiàng)的差的形式,也就是說(shuō) WGAN 的判別器就是一個(gè)相對(duì)判別器,作者認(rèn)為這是 WGAN 效果好的重要原因。?
這樣看上去 WGAN 跟 RSGAN 本身就有一些交集,但我有個(gè)更進(jìn)一步的想法,就是基于 p?(xr)q(xf) 與p?(xf)q(xr) 的比較能否完全換用 Wasserstein 距離來(lái)進(jìn)行?我們知道 WGAN 的生成器訓(xùn)練目標(biāo)也是跟真實(shí)樣本沒(méi)關(guān)系的,怎么更好地將真實(shí)樣本的信息引入到 WGAN 的生成器中去??
還有一個(gè)問(wèn)題,就是目前作差僅僅是判別器最后輸出的標(biāo)量作差,那么能不能是判別器的某個(gè)隱藏層作差,然后算個(gè) mse 或者再接幾層神經(jīng)網(wǎng)絡(luò)?總之,我覺(jué)得這個(gè)模型的事情應(yīng)該還沒(méi)完。
補(bǔ)充證明
(1) 的最優(yōu)解
變分用 δ 表示,跟微分基本一樣:
極值在變分為 0 時(shí)取到,而 δσ(T(x)) 代表任意增量,所以如果上式恒為 0,意味著括號(hào)內(nèi)的部分恒為 0,即:
(7) 的最優(yōu)解
變分上式:
極值在變分為 0 時(shí)取到,所以方括號(hào)內(nèi)的部分恒為 0,即:
相關(guān)鏈接
[1].?https://kexue.fm/archives/6016
[2].?https://github.com/MingtaoGuo/DCGAN_WGAN_WGAN-GP_LSGAN_SNGAN_RSGAN_RaSGAN_TensorFlow
[3].?https://scholar.google.com/citations?user=0qytQ1oAAAAJ&hl=en
[4].?https://www.reddit.com/r/MachineLearning/comments/8vr9am/r_the_relativistic_discriminator_a_key_element/e1ru76p
點(diǎn)擊以下標(biāo)題查看作者其他文章:?
變分自編碼器VAE:原來(lái)是這么一回事 | 附開(kāi)源代碼
再談變分自編碼器VAE:從貝葉斯觀(guān)點(diǎn)出發(fā)
變分自編碼器VAE:這樣做為什么能成?
深度學(xué)習(xí)中的互信息:無(wú)監(jiān)督提取特征
全新視角:用變分推斷統(tǒng)一理解生成模型
細(xì)水長(zhǎng)flow之NICE:流模型的基本概念與實(shí)現(xiàn)
細(xì)水長(zhǎng)flow之f-VAEs:Glow與VAEs的聯(lián)姻
深度學(xué)習(xí)中的Lipschitz約束:泛化與生成模型
關(guān)于PaperWeekly
PaperWeekly 是一個(gè)推薦、解讀、討論、報(bào)道人工智能前沿論文成果的學(xué)術(shù)平臺(tái)。如果你研究或從事 AI 領(lǐng)域,歡迎在公眾號(hào)后臺(tái)點(diǎn)擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群里。
▽ 點(diǎn)擊 |?閱讀原文?| 查看作者博客
總結(jié)
以上是生活随笔為你收集整理的RSGAN:对抗模型中的“图灵测试”思想的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 今日直播 | 全国高校人工智能人才与科技
- 下一篇: 实录分享 | 计算未来轻沙龙:揭秘Aut