Uber AI簡單方法實現大規模語言模型的精細控制

2020-12-27 雷鋒網

雷鋒網(公眾號:雷鋒網) AI 科技評論按:OpenAI 的 GPT-2 曾經掀起的「大規模語言模型到底水平多高、到底有沒有危害」的口水仗慢慢冷下去了,而語言模型的實用性問題也越來越展現出來:如果很難控制一個語言模型的輸出,那可能就很難找到它的實際應用,只能淪為刷分工具。

近期,Uber AI 研究院的一篇論文《Plug and Play Language Models: A Simple Approach To Controlled Text Generation》(https://arxiv.org/abs/1912.02164)中介紹了一種簡單、高效的精細控制方法,可以輕鬆地讓大規模語言模型生成指定的主題、風格的文本,而且還有很廣泛的適用性。Uber AI 的研究人員們把它比喻為「讓小老鼠控制一隻猛獁象」。雷鋒網 AI 科技評論把論文的解讀博客編譯如下。

一個實際的挑戰:基於預訓練模型的條件文本生成

2017 年穀歌提出的基於注意力的 Transformer 網絡架構為自然語言處理開闢了一個全新的時代。從此之後,基於 Transformer 改進的更大、更大的模型層出不窮,基於深度學習的自然語言處理方法也在各種各樣的任務中取得越來越好的成績。

隨著 BERT、GPT-2 之類的大規模語言模型出現,NLP 研究者們通過實驗表明了只需要用簡單的目標函數在超大規模的無標註語料上訓練,得到的語言模型就可以在語言建模任務(給定一組開頭以後向後續寫)中得到前所未有的流暢度,文本的自然、合理程度可以接近人類水平。

比如,給定一個開頭「這裡的食物不好吃」,一個語言模型(比如 GPT-2)能續寫成這樣的看上去相當合理的一段話「這裡的食物不好吃,店員又懶又粗魯。這食物真讓人喜歡不起來,即便我的要求一點也不高。」

不過,雖然這些模型生成的句子體現出了拼寫、語法、語言習慣等等複雜的語言知識,但想要具體地控制模型生成的內容仍然非常困難。換句話說,雖然模型有能力生成各種各樣不同的句子,或者為一個給定的開頭續寫出很多不同的段落,但我們很難指定讓模型生成某一種風格的、某一種話題的、某一種敘述邏輯的文字。比如,同樣是以開頭「這裡的食物不好吃」進行續寫,人類可以欲揚先抑,最後得到一個正面的結論,也可以掛羊頭賣狗肉,話說到一半慢慢從講食物變成講政治的。想讓語言模型做到這些就非常困難。

在這篇論文裡,Uber AI 的研究人員們在這個問題上做出了一些突破。我們先看一個例子,他們用他們的方法要求模型生成一段正面的續寫,效果是:「這裡的食物很糟糕,但還有音樂、故事和魔力!Avenged Sevenfold 的搖滾音樂劇演得太精彩,以後在全世界都能看到。」文本表達的情感從負面轉變成了正面,但還是挺連貫自然的。

在此之前,全世界的 NLP 研究人員們提出過各種各樣的條件文本生成方式,包括,1,從一個預訓練語言模型開始,做精細調節,以便讓它始終都能生成某種特定風格的句子;2,從零開始訓練一個大型條件生成模型;3,不改變這個大的語言模型,而是通過關鍵 n 元組替換的方式,調節已經生成的句子的風格。

Uber AI 這篇論文帶來了一種全新的有控制的文本生成方式,他們稱之為「the Plug and Play Language Model」(即插即用語言模型,PPLM)。通過 PPLM,用戶可以向大型非條件性的生成模型中靈活地插入一個或多個屬性模型,這些插入的模型可以代表不同的想要控制的屬性。PPLM 的最大優點是不需要對語言模型做任何額外的改動(不需要重新訓練或者精細調節),就讓資源不足的研究人員也可以直接在預訓練語言模型的基礎上生成條件文本。

如何駕馭一頭猛獁象

NLP 研究人員們目前開發的最大的、語言能力最強的語言模型都非常大,動輒有數十億的參數,訓練它們需要大量的計算資源(從零訓練一個模型,租算力大概需要六萬美元),而且訓練這些模型還需要海量的文本數據,即便模型的代碼是開源的,這些訓練數據也通常不是開源的。在許多意義上,大規模語言模型就像猛獁象一樣,它們聰明、有力,但是它們的行動又隨意又笨重。

這樣的語言模型帶來的結果就是,除了那些有最充沛的資源和資金的研究人員之外,其它的研究人員和開發者都只能在無論如何都不理想的情境中三選一:1,直接使用公開的預訓練模型(雖然有好的語言建模能力但無法完全匹配他們的需求);2,在小一些的數據集上對預訓練模型做精細調節(但一旦出現災難性遺忘,就會讓模型的表現大幅下降);3,需求不符只能從零訓練新模型,但預算有限,只能訓練小得多的模型(表現也自然也會有明顯差距)。

Uber AI 提出的 PPLM 就能在這樣的困境面前起到很大幫助,需要符合自己需求、且表現優秀的語言模型的研究者和開發者,不再需要想辦法訓練自己的模型,只需要用幾個小的屬性模型控制大預訓練模型的生成,就可以達到目標。一個屬性模型可以只有預訓練模型的百萬分之一大,同時仍然有很強的引導能力,就像在猛獁象的頭頂坐了一隻小老鼠,就能夠靈活地控制讓猛獁象往哪裡走。

控制一個語言模型的不成功方法

語言模型有幾類,對應幾種不同的分布。

首先有非條件性的語言模型,它的分布是 p(x),是所有文本上的一個概率分布。GPT-2 之類的非條件性的語言模型就是建模了這樣的分布。這樣的語言模型是通用的,可以為許多不同種類的話題生成流暢的文本。

其次,條件性語言模型的分布是 p(x|a),這就是我們的目標。在給定某種屬性 a 之後,這種假想模型就可以生成帶有這種屬性的文本。

接下來,屬性模型的分布是 p(a|x),它是根據給定的句子輸入 x 計算句子帶有屬性 a 的概率。比如,經過屬性模型計算,某個句子有 10% 的可能性是正面情緒的,以及有 85% 的可能性是關於政治的。屬性模型可以很小、很容易訓練,僅從直觀上來看,判斷某個句子是否含有某種屬性就是個分類任務,要比寫出這樣的句子簡單得多;尤其是,如果在語言模型學習的語言表徵上訓練這樣的屬性(識別)模型,OpenAI 的論文《Improving Language Understanding by Generative Pre-Training》就已經表明了可以輕鬆地訓練一個表現優秀的小模型。在 Uber AI 的實驗中,一個單層的、4000 個參數的屬性模型就能在屬性識別和文本生成引導中發揮很好的效果。

那麼我們想要的條件性語言模型,也就是 p(x|a) 從哪裡來呢?幸運的是,根據貝葉斯法則,這個模型可以用第一個和第三個模型表示出來,也就是:

p(x|a) ∝ p(a|x) p(x)

不過,雖然這種方式讓我們可以方便地計算概率(「這個句子符不符合我們想要的樣子」),但我們很難從這種表達中採樣。我們可以先嘗試常見的拒絕採樣或者重要性採樣,從 p(x) 分布開始逐一採樣篩選—— 這種做法理論上可行,但實際操作起來,要麼會得到有偏倚的結果,要麼運行速度非常慢。想用這種方式生成一個談政治的句子,大概會是這樣的狀況:

  1. 從 p(x) 中採樣得到一個句子 x

  2. 把句子 x 輸入 p(a|x) 計算它是否是關於政治的

  3. 如果不是,重複第一步

顯然,這就是從隨機生成的句子裡把關於政治的句子挑出來而已,由於 p(x) 覆蓋了大量不同的話題,運氣不好的話可能很久都無法得到關於政治的句子。對于越長的句子,生成滿足要求的整句話也越難(需要越好的運氣),花費的時間會指數級增加。這簡直像「無數多的猴子在無數多的打字機上隨機地打字,並持續無限長的時間,那麼在某個時候他們必然會打出莎士比亞的詩集」,理論上正確,但無法用在實踐中。

用梯度控制大規模語言模型

PPLM 解決這個問題的方式是,他們用屬性模型通過梯度控制大語言模型。他們逼近實現了 1996 年的論文《Exponential convergence of Langevin distributions and their discrete approximations》中的更高效的 Metropolis-adjusted Langevin 採樣器,而且參考了 Plug-and-Play Generative Networks (PPGN,arxiv.org/abs/1612.00005)中在一對神經網絡上的實現方式。這樣一來,PPLM 生成一個樣本就變成了這樣的簡單的三步:

  1. 給定一個部分生成的句子,計算 log(p(x)) 、log(p(a|x)),以及兩者關於語言模型的隱層表徵的梯度。只需要對屬性模型和語言模型都做一次高效的前饋傳播和反饋傳播,這幾個值都可以計算出來。

  2. 根據計算出的梯度,在反饋傳播中,根據屬性模型的梯度更新語言模型的隱層表徵,向著增加 log(p(a|x)) 和 log(p(x)) 的方向移動一小步,也就是增加了生成的文本帶有想要的屬性的概率

  3. 由於上一步更新,語言模型的分布被改變,然後採樣一個詞

在每個時間步中,這個過程都會進行一次,也就是說表徵了以往的值的隱層變量會被一次又一次地更新。

直觀上講,隨著 PPLM 生成一個個詞,它的文本表徵也逐漸向著更有可能符合屬性要求的方向發生變化(高 log(p(a|x)) ),同時也保持了語言模型本來的語言流暢度(在第二步中保持高 log(p(x),避免語言模型本來的表達能力被破壞)。

Uber AI 的研究人員們也對 PPLM 做了一些相關的說明:

  • 首先,PPLM 的這種控制模式是可以調節的:對隱層文本表徵的每一步變化的強度可以調節;當變化強度設為 0 的時候,這就是原本的語言模型。

  • 其次,PPLM 假設原有的基礎語言模型是自回歸的,許多現代的語言模型都符合這個要求。實際上,如果語言模型是基於 Transformer 架構的,上面的這個方法就可以有高效的實現,因為以往的預測值只能通過 Transformer 的以往的鍵和值對未來的預測產生影響,和其它的激活值都無關,所以在前向傳播中只有張量需要更新和傳遞。

  • 以及,PPLM 中的採樣器的實現,和上面提到的《Exponential convergence of Langevin distributions and their discrete approximations》以及 PPGN,arxiv.org/abs/1612.00005 中的實現有一些重要的不同,感興趣的研究人員可以閱讀論文原文具體了解

  • 最後,Uber AI 這項研究中選用的基礎語言模型是 345M 參數的 GPT-2,但對於其他的自回歸語言模型也是有效的。

不同屬性模型的不同表現

詞袋屬性模型

Uber AI 的研究人員們首先嘗試了最簡單的一類屬性模型,詞袋模型(Bag-of-words),計算方式也就是直白的「符合主題的似然度等於詞袋中每個詞單獨的似然度的和」,換句話說就是含有越多詞袋中的詞,就認為句子符合屬性的可能性越高。

在這個實驗中,他們想要生成太空主題的文本,詞袋中含有「planet、galaxy、space、universe」等等詞彙。即便給定不同的開頭,模型生成的幾組結果都達到了預期效果。

同一主題、不同開頭實驗

在下一個實驗中,他們用同樣的開頭、不同內容的詞袋模型嘗試生成不同的主題。我們可以看到,生成的文本帶有詞袋中的詞的概率提升的同時,不在詞袋中、但有相關性的詞彙的出現概率也增加了。這是因為,PPLM 中更新文本表徵的方式是向著目標方向的連貫自然的遷移,作者們也通過對照實驗說明這種做法的效果比直接提升想要的關鍵詞的出現頻率的效果更好。

同一開頭、不同主題實驗

在苛刻的條件下,PPLM 的表現如何呢?這組實驗中,給定和目標話題完全不相關的開頭,比如「以各種動物/食物開頭,主題是政治」。即便是這樣奇怪的開頭,PPLM 也能生成合理的句子。

有挑戰性的開頭和主題

判別器屬性模型

詞袋模型固然是一個簡單直觀的話題表徵方式,但對於一些更複雜、深層次的屬性,比如正面和負面情緒,我們總還是需要更複雜一些的模型的。這種時候我們就可以使用在標註數據集上訓練出的分類模型。

Uber AI 的研究人員們設計的分類模型把原本的語言模型中提取出的嵌入表徵作為輸入,用一個單層分類器結構預測類別標籤。這個模型中含有的參數可以不超過 5000 個,相比於語言模型的規模可謂不值一提。

這樣得到的 PPLM-Discrim 模型生成正面和負面情感的文本效果如下圖

多個屬性模型聯合使用

人類有能力在一段話中覆蓋多種主題,PPLM 也可以。Uber AI 的研究人員們嘗試了把多個詞袋模型和一個分類模型一起使用,可以讓一段話同時符合「冬天、政治、廚房」的主題,而且有正面情緒。圖中第二段同時符合「計算機、幻想、釣魚連結」主題。

多個屬性模型聯合,多主題文本生成

避免語言模型生成有害文本

在前面的敘述和例子中我們都看到了,PPLM 架構可以使用任意可微的屬性模型引導語言模型生成各種不同屬性或者主題的文本。但在應用中我們還會遇到一種問題,由於大規模語言模型都是在海量的網際網路文本上訓練的,這些文本經常含有偏見或者使用不友善的(罵人)的詞彙。論文 arxiv.org/abs/1908.07125 就展示了,如果用對抗性攻擊的思路設計文本開頭,可以讓 GPT-2 續寫出帶有種族主義的段落。這種狀況會限制語言模型的安全應用場景。

由於 PPLM 使用梯度來更新語言表徵,解決這種問題就要簡單得多,只需要訓練一個惡意文本分類器,把它作為屬性模型,然後使用負梯度更新語言表徵,也就是減小生成文本符合屬性的概率即可。研究人員們選用了能夠讓原本的 GPT-2 模型輸出惡意文本的對抗性文本開頭,在應用 PPLM 後,繼續輸出對抗性文本的概率從原來的 63.6% 降低到了 4.6%。不過,不僅確保模型的輸出完全符合設計者的意圖還需要更多後續研究,我們也需要用更多方法避免惡意的使用者反倒利用 PPLM 的特點專門生成惡意文本。

總結

在這項研究中,Uber AI 的研究人員們提出了可以在使用過程中引導大規模預訓練語言模型輸出不同主題、不同風格文本的 PPLM,而且可以靈活地搭配一個到多個詞袋模型、小型判別式模型等等作為屬性模型,在細粒度地控制生成文本內容和風格的同時,即保持了文本的合理和流暢,也避免了重新訓練或者精細調節語言模型。PPLM 中的預訓練語言模型可以使用各種自回歸語言模型,屬性模型也可以使用各種可微模型,這都意味著 PPLM 還有很大的使用空間。

閱讀論文:Plug and Play Language Models: a Simple Approach to Controlled Text Generation,https://arxiv.org/abs/1912.02164

代碼開源:

Demo:https://transformer.huggingface.co/model/pplm 

via https://eng.uber.com/pplm/,雷鋒網 AI 科技評論編譯


雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

相關焦點

  • Uber 開源 Plato:擴展性極強的開發測試會話 AI 平臺,可實現多智能...
    這種設置可以促進多智能體學習的研究,其中智能體需要學習如何生成語言以執行任務,以及在多方交互的子領域中進行研究(會話狀態跟蹤、會話輪控制等等)。會話原則定義了每個智能體可以理解的內容(實體或含義的本體,例如:價格、位置、偏好、烹飪類型等)以及它可以做什麼(詢問更多信息、提供一些信息、調用 API 等)。
  • 500億參數,支持103種語言:谷歌推出「全球文字翻譯」模型
    來自谷歌的研究者提出了一種能夠翻譯 103 種語言的大規模多語言神經機器翻譯模型,在數據豐富和匱乏的語種翻譯中都實現了顯著的性能提升。他們在 250 億個的句子對上進行訓練,參數量超過 500 億。在過去的幾年裡,由於神經機器翻譯(NMT)的發展,機器翻譯(MT)系統的質量得到了顯著提升,打破了世界各地的語言障礙。
  • AIOpen 預訓練語言模型專刊徵稿
    2018 年 ELMo、BERT 和 GPT 的成功發布,表明了預訓練語言模型(PLM)的成功,隨後又在自然語言理解和生成方面取得了重大突破。目前,在探索更有效的預訓練架構方面,已經做了很多卓有成效的工作,比如使用跨模態數據、跨語言數據和結構化知識等方法改進預訓練語言模型,或將 PLM 創新地應用於各種與 NLP 相關的任務。
  • OpenAI親談:我們眼中的GPT-3、大規模語言模型的局限性與出路在哪
    但這種方法也有許多亟待解決的問題,比如:誰可以訪問,為什麼可以訪問?要如何提供模型訪問權限來支持大型社區進行大規模的團隊協作(檢查模型的潛在誤用和制定緩解策略)?2)部署參會者討論了部署大規模語言模型可能帶來的道德和社會挑戰,以及應對這些挑戰的方法。
  • XLM —— 基於BERT的跨語言模型
    可以看這篇我們對BERT的總結:https://www.lyrn.ai/2018/11/07/explained-bert-state-of-the-art-language-model-for-nlp/2018年Lample et al.提出了將Transformer 和基於短語的統計機器翻譯技術(PBSMT)相結合的模型。後者給出了不同語言中短語的概率表。
  • 超過GPT3的谷歌萬億參數的AI語言模型
    正如研究人員在一篇詳細介紹他們工作的論文中指出的那樣,大規模訓練是通往強大模型的有效路徑。簡單的架構,在大量數據集和參數數的支持下,超越了遠為複雜的算法。但是,有效的大規模訓練是非常耗費計算的。這就是為什麼研究人員追求他們所謂的Switch Transformer的原因,這是一種 "稀疏激活 "的技術,它只使用模型的權重子集,或者說在模型中轉換輸入數據的參數。
  • 不以英語為中心,百種語言互譯,FB開源首個單一多語言MT模型
    典型的 MT 系統需要為每種語言和每種任務構建單獨的 AI 模型,但這種方法無法在 Facebook 上進行有效推廣,因為人們在數十億個帖子中發布超過 160 種語言的內容。先進的多語言處理系統能夠同時處理多種語言,但由於依賴英語數據來彌合源語言和目標語言之間的差距,在準確性上會有所折中。
  • Facebook AI 用深度學習實現程式語言轉換,代碼庫遷移不再困難!
    自我監督的培訓對於在程式語言轉換中特別重要。傳統的監督學習方法依賴於大規模並行數據集的訓練,但是對於從COBOL到C ++或從C ++到Python來說,並不適用。TransCoder完全依賴僅用一種程式語言編寫的原始碼。它不需要程式語言方面的專業知識,並且很容易推廣到其他程式語言。
  • 對比人工翻譯及自然語言處理翻譯,ai翻譯存在哪些優勢?
    舉個簡單的例子,微博上一般都是這樣子對話的:這種對話很好「產生」,因為人的語言翻譯一般很難做出來,從整體上描述了人對話過程,這樣就完成了對話的設計和「模仿」。當然,單這麼說也不嚴謹,可能有的翻譯有點細節交流上的錯誤。另外,比如歌詞有時也可以通過一些對比的對話(bingquery)自動生成,原因在於歌詞是「不可編碼」的。這麼理解,也就沒問題了。
  • 谷歌提出XTREME:評估跨語言的大規模多語言多任務基準
    在自然語言處理中,為了克服數據稀疏性問題,有許多方法利用多語言的共享結構進行訓練。從歷史上看,這些方法大多集中於用多種語言執行特定任務。過去幾年,在深度學習進步的推動下,試圖學習通用多語言表示(如 mBERT、XLM、XLM-R)方法的數量有所增加,這些方法旨在獲取跨語言共享知識,這些知識對許多任務都是有用的。
  • 4米以內實現遠程手勢控制!谷歌AI新研究讓你拋掉鍵鼠操控屏幕
    在行動裝置上實時、同步地感知人體姿勢、臉部標記和手勢跟蹤等可以實現各種有趣的應用,例如健身和運動分析、姿態控制和手語識別、擴增實境效果等等。谷歌的MediaPipe 是一個開源框架,專門為複雜的感知管道設計,利用加速推理(例如 GPU 或 CPU) 等已經為這些任務提供了快速、準確、獨立的解決方案。
  • 清華大學韓旭:神經關係抽取模型 | AI研習社71期大講堂
    雷鋒網AI研習社按:關係抽取是自然語言處理中的重要任務,也是從文本中挖掘知識的基本途徑之一。深度學習在關係抽取中的研究在近幾年取得了廣泛關注,其中基於遠距離監督、帶有注意力機制的神經網絡模型成為解決問題的主要方法。在本次公開課中,講者將梳理神經模型在關係抽取中的發展脈絡,並分享相關領域的最新工作進展。
  • 自然語言處理:語言模型與評價方法
    本文介紹了語言模型的基本概念以及介紹評價語言模型好壞的標準,並給出了使用TensorFlow實現該損失函數的具體代碼。本文選自《TensorFlow:實戰Google深度學習框架(第2版)》,了解本書詳情請點擊閱讀原文。
  • Uber 開源 AI 可視化調試工具 Manifold,2 個工作流讓計算性能提升...
    但考慮到機器學習模型本質上是不透明的複雜性,則需要通過新興的機器學習可視化來解決這個問題。以前的機器學習可視化方法通常包括:直接可視化內部結構或模型參數和受底層算法約束的設計,但這可能導致無法擴展到可以處理更大範圍內的通用用例。
  • CMU博士生楊植麟:如何讓AI像人類一樣學習自然語言?| 分享總結
    分享主題:讓人工智慧像人類一樣學習自然語言:無監督學習和情景化學習的最新進展分享提綱無監督學習:高秩自然語言模型 (ICLR 2018)基於生成式模型的半監督學習:利用無標註文本提升問答 (ACL 2017, NIPS
  • AI | ResNeXt 深入解讀與模型實現
    很多人認為ResNeXt沒什麼創新點,因為一來結構照搬Inception;二來,實現只加了個分組卷積,變化微乎其微;因此乏善可陳。但這反而是ResNeXt的閃光點,只是這閃光點略有些眩目而已。因為若仔細想想,「照搬Inception」必然導致模型複雜,而實現起來卻又「變化微乎其微」,這兩者之間有巨大的矛盾。
  • 想真正的做好ai的話,你不能忽視語言本身的魅力
    而語音技術的存儲和實時識別,用以訓練模型的數據文件,都是可以計算機控制來進行存儲與處理的。不是沒有這個功能,而是沒有替代品,某諾亞方舟手機算嗎,某錘方舟手機算嗎,都是能搭載人工智慧ai的手機。老羅說小老闆搞「人工智慧」,就是搞不明白,做的是概念,小老闆啥都沒有,人工智慧?你們還是做輕薄款吧。
  • 國產超大規模AI預訓練模型發布,可實現「用圖生文」等任務
    以上詩句題為《詠智利日全食》,來自人工智慧模型「文匯」的手筆。人工智慧模型「文匯」是北京智源人工智慧研究院近日發布的一款面向認知的超大規模新型預訓練模型。它旨在探索解決當前大規模自監督預訓練模型不具有認知能力的問題,參數規模達113億,僅次於OpenAI1月初發布的DALL·E模型的120億參數量,是目前中國規模最大的預訓練模型。
  • 國產超大規模AI預訓練模型發布 可實現「用圖生文」等任務
    以上詩句題為《詠智利日全食》,來自人工智慧模型「文匯」的手筆。   人工智慧模型「文匯」是北京智源人工智慧研究院近日發布的一款面向認知的超大規模新型預訓練模型。它旨在探索解決當前大規模自監督預訓練模型不具有認知能力的問題,參數規模達113億,僅次於OpenAI1月初發布的DALL·E模型的120億參數量,是目前中國規模最大的預訓練模型。
  • Facebook新AI模型SEER實現自監督學習,LeCun大讚最有前途
    該模型包含10億個參數,可以從網上任何未標記圖像的中學習,並在一系列計算機視覺基準上取得了先進的結果。Facebook的這一突破能否實現計算機視覺的自監督學習革命?無需標籤,自我分析數據!Facebook的新AI模型在革計算機視覺的命?