強化學習(RL)在NLP的應用前景如何?

都有哪些具體的應用?


RL在NLP中的應用目前主要的動機就是離散採樣的問題。大家都知道seq2seq模型一開始是用MLE作為loss的,但是MLE有些原理上的缺陷,使得最後test階段生成的句子有各種各樣的質量問題,比如機器翻譯的時候沒對齊什麼的。有人就說能不能把BLEU這種句子級別的打分(雖然說有點作弊的感覺)也作為優化目標考慮,或者乾脆直接搞個文本GAN。

問題是生成句子基本上沒法搞可微的採樣,這樣標準GAN就沒戲了,更別說BLEU這種reward都不可微的情況。有人說可以給softmax加個溫度參數之類的逼近one-hot,但是事實上這個trick並不怎麼好用,所以一般來說我們不得不用policy gradient之類的演算法來優化。這麼一搞當然模型跑分提升不小,所以不失為一種可選方案。

總之RL在文本生成這塊前景不錯,我覺得也不會有人搞出個靠譜的文本連續採樣出來,自然語言怎麼會是連續的呢?


最近也在想這個問題,個人high-level的猜想是能更準確的捕捉詞/句的意思,從而優化downstream task的performance。

很顯然的一個例子是compositional semantic。這一直是nlp的難點。現在的方法比如w2v,wtmf,大部分都只能告訴你某個詞的大概位置,某些詞放在一起的向量表示跟分開放的向量表示區別在哪裡,怎麼interpretate,你只能把他們當作黑盒子。

個人感覺人類閱讀,很多時候都有個決策的過程。哪些句子能在大腦內與之前讀到的句子聯繫起來,通過相似性也好,通過文本coherency也好,人在閱讀過程中在不停的做決定,從而理解內容。某些相同的詞放在一起,會由於出現的上下文不同而有不同的解讀,又或者,不同的詞放在一起能使文本有較高的coherency。

對話也是如此。很多dialogue generation的問題都在於怎麼更準確的捕捉這其中對話參與者之間的alignment和coherency,而不是光靠統計學建語言模型。

如果可以用reinforcement learning學到類似的過程,我覺得對以上這些task都會很有用。

貼兩篇跟這個想法很接近的文章, 應該有不少人看過了(我超喜歡的兩篇paper哈哈..):

Li, Jiwei, et al. "Deep reinforcement learning for dialogue generation." arXiv preprint arXiv:1606.01541 (2016).

Yogatama, Dani, et al. "Learning to compose words into sentences with reinforcement learning." arXiv preprint arXiv:1611.09100 (2016).

先答這麼多回頭再補充....


先說結論:Reinforcement Learning在NLP上有極大應用前景,值得All in。

然後我們來從宏觀和微觀,現在和未來多個角度分析一下為什麼。

宏觀:

NLP 的終極目標就是通過基本的圖靈測試,或者說通用人工智慧除了在robot 運動控制層面表現之外,其他的就要看NLP了。而事實上目前的NLP是非常low的,本質上無法理解人類複雜的對話。這很正常,人類的對話中包含了太多的知識。一個人工智慧要會思考,會記憶,能推理,能想像,才有可能給出人類級別的回復吧,而這些能力正是通用人工智慧需要解決的問題。而Reinforcement Learning可以說是面向通用人工智慧的一個基本的框架。整個宇宙的運轉其實也在Reinforcement Learning的框架下。因此,從宏觀上講,NLP要牛逼,必須加RL。要讓神經網路自己去學習怎麼理解人類的對話並做出回復。

微觀層面:

就目前的NLP,其實和Reinforcement Learning直接相關,都可以看成是一個MDP過程,只不過動作空間比較大,也就是vocabulary的大小。然後這個空間還是離散的,因此顯而易見,可以直接套用當前RL的方法論。事實上,目前像image captioning的問題前幾名都是使用RL進一步提升成績的。反過來看,簡單的Seq2Seq這種直接擬合的方式可以說是學標不學本,就是模仿個樣子,實際上沒有任何理解。而RL則有希望讓其理解。AlphaGo就是個例子。 因此,在微觀層面,NLP的問題特別適合RL. 或者說NLP本質就是個RL問題。

現在:

