丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能開發(fā)者 正文
發(fā)私信給汪思穎
發(fā)送

0

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

本文作者: 汪思穎 2017-10-16 16:40
導(dǎo)語:文本生成模型的標準框架以及一些基礎(chǔ)知識。

雷鋒網(wǎng) AI科技評論按,本文作者華南理工大學胡楊,本文首發(fā)于知乎專欄GAN + 文本生成 + 讀博干貨,雷鋒網(wǎng) AI科技評論獲其授權(quán)轉(zhuǎn)載。

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

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

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

與句子生成任務(wù)類似,對話生成以每組Dialogue作為“樣本-標簽”對,循環(huán)神經(jīng)網(wǎng)絡(luò)RNN_1對Dialogue上文進行編碼,再用另一個循環(huán)神經(jīng)網(wǎng)絡(luò)RNN_2對其進行逐詞解碼,并以上一個解碼神經(jīng)元的輸出作為下一個解碼神經(jīng)元的輸入,生成Dialogue下文,需要注意的是:在解碼前需配置“開始”標記 _,用于指示解碼器Decoder開啟Dialogue下文首詞(or 字)的生成,并配置“結(jié)束”標記 _,用于指示解碼器結(jié)束當前的 Text Generation 進程。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

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

2.1. GAN基礎(chǔ)知識

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

我們再來簡單復(fù)習一下GAN當中的一些重要公式,這一步對后文的闡述非常重要。不管生成器G是什么形狀、多么深的一個神經(jīng)網(wǎng)絡(luò),我們暫且把它看成一個函數(shù) 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,由它生成的樣本記作: 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,相對地,真實樣本記作: 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 。同樣,不管判別器D作為一個分類神經(jīng)網(wǎng)絡(luò),我們也可將其視為一個函數(shù) 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,而這個函數(shù)的輸出即為一個標量,用于描述生成樣本 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 與真實樣本 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 之間的差距。

而GAN模型的整體優(yōu)化目標函數(shù)是:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

其中函數(shù) 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 如下:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

根據(jù)連續(xù)函數(shù)的期望計算方法,上式變形為:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

先求外層的 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 的話,對積分符號內(nèi)的多項式求導(dǎo)取極值得到目標D:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

代回原式:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

所以,當生成器G能生成出與真實樣本一樣分布的樣本,那么ok,就達到最好的結(jié)果,然后大家注意一點,這里生成樣本的loss衡量方法是JS散度。

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

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

當前神經(jīng)網(wǎng)絡(luò)的優(yōu)化方法大多數(shù)都是基于梯度的(Gradient based),很多文獻這么說:GAN在面對離散型數(shù)據(jù)時,判別網(wǎng)絡(luò)無法將梯度Back propagation(BP)給生成網(wǎng)絡(luò)。這句話當時讓我等聽的云里霧里,不妨換一個角度理解,我們知道,基于梯度的優(yōu)化方法大致意思是這樣的,微調(diào)網(wǎng)絡(luò)中的參數(shù)(weight),看看最終輸出的結(jié)果有沒有變得好一點,有沒有達到最好的情形。

但是判別器D得到的是Sampling之后的結(jié)果,也就是說,我們經(jīng)過參數(shù)微調(diào)之后,即便softmax的輸出優(yōu)化了一點點,比如上圖的例子中,正確結(jié)果本應(yīng)是第三項,其output的倒數(shù)第二項從 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 變?yōu)榱?強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,第三項從 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 變?yōu)榱?強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,但是經(jīng)過Sampling之后,生成器G輸出的結(jié)果還是跟以前一模一樣,并再次將相同的答案重復(fù)輸入給判別器D,這樣判別器D給出的評價就會毫無意義,生成器G的訓練也會失去方向。

有人說,與其這樣不如每次給判別器D直接吃Sampling之前的結(jié)果,也就是softamx輸出的那個distribution,同樣,這么做也有很大的問題。我們回到GAN的基本原理,判別器D的初衷,它經(jīng)歷訓練就是為了準確辨別生成樣本和真實樣本的,那么生成樣本是一個充滿了float小數(shù)的分布,而真實樣本是一個One-hot Vector,判別器D很容易“作弊”,它根本不用去判斷生成分布是否與真實分布更加接近,它只需要識別出給到的分布是不是除了一項是 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,其余都是 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 就可以了。所以無論Sampling之前的分布無論多么接近于真實的One-hot Vector,只要它依然是一個概率分布,都可以被判別器D輕易地檢測出來。

