GAN在自然語言處理方面有哪些有趣的文章和應用?
生成對抗網路在NLP上的應用
本題已收錄至知乎圓桌:人工智慧 · 語言智能,更多「人工智慧」相關話題歡迎關注討論
其實本來寫了一大段後來還是刪了.... 還是就列一些paper吧:
SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient GANS for Sequences of Discrete Elements with the Gumbel-softmax Distribution Generating Text via Adversarial Training
以上paper是直接用GAN做text generation的,但是其實都暫時沒有啥正經的實驗結果。
Modeling documents with Generative Adversarial Networks
這個是用GAN生成一個document中詞的分布(不是真正generate document),然後希望discriminator能學到好的feature without supervision
Professor Forcing: A New Algorithm for Training Recurrent Networks
這個是用discriminator來encourage一個RNN在training和testing的時候hidden state的分布一致,藉此解決exposure bias的問題(即RNN在training時接受ground truth input,但testing時卻接受自己之前的output,這兩個setting不一致會導致error accumulate)。
同時還有一系列paper用reinforcement learning來直接optimize evaluation metric(例如BLEU),同時解決exposure bias,這些paper其實和GAN有內在的聯繫(參考Connecting Generative Adversarial Networks and Actor-Critic Methods):
Sequence Level Training with Recurrent Neural Networks An Actor-Critic Algorithm for Sequence Prediction Optimization of image description metrics using policy gradient methods
最後個人不認為discrete data space是GAN在NLP上難work的本質原因...這裡不展開了
補充幾點,題主也許會好奇:為什麼Ian在reddit上說GAN做不了是因為word embedding加減無意義就做不了呢?既然這樣,我在latent vector上做加減不就行了嗎?這個方法看上去可以,實際上很難work。
使用generative model解決language generation最大的問題在於latent space存在非常多的desert hole。在training的時候,text的latent vector有聚攏的傾向(citation needed,感謝評論。評論裡面也提到了desert hole這個詞並不是一個學術上的辭彙。David Duvenaud和我們聊這個問題的時候,用了這個說法,這裡沿用,感覺還是滿形象的哈哈)。
因此直接上GAN model存在一些問題。圖中是[1] 裡面的一個例子。在latent space遨遊的時候,中間的句子不make sense。
不過解決的方法也是有很多的。最簡單的方法是用VAE而不是用GAN。GAN本身的訓練方式是非常依賴連續空間的。在訓練的時候,我們的目標就是連續空間上的pixel值。在這一點上,VAE就沒有這個假設。因此VAE是自然的選擇。
實際上用的時候有很多tricks,[1] 裡面感覺就有很多工程上的東西來減少desert hole的問題。另外一個方法是結合policy gradient,把它做成一個RL的問題。[2] 是一篇非常有意思的文章。通過把word選擇由softmax output選擇變成policy選擇,作者巧妙的避開了GAN和word embedding不兼容的問題。當然實際上,結合GAN和RL需要更加多的思考和技巧。[2] 不一定是最好的方法,但是無疑證明了GAN是可以用在sentence generation這個問題上的。
我之前也很關注GAN和text的結合,也可以算是利益相關吧。此外有另外一個工作[3] (出自我們組去年剛剛招來的青年才俊Prof. David Duvenaud),可能可以帶來更加多的啟示。
如果我們考慮化學物質的預測呢?假設我們知道化學式A,B,C並且知道他們的性質,我們能不能預測A-B+C的化學性質呢?我們能不能得到類似queen-woman+man=king的結果呢?這個時候,使用generative model解決化學分子生成會遇見和sentence generation一樣的問題。我們會發現,化學分子的latent space,一樣存在desert holes。推薦你看一下[3] ,我覺得它很有意思,能給我們考慮的問題帶來許多思考 。[1] Generating Sentences from a Continuous Space.
Samuel R. Bowman, Luke Vilnis, Oriol Vinyals, Andrew M. Dai, Rafal Jozefowicz, Samy Bengio
https://arxiv.org/abs/1511.06349v4[2] SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient.
Lantao Yu, Weinan Zhang, Jun Wang, Yong Yuhttps://arxiv.org/abs/1609.05473v5[3] Automatic chemical design using a data-driven continuous representation of molecules.Rafael Gómez-Bombarelli, David Duvenaud, José Miguel Hernández-Lobato, Jorge Aguilera-Iparraguirre, Timothy D. Hirzel, Ryan P. Adams, Alán Aspuru-Guzikhttps://arxiv.org/abs/1610.02415v1我談下自己的看法。個人認為GAN不適合NLP還是由於discrete output space的緣故。首先考慮continuous output space (e.g image), 我們可以直接把generator的output當做input送到discriminator里,從而產生smooth的gradient。對於文本,尤其是當generator的output是句子,需要重新encode這個output,然後送到discriminator,這個結構不是differentiable,只能用REINFORCE(high variance)來train。
此外,如果把generator的output distribution按timestep 去decompose;然後在每個time step放一個discriminator,即這個min-max game簡化到詞的層面時,問題已經和NCE區別不大(當然還是有些細節不同的)。
所以,大多GAN在NLP的應用,例如Sam Bowman的文章,都是把discriminator用到latent space(which is continuous)。用到output時需要REINFORCE,個人認為不是個好方向。
GAN在NLP中的應用這篇[1]比較典型。GAN這樣用一個反饋信號來修正生成模型最大的問題在於:序列生成模型本身是離散的,而不是圖像數據這樣連續的。所以我們需要藉助離散變數優化的辦法,比如REINFORCE(likelihood-ratio estimation),gumbel softmax這些優化方法。[1]中就使用了REINFORCE來解決這個問題。
其實RL做序列生成已經有一部分工作了。比如[2,3,4]
[1] SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient[2] An Actor-Critic Algorithm for Sequence Prediction[3] Generating Text with Deep Reinforcement Learning[4] Deep Reinforcement Learning for Dialogue Generation最近寫了一個小總結,看看能不能回答你的問題
Role of RL in Text Generation by GAN(強化學習在生成對抗網路文本生成中扮演的角色)
這裡是幾篇相關的論文
1. Generating Text via Adversarial Training
2. Adversarial Learning for Neural Dialogue Generation
3. SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient
4. GANs for sequence of discrete elements with the Gumbel-softmax distributionSeqGAN: Sequence Generative Adversarial Nets with Policy Gradient 這篇paper感覺跟alphago的實現大思路居然有些神似。每填寫一個字,就類似每下了一步棋。 區別在於下棋有絕對的對錯,但是寫作沒有絕對評判,所以需要訓練D來給reward。不過增強學習和蒙特卡洛樹用的思路都是和狗狗是一樣的。
推薦閱讀:
※漢語中「著」「了」「過」等,處理成詞尾還是處理成助詞對漢語的詞法分析有什麼影響?
※谷歌翻譯原理是什麼,從語言A到B,中間是否要翻譯成中介語言C(如英語)?
※如何使用「爬蟲/數據挖掘」自動尋找某「話題」的「父話題」?
※推薦系統中的推薦理由實現,有什麼好的思路嗎?
※自然語言處理的master和PhD比較是完全沒有優勢嗎?
TAG:人工智慧 | 自然語言處理 | 深度學習DeepLearning | 生成對抗網路GAN |