從前面的回答大家可以看到RL已經得到了一定的應用。但顯然才只是剛剛開始,有很大的提升空間。畢竟RL也沒發展幾年,真正火起來是15年DeepMind的那篇Nature。關於當前的進展這裡就不細說了。

未來:

我們可以真正進一步了,讓NLP到理解層面,而不是鸚鵡學舌。 舉個idea (本人不專門研究NLP,歡迎討論): RL裡面有一塊是Hierarchical Reinforcement Learning,本來的方向是面向機器人的運動控制,比如開個門,其實有多個子任務。讓神經網路通過完成子任務來完成整個複雜任務。那麼,對於NLP同樣的道理。理解一句話,或者多句話,其實是需要完成不同子任務的。比如說:「強化學習(RL)在NLP的應用前景如何?」 要理解這句話的意思得分別知道RL,NLP還有應用前景的意思,然後還要知道如何的意思,才有可能回答。因此,或許可以將HRL應用到NLP中,讓神經網路自動分解對話內容。

還有一個就是Meta Learning了。從上面的例子大家也都明白,沒有知識儲備也是回答不了這個問題的。那麼知識儲備一種就是Memory Network,還有就是直接存在神經網路里。Meta Learning用在NLP那麼就是讓神經網路去學習巨量的對話,並理解對話實質,從而面對新的對話也能對答如流。也就是說,meta learning的目的是就是要讓神經網路理解如何對話。所以,各位研究NLP的童鞋,是不是可以考慮一下呢?

NLP某種程度上確實和Robot Learning非常接近,兩者的結合也是一個重要方向。也就是通過語音對話的方式來教機器人學習 (會不會太酷?)

小結:

目前的NLP水平還太low,急需變革。那麼RL,Memory,Meta 在我看來都是改變的重要因素。說到這裡,我特別看好未來NLP和Meta RL with Memory的結合(也就是三者全部上啦),或許可以讓計算機給出的對話讓我們感覺似乎理解了點東西。

理解可能有誤,歡迎討論!


之前幾位知友總結的挺好的,一句話,我也認為,RL在NLP是有很大的應用前景的,值得去探究!

本質上,我認為有幾個方面是RL天然可以在NLP上應用的:

  1. 在離散空間的文本生成和序列決策,RL有先天的對應,也就是說,通過agent在離散策略空間的搜索生成下一個詞或者序列,結合reward的反饋,是可以很好的work的。
  2. 先舉個例子,在goal oriented的對話系統的,關鍵步驟就是決策下一輪對話agent該幹什麼(提問?確認?結束?),那就可以利用RL的方法來決策。而RL的本質無非就是結合環境的觀測加上reward的引導做出下一步的決策,其他領域我不太了解,但我覺得只要在NLP中有需要結合觀測做出決策的問題,應該都可以用RL的去做。
  3. 最後是RL的優勢,比如之前有知友說的可以克服其他目標函數如MLE的缺陷,可以模擬大量樣本,或者藉助先前經驗進行學習(如DQN)等等,都是RL的優勢所在。

但,有好處就有弊端,強化學習很多時候訓練是很不穩定的,本身演算法像高方差,難優化等問題,還有強化學習的reward設計,環境建模,也是比較大的問題,這裡先一筆帶過,總之應用前景很廣,我很看好!

關於論文,下面介紹一些關於RL在NLP的應用,都很有啟發性,值得思考,值得借鑒:

首先,在自然語言生成方面,NLP中序列的決策生成問題都可以用強化學習。

https://arxiv.org/pdf/1511.06732.pdf ,這篇用REINFORCE algorithm做語言模型,應該是比較早嘗試用RL在本文生成上的應用,有其有缺點,一定程度解決bais exposure。但高variance加上不能很好挖掘出 ground-truth

[1607.07086] An Actor-Critic Algorithm for Sequence Prediction,這篇應用Actor-Critic的方法做文本的生成,也能解決bais exposure,效果好像挺不錯。

還有像[1506.08941] Language Understanding for Text-based Games Using Deep Reinforcement Learning

[1511.04636] Deep Reinforcement Learning with a Natural Language Action Space

都是RL在NLP上的應用

GAN結合強化學習在NLP的應用,

SeqGAN:Sequence Generative Adversarial Nets with Policy Gradient,應該是最早的應用GAN做NLP的,之前在reddit上Goodfellow等大牛們有討論過天然的GAN是不能做NLP文本生成的,原因也很明顯,就是會導致目標函數不可微發生。在這篇是結合policy gradient和蒙特卡洛樹sample方式,從另一個方式來解決這個問題,值得一看。

