###好好好####RL-GAN For NLP: 強化學習在生成對抗網絡文本生成中扮演的角色

目錄

【導讀】本文全面系統性梳理介紹了強化學習用於發掘GAN在NLP領域的潛力,請大家閱讀。

1. 基礎:文本生成模型的標準框架

2. 問題:GAN爲何不能直接用於文本生成

2.1. GAN基礎知識

2.2. GAN面對離散型數據時的困境(啥是離散型數據?)

3. 過渡方案:對於GAN的直接改進用於文本生成

3.1. Wasserstein-divergence,額外的禮物

3.2. Gumbel-softmax,模擬Sampling的softmax

4. RL在GAN文本生成中所扮演的作用

4.1. 關於Reinforcement Learning的閒聊閒扯

4.2. SeqGAN 和 Conditional SeqGAN

5. 一些細節 + 一些延伸

5.1. Reward Baseline:獎勵值上的 Bias

5.2. REGS:一人犯錯一人當

5.3. MC Search & Discriminator for Partially Decoded Sequences:準度與速度的抉擇

5.4. Teacher Forcing:給Generator一個榜樣

5.5. Actor-Critic:更廣義上的GAN?

5.6. IRGAN:兩個檢索模型的對抗

結語

Acknowledgement

Reference


【導讀】本文全面系統性梳理介紹了強化學習用於發掘GAN在NLP領域的潛力,請大家閱讀。

1. 基礎:文本生成模型的標準框架

文本生成(Text Generation)通過 機器學習 + 自然語言處理 技術嘗試使AI具有人類水平的語言表達能力,從一定程度上能夠反應現今自然語言處理的發展水平。

下面用極簡的描述介紹一下文本生成技術的大體框架,具體可以參閱各種網絡文獻(比如:CSDN經典Blog“好玩的文本生成”[1]),論文等。

文本生成按任務來說,比較流行的有:機器翻譯、句子生成、對話生成等,本文着重討論後面兩種。基於深度學習的Text Generator 通常使用循環神經網絡(Basic RNN,LSTM,GRU等)進行語義建模。在句子生成任務中,一種常見的應用:“Char-RNN”(這裏“Char”是廣義上的稱謂,可以泛指一個字符、單詞或其他文本粒度單位),雖然簡單基礎但可以清晰度反應句子生成的運行流程,首先需要建立一個詞庫Vocab包含可能出現的所有字符或是詞彙,每次模型將預測得到句子中下一個將出現的詞彙,要知道softmax輸出的只是一個概率分佈,其維度爲詞庫 Vocab 的size,需再通過函數將輸出概率分佈轉化爲 One-hot vector,從詞庫 Vocab中檢索得出對應的詞項;在“Char-RNN”模型訓練時,使用窗口在語料上滑動,窗口之內的上下文及其後緊跟的字符配合分別爲一組訓練樣本和標籤,每次以按照固定的步長滑動窗口以得出全部 “樣本-標籤” 對。

與句子生成任務類似,對話生成以每組Dialogue作爲 “樣本-標籤” 對,循環神經網絡RNN_1對Dialogue上文進行編碼,再用另一個循環神經網絡RNN_2對其進行逐詞解碼,並以上一個解碼神經元的輸出作爲下一個解碼神經元的輸入,生成Dialogue下文,需要注意的是:在解碼前需配置“開始”標記 _,用於指示解碼器Decoder開啓Dialogue下文首詞(or 字)的生成,並配置“結束”標記 _,用於指示解碼器結束當前的 Text Generation 進程。

這便是衆所周知的“Seq2Seq”框架的基礎形態,爲了提高基礎Seq2Seq模型的效果,直接從解碼器的角度有諸如 Beam-SearchDecoder[2]、Attention mechanism Decoder[3](配置注意力機制的解碼器)等改進,而從神經網絡的結構入手,也有諸如Pyramidal RNN[4](金字塔型RNN)、Hierarchical RNN Encoder[5](分層循環網絡編碼器)等改進。改進不計其數,不一一詳舉,但不管如何,預測結果的輸出始終都是一個維度爲詞庫大小的概率分佈,需要再甄選出最大值的Index,到詞庫Vocab中檢索得出對應的單詞(or 字符)。

 

2. 問題:GAN爲何不能直接用於文本生成