上面所說的原因當然也有數(shù)學上的解釋,還記得在2.1節(jié)的時候,請大家注意生成樣本的loss衡量標準是什么嗎?沒錯,就是JS散度, 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 在應(yīng)用上其實是有弱點的(參考文獻[10]),它只能被正常地應(yīng)用于互有重疊(Overlap)的兩個分布,當面對互不重疊的兩個分布 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,其JS散度:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

大家再想想,除非softmax能output出與真實樣本 exactly 相同的獨熱分布(One-hot Vector)(當然這是不可能的),還有什么能讓生成樣本的分布與真實樣本的分布發(fā)生重疊呢?于是,生成器無論怎么做基于Gradient 的優(yōu)化,輸出分布與真實分布的 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 始終是 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,生成器G的訓練于是失去了意義。

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

為了解決GAN在面對離散數(shù)據(jù)時的困境,最直接的想法是對GAN內(nèi)部的一些計算方式進行微調(diào),這種對于GAN內(nèi)部計算方式的直接改進也顯示出了一定的效果,為后面將GAN直接、流暢地應(yīng)用于文本等離散型數(shù)據(jù)的生成帶來了希望。 接下來簡單介紹相關(guān)的兩篇工作[11~12]。

3.1. Wasserstein-divergence,額外的禮物

Wasserstein GAN[13](簡稱WGAN),其影響力似乎達到了原版GAN的高度,在國內(nèi)也有一篇與其影響力相當?shù)牟┪摹傲钊伺陌附薪^的Wasserstein GAN”[10],不過在看這篇論文之前,還要推薦另外一篇論文“f-GAN”[14],這篇論文利用芬切爾共軛(Fenchel Conjugate)的性質(zhì)證明了任何 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 都可以作為原先GAN中 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) (或者說 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) )的替代方案。 f-GAN 的定義如下:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

公式中的 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 被稱為 f函數(shù),它必須滿足以下要求:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

不難看出, 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 也是 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 的一種,f-GAN 原文提供了數(shù)十種各式各樣的 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,為GAN接下來沿此方向上的改進帶來了無限可能。

Wasserstein GAN 對GAN的改進也是從替換 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 這個角度對GAN進行改進,其詳細的妙處大可參看文獻[10,13],總的來說,WGAN采用了一種奇特的 Divergence—— “推土機-Divergence”, 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 將兩個分布看作兩堆土,Divergence 計算的就是為了將兩個土堆推成一樣的形狀所需要泥土搬運總距離。如下圖:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

使用 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 訓練的GAN相比原版的GAN有更加明顯的“演化”過程,換句話說就是,WGAN的訓練相比與GAN更加能突顯從“不好”到“不錯”的循序漸經(jīng)的過程。從上面的2.2節(jié),我們知道JS散度在面對兩個分布不相重疊的情況時,將發(fā)生“異?!?,計算結(jié)果均為 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,GAN的訓練過程也是這樣,也許在很長一段訓練的過程中,JS散度的返回值都是 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,只有到達某個臨界點時,才會突然優(yōu)化為接近最優(yōu)值的結(jié)果,而Wasserstein散度的返回值則要平滑很多。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

3.2. Gumbel-softmax,模擬Sampling的softmax

另外一篇來自華威大學+劍橋大學的工作把改進GAN用于離散數(shù)據(jù)生成的重心放在了修改softmax的output這方面。如2.2節(jié)所述,Sampling 操作中的 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 函數(shù)將連續(xù)的softmax輸出抽取成離散的成型輸出,從而導(dǎo)致Sampling的最終output是不可微的,形成GAN對于離散數(shù)據(jù)生成的最大攔路虎,既然不用Sampling的時候,output與真實分布不重疊,導(dǎo)致JS散度停留于固定值 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,如果用了Sampling的話,離散數(shù)據(jù)的正常輸出又造成了梯度 Back-Propagation 上天然的隔閡。

