摘要:直接把應(yīng)用到領(lǐng)域主要是生成序列,有兩方面的問題最開始是設(shè)計(jì)用于生成連續(xù)數(shù)據(jù),但是自然語言處理中我們要用來生成離散的序列。如圖,針對第一個問題,首先是將的輸出作為,然后用來訓(xùn)練。
我來答一答自然語言處理方面GAN的應(yīng)用。
直接把GAN應(yīng)用到NLP領(lǐng)域(主要是生成序列),有兩方面的問題:
1. GAN最開始是設(shè)計(jì)用于生成連續(xù)數(shù)據(jù),但是自然語言處理中我們要用來生成離散tokens的序列。因?yàn)樯善?Generator,簡稱G)需要利用從判別器(Discriminator,簡稱D)得到的梯度進(jìn)行訓(xùn)練,而G和D都需要完全可微,碰到有離散變量的時候就會有問題,只用BP不能為G提供訓(xùn)練的梯度。在GAN中我們通過對G的參數(shù)進(jìn)行微小的改變,令其生成的數(shù)據(jù)更加“逼真”。若生成的數(shù)據(jù)是基于離散的tokens,D給出的信息很多時候都沒有意義,因?yàn)楹蛨D像不同。圖像是連續(xù)的,微小的改變可以在像素點(diǎn)上面反應(yīng)出來,但是你對tokens做微小的改變,在對應(yīng)的dictionary space里面可能根本就沒有相應(yīng)的tokens.
2.GAN只可以對已經(jīng)生成的完整序列進(jìn)行打分,而對一部分生成的序列,如何判斷它現(xiàn)在生成的一部分的質(zhì)量和之后生成整個序列的質(zhì)量也是一個問題。
近幾篇重要的工作:
1. 為了解決這兩個問題,比較早的工作是上交的這篇發(fā)表在AAAI 2017的文章:SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient, 16年9月就放上了Arxiv上面了,而且也公布了源代碼。
利用了強(qiáng)化學(xué)習(xí)的東西來解決以上問題。如圖,針對第一個問題,首先是將D的輸出作為Reward,然后用Policy Gradient Method來訓(xùn)練G。針對第二個問題,通過蒙特卡羅搜索,針對部分生成的序列,用一個Roll-Out Policy(也是一個LSTM)來Sampling完整的序列,再交給D打分,最后對得到的Reward求平均值。
完整算法如圖:
原文鏈接:https://arxiv.org/pdf/1609.05473v5.pdf
Github鏈接:LantaoYu/SeqGAN
2. 第二篇是C.Manning組大神Li Jiwei的文章:Adversarial Learning for Neural Dialogue Generation,用GAN和強(qiáng)化學(xué)習(xí)來做對話系統(tǒng),如果我沒有記錯,這篇paper是最早引用SeqGAN的,有同學(xué)還說這篇是最早將RL用到GAN上的,主要是Jiwei大神名氣太大,一放上Arxiv就引起無數(shù)關(guān)注。
如圖,文章也是用了Policy Gradient Method來對GAN進(jìn)行訓(xùn)練,和SeqGAN的方法并沒有很大的區(qū)別,主要是用在了Dialogue Generation這樣困難的任務(wù)上面。還有兩點(diǎn)就是:第一點(diǎn)是除了用蒙特卡羅搜索來解決部分生成序列的問題之外,因?yàn)镸C Search比較耗費(fèi)時間,還可以訓(xùn)練一個特殊的D去給部分生成的序列進(jìn)行打分。但是從實(shí)驗(yàn)效果來看,MC Search的表現(xiàn)要更好一點(diǎn)。
第二點(diǎn)是在訓(xùn)練G的時候同時還用了Teacher-Forcing(MLE)的方法,這點(diǎn)和后面的MaliGAN有異曲同工之處。
為什么要這樣做的原因是在對抗性訓(xùn)練的時候,G不會直接接觸到真實(shí)的目標(biāo)序列(gold-standard target sequence),當(dāng)G生成了質(zhì)量很差的序列的時候(生成質(zhì)量很好的序列其實(shí)相當(dāng)困難),而D又訓(xùn)練得很好,G就會通過得到的Reward知道自己生成的序列很糟糕,但卻又不知道怎么令自己生成更好的序列, 這樣就會導(dǎo)致訓(xùn)練崩潰。所以通過對抗性訓(xùn)練更新G的參數(shù)之后,還通過傳統(tǒng)的MLE就是用真實(shí)的序列來更新G的參數(shù)。類似于有一個“老師”來糾正G訓(xùn)練過程中出現(xiàn)的偏差,類似于一個regularizer。
原文鏈接:https://arxiv.org/pdf/1701.06547.pdf
Github鏈接:jiweil/Neural-Dialogue-Generation
3. Yoshua Bengio組在二月底連續(xù)放了三篇和GAN有關(guān)的paper,其中我們最關(guān)心的是大神Tong Che和Li yanran的這篇:Maximum-Likelihood Augmented Discrete Generative Adversarial Networks(MaliGAN),簡稱讀起來怪怪的。。。
這篇文章的工作主要是兩個方面:
1.為G構(gòu)造一個全新的目標(biāo)函數(shù),用到了Importance Sampling,將其與D的output結(jié)合起來,令訓(xùn)練過程更加穩(wěn)定同時梯度的方差更低。盡管這個目標(biāo)函數(shù)和RL的方法類似,但是相比之下更能狗降低estimator的方差(強(qiáng)烈建議看原文的3.2 Analysis,分析了當(dāng)D最優(yōu)以及D經(jīng)過訓(xùn)練但并沒有到最優(yōu)兩種情況下,這個新的目標(biāo)函數(shù)仍然能發(fā)揮作用)
2.生成較長序列的時候需要用到多次random sampling,所以文章還提出了兩個降低方差的技巧:第一個是蒙特卡羅樹搜索,這個大家都比較熟悉; 第二個文章稱之為Mixed MLE-Mali Training,就是從真實(shí)數(shù)據(jù)中進(jìn)行抽樣,若序列長度大于N,則固定住前N個詞,然后基于前N個詞去freely run G產(chǎn)生M個樣本,一直run到序列結(jié)束。
基于前N個詞生成后面的詞的原因在于條件分布Pd比完整分布要簡單,同時能夠從真實(shí)的樣本中得到較強(qiáng)的訓(xùn)練信號。然后逐漸減少N(在實(shí)驗(yàn)三中N=30, K=5, K為步長值,訓(xùn)練的時候每次迭代N-K)
Mixed MLE訓(xùn)練的MaliGAN完整算法如下:
在12,梯度更新的時候,第二項(xiàng)(highlight的部分)貌似應(yīng)該是logP(我最崇拜的學(xué)長發(fā)郵件去問過一作) 。至于第一部分為什么梯度是近似于這種形式,可以參考Bengio組的另一篇文章:Boundary-Seeking Generative Adversarial Networks
這個BGAN的Intuition就是:令G去學(xué)習(xí)如何生成在D決策邊界的樣本,所以才叫做boundary-seeking。作者有一個特別的技巧:如圖,當(dāng)D達(dá)到最優(yōu)的時候,滿足如下條件,Pdata是真實(shí)的分布,Pg是G生成的分布。
我們對它進(jìn)行一點(diǎn)微小的變換:這個形式厲害之處在于,盡管我們沒有完美的G,但是仍然可以通過對Pg賦予權(quán)重來得到真實(shí)的分布,這個比例就是如圖所示,基于該G的最優(yōu)D和(1-D)之比。當(dāng)然我們很難得到最優(yōu)的D,但我們訓(xùn)練的D越接近最優(yōu)D,bias越低。而訓(xùn)練D(標(biāo)準(zhǔn)二分類器)要比G簡單得多,因?yàn)镚的目標(biāo)函數(shù)是一個會隨著D變動而變動的目標(biāo)。
文章后面給出了如何求梯度的數(shù)學(xué)公式,這里就不貼了。
回到MaliGAN,作者給出了實(shí)驗(yàn)數(shù)據(jù),比SeqGAN的效果要更好,看BLEU score.
原文鏈接:https://arxiv.org/pdf/1702.07983v1.pdf
4. 用SeqGAN做機(jī)器翻譯,中科院自動化所在三月中旬放出了這篇文章:Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets,這篇文章主要的貢獻(xiàn)就是第一次將GAN應(yīng)用到了NLP的傳統(tǒng)任務(wù)上面,而且BLEU有2的提升。
這個模型他們稱之為CSGAN-NMT,G用的是傳統(tǒng)的attention-based NMT模型,而D有兩種方案,一種是CNN based,另一種是RNN based,通過實(shí)驗(yàn)比較發(fā)現(xiàn)CNN的效果更好。推測的原因是RNN的分類模型在訓(xùn)練早期能夠有極高的分類準(zhǔn)確率,導(dǎo)致總能識別出G生成的數(shù)據(jù)和真實(shí)的數(shù)據(jù),G難以訓(xùn)練(因?yàn)榭偸莕egative signal),
這篇文章的重點(diǎn)我想是4.訓(xùn)練策略,GAN極難訓(xùn)練,他們首先是用MLE來pretrain G,然后再用G生成的樣本和真實(shí)樣本來pretrain D,當(dāng)D達(dá)到某一個準(zhǔn)確率的時候,進(jìn)入對抗性訓(xùn)練的環(huán)節(jié),GAN的部分基本和SeqGAN一樣,用policy gradient method+MC search,上面已經(jīng)講過了不再重復(fù)。但是由于在對抗性訓(xùn)練的時候,G沒有直接接觸到golden target sentence,所以每用policy gradient更新一次G都跑一次professor forcing。這里我比較困惑,我覺得是不是像Jiwei那篇文章,是用D給出的Reward來更新G參數(shù)之后,又用MLE來更新一次G的參數(shù)(保證G能接觸到真實(shí)的樣本,這里就是目標(biāo)語言的序列),但這個方法是teacher-forcing不是professor forcing。
最后就是訓(xùn)練Trick茫茫,這篇文章試了很多超參數(shù),比如D要pretrain到f=0.82的時候效果較好,還有pretrain要用Adam,而對抗性訓(xùn)練要用RMSProp,同時還要和WGAN一樣將每次更新D的權(quán)重固定在一個范圍之內(nèi)。
原文鏈接:https://arxiv.org/pdf/1703.04887.pdf
5.最后3月31號放到Arxiv上的文章:Improved Training of Wasserstein GANs, WGAN發(fā)布之后就引起轟動,比如Ian在Reddit上就點(diǎn)評了這篇文章,NYU的又祭出了這篇,令WGAN在NLP上也能發(fā)揮威力。
在WGAN中,他們給出的改進(jìn)方案是:
判別器最后一層去掉sigmoid
生成器和判別器的loss不取log
每次更新判別器的參數(shù)之后把它們的值截?cái)嗟讲怀^一個固定常數(shù)c
不要用基于動量的優(yōu)化算法(包括momentum和Adam),推薦RMSProp,SGD也行
這里引用自知乎專欄:令人拍案叫絕的Wasserstein GAN - 知乎專欄
文章寫得深入淺出,強(qiáng)烈推薦。
其中第三項(xiàng)就是機(jī)器翻譯文章中也用到的weight clipping,在本文中,他們發(fā)現(xiàn)通過weight clipping來對D實(shí)施Lipschitz限制(為了逼近難以直接計(jì)算的Wasserstein距離),是導(dǎo)致訓(xùn)練不穩(wěn)定,以及難以捕捉復(fù)雜概率分布的元兇。所以文章提出通過梯度懲罰來對Critic(也就是D,WGAN系列都將D稱之為Critic)試試Lipschitz限制。
如圖:損失函數(shù)有原來的部分+梯度懲罰,現(xiàn)在不需要weight clipping以及基于動量的優(yōu)化算法都可以使用了,他們在這里就用了Adam。同時可以拿掉Batch Normalization。
如圖所示,實(shí)驗(yàn)結(jié)果很驚人,這種WGAN—GP的結(jié)構(gòu),訓(xùn)練更加穩(wěn)定,收斂更快,同時能夠生成更高質(zhì)量的樣本,而且可以用于訓(xùn)練不同的GAN架構(gòu),甚至是101層的深度殘差網(wǎng)絡(luò)。
同時也能用于NLP中的生成任務(wù),而且是character-level 的language model,而MaliGAN的實(shí)驗(yàn)是在Sentence-Level上面的。而且前面幾篇提到的文章2,3,4在對抗性訓(xùn)練的時候或多或少都用到了MLE,令G更夠接觸到Ground Truth,但是WGAN-GP是完全不需要MLE的部分。
原文鏈接:https://arxiv.org/pdf/1704.00028.pdf
github地址:https://github.com/igul222/improved_wgan_training
代碼一起放出簡直業(yè)界良心。
歡迎加入本站公開興趣群商業(yè)智能與數(shù)據(jù)分析群
興趣范圍包括各種讓數(shù)據(jù)產(chǎn)生價值的辦法,實(shí)際應(yīng)用案例分享與討論,分析工具,ETL工具,數(shù)據(jù)倉庫,數(shù)據(jù)挖掘工具,報表系統(tǒng)等全方位知識
QQ群:81035754
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/4523.html
摘要:但年在機(jī)器學(xué)習(xí)的較高級大會上,蘋果團(tuán)隊(duì)的負(fù)責(zé)人宣布,公司已經(jīng)允許自己的研發(fā)人員對外公布論文成果。蘋果第一篇論文一經(jīng)投放,便在年月日,斬獲較佳論文。這項(xiàng)技術(shù)由的和開發(fā),使用了生成對抗網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)方法。 GANs「對抗生成網(wǎng)絡(luò)之父」Ian Goodfellow 在 ICCV 2017 上的 tutorial 演講是聊他的代表作生成對抗網(wǎng)絡(luò)(GAN/Generative Adversarial ...
摘要:據(jù)報道,生成對抗網(wǎng)絡(luò)的創(chuàng)造者,前谷歌大腦著名科學(xué)家剛剛正式宣布加盟蘋果。他將在蘋果公司領(lǐng)導(dǎo)一個機(jī)器學(xué)習(xí)特殊項(xiàng)目組。在加盟蘋果后會帶來哪些新的技術(shù)突破或許我們很快就會看到了。 據(jù) CNBC 報道,生成對抗網(wǎng)絡(luò)(GAN)的創(chuàng)造者,前谷歌大腦著名科學(xué)家 Ian Goodfellow 剛剛正式宣布加盟蘋果。他將在蘋果公司領(lǐng)導(dǎo)一個「機(jī)器學(xué)習(xí)特殊項(xiàng)目組」。雖然蘋果此前已經(jīng)縮小了自動駕駛汽車研究的規(guī)模,但...
摘要:但是在傳統(tǒng)的機(jī)器學(xué)習(xí)中,特征和算法都是人工定義的。傳統(tǒng)的深度學(xué)習(xí)中,是由人來決定要解決什么問題,人來決定用什么目標(biāo)函數(shù)做評估。 隨著柯潔與AlphaGo結(jié)束以后,大家是不是對人工智能的底層奧秘越來越有興趣?深度學(xué)習(xí)已經(jīng)在圖像分類、檢測等諸多領(lǐng)域取得了突破性的成績。但是它也存在一些問題。首先,它與傳統(tǒng)的機(jī)器學(xué)習(xí)方法一樣,通常假設(shè)訓(xùn)練數(shù)據(jù)與測試數(shù)據(jù)服從同樣的分布,或者是在訓(xùn)練數(shù)據(jù)上的預(yù)測結(jié)果與在...
摘要:文本谷歌神經(jīng)機(jī)器翻譯去年,谷歌宣布上線的新模型,并詳細(xì)介紹了所使用的網(wǎng)絡(luò)架構(gòu)循環(huán)神經(jīng)網(wǎng)絡(luò)。目前唇讀的準(zhǔn)確度已經(jīng)超過了人類。在該技術(shù)的發(fā)展過程中,谷歌還給出了新的,它包含了大量的復(fù)雜案例。谷歌收集該數(shù)據(jù)集的目的是教神經(jīng)網(wǎng)絡(luò)畫畫。 1. 文本1.1 谷歌神經(jīng)機(jī)器翻譯去年,谷歌宣布上線 Google Translate 的新模型,并詳細(xì)介紹了所使用的網(wǎng)絡(luò)架構(gòu)——循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)。關(guān)鍵結(jié)果:與...
閱讀 3170·2021-11-15 18:14
閱讀 1833·2021-09-22 10:51
閱讀 3346·2021-09-09 09:34
閱讀 3564·2021-09-06 15:02
閱讀 1105·2021-09-01 11:40
閱讀 3232·2019-08-30 13:58
閱讀 2565·2019-08-30 11:04
閱讀 1134·2019-08-28 18:31