2.1. GAN基礎知識

GAN對於大家而言想必已經膾炙人口了,這裏做一些簡單的複習。GAN從結構上來講巧妙而簡單(儘管有與其他經典工作Idea相似的爭議[6~7]),也非常易於理解,整個模型只有兩個部件:1.生成器G;2.判別器D。生成模型其實由來已久,所以生成器也並不新鮮,生成器G的目標是生成出最接近於真實樣本的假樣本分佈,在以前沒有判別器D的時候,生成器的訓練依靠每輪迭代返回當前生成樣本與真實樣本的差異(把這個差異轉化成loss)來進行參數優化,而判別器D的出現改變了這一點,判別器D的目標是儘可能準確地辨別生成樣本和真實樣本,而這時生成器G的訓練目標就由最小化“生成-真實樣本差異”變爲了儘量弱化判別器D的辨別能力(這時候訓練的目標函數中包含了判別器D的輸出)。GAN模型的大體框架如下圖所示:

2.2. GAN面對離散型數據時的困境(啥是離散型數據?)

GAN的作者早在原版論文[8]時就提及,GAN只適用於連續型數據的生成,對於離散型數據效果不佳(使得一時風頭無兩的GAN在NLP領域一直無法超越生成模型的另一大佬VAE[9])。文本數據就是最典型的一種離散型數據,這裏所謂的離散,並不是指:文本由一個詞一個詞組成,或是說當今最流行的文本生成框架,諸如Seq2Seq,也都是逐詞(或者逐個Character)生成的。因爲哪怕利用非循環網路進行一次成型的Sentences生成,也無法避免“數據離散”帶來的後果,抱歉都怪我年輕時的無知,離散型數據的真正含義,我們要從連續性數據說起。 圖像數據就是典型的連續性數據,故而GAN能夠直接生成出逼真的畫面來。我們首先來看看圖像數據的形狀:

圖像數據在計算機中均被表示爲矩陣,若是黑白圖像矩陣中元素的值即爲像素值或者灰度值(抱歉外行了,我不是做圖像的),就算是彩色圖像,圖像張量即被多加了一階用於表示RGB通道,圖像矩陣中的元素是可微分的,其數值直接反映出圖像本身的明暗,色彩等因素,很多這樣的像素點組合在一起,就形成了圖像,也就是說,從圖像矩陣到圖像,不需要“採樣”(Sampling),有一個更形象的例子:畫圖軟件中的調色板,如下圖,你在調色板上隨便滑動一下,大致感受一下圖像數據可微分的特性。

文本數據可就不一樣了,做文本的同學都知道,假設我們的詞庫(Vocabulary)大小爲1000,那麼每當我們預測下一個出現的詞時,理應得到的是一個One-hot的Vector,這個Vector中有999項是0,只有一項是1,而這一項就代表詞庫中的某個詞。然而,真正的隔閡在於,我們每次用無論什麼分類器或者神經網絡得到的直接結果,都是一個1000維的概率分佈,而非正正好好是一個One-hot的Vector,即便是使用softmax作爲輸出,頂多也只能得到某一維上特別大,其餘維上特別小的情況,而將這種輸出結果過渡到One-hot vector 然後再從詞庫中查詢出對應index的詞,這樣的操作被稱爲“Sampling”,通常,我們找出值最大的那一項設其爲1,其餘爲0。

當前神經網絡的優化方法大多數都是基於梯度的(Gradient based),很多文獻這麼說:GAN在面對離散型數據時,判別網絡無法將梯度Back propagation(BP)給生成網絡。這句話當時讓我等聽的雲裏霧裏,不妨換一個角度理解,我們知道,基於梯度的優化方法大致意思是這樣的,微調網絡中的參數(weight),看看最終輸出的結果有沒有變得好一點,有沒有達到最好的情形。

但是判別器D得到的是Sampling之後的結果,也就是說,我們經過參數微調之後,即便softmax的輸出優化了一點點,比如上圖的例子中,正確結果本應是第三項,其output的倒數第二項從0.85 變爲了0.65  ,第三項從 0.12 變爲了0.32  ,但是經過Sampling之後,生成器G輸出的結果還是跟以前一模一樣,並再次將相同的答案重複輸入給判別器D,這樣判別器D給出的評價就會毫無意義,生成器G的訓練也會失去方向。

 