其他的如

[1705.11001] Adversarial Ranking for Language Generation

[1709.08624] Long Text Generation via Adversarial Training with Leaked Information

對了,還有GAN和Actor-Critic的「千絲萬縷」:https://arxiv.org/pdf/1610.01945.pdf,這篇挺好玩的。

我所在的坑:對話系統,其實在對話有很多這樣應用RL做的論文啦:

[1606.01541] Deep Reinforcement Learning for Dialogue Generation

[1701.06547] Adversarial Learning for Neural Dialogue Generation

practical and efficient end-to-end dialog control with supervised and reinforcement learning

[1703.01008] End-to-End Task-Completion Neural Dialogue Systems

等等等等.....這這能列出一籮筐,但本質上,都是上面的原因,離散生成,策略決策,改變目標函數,模擬生成,總之應用很多,效果還看的過去,有提升空間!

最後,最近我也在用RL在對話系統上搞事情,同時準備在記學習--機器學習這個專欄寫下強化學習的一些筆記和想法,歡迎關注!


強化學習做文本生成:

SeqGAN:Sequence Generative Adversarial Nets with Policy Gradient

LantaoYu/SeqGAN

RankGAN:[1705.11001] Adversarial Ranking for Language Generation

desire2020/RankGAN

LeakGAN:[1709.08624] Long Text Generation via Adversarial Training with Leaked Information

CR-Gjx/LeakGAN


rl有兩個關鍵問題,長短期收益,和大量樣本。

nlp涉及「生成」的領域,滿足這兩個條件。

一切最終要一個決策序列的問題都可以用rl做。

一切可以通過計算機模擬產生大量樣本的問題,都有可見的前景。

NLP領域涉及「生成」的方向,滿足這兩條:決策序列,大量模擬樣本(雖然只是負例)。


Jordan Boyd-Graber: Home has lots of work on this


Google的NMT有用RL來做微調。用的是policy gradient


強化學習的核心問題在於通過研究各種不同策略的價值並給予評價,來自主選擇最優策略。策略,即是決策層對於不同的狀態所作出的不同反應。以種花而言,看到花處於枯萎的狀態,就要施加澆水的動作,看到花葉子變黃的狀態,就應當加以施肥的動作。狀態在施加不同動作之後,就可能向各個其他狀態轉移,所以強化學習是在一個高動態的,高複雜性的環境中尋找最佳選擇的一種演算法。


NLP自然語言程序?

是指 人工智慧 和人進行 自然語言溝通?

還是用自然語言編程?

假如是自然語言溝通,

根據我的個人 實際 工作 經驗。

其實要有 幾個指標 才能讓 人工智慧 的 N自然 L語言 P程序 行為和行動趨向和人一樣。

為什麼要和人一樣?

人各有不同,有的人就喜歡廢話,例如我剛才說的其實在某些意義上全是廢話。

AI和你不同,你對著腦子有毛病的自己說起話來就嘿嘿嘿嘿的人你可以離開,但是AI不行。

甚至AI很多時候就是為了應付這種情況而存在的,例如精神病,例如孤獨。

所以你也許會認為,採取評分制來推動人工智慧的行為是 快速 演化 ,但是我不這麼認為,有時候有的事情正是 權重 評分 機制 帶來的偏差。

我有個想法,那就是讓 人工智慧 使用 類似 德文 的 語法 來匹配其他文字的 「非正常」 使用者。

德文有著非常奇怪的語法,它通常需要聽完一段話,並徹底記憶整段話,再和後面的特定辭彙聯合,才能明白對方在說什麼。

而根據我的觀察,

有的人廢話特別多,

有的人思維跳躍(不包括因認為對方已經知道某些知識而略過的人,例如我已經認為你具備1+1=2的知識我就不可能重複)

不過兩者兼具的人我還沒有想到怎麼對付,要麼就採用打斷對方說話並反饋的方法。

這裡有著很龐大的 對應路線,不想寫。


推薦閱讀:

有哪些傳統自動控制、機器人等與人工智慧、機器學習結合的相關資料(包括書、課程、Notes、論文等)?

TAG:自然語言處理 | 強化學習ReinforcementLearning |