既然如此,論文的作者尋找了一種可以高仿出Sampling效果的特殊softmax,使得softmax的直接輸出既可以保證與真實分布的重疊,又能避免Sampling操作對于其可微特征的破壞。它就是“耿貝爾-softmax”(Gumbel-Softmax),Gumbel-Softmax早先已經(jīng)被應(yīng)用于離散標簽的再分布化[15](Categorical Reparameterization),在原先的Sampling操作中, 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 函數(shù)將普通softmax的輸出轉(zhuǎn)化成One-hot Vector:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

而Gumbel-Softmax略去了 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) + 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 這一步,能夠直接給出近似Sampling操作的輸出:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

精髓在于這其中的“逆溫參數(shù)” 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,當 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 時,上式所輸出的分布等同于 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) + 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 給出的 Sampling 分布,而當 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 時,上式的輸出就接近于均勻分布,而 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 則作為這個特殊softmax中的一個超參數(shù),給予一個較大的初始值,通過訓練學習逐漸變小,向 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 逼近,這一部分詳細內(nèi)容可以閱讀文獻[15]。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

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

4.1. 關(guān)于Reinforcement Learning的閑聊閑扯

強化學習(Reinforcement Learning,RL)由于其前衛(wèi)的學習方式,本不如監(jiān)督學習那么方便被全自動化地實現(xiàn),并且在很多現(xiàn)實應(yīng)用中學習周期太長,一直沒有成為萬眾矚目的焦點,直到圍棋狗的出現(xiàn),才吸引了眾多人的眼球。

RL通常是一個馬爾科夫決策過程,在各個狀態(tài) 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 下執(zhí)行某個動作 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 都將獲得獎勵(或者是"負獎勵"——懲罰) 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,而將從頭到尾所有的動作連在一起就稱為一個“策略”或“策略路徑” 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,強化學習的目標就是找出能夠獲得最多獎勵的最優(yōu)策略:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

為了達到這個目標,強化學習機可以在各個狀態(tài)嘗試各種可能的動作,并通過環(huán)境(大多數(shù)是人類)反饋的獎勵或者懲罰,評估并找出能夠最大化期望獎勵強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 的策略。

其實也有人將RL應(yīng)用于對話生成的訓練當中[16],因為對話生成任務(wù)本身非常符合強化學習的運行機理(讓人類滿意,拿獎勵)。設(shè),根據(jù)輸入句子 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,返回的回答 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 從人類得到的獎勵記為 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,而Encoder-Decoder對話模型服從的參數(shù)被統(tǒng)一記為 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,則基于RL的目標函數(shù)說白了就是最大化生成對話的期望獎勵,其中 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 表示在參數(shù) 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 下,一組對話 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 出現(xiàn)的概率。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

既然是一個最優(yōu)化的問題,很直接地便想到使用基于梯度(Gradient)的優(yōu)化方法解決。當然,在強化學習中,我們要得到的是最優(yōu)策略 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,此過程便在強化學習領(lǐng)域常聽到的 Policy Gradient。我們把等式右邊 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 中的項單獨記為 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,它表示對話模型找到最優(yōu)參數(shù)時所得到的獎勵期望。在實做時,設(shè)某句話的應(yīng)答有$N$種可能性,則每組對話 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 出現(xiàn)的概率可視為服從均勻分布,故還可以進行如下變形:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

在優(yōu)化過程中,對話模型的權(quán)重 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 更新如下, 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 為所獲獎勵的變化梯度,

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

借助復(fù)合函數(shù)的求導(dǎo)法則,繼續(xù)推導(dǎo)獎勵的變化梯度,

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

這樣一來,梯度優(yōu)化的重心就轉(zhuǎn)化到了生成對話的概率上來,也就是說,通過對參數(shù) 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 進行更新,獎勵會使模型趨于將優(yōu)質(zhì)對話的出現(xiàn)概率提高,而懲罰則會讓模型趨于將劣質(zhì)對話的出現(xiàn)概率降低。