有人說,與其這樣不如每次給判別器D直接喫Sampling之前的結果,也就是softamx輸出的那個distribution,同樣,這麼做也有很大的問題。我們回到GAN的基本原理,判別器D的初衷,它經歷訓練就是爲了準確辨別生成樣本和真實樣本的,那麼生成樣本是一個充滿了float小數的分佈,而真實樣本是一個One-hot Vector,判別器D很容易“作弊”,它根本不用去判斷生成分佈是否與真實分佈更加接近,它只需要識別出給到的分佈是不是除了一項是 1,其餘都是 0就可以了。所以無論Sampling之前的分佈無論多麼接近於真實的One-hot Vector,只要它依然是一個概率分佈,都可以被判別器D輕易地檢測出來。

 

上面所說的原因當然也有數學上的解釋,還記得在2.1節的時候,請大家注意生成樣本的loss衡量標準是什麼嗎?沒錯,就是JS散度, JS-Divergence在應用上其實是有弱點的(參考文獻[10]),它只能被正常地應用於互有重疊(Overlap)的兩個分佈,當面對互不重疊的兩個分佈P和 Q,其JS散度:

大家再想想,除非softmax能output出與真實樣本 exactly 相同的獨熱分佈(One-hot Vector)(當然這是不可能的),還有什麼能讓生成樣本的分佈與真實樣本的分佈發生重疊呢?於是,生成器無論怎麼做基於Gradient 的優化,輸出分佈與真實分佈的  始終是 log2,生成器G的訓練於是失去了意義。

3. 過渡方案:對於GAN的直接改進用於文本生成

爲了解決GAN在面對離散數據時的困境,最直接的想法是對GAN內部的一些計算方式進行微調,這種對於GAN內部計算方式的直接改進也顯示出了一定的效果,爲後面將GAN直接、流暢地應用於文本等離散型數據的生成帶來了希望。 接下來簡單介紹相關的兩篇工作[11~12]。

3.1. Wasserstein-divergence,額外的禮物

Wasserstein GAN[13](簡稱WGAN),其影響力似乎達到了原版GAN的高度,在國內也有一篇與其影響力相當的博文——“令人拍案叫絕的Wasserstein GAN”[10],不過在看這篇論文之前,還要推薦另外一篇論文“f-GAN”[14],這篇論文利用芬切爾共軛(Fenchel Conjugate)的性質證明了任何 f-Divergence都可以作爲原先GAN中 KL-Divergence (或者說 JS-Divergence)的替代方案。 f-GAN 的定義如下:

不難看出, KL-Divergence也是  f-Divergence的一種,f-GAN 原文提供了數十種各式各樣的  f-Divergence,爲GAN接下來沿此方向上的改進帶來了無限可能。

Wasserstein GAN 對GAN的改進也是從替換  KL-Divergence 這個角度對GAN進行改進,其詳細的妙處大可參看文獻[10,13],總的來說,WGAN採用了一種奇特的 Divergence—— “推土機-Divergence”,Wassertein-Divergence將兩個分佈看作兩堆土,Divergence 計算的就是爲了將兩個土堆推成一樣的形狀所需要泥土搬運總距離。如下圖:

使用 Wassertein-Divergence 訓練的GAN相比原版的GAN有更加明顯的“演化”過程,換句話說就是,WGAN的訓練相比與GAN更加能突顯從“不好”到“不錯”的循序漸經的過程。從上面的2.2節,我們知道JS散度在面對兩個分佈不相重疊的情況時,將發生“異常”,計算結果均爲 Log2 ,GAN的訓練過程也是這樣,也許在很長一段訓練的過程中,JS散度的返回值都是Log2 ,只有到達某個臨界點時,纔會突然優化爲接近最優值的結果,而Wasserstein散度的返回值則要平滑很多。

