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