自AlphaGo使得強化學習猛然進入大眾視野以來,大部分對于強化學習的理論研究都將游戲作為主要實驗平臺,這一點不無道理,強化學習理論上的推導(dǎo)看似邏輯通順,但其最大的弱點在于,基于人工評判的獎勵 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 的獲得,讓實驗人員守在電腦前對模型吐出來的結(jié)果不停地打分看來是不現(xiàn)實的,游戲系統(tǒng)恰恰能會給出正確客觀的打分(輸/贏 或 游戲Score)。基于RL的對話生成同樣會面對這個問題,研究人員采用了類似AlphaGo的實現(xiàn)方式(AI棋手對弈)——同時運行兩個機器人,讓它們自己互相對話,同時,使用預(yù)訓練(pre-trained)好的“打分器”給出每組對話的獎勵得分 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,關(guān)于這個預(yù)訓練的“打分器” 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) ,可以根據(jù)實際的應(yīng)用和需求自己DIY。 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

4.2. SeqGAN 和 Conditional SeqGAN

前面說了這么多,終于迎來到了高潮部分:RL + GAN for Text Generation,SeqGAN[17]站在前人RL Text Generation的肩膀上,可以說是GAN for Text Generation中的代表作。上面雖然花了大量篇幅講述RL ChatBot的種種機理,其實都是為了它來做鋪墊。試想我們使用GAN中的判別器D作為強化學習中獎勵 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 的來源,假設(shè)需要生成長度為T的文本序列,則對于生成文本的獎勵值 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 計算可以轉(zhuǎn)化為如下形式:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

這里要說明幾點,假設(shè)需要生成的序列總長度為 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 是指先前已經(jīng)生成的部分序列(在RL中可視為當前的狀態(tài)),通過蒙特卡洛搜索得到 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 種后續(xù)的序列,盡管文本生成依舊是逐詞尋找期望獎勵最大的Action(下一個詞),判別器D還是以整句為單位對生成的序列給出得分 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 。

在新一代的判別器 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 訓練之前,生成器 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 根據(jù)當前判別器 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 返回的得分不斷優(yōu)化自己:

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

直到生成器G生成的文本足以亂真的時候,就是更新訓練新判別器的時候了。一般來說,判別器D對生成序列打出的得分既是其判斷該序列為真實樣本的概率值,按照原版GAN的理論,判別器D對于 real/fake 樣本給出的鑒定結(jié)果均為 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 時,說明生成器G所生成的樣本足以亂真,那么倘若在上面的任務(wù)中,判別器屢屢對生成樣本打出接近甚至高出 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 的得分時,即說明判別器D需要再訓練了。在實做中為了方便,一般等待多輪生成器的訓練后,進行一次判別器的訓練。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

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

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

不難看出,此式子與4.1節(jié)中的變化梯度僅一字之差,只是把“打分器”給出的獎勵得分 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 換成了鑒別器認為生成對話來自真人的概率得分 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 。看似差別很很小,實際上 RL + GAN 的文本生成技術(shù)與單純基于RL的文本生成技術(shù)有著本質(zhì)的區(qū)別:在原本的強化學習對話生成中,雖然采用了AI互相對話,并設(shè)定了 jugle 進行打分,但這個 jugle 是預(yù)訓練好的,在對話模型的訓練過程當中將不再發(fā)生變化;RL + GAN 的文本生成乃至對話模型則不同,鑒別器D與生成器G的訓練更新將交替進行,此消彼長,故而給出獎勵得分的鑒別器D在這里是動態(tài)的(dynamic)。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

RL+ GAN 利用強化學習中的 強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上) 機制以及 Policy Gradient 等技術(shù),巧妙地避開了GAN面對離散數(shù)據(jù)時梯度無法BP的難題,在使用強化學習的方法訓練生成器G的間隙,又采用對抗學習的原版方法訓練判別器D。 在Conditional SeqGAN對話模型的一些精選結(jié)果中,RL+ GAN 訓練得到的生成器時常能返回一些類似真人的逼真回答(我真有那么一絲絲接近“恐怖谷”的感受)。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

另外,相關(guān)細節(jié)與延伸參見強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(下)。

雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

強化學習在生成對抗網(wǎng)絡(luò)文本生成中扮演的角色(Role of RL in Text Generation by GAN)(上)

分享:
相關(guān)文章

編輯

關(guān)注AI學術(shù),例如論文
當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說