既然Wasserstein散度能夠克服JS散度的上述弱點,那麼使用Wasserstein GAN直接吸收生成器G softmax層output的Distribution Vector 與真實樣本的 One-hot Vector,用判別器D 進行鑑定,即便判別器D不會傻到真的被“以假亂真”,但生成器output每次更加接近於真實樣本的“進步”總算還是能被傳回,這樣就保證了對於離散數據的對抗訓練能夠繼續下去。 不過Wasserstein GAN的原著放眼於對於GAN更加遠大的改進意義,並沒有着重給出關於文本生成等離散數據處理的實驗,反倒是後來的一篇“Improved Training of Wasserstein GANs”[11]專門給出了文本生成的實驗,從結果上可以看出,WGAN生成的文本雖然遠不及當下最牛X的文本生成效果,但好歹能以character爲單位生成出一些看上去稍微正常一點的結果了,對比之下,GAN關於文本生成的生成結果顯然是崩塌的。

3.2. Gumbel-softmax,模擬Sampling的softmax

另外一篇來自華威大學+劍橋大學的工作把改進GAN用於離散數據生成的重心放在了修改softmax的output這方面。如2.2節所述,Sampling 操作中的 argmax(.)函數將連續的softmax輸出抽取成離散的成型輸出,從而導致Sampling的最終output是不可微的,形成GAN對於離散數據生成的最大攔路虎,既然不用Sampling的時候,output與真實分佈不重疊,導致JS散度停留於固定值log2,如果用了Sampling的話,離散數據的正常輸出又造成了梯度 Back-Propagation 上天然的隔閡。

既然如此,論文的作者尋找了一種可以高仿出Sampling效果的特殊softmax,使得softmax的直接輸出既可以保證與真實分佈的重疊,又能避免Sampling操作對於其可微特徵的破壞。它就是“耿貝爾-softmax”(Gumbel-Softmax),Gumbel-Softmax早先已經被應用於離散標籤的再分佈化[15](Categorical Reparameterization),在原先的Sampling操作中, 函數將普通softmax的輸出轉化成One-hot Vector:

論文的實驗僅僅嘗試使用配合Gumbel-Softmax的GAN進行長度固定爲12的 Context-free grammar 序列生成,可見GAN的訓練並沒有崩塌,在少數樣例上也得到了還算逼真的效果。

所以,對於GAN進行直接改進用於文本生成,雖說是取得了一定的成效,但距離理想的狀態仍然道阻且長,有沒有更好的辦法呢?當然!

 

4. RL在GAN文本生成中所扮演的作用

4.1. 關於Reinforcement Learning的閒聊閒扯

強化學習(Reinforcement Learning,RL)由於其前衛的學習方式,本不如監督學習那麼方便被全自動化地實現,並且在很多現實應用中學習週期太長,一直沒有成爲萬衆矚目的焦點,直到圍棋狗的出現,才吸引了衆多人的眼球。

既然是一個最優化的問題,很直接地便想到使用基於梯度(Gradient)的優化方法解決。當然,在強化學習中,我們要得到的是最優策略 ,此過程便在強化學習領域常聽到的 Policy Gradient。我們把等式右邊 中的項單獨記爲 ,它表示對話模型找到最優參數時所得到的獎勵期望。在實做時,設某句話的應答有$N$種可能性,則每組對話 出現的概率可視爲服從均勻分佈,故還可以進行如下變形:

這樣一來,梯度優化的重心就轉化到了生成對話的概率上來,也就是說,通過對參數  進行更新,獎勵會使模型趨於將優質對話的出現概率提高,而懲罰則會讓模型趨於將劣質對話的出現概率降低。

自AlphaGo使得強化學習猛然進入大衆視野以來,大部分對於強化學習的理論研究都將遊戲作爲主要實驗平臺,這一點不無道理,強化學習理論上的推導看似邏輯通順,但其最大的弱點在於,基於人工評判的獎勵 Reward的獲得,讓實驗人員守在電腦前對模型吐出來的結果不停地打分看來是不現實的,遊戲系統恰恰能會給出正確客觀的打分(輸/贏 或 遊戲Score)。基於RL的對話生成同樣會面對這個問題,研究人員採用了類似AlphaGo的實現方式(AI棋手對弈)——同時運行兩個機器人,讓它們自己互相對話,同時,使用預訓練(pre-trained)好的“打分器”給出每組對話的獎勵得分  ,關於這個預訓練的“打分器” R ,可以根據實際的應用和需求自己DIY。 

稍微感受一下RL ChatBot的效果:

4.2. SeqGAN 和 Conditional SeqGAN

