从PM到GAN——LSTM之父Schmidhuber横跨22年的怨念(文字版)
前段時(shí)間我受極視角邀請(qǐng),在斗魚上直播分享有關(guān)GAN的話題。考慮到現(xiàn)在網(wǎng)上關(guān)于GAN的文章、視頻都已經(jīng)非常多了,所以我就故意選擇了一個(gè)之前沒有什么人講過的主題:LSTM之父Schmidhuber與GAN之間的恩怨糾葛。其實(shí)這件事在英文網(wǎng)上傳播得還挺廣,而且除了八卦之外也有一些嚴(yán)肅的學(xué)術(shù)討論,可惜相關(guān)的中文信息寥寥,不過這樣倒正好給我一個(gè)機(jī)會(huì)來給大家介紹一些新內(nèi)容。
其實(shí)相比視頻直播我還是更喜歡寫成文章的形式,因?yàn)楹笳吒m合深入理解和收藏回顧。所以為了方便錯(cuò)過直播或者不習(xí)慣看視頻的朋友,我對(duì)當(dāng)晚直播內(nèi)容進(jìn)行了文字整理,全文分為以下四個(gè)部分:
- 八卦Schmidhuber與GAN之間的恩怨
- 講解Schmidhuber在92年提出的PM模型
- 簡(jiǎn)單介紹GAN、InfoGAN、對(duì)抗自編碼器三個(gè)模型
- 對(duì)比以上四個(gè)模型之間的異同
如果選擇看直播回放,可以到百度云下載。
鏈接:http://pan.baidu.com/s/1skUZidn
密碼:200j
一、雙雄捉對(duì)
2016年12月,NIPS大會(huì),Ian Goodfellow的GAN Tutorial上,發(fā)生了尷尬的一幕。
正當(dāng)Goodfellow講到GAN與其他模型的比較時(shí),臺(tái)下一位神秘人物站起來打斷了演講,自顧自地說了一大通話(視頻片段在此)
這個(gè)觀眾不是別人,卻是大名鼎鼎的Jürgen Schmidhuber,一位來自德國的AI科學(xué)家。雖然名聲不如三巨頭響亮,但Schmidhuber其實(shí)也是深度學(xué)習(xí)的先驅(qū)人物,在上個(gè)世紀(jì)就做出了許多重要貢獻(xiàn),其中最有名的就是他在1997年提出的LSTM,而他本人也被尊稱為”LSTM之父”。
本文八卦的正是這位大佬跟Goodfellow在GAN上的爭(zhēng)論,但其實(shí)這早就不是Schmidhuber第一次開炮懟人了。再往前2015年的時(shí)候,我們熟知的三巨頭Hinton、Lecun、Bengio在Nature上發(fā)表了一篇《Deep Learning》綜述之后,Schmidhuber就站出來指責(zé)他們行文偏頗,認(rèn)為他們沒有重視自己做出的很多貢獻(xiàn),覺得自己沒有得到應(yīng)有的榮譽(yù),而Lecun之后也發(fā)文霸氣反駁,場(chǎng)面十分激烈。當(dāng)然這不是本文的重點(diǎn),感興趣的朋友可以進(jìn)一步挖掘,下面還是繼續(xù)回到NIPS演講現(xiàn)場(chǎng),看看Schmidhuber這回究竟又是為何開炮。
只見他站起來之后,先講自己在1992年提出了一個(gè)叫做Predictability Minimization的模型,它如何如何,一個(gè)網(wǎng)絡(luò)干嘛另一個(gè)網(wǎng)絡(luò)干嘛,花了好幾分鐘,接著話鋒一轉(zhuǎn),直問臺(tái)上的Goodfellow:“你覺得我這個(gè)PM模型跟你的GAN有沒有什么相似之處啊?”
似乎只是一個(gè)很正常的問題,可是Goodfellow聽完后反應(yīng)卻很激烈。Goodfellow表示,Schmidhuber已經(jīng)不是第一次問我這個(gè)問題了,之前呢我和他就已經(jīng)通過郵件私下交鋒了幾回,所以現(xiàn)在的情況純粹就是要來跟我公開當(dāng)面對(duì)質(zhì),順便浪費(fèi)現(xiàn)場(chǎng)幾百號(hào)人聽tutorial的時(shí)間。然后你問我PM模型和GAN模型有什么相似之處,我早就公開回應(yīng)過你了,不在別的地方,就在我當(dāng)年的論文中,而且后來的郵件也已經(jīng)把我的意思說得很清楚了,還有什么可問的呢?
確實(shí)正如Goodfellow所言,早在2014年的第一篇GAN論文中,PM已經(jīng)被拿出來跟GAN進(jìn)行了比較,舉了三點(diǎn)不同之處。不過那只是論文的最終版本,而在一開始投遞NIPS的初稿中并沒有下面這段文字,也就是說很可能Goodfellow一開始是不知道有PM這么一個(gè)東西的。
那為什么在最終版本里又出現(xiàn)了PM的內(nèi)容呢?原來,當(dāng)年Schmidhuber就是NIPS的審稿人,而且剛好就審到了Goodfellow的論文。我們現(xiàn)在知道這篇論文挖了一個(gè)巨大無比的坑,引得大批人馬前仆后繼都來做GAN的研究,以后也應(yīng)該是能寫進(jìn)教科書的經(jīng)典工作。但就是這樣牛逼的一篇論文,當(dāng)年Schmidhuber居然給出了拒稿意見!當(dāng)然另外兩位審稿人識(shí)貨,所以論文最后還是被收了。
回到正題,當(dāng)時(shí)Schmidhuber在評(píng)審意見中認(rèn)為,他92年提出的PM模型才是“第一個(gè)對(duì)抗網(wǎng)絡(luò)”,而GAN跟PM的主要差別僅僅在于方向反過來了,可以把GAN名字改成“inverse PM”,即反過來的PM。按他的意思,GAN簡(jiǎn)直就是個(gè)PM的變種模型罷了。
Goodfellow當(dāng)然不同意,所以就有了14年最終版本里的三點(diǎn)不同之處,具體細(xì)節(jié)放在最后模型比較的部分再講。然而Schmidhuber并不接受這些說法,私下里又通過郵件跟Goodfellow進(jìn)行了一番爭(zhēng)論,還到16年的NIPS大會(huì)上打斷演講,公開較勁,就是想讓對(duì)方承認(rèn)PM模型的地位和貢獻(xiàn),可謂不依不饒。
Goodfellow也不客氣,干脆在2016年的GAN Tutorial中完全移除了對(duì)PM的比較和引用。他在Quora上公開表示,“我從沒有否認(rèn)GAN跟另外一些模型有聯(lián)系,比如NCE,但是GAN跟PM之間我真的認(rèn)為沒太大聯(lián)系。”更有意思的是,Goodfellow還透露說,“Jürgen和我準(zhǔn)備合寫一篇paper來比較PM和GAN——如果我們能夠取得一致意見的話。”想必真要寫出來,背后又要經(jīng)過一番激烈的爭(zhēng)論了。
說了這么多,所謂的PM模型究竟是什么?它跟GAN究竟有多少相同多少不同?還有,這個(gè)“古老”的模型能給今天的GAN研究帶來什么啟發(fā)嗎?大家心里肯定充滿了疑問。那么八卦結(jié)束,我們現(xiàn)在就來走近科學(xué),走近塵封多年的PM模型。
二、古老智慧
Predictability Minimization(可預(yù)測(cè)性最小化)模型,簡(jiǎn)稱PM模型,出自1992年的論文《Learning Factorial Codes by Predictability Minimization》,Jürgen Schmidhuber是唯一的作者。對(duì)于類似我這樣二零一幾年才接觸深度學(xué)習(xí)的人來說,它幾乎就是“中古時(shí)期”的文獻(xiàn)了。
理解PM模型,首先得從自編碼器說起。大家知道機(jī)器學(xué)習(xí)分為有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí),無監(jiān)督學(xué)習(xí)中一個(gè)很重要的領(lǐng)域是表征學(xué)習(xí),旨在從原始數(shù)據(jù)中學(xué)習(xí)到一個(gè)良好的表征,而自編碼器就是用于表征學(xué)習(xí)的代表模型。
自編碼器由兩個(gè)模塊——編碼器(encoder)和解碼器(decoder)組成。編碼器負(fù)責(zé)輸入原始樣本,輸出壓縮編碼(code);解碼器負(fù)責(zé)輸入編碼,還原出原始樣本。解碼還原出來的樣本跟真正的原始樣本進(jìn)行比較,可以計(jì)算重構(gòu)誤差,自編碼器的訓(xùn)練目標(biāo)就是盡可能地減少這個(gè)重構(gòu)誤差。
如果自編碼器經(jīng)過訓(xùn)練能夠很好地重構(gòu)樣本,那意味著編碼器和解碼器中間的隱藏層節(jié)點(diǎn)保留了原始樣本的重要信息,我們把中間這層節(jié)點(diǎn)構(gòu)成的向量稱為表征(representation)、特征(feature)或編碼(code),這三個(gè)詞其實(shí)可以當(dāng)成同義詞。
但是僅僅保留樣本信息、僅僅學(xué)到一個(gè)表征,是不夠的,因?yàn)楸碚鲗W(xué)習(xí)的一大難點(diǎn)就是想要學(xué)到一個(gè)“好”的表征。但什么是“好”呢?有很多人提出了不同的標(biāo)準(zhǔn)。
比如有人認(rèn)為編碼向量的各個(gè)維度代表了樣本所具有的屬性,而單獨(dú)一個(gè)樣本不應(yīng)該同時(shí)具備那么多種屬性,所以合理的情況是編碼向量中大多數(shù)維度都是0(不激活),只有少數(shù)維度不為0(激活),此為“稀疏”,附帶稀疏要求的編碼器就叫稀疏自編碼器。
再比如有人認(rèn)為自編碼器不能死記硬背,需要在“理解”樣本的基礎(chǔ)上對(duì)樣本進(jìn)行編碼,即便輸入的時(shí)候存在一些噪聲損壞了樣本,自編碼器也要能夠還原出完好的原始樣本,在此條件下編碼出來的向量可能會(huì)更具語義信息,此為“降噪”,附帶降噪要求的編碼器就叫降噪自編碼器。
除了稀疏、降噪,還有人認(rèn)為編碼向量的各個(gè)維度之間應(yīng)該相互獨(dú)立,此為“解耦”(factorial / disentangled),也是下文的重點(diǎn)。為了方便起見,我們考慮編碼只有3個(gè)維度的情況,此時(shí)解耦在數(shù)學(xué)形式上表現(xiàn)為:
?(1)
其中是全部訓(xùn)練樣本而非單個(gè)樣本,對(duì)應(yīng)編碼的第個(gè)維度。為方便起見,下文省略。
直觀上說,一個(gè)解耦的編碼(factorial code)把原本混雜在樣本中的各個(gè)獨(dú)立要素拆解開來,用一個(gè)個(gè)維度分別表示,就像人類通過拆解獨(dú)立要素來認(rèn)知復(fù)雜事物一樣,所以可以認(rèn)為它是一個(gè)“好”的表征。
現(xiàn)在問題來了,我們可以通過L1正則化給來自編碼器提出稀疏的要求,可以通過輸入加噪來給自編碼器提出降噪的要求,那要怎么給自編碼器提出解耦的要求呢?當(dāng)年Schmidhuber就想到了非常聰明的方法。
首先,上面公式(1)可以換一個(gè)表述,改寫成三個(gè)條件獨(dú)立表達(dá)式:
?(2a)
?(2b)
?(2c)
直觀上可以把這組式子解釋為,一個(gè)編碼維度旁邊的“兄弟維度”對(duì)于預(yù)測(cè)該維度沒有額外幫助,比如說知道了和并不能幫助我們將猜得更準(zhǔn)。
接著,使用三個(gè)預(yù)測(cè)器網(wǎng)絡(luò)把上述邏輯具體化,其中預(yù)測(cè)器1負(fù)責(zé)預(yù)測(cè)維度1,輸入維度2和3,以此類推,數(shù)學(xué)形式如下:
?(3a)
?(3b)
?(3c)網(wǎng)絡(luò)形式如下:
為了讓預(yù)測(cè)器猜準(zhǔn)它所負(fù)責(zé)的編碼維度,可以把它的loss函數(shù)定為L(zhǎng)2 loss(或者其他預(yù)測(cè)誤差loss):
?(4a)
?(4b)
?(4c)
按Schmidhuber的思想,上述loss體現(xiàn)了各個(gè)編碼維度的解耦程度。怎么說呢?以預(yù)測(cè)器1為例,如果和很有關(guān)系,甚至極端情況下恒等于,那么就能夠猜得很準(zhǔn)。此時(shí)關(guān)于條件不獨(dú)立,很有可預(yù)測(cè)性(predictability),我們就認(rèn)為沒能從中解耦。
這顯然不是想要的局面。為了將與解耦,編碼器就得盡可能讓預(yù)測(cè)器猜不中,loss上體現(xiàn)為:
?(5)
預(yù)測(cè)器1想要猜中維度1,而編碼器想要讓它猜不中,loss函數(shù)剛好相反,,兩者之間存在對(duì)抗。如果編碼器贏了,就代表與關(guān)系不大,成功解耦。
接下來考慮上所有維度,再把公式寫得通用一點(diǎn)。每個(gè)預(yù)測(cè)器試圖猜中它所負(fù)責(zé)的編碼維度,體現(xiàn)了編碼的可預(yù)測(cè)性,其loss為:
?(6)
編碼器試圖讓所有預(yù)測(cè)器都猜不中,試圖最小化可預(yù)測(cè)性,其loss與預(yù)測(cè)器相反:
?(7)
如果編碼器贏了,就解耦了編碼向量的各個(gè)維度。至此,讀者就可以理解Schmidhuber論文標(biāo)題的含義了:Learning Factorial Codes by Predictability Minimization,通過最小化可預(yù)測(cè)性,來學(xué)習(xí)一個(gè)解耦的編碼表示。
當(dāng)然,除了上述兩個(gè)相互對(duì)抗可預(yù)測(cè)性loss,別忘了還有個(gè)自編碼器本身的重構(gòu)誤差loss,它能夠保證編碼中盡可能保留了原始輸入樣本的重要信息。論文中其實(shí)還有其他loss,但不是重點(diǎn),感興趣的人可以去讀原論文。將上述網(wǎng)絡(luò)模塊與loss函數(shù)全部集中在一起,就形成了PM模型的總體架構(gòu)圖,我們用這張圖作為第二部分的總結(jié):
三、三個(gè)后輩
知道了PM是啥,接下來的問題就是它跟GAN究竟有多相似,但實(shí)際上GAN的兩個(gè)后續(xù)變種——InfoGAN、對(duì)抗自編碼器反而跟PM更像,所以第三部分先簡(jiǎn)單介紹這三個(gè)模型,再在第四部分跟PM進(jìn)行綜合比較。相關(guān)論文如下:
- Generative Adversarial Nets?
InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets?
Adversarial Autoencoders
第一個(gè)模型是大家已經(jīng)很熟悉的GAN,分為生成器(generator)和判別器(discriminator)兩個(gè)模塊。生成器輸入一個(gè)隨機(jī)編碼向量,輸出一個(gè)復(fù)雜樣本(如圖片);判別器輸入一個(gè)復(fù)雜樣本,輸出一個(gè)概率表示該樣本是真實(shí)樣本還是生成器產(chǎn)生的假樣本。判別器的目標(biāo)是區(qū)分真假樣本,生成器的目標(biāo)是讓判別器區(qū)分不出真假樣本,兩者目標(biāo)相反,存在對(duì)抗。
GAN的生成器輸入一個(gè)100維的編碼向量,但在生成樣本的過程中未必會(huì)用上全部維度,可能有些維度提供了絕大部分重要信息,另外一些維度只是陪襯,提供一些無關(guān)痛癢的隨機(jī)擾動(dòng)。然而究竟哪些維度編碼了重要信息,哪些維度僅僅提供隨機(jī)擾動(dòng)?在GAN的架構(gòu)下我們既沒法知道,也沒法控制。
第二個(gè)模型InfoGAN卻可以做到。先來看它的結(jié)構(gòu),相比GAN多了個(gè)重構(gòu)器模塊,用于重構(gòu)生成器輸入的隨機(jī)編碼向量,但是只重構(gòu)由我們指定的一部分維度。
加上重構(gòu)器模塊之后,如果生成器拿這一部分維度當(dāng)成無關(guān)痛癢的隨機(jī)擾動(dòng)來用,那重構(gòu)器的任務(wù)就會(huì)比較艱難;但如果生成器拿這一部分維度當(dāng)成樣本的重要信息(或者套用PCA的術(shù)語,主成分)來用,那么輸出樣本就會(huì)和這部分編碼維度高度相關(guān),此時(shí)重構(gòu)器能夠比較輕松地從樣本重構(gòu)出原來的這部分編碼。兩相對(duì)比,生成器就會(huì)傾向于使用我們指定的這一部分維度來作為樣本的重要信息(主成分)。訓(xùn)練結(jié)束后,甚至有機(jī)會(huì)觀察到有些維度具有非常顯著的語義信息,比如InfoGAN論文在MNIST手寫數(shù)字上訓(xùn)練之后,可以觀察到某個(gè)維度完全控制著0-9的數(shù)字類別,某個(gè)維度完全控制著數(shù)字圖像從左到右的傾斜程度,這些顯然就是MNIST數(shù)據(jù)集的重要信息(主成分):
對(duì)于已經(jīng)讀過InfoGAN論文的人,我需要補(bǔ)充解釋一下,上述講法跟論文的講法不太一樣。論文是從互信息的角度開始推導(dǎo),經(jīng)過一些變分推斷的技巧最終得到模型的loss,但其實(shí)最終得到的loss基本上就是普通的重構(gòu)誤差。對(duì)于離散維度,論文最終推出的loss是log likelihood,一般對(duì)離散維度設(shè)置的重構(gòu)誤差也是如此;對(duì)于連續(xù)維度,論文最終推出的loss是對(duì)多維高斯分布取log,如果簡(jiǎn)化高斯分布中的協(xié)方差矩陣是單位矩陣,該loss就等價(jià)于普通的L2 loss,也是一般對(duì)連續(xù)維度設(shè)置的重構(gòu)誤差形式。
無論是GAN、InfoGAN還是其他GAN變種,基本上都想學(xué)習(xí)從零均值、一方差的標(biāo)準(zhǔn)高斯分布到復(fù)雜樣本分布的映射,而GAN的思路是先固定前者(標(biāo)準(zhǔn)高斯分布)作為網(wǎng)絡(luò)輸入,再慢慢調(diào)整網(wǎng)絡(luò)輸出去匹配后者(復(fù)雜樣本分布)。
第三個(gè)模型Adversarial Autoencoder(對(duì)抗自編碼器)卻采取了相反的思路!它是先固定后者(復(fù)雜樣本分布)作為網(wǎng)絡(luò)輸入,再慢慢調(diào)整網(wǎng)絡(luò)輸出去匹配前者(標(biāo)準(zhǔn)高斯分布)。具體來說,對(duì)抗自編碼器包含三個(gè)模塊——編碼器、解碼器、判別器,前兩者構(gòu)成一個(gè)普通的自編碼器,輸入的復(fù)雜樣本,還是要求在解碼器的輸出端重構(gòu);判別器輸入編碼向量,判定它是來自一個(gè)真實(shí)的標(biāo)準(zhǔn)高斯分布,還是來自編碼器的輸出。判別器試圖區(qū)分編碼向量的真假,編碼器就試圖讓判別器區(qū)分不出真假,如果最終編碼器贏了,就意味著它輸出的編碼很接近標(biāo)準(zhǔn)高斯分布,導(dǎo)致判別器混淆不清,我們的目的也就達(dá)到了。對(duì)抗自編碼器嚴(yán)格來說應(yīng)該不算GAN的變種,因?yàn)樗乃悸贩较蚺cGAN相反。
說到跟GAN方向相反,讀者可能會(huì)記起上文提到Schmidhuber把GAN叫做“inverse PM”。PM跟GAN相反,對(duì)抗自編碼器也和GAN相反,那它們兩個(gè)會(huì)不會(huì)很像呢?答案是確實(shí)很像,如果把PM的架構(gòu)圖參照上面三個(gè)模型重新畫一遍,就可以很清晰地看到PM跟對(duì)抗自編碼器的主體架構(gòu)完全對(duì)的上。
需要注意的是,上圖其實(shí)把N個(gè)預(yù)測(cè)器合并畫成了一個(gè)。
最后,一圖總結(jié)第三部分:
四、縱橫融匯
最后是對(duì)上述四個(gè)模型做綜合比較。首先對(duì)比PM和GAN:
1.映射方向相反
- PM的編碼器把復(fù)雜分布映射為解耦分布
- PM的解碼器把解耦分布映射為復(fù)雜分布
- GAN的生成器把一個(gè)解耦的高斯分布映射為復(fù)雜分布
其中PM的編碼器和GAN的生成器方向相反,所以Schmidhuber把GAN稱為“inverse PM”。
2.都是對(duì)抗優(yōu)化相反的目標(biāo)
- PM的預(yù)測(cè)器要猜準(zhǔn)某一維編碼,編碼器要讓它猜不準(zhǔn)
- GAN的判別器要區(qū)分真假樣本,生成器要讓它區(qū)分不準(zhǔn)
3.預(yù)測(cè)/判別結(jié)構(gòu)相似
如果把真假標(biāo)簽的節(jié)點(diǎn)跟圖片樣本節(jié)點(diǎn)拼接到一起,視為一個(gè)超長(zhǎng)向量的話,GAN的判別器就可以強(qiáng)行視為PM預(yù)測(cè)器的特例:PM對(duì)每一個(gè)維度都要預(yù)測(cè),但是GAN只預(yù)測(cè)真假標(biāo)簽這一特殊維度。
4.模型主體不同(Goodfellow在GAN論文中提出)
- PM的主體是自編碼重構(gòu),對(duì)抗訓(xùn)練僅僅作為一個(gè)正則,起到輔助作用
- GAN的主體就是對(duì)抗訓(xùn)練,沒有其他目標(biāo)
5.可拓展性不同
- PM的思想最多只能做到把編碼建模為解耦分布,沒辦法施加其他要求,施加其他要求那就不是PM的功勞了
- GAN雖然具體把編碼建模為解耦高斯分布,但其實(shí)對(duì)編碼的分布并沒有任何限制,完全可以直接換成其他分布來建模,無論是均勻分布還是別的什么分布都沒問題,甚至可以用另一個(gè)復(fù)雜分布比如圖片來作為編碼,讓生成器輸入一張圖片輸出另一張圖片,可拓展性非常強(qiáng)大。
Goodfellow在GAN論文中還提了其他不同點(diǎn),但是我個(gè)人覺得不合理,就忽略不講了。經(jīng)過上述比較,我們可以看到PM和GAN確實(shí)有非常多的相似之處,但是差異也很大,我個(gè)人覺得并不能把GAN簡(jiǎn)單看作PM的變種。
相比之下,PM和InfoGAN、對(duì)抗自編碼器反倒更像:
1.模型主體
- PM主體是自編碼器,要求重構(gòu)復(fù)雜分布的樣本
- 對(duì)抗自編碼器主體是自編碼器,要求重構(gòu)復(fù)雜分布的樣本
- InfoGAN主體可以視為自編碼器,要求重構(gòu)(部分)編碼向量
2.對(duì)網(wǎng)絡(luò)中間層的要求
- PM要求編碼器和解碼器中間的隱藏層解耦,它是通過可預(yù)測(cè)性最小化的思想來做到的
- 對(duì)抗自編碼器要求編碼器和解碼器中間的隱藏層解耦,且滿足高斯分布,它是通過對(duì)抗訓(xùn)練,拉近隱藏層編碼分布與一個(gè)真正的解耦高斯分布來做到的
- InfoGAN要求生成器和重構(gòu)器中間的隱藏層滿足復(fù)雜樣本分布,它是通過對(duì)抗訓(xùn)練,拉近生成分布與真實(shí)復(fù)雜分布來做到的
3.預(yù)測(cè)/判別結(jié)構(gòu)相似
PM輸入編碼其他維度,預(yù)測(cè)某一維度;對(duì)抗自編碼器,輸入編碼全部維度,預(yù)測(cè)真假標(biāo)簽;InfoGAN和前面GAN的情況相同,輸入圖片,預(yù)測(cè)真假標(biāo)簽。在這個(gè)角度上對(duì)抗自編碼器與PM更相似。
四個(gè)模型對(duì)比完畢,我們能夠獲得什么啟發(fā)嗎?下面試舉一例,來結(jié)束第四部分。
inference.vc是一個(gè)關(guān)于生成模型的著名博客,其中有篇文章認(rèn)為對(duì)抗自編碼器中用GAN來拉近編碼分布和高斯分布,是殺雞用牛刀的做法。
文章認(rèn)為,GAN模型強(qiáng)大的分布拉近能力適用于圖片這樣的復(fù)雜分布,但是對(duì)于像解耦高斯分布如此簡(jiǎn)單的情況,并不需要?jiǎng)佑玫紾AN這種大殺器,其實(shí)完全可以利用解耦高斯分布的特殊形式,采取更加高效的方式(比如文章中提了一個(gè)叫做MMD的方法,此處略過不講)。
看了PM之后就可以想到另一個(gè)思路——分別要求解耦和高斯。先把對(duì)抗自編碼器的判別器換成PM模型的N組預(yù)測(cè)器,用可預(yù)測(cè)性最小化的思想,實(shí)現(xiàn)編碼向量各個(gè)維度之間的解耦;接著對(duì)每個(gè)單獨(dú)的編碼維度,通過GAN使其滿足高斯分布。雖然還是用GAN,但是我們把向量上的對(duì)抗訓(xùn)練轉(zhuǎn)化為標(biāo)量上的對(duì)抗訓(xùn)練,而后者可能比前者要容易和穩(wěn)定得多。
五、總結(jié)
Schmidhuber在92年提出的PM模型通過可預(yù)測(cè)性最小化來學(xué)習(xí)一個(gè)解耦的編碼表示,編碼器和預(yù)測(cè)器優(yōu)化相反的目標(biāo),確實(shí)是比GAN更早地使用了對(duì)抗訓(xùn)練的思想。
PM不僅跟GAN,還跟InfoGAN、對(duì)抗自編碼器存在很多相似之處,但還是有很明顯的差異。其中PM和對(duì)抗自編碼器最像,主體都是自編碼器,但它們并不能簡(jiǎn)單地視為GAN的變種。
我們現(xiàn)在都是盯著最新最前沿的研究工作,其實(shí)也許有很多像PM這樣“古老”但有趣的想法被我們忽視了,有的是因?yàn)楫?dāng)年提出的時(shí)候思想太過超前,或者硬件計(jì)算能力撐不起來,導(dǎo)致無人問津,最典型的例子就是LSTM。這些工作不應(yīng)該被埋沒,如果能夠重新挖掘出來的話,就可能給今天的研究帶來很多新的啟發(fā)。
原文地址:https://zhuanlan.zhihu.com/p/27159510
總結(jié)
以上是生活随笔為你收集整理的从PM到GAN——LSTM之父Schmidhuber横跨22年的怨念(文字版)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从传统GAN到improved WGAN
- 下一篇: 生成对抗网络(GAN)相比传统训练方法有