0
雷鋒網(wǎng) AI 科技評論按:OpenAI 的 GPT-2 曾經(jīng)掀起的「大規(guī)模語言模型到底水平多高、到底有沒有危害」的口水仗慢慢冷下去了,而語言模型的實用性問題也越來越展現(xiàn)出來:如果很難控制一個語言模型的輸出,那可能就很難找到它的實際應(yīng)用,只能淪為刷分工具。
近期,Uber AI 研究院的一篇論文《Plug and Play Language Models: A Simple Approach To Controlled Text Generation》(https://arxiv.org/abs/1912.02164)中介紹了一種簡單、高效的精細(xì)控制方法,可以輕松地讓大規(guī)模語言模型生成指定的主題、風(fēng)格的文本,而且還有很廣泛的適用性。Uber AI 的研究人員們把它比喻為「讓小老鼠控制一只猛犸象」。雷鋒網(wǎng) AI 科技評論把論文的解讀博客編譯如下。
2017 年谷歌提出的基于注意力的 Transformer 網(wǎng)絡(luò)架構(gòu)為自然語言處理開辟了一個全新的時代。從此之后,基于 Transformer 改進(jìn)的更大、更大的模型層出不窮,基于深度學(xué)習(xí)的自然語言處理方法也在各種各樣的任務(wù)中取得越來越好的成績。
隨著 BERT、GPT-2 之類的大規(guī)模語言模型出現(xiàn),NLP 研究者們通過實驗表明了只需要用簡單的目標(biāo)函數(shù)在超大規(guī)模的無標(biāo)注語料上訓(xùn)練,得到的語言模型就可以在語言建模任務(wù)(給定一組開頭以后向后續(xù)寫)中得到前所未有的流暢度,文本的自然、合理程度可以接近人類水平。
比如,給定一個開頭「這里的食物不好吃」,一個語言模型(比如 GPT-2)能續(xù)寫成這樣的看上去相當(dāng)合理的一段話「這里的食物不好吃,店員又懶又粗魯。這食物真讓人喜歡不起來,即便我的要求一點也不高?!?/p>
不過,雖然這些模型生成的句子體現(xiàn)出了拼寫、語法、語言習(xí)慣等等復(fù)雜的語言知識,但想要具體地控制模型生成的內(nèi)容仍然非常困難。換句話說,雖然模型有能力生成各種各樣不同的句子,或者為一個給定的開頭續(xù)寫出很多不同的段落,但我們很難指定讓模型生成某一種風(fēng)格的、某一種話題的、某一種敘述邏輯的文字。比如,同樣是以開頭「這里的食物不好吃」進(jìn)行續(xù)寫,人類可以欲揚先抑,最后得到一個正面的結(jié)論,也可以掛羊頭賣狗肉,話說到一半慢慢從講食物變成講政治的。想讓語言模型做到這些就非常困難。
在這篇論文里,Uber AI 的研究人員們在這個問題上做出了一些突破。我們先看一個例子,他們用他們的方法要求模型生成一段正面的續(xù)寫,效果是:「這里的食物很糟糕,但還有音樂、故事和魔力!Avenged Sevenfold 的搖滾音樂劇演得太精彩,以后在全世界都能看到。」文本表達(dá)的情感從負(fù)面轉(zhuǎn)變成了正面,但還是挺連貫自然的。
在此之前,全世界的 NLP 研究人員們提出過各種各樣的條件文本生成方式,包括,1,從一個預(yù)訓(xùn)練語言模型開始,做精細(xì)調(diào)節(jié),以便讓它始終都能生成某種特定風(fēng)格的句子;2,從零開始訓(xùn)練一個大型條件生成模型;3,不改變這個大的語言模型,而是通過關(guān)鍵 n 元組替換的方式,調(diào)節(jié)已經(jīng)生成的句子的風(fēng)格。
Uber AI 這篇論文帶來了一種全新的有控制的文本生成方式,他們稱之為「the Plug and Play Language Model」(即插即用語言模型,PPLM)。通過 PPLM,用戶可以向大型非條件性的生成模型中靈活地插入一個或多個屬性模型,這些插入的模型可以代表不同的想要控制的屬性。PPLM 的最大優(yōu)點是不需要對語言模型做任何額外的改動(不需要重新訓(xùn)練或者精細(xì)調(diào)節(jié)),就讓資源不足的研究人員也可以直接在預(yù)訓(xùn)練語言模型的基礎(chǔ)上生成條件文本。
NLP 研究人員們目前開發(fā)的最大的、語言能力最強(qiáng)的語言模型都非常大,動輒有數(shù)十億的參數(shù),訓(xùn)練它們需要大量的計算資源(從零訓(xùn)練一個模型,租算力大概需要六萬美元),而且訓(xùn)練這些模型還需要海量的文本數(shù)據(jù),即便模型的代碼是開源的,這些訓(xùn)練數(shù)據(jù)也通常不是開源的。在許多意義上,大規(guī)模語言模型就像猛犸象一樣,它們聰明、有力,但是它們的行動又隨意又笨重。
這樣的語言模型帶來的結(jié)果就是,除了那些有最充沛的資源和資金的研究人員之外,其它的研究人員和開發(fā)者都只能在無論如何都不理想的情境中三選一:1,直接使用公開的預(yù)訓(xùn)練模型(雖然有好的語言建模能力但無法完全匹配他們的需求);2,在小一些的數(shù)據(jù)集上對預(yù)訓(xùn)練模型做精細(xì)調(diào)節(jié)(但一旦出現(xiàn)災(zāi)難性遺忘,就會讓模型的表現(xiàn)大幅下降);3,需求不符只能從零訓(xùn)練新模型,但預(yù)算有限,只能訓(xùn)練小得多的模型(表現(xiàn)也自然也會有明顯差距)。
Uber AI 提出的 PPLM 就能在這樣的困境面前起到很大幫助,需要符合自己需求、且表現(xiàn)優(yōu)秀的語言模型的研究者和開發(fā)者,不再需要想辦法訓(xùn)練自己的模型,只需要用幾個小的屬性模型控制大預(yù)訓(xùn)練模型的生成,就可以達(dá)到目標(biāo)。一個屬性模型可以只有預(yù)訓(xùn)練模型的百萬分之一大,同時仍然有很強(qiáng)的引導(dǎo)能力,就像在猛犸象的頭頂坐了一只小老鼠,就能夠靈活地控制讓猛犸象往哪里走。
語言模型有幾類,對應(yīng)幾種不同的分布。
首先有非條件性的語言模型,它的分布是 p(x),是所有文本上的一個概率分布。GPT-2 之類的非條件性的語言模型就是建模了這樣的分布。這樣的語言模型是通用的,可以為許多不同種類的話題生成流暢的文本。
其次,條件性語言模型的分布是 p(x|a),這就是我們的目標(biāo)。在給定某種屬性 a 之后,這種假想模型就可以生成帶有這種屬性的文本。
接下來,屬性模型的分布是 p(a|x),它是根據(jù)給定的句子輸入 x 計算句子帶有屬性 a 的概率。比如,經(jīng)過屬性模型計算,某個句子有 10% 的可能性是正面情緒的,以及有 85% 的可能性是關(guān)于政治的。屬性模型可以很小、很容易訓(xùn)練,僅從直觀上來看,判斷某個句子是否含有某種屬性就是個分類任務(wù),要比寫出這樣的句子簡單得多;尤其是,如果在語言模型學(xué)習(xí)的語言表征上訓(xùn)練這樣的屬性(識別)模型,OpenAI 的論文《Improving Language Understanding by Generative Pre-Training》就已經(jīng)表明了可以輕松地訓(xùn)練一個表現(xiàn)優(yōu)秀的小模型。在 Uber AI 的實驗中,一個單層的、4000 個參數(shù)的屬性模型就能在屬性識別和文本生成引導(dǎo)中發(fā)揮很好的效果。
那么我們想要的條件性語言模型,也就是 p(x|a) 從哪里來呢?幸運的是,根據(jù)貝葉斯法則,這個模型可以用第一個和第三個模型表示出來,也就是:
p(x|a) ∝ p(a|x) p(x)
不過,雖然這種方式讓我們可以方便地計算概率(「這個句子符不符合我們想要的樣子」),但我們很難從這種表達(dá)中采樣。我們可以先嘗試常見的拒絕采樣或者重要性采樣,從 p(x) 分布開始逐一采樣篩選—— 這種做法理論上可行,但實際操作起來,要么會得到有偏倚的結(jié)果,要么運行速度非常慢。想用這種方式生成一個談?wù)蔚木渥樱蟾艜沁@樣的狀況:
從 p(x) 中采樣得到一個句子 x
把句子 x 輸入 p(a|x) 計算它是否是關(guān)于政治的
如果不是,重復(fù)第一步
顯然,這就是從隨機(jī)生成的句子里把關(guān)于政治的句子挑出來而已,由于 p(x) 覆蓋了大量不同的話題,運氣不好的話可能很久都無法得到關(guān)于政治的句子。對于越長的句子,生成滿足要求的整句話也越難(需要越好的運氣),花費的時間會指數(shù)級增加。這簡直像「無數(shù)多的猴子在無數(shù)多的打字機(jī)上隨機(jī)地打字,并持續(xù)無限長的時間,那么在某個時候他們必然會打出莎士比亞的詩集」,理論上正確,但無法用在實踐中。
PPLM 解決這個問題的方式是,他們用屬性模型通過梯度控制大語言模型。他們逼近實現(xiàn)了 1996 年的論文《Exponential convergence of Langevin distributions and their discrete approximations》中的更高效的 Metropolis-adjusted Langevin 采樣器,而且參考了 Plug-and-Play Generative Networks (PPGN,arxiv.org/abs/1612.00005)中在一對神經(jīng)網(wǎng)絡(luò)上的實現(xiàn)方式。這樣一來,PPLM 生成一個樣本就變成了這樣的簡單的三步:
給定一個部分生成的句子,計算 log(p(x)) 、log(p(a|x)),以及兩者關(guān)于語言模型的隱層表征的梯度。只需要對屬性模型和語言模型都做一次高效的前饋傳播和反饋傳播,這幾個值都可以計算出來。
根據(jù)計算出的梯度,在反饋傳播中,根據(jù)屬性模型的梯度更新語言模型的隱層表征,向著增加 log(p(a|x)) 和 log(p(x)) 的方向移動一小步,也就是增加了生成的文本帶有想要的屬性的概率
由于上一步更新,語言模型的分布被改變,然后采樣一個詞
在每個時間步中,這個過程都會進(jìn)行一次,也就是說表征了以往的值的隱層變量會被一次又一次地更新。
直觀上講,隨著 PPLM 生成一個個詞,它的文本表征也逐漸向著更有可能符合屬性要求的方向發(fā)生變化(高 log(p(a|x)) ),同時也保持了語言模型本來的語言流暢度(在第二步中保持高 log(p(x),避免語言模型本來的表達(dá)能力被破壞)。
Uber AI 的研究人員們也對 PPLM 做了一些相關(guān)的說明:
首先,PPLM 的這種控制模式是可以調(diào)節(jié)的:對隱層文本表征的每一步變化的強(qiáng)度可以調(diào)節(jié);當(dāng)變化強(qiáng)度設(shè)為 0 的時候,這就是原本的語言模型。
其次,PPLM 假設(shè)原有的基礎(chǔ)語言模型是自回歸的,許多現(xiàn)代的語言模型都符合這個要求。實際上,如果語言模型是基于 Transformer 架構(gòu)的,上面的這個方法就可以有高效的實現(xiàn),因為以往的預(yù)測值只能通過 Transformer 的以往的鍵和值對未來的預(yù)測產(chǎn)生影響,和其它的激活值都無關(guān),所以在前向傳播中只有張量需要更新和傳遞。
以及,PPLM 中的采樣器的實現(xiàn),和上面提到的《Exponential convergence of Langevin distributions and their discrete approximations》以及 PPGN,arxiv.org/abs/1612.00005 中的實現(xiàn)有一些重要的不同,感興趣的研究人員可以閱讀論文原文具體了解
最后,Uber AI 這項研究中選用的基礎(chǔ)語言模型是 345M 參數(shù)的 GPT-2,但對于其他的自回歸語言模型也是有效的。
詞袋屬性模型
Uber AI 的研究人員們首先嘗試了最簡單的一類屬性模型,詞袋模型(Bag-of-words),計算方式也就是直白的「符合主題的似然度等于詞袋中每個詞單獨的似然度的和」,換句話說就是含有越多詞袋中的詞,就認(rèn)為句子符合屬性的可能性越高。
在這個實驗中,他們想要生成太空主題的文本,詞袋中含有「planet、galaxy、space、universe」等等詞匯。即便給定不同的開頭,模型生成的幾組結(jié)果都達(dá)到了預(yù)期效果。
在下一個實驗中,他們用同樣的開頭、不同內(nèi)容的詞袋模型嘗試生成不同的主題。我們可以看到,生成的文本帶有詞袋中的詞的概率提升的同時,不在詞袋中、但有相關(guān)性的詞匯的出現(xiàn)概率也增加了。這是因為,PPLM 中更新文本表征的方式是向著目標(biāo)方向的連貫自然的遷移,作者們也通過對照實驗說明這種做法的效果比直接提升想要的關(guān)鍵詞的出現(xiàn)頻率的效果更好。
在苛刻的條件下,PPLM 的表現(xiàn)如何呢?這組實驗中,給定和目標(biāo)話題完全不相關(guān)的開頭,比如「以各種動物/食物開頭,主題是政治」。即便是這樣奇怪的開頭,PPLM 也能生成合理的句子。
判別器屬性模型
詞袋模型固然是一個簡單直觀的話題表征方式,但對于一些更復(fù)雜、深層次的屬性,比如正面和負(fù)面情緒,我們總還是需要更復(fù)雜一些的模型的。這種時候我們就可以使用在標(biāo)注數(shù)據(jù)集上訓(xùn)練出的分類模型。
Uber AI 的研究人員們設(shè)計的分類模型把原本的語言模型中提取出的嵌入表征作為輸入,用一個單層分類器結(jié)構(gòu)預(yù)測類別標(biāo)簽。這個模型中含有的參數(shù)可以不超過 5000 個,相比于語言模型的規(guī)??芍^不值一提。
這樣得到的 PPLM-Discrim 模型生成正面和負(fù)面情感的文本效果如下圖
多個屬性模型聯(lián)合使用
人類有能力在一段話中覆蓋多種主題,PPLM 也可以。Uber AI 的研究人員們嘗試了把多個詞袋模型和一個分類模型一起使用,可以讓一段話同時符合「冬天、政治、廚房」的主題,而且有正面情緒。圖中第二段同時符合「計算機(jī)、幻想、釣魚鏈接」主題。
在前面的敘述和例子中我們都看到了,PPLM 架構(gòu)可以使用任意可微的屬性模型引導(dǎo)語言模型生成各種不同屬性或者主題的文本。但在應(yīng)用中我們還會遇到一種問題,由于大規(guī)模語言模型都是在海量的互聯(lián)網(wǎng)文本上訓(xùn)練的,這些文本經(jīng)常含有偏見或者使用不友善的(罵人)的詞匯。論文 arxiv.org/abs/1908.07125 就展示了,如果用對抗性攻擊的思路設(shè)計文本開頭,可以讓 GPT-2 續(xù)寫出帶有種族主義的段落。這種狀況會限制語言模型的安全應(yīng)用場景。
由于 PPLM 使用梯度來更新語言表征,解決這種問題就要簡單得多,只需要訓(xùn)練一個惡意文本分類器,把它作為屬性模型,然后使用負(fù)梯度更新語言表征,也就是減小生成文本符合屬性的概率即可。研究人員們選用了能夠讓原本的 GPT-2 模型輸出惡意文本的對抗性文本開頭,在應(yīng)用 PPLM 后,繼續(xù)輸出對抗性文本的概率從原來的 63.6% 降低到了 4.6%。不過,不僅確保模型的輸出完全符合設(shè)計者的意圖還需要更多后續(xù)研究,我們也需要用更多方法避免惡意的使用者反倒利用 PPLM 的特點專門生成惡意文本。
在這項研究中,Uber AI 的研究人員們提出了可以在使用過程中引導(dǎo)大規(guī)模預(yù)訓(xùn)練語言模型輸出不同主題、不同風(fēng)格文本的 PPLM,而且可以靈活地搭配一個到多個詞袋模型、小型判別式模型等等作為屬性模型,在細(xì)粒度地控制生成文本內(nèi)容和風(fēng)格的同時,即保持了文本的合理和流暢,也避免了重新訓(xùn)練或者精細(xì)調(diào)節(jié)語言模型。PPLM 中的預(yù)訓(xùn)練語言模型可以使用各種自回歸語言模型,屬性模型也可以使用各種可微模型,這都意味著 PPLM 還有很大的使用空間。
閱讀論文:Plug and Play Language Models: a Simple Approach to Controlled Text Generation,https://arxiv.org/abs/1912.02164
代碼開源:
https://github.com/uber-research/PPLM (單獨 PPLM)
https://github.com/huggingface/transformers/tree/master/examples/pplm (集成 Transformer)
Demo:https://transformer.huggingface.co/model/pplm
via https://eng.uber.com/pplm/,雷鋒網(wǎng) AI 科技評論編譯
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。