前面說了這麼多,終於迎來到了高潮部分:RL + GAN for Text Generation,SeqGAN[17]站在前人RL Text Generation的肩膀上,可以說是GAN for Text Generation中的代表作。上面雖然花了大量篇幅講述RL ChatBot的種種機理,其實都是爲了它來做鋪墊。試想我們使用GAN中的判別器D作爲強化學習中獎勵 Reward 的來源,假設需要生成長度爲T的文本序列,則對於生成文本的獎勵值 計算可以轉化爲如下形式:

直到生成器G生成的文本足以亂真的時候,就是更新訓練新判別器的時候了。一般來說,判別器D對生成序列打出的得分既是其判斷該序列爲真實樣本的概率值,按照原版GAN的理論,判別器D對於 real/fake 樣本給出的鑑定結果均爲 0.5 時,說明生成器G所生成的樣本足以亂真,那麼倘若在上面的任務中,判別器屢屢對生成樣本打出接近甚至高出 0.5的得分時,即說明判別器D需要再訓練了。在實做中爲了方便,一般等待多輪生成器的訓練後,進行一次判別器的訓練。

SeqGAN的提出爲GAN用於對話生成(Chatbot)完成了重要的鋪墊,同樣起到鋪墊作用的還有另外一個GAN在圖像生成領域的神奇應用——Conditional GAN[18~19],有條件的GAN,顧名思義就是根據一定的條件生成一定的東西,該工作根據輸入的文字描述作爲條件,生成對應的圖像,比如:

對話生成可以理解爲同樣的模式,上一句對話作爲條件,下一句應答則爲要生成的數據,唯一的不同是需要生成離散的文本數據,而這個問題,SeqGAN已經幫忙解決了。綜上,我自己給它起名:Conditional SeqGAN[20]。根據4.1節以及本節的推導,Conditional SeqGAN中的優化梯度可寫成:

不難看出,此式子與4.1節中的變化梯度僅一字之差,只是把“打分器”給出的獎勵得分  換成了鑑別器認爲生成對話來自真人的概率得分 。看似差別很很小,實際上 RL + GAN 的文本生成技術與單純基於RL的文本生成技術有着本質的區別:在原本的強化學習對話生成中,雖然採用了AI互相對話,並設定了 jugle 進行打分,但這個 jugle 是預訓練好的,在對話模型的訓練過程當中將不再發生變化;RL + GAN 的文本生成乃至對話模型則不同,鑑別器D與生成器G的訓練更新將交替進行,此消彼長,故而給出獎勵得分的鑑別器D在這裏是動態的(dynamic)。

RL+ GAN 利用強化學習中的 Reward機制以及 Policy Gradient 等技術,巧妙地避開了GAN面對離散數據時梯度無法BP的難題,在使用強化學習的方法訓練生成器G的間隙,又採用對抗學習的原版方法訓練判別器D。 在Conditional SeqGAN對話模型的一些精選結果中,RL+ GAN 訓練得到的生成器時常能返回一些類似真人的逼真回答(我真有那麼一絲絲接近“恐怖谷”的感受)。

5. 一些細節 + 一些延伸

上文所述的,只是 RL + GAN 進行文本生成的基本原理,大家知道,GAN在實際運行過程中任然存在諸多不確定因素,爲了儘可能優化 GAN 文本生成的效果,而後發掘更多GAN在NLP領域的潛力,還有一些值得一提的細節。

5.1. Reward Baseline:獎勵值上的 Bias

5.2. REGS:一人犯錯一人當

細心的讀者可以發現,在SeqGAN的獎勵優化梯度計算公式的推導中,由鑑別器D給予的生成樣本獎勵得分其實是順應序列文本的生成過程,逐詞產生的,可以看到之前的推導公式中顯示了對於Partly文本序列的階段性獎勵值求和再求平均。然而在起初的實驗中,根據最終推導的獎勵值優化梯度計算公式,鑑別器D被訓練爲用於對整句生成結果進行評估打分,這樣的話,鑑別器D的打分對於生成序列中的每一個token都是同等的存在,要獎勵就一起獎勵(獎勵值可視爲相同),要懲罰就一起懲罰,這種做法會導致一個後果,看下面的例子。

比如有這樣一個對話組(包含真實回答和生成回答):

question = ['你', '叫', '什麼', '名字', '?']

real_answer = ['我', '叫', '張三', '。']

fake_answer = ['我', '不', '知道', '。']

很顯然,鑑別器D能夠輕易辨識後者回答是假的,必然會給出極低的獎勵值得分,但是仔細對比真/假兩個回答可以發現,第一個詞 “我 ” 其實和真實樣本的第一個詞是一樣的,而最後一個字符 “。”其實也並無大礙,它們其實並沒有錯,真正錯誤的是 “不 ” 和 “知道 ” 這兩個詞,但很不幸,鑑別器判定 fake_answer 的整體回答是假的,原本無辜的詞項 “我 ” 和 “。” 也要跟着一起接受低分判定的懲罰。

5.3. MC Search & Discriminator for Partially Decoded Sequences:準度與速度的抉擇

5.4. Teacher Forcing:給Generator一個榜樣

在開始講解SeqGAN中的Teacher Forcing之前,先幫助大家簡單了結一下RNN運行的兩種mode:(1). Free-running mode;(2). Teacher-Forcing mode[22]。前者就是正常的RNN運行方式:上一個state的輸出就做爲下一個state的輸入,這樣做時有風險的,因爲在RNN訓練的早期,靠前的state中如果出現了極差的結果,那麼後面的全部state都會受牽連,以至於最終結果非常不好也很難溯源到發生錯誤的源頭,而後者Teacher-Forcing mode的做法就是,每次不使用上一個state的輸出作爲下一個state的輸入,而是直接使用ground truth的對應上一項作爲下一個state的輸入。

就拿Seq2Seq模型來舉例,我們假設正輸出到第三項,準備生成第四項:

input = ['a', 'b', 'c', 'e', 'f', 'g', 'h']

output = ['o', 'p', 's', ...]

label = ['o', 'p', 'q', 'r', 's', 't', 'u']

Free-running mode下的decoder會將第三項錯誤的輸出 output[2] = 's'(下標從0開始)作爲下一個state的輸入,而在Teacher-forcing mode下,decoder則會將正確樣本的第三項 label[2] = 'q' 作爲下一個state的輸入。 當然這麼做也有它的缺點,因爲依賴標籤數據,在training的時候會有較好的效果,但是在testing的時候就不能得到ground truth的支持了。最好的結果是將Free-running mode的behavior訓練得儘可能接近於Teacher-forcing mode,Professor Forcing[23]使用GAN嘗試實現了這一目標。

當然,這些都是題外話,我們要回到Teacher-Forcing mode最初的motivation:訓練(迭代)早期的RNN非常弱,幾乎不能給出好的生成結果(以至於破灌破摔,產生垃圾的output影響後面的state),必須依靠ground truth強行扶着走,才能慢慢進入正軌。

SeqGAN也存在這樣的問題,一開始的生成器G非常弱,即便是經過一定量的預訓練,也幾乎生成不出好的Result,然後這些bad result給到鑑別器D必然只能返回很低的 Reward (懲罰),生成器G的訓練只能根據鑑別器的打分來優化而無法得到good example的指導,永遠不知道什麼是好的結果,結果必然是惡性循環。於是,有必要在SeqGAN訓練中給到生成器G真實樣本的指導,也就是告訴生成器:“什麼樣的樣本才配得到高分 Reward ?”

5.5. Actor-Critic:更廣義上的GAN?

在DeepMind的一篇半綜述式的文章[24]中,談到了強化學習中的另一個特殊的模型——Actor-Critic,並分析了這個模型與GAN之間的聯繫。

首先我們回顧一下GAN中鑑別器D和生成器G優化時的目標函數:

再說說強化學習,在基於策略迭代的強化學習中,通過嘗試當前策略的action,從環境獲得 Reward然後更新策略。這種操作在遊戲實驗環境中非常有效,因爲遊戲系統有封閉且清晰的環境,能夠穩定地根據各種接收到的action客觀地給出對應 Reward ,而在現實生活中,很多時候並沒有封閉清晰的環境,給定action應該得到什麼樣的 Reward  本身也不準確,只能通過設定DIY的打分器來實現,顯然這麼做很難完美model真實世界千變萬化的情況。

文中將GANs模型比作一種特殊形式的Actor-Critic,並比較了兩者各自的特點以及後續的改進技術在兩者上的適配情況。試想一下,既然強化學習技術幫助GAN解決了在離散型數據上的梯度傳播問題,那麼同爲強化學習的Actor-Critic也爲對抗式文本生成提供了另外一種可能。

5.6. IRGAN:兩個檢索模型的對抗

IRGAN[25]這篇工作發表於2017年的SIGIR,從作者的陣容來看就註定不是一篇平凡的作品,其中就包含SeqGAN的原班人馬,作者將生成對抗網絡的思想應用於信息檢索領域,卻又不拘泥於傳統GAN的經典Framework,而是利用了IR領域原本就存在的兩種不同路數的model:生成式IR模型 和 判別式IR模型。

生成式IR模型目標是產生一個query -> document的關聯度分佈,利用這個分佈對每個輸入的query返回相關的檢索結果;而判別式IR模型看上去更像是一個二類分類器,它的目標是儘可能地區分有關聯查詢對<query_r, document_r>和無關聯查詢對<query_f, document_f>,對於給定的查詢對<query, document>,判別式IR模型給出該查詢對中的兩項的關聯程度。

IRGAN的一大特點是,對抗model中的兩個組件各自都是一種IR模型,所以經過對抗訓練之後,不管拿出來哪個,都有希望突破原先的瓶頸。作者還關於IRGAN的訓練目標是否符合納什均衡做了一些討論,儘管在真實檢索的應用中很難獲得所謂的真實關聯分佈,但作者認爲不管是觀察到的關聯樣本還是未觀察到的關聯樣本,判別IR模型的輸出總是和生成IR模型的對應輸出存在着正相關的作用力,於是也孕育而生了文中那個關於浮力和拖拽重物最終達到漂浮平衡狀態的略顯晦澀的比喻。

結語

這一領域的發展之迅速,也許在我完成這篇Blog的時候,又有一批工作爭先恐後的冒出來了,但最終的結局肯定不止於此,我也不怎麼擅長結尾,也許要等待GAN來爲我,爲我們帶來一個奇妙的結局。

 

Acknowledgement

要特別感謝臺灣大學李宏毅老師生動的授課[26],這爲我在多個知識點上的理解帶來了重要的幫助。

 

Reference

[1] 何永燦CSDN. 好玩的文本生成[EB/OL]. http://geek.csdn.net/news/detail/131622.

[2] Ashwin, K, Vijayakumar, Michael, Cogswell, Ramprasath, R, Selvaraju, Qing, Sun, Stefan, Lee, David, Crandall, Dhruv, Batra. Diverse Beam Search: Decoding Diverse Solutions from Neural Sequence Models[J/OL]. https://arxiv.org/abs/1610.02424v1.

[3] Minh-Thang, Luong, Hieu, Pham, Christopher, D, Manning. Effective Approaches to At-tention-based Neural Machine Translation[J/OL]. https://arxiv.org/abs/1508.04025.

[4] W. Chan, N. Jaitly, Q. Le and O. Vinyals, “Listen, attend and spell: A neural network for large vocabulary conversational speech recognition,” ICASSP, 2016, https://research.google.com/pubs/pub44926.html.

[5] Jiwei, Li, Minh-Thang, Luong, Dan, Jurafsky. A Hierarchical Neural Autoencoder for Par-agraphs and Documents[J/OL]. https://arxiv.org/abs/1506.01057.

[6] 鄭華濱. 從PM到GAN——LSTM之父Schmidhuber橫跨22年的怨念[EB/OL]. https://zhuanlan.zhihu.com/p/27159510?utm_source=zhihu&utm_medium=social.

[7] Jürgen, Schmidhuber. Learning Factorial Codes by Predictability Minimization[J]. Neural Computation, 1992, 4(6): 863-879, http://www.mitpressjournals.org/doi/abs/10.1162/neco.1992.4.6.863.

[8] Ian, J, Goodfellow, Jean, Pouget-Abadie, Mehdi, Mirza, Bing, Xu, David, Warde-Farley, Sherjil, Ozair, Aaron, Courville, Yoshua, Bengio. Generative Adversarial Networks[J/OL]. https://arxiv.org/abs/1406.2661v1.

[9] Samuel, R, Bowman, Luke, Vilnis, Oriol, Vinyals, Andrew, M, Dai, Rafal, Jozefowicz, Samy, Bengio. Generating Sentences from a Continuous Space[J/OL]. https://arxiv.org/abs/1511.06349.

[10] 鄭華濱. 令人拍案叫絕的Wasserstein GAN[EB/OL]. https://zhuanlan.zhihu.com/p/25071913.

[11] Ishaan, Gulrajani, Faruk, Ahmed, Martin, Arjovsky, Vincent, Dumoulin, Aaron, Courville. Improved Training of Wasserstein GANs[J/OL]. https://arxiv.org/abs/1704.00028.

[12] Matt, J, Kusner, José, Miguel, Hernández-Lobato. GANS for Sequences of Discrete Ele-ments with the Gumbel-softmax Distribution[J/OL]. https://arxiv.org/abs/1611.04051.

[13] Martin, Arjovsky, Soumith, Chintala, Léon, Bottou. Wasserstein GAN[J/OL]. https://arxiv.org/abs/1701.07875v1.

[14] Sebastian, Nowozin, Botond, Cseke, Ryota, Tomioka. f-GAN: Training Generative Neural Samplers using Variational Divergence Minimization[J/OL]. https://arxiv.org/abs/1606.00709.

[15] Eric, Jang, Shixiang, Gu, Ben, Poole. Categorical Reparameterization with Gum-bel-Softmax[J/OL]. https://arxiv.org/abs/1611.01144.

[16] Jiwei, Li, Will, Monroe, Alan, Ritter, Michel, Galley, Jianfeng, Gao, Dan, Jurafsky. Deep Reinforcement Learning for Dialogue Generation[J/OL]. https://arxiv.org/abs/1606.01541v3.

[17] Lantao, Yu, Weinan, Zhang, Jun, Wang, Yong, Yu. SeqGAN: Sequence Generative Adver-sarial Nets with Policy Gradient[J/OL]. https://arxiv.org/abs/1609.05473.

[18] Mehdi, Mirza, Simon, Osindero. Conditional Generative Adversarial Nets[J/OL]. https://arxiv.org/abs/1411.1784.

[19] Scott, Reed, Zeynep, Akata, Xinchen, Yan, Lajanugen, Logeswaran, Bernt, Schiele, Honglak, Lee. Generative Adversarial Text to Image Synthesis[J/OL]. https://arxiv.org/abs/1605.05396.

[20] Jiwei, Li, Will, Monroe, Tianlin, Shi, Sébastien, Jean, Alan, Ritter, Dan, Jurafsky. Adver-sarial Learning for Neural Dialogue Generation[J/OL]. https://arxiv.org/abs/1701.06547.

[21] Silver, D.; Huang, A.; Maddison, C. J.;Guez, A.; Sifre, L.; et al. 2016. Mastering the game

of go with deep neural networks and tree search. Nature 529(7587):484–489, http://www.nature.com/nature/journal/v529/n7587/abs/nature16961.html.

[22] Williams, R. J. and Zipser, D. (1989). A learning algorithm for continually running fully recurrent neural networks. Neural computation, 1(2), 270–280, http://www.mitpressjournals.org/doi/abs/10.1162/neco.1989.1.2.270.

[23] Alex, Lamb, Anirudh, Goyal, Ying, Zhang, Saizheng, Zhang, Aaron, Courville, Yoshua, Bengio. Professor Forcing: A New Algorithm for Training Recurrent Networks[J/OL]. https://arxiv.org/abs/1610.09038v1.

[24] David, Pfau, Oriol, Vinyals. Connecting Generative Adversarial Networks and Ac-tor-Critic Methods[J/OL]. https://arxiv.org/abs/1610.01945.

[25] Jun, Wang, Lantao, Yu, Weinan, Zhang, Yu, Gong, Yinghui, Xu, Benyou, Wang, Peng, Zhang, Dell, Zhang. IRGAN: A Minimax Game for Unifying Generative and Discriminative Information Retrieval Models[J/OL]. https://arxiv.org/abs/1705.10513v1.

[26] Hungyi, Lee. Machine Learning and having it Deep and Structured[EB/OL]. http://speech.ee.ntu.edu.tw/~tlkagk/courses_MLDS17.html.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章