迄今最大規模?OpenAI通用語言模型GPT-2論文解析

OpenAI最近似乎搞了個大新聞,隨手一搜,”最大模型”、”15億參數”、”無需領域數據”等等躍然在目。當然現在是標題黨的年代,為了吸引眼球,外行媒體的誇張手法也能理解。當然最大的爭議還是他們在官網上解釋為什麼只提供小模型的理由:為了防止大模型用於生成欺詐和有歧視性的文章,我們只發布小規模的模型(Due to concerns about large language models being used to generate deceptive, biased, or abusive language at scale, we are only releasing a much smaller version of GPT-2 along with sampling code)。這個當然引起了軒然大波,使得很多人在Reddit上吐槽。聽這語氣,人工智能已經實現了,為了保護人類,他們不能把這個惡魔放出來。實際情況怎麼樣呢?別聽專家的,最好還是我們自己讀讀論文跑跑代碼吧。


迄今最大規模?OpenAI通用語言模型GPT-2論文解析


目錄

  • 背景簡介
  • BERT的缺陷
  • 語言模型
  • Children’s Book
  • LAMBADA
  • Winograd Schema Challenge
  • Reading Comprehension
  • Summarization
  • 機器翻譯
  • Question Answering
  • 大翻盤
  • 代碼

背景簡介

2018年深度學習在NLP領域取得了比較大的突破,最大的新聞當屬Google的BERT模型橫掃各大比賽的排行榜。作者認為,深度學習在NLP領域比較重點的三大突破為:Word Embedding、RNN/LSTM/GRU+Seq2Seq+Attention+Self-Attention機制和Contextual Word Embedding(Universal Sentence Embedding)。

Word Embedding解決了傳統機器學習方法的特徵稀疏問題,它通過把一個詞映射到一個低維稠密的語義空間,從而使得相似的詞可以共享上下文信息,從而提升泛化能力。而且通過無監督的訓練可以獲得高質量的詞向量(比如Word2vec和Glove等方法),從而把這些語義知識遷移到數據較少的具體任務上。但是Word Embedding學到的是一個詞的所有語義,比如bank可以是”銀行”也可以是”水邊。如果一定要用一個固定的向量來編碼其語義,那麼我們只能把這兩個詞的語義都編碼進去,但是實際一個句子中只有一個語義是合理的,這顯然是有問題的。

這時我們可以通過RNN/LSTM/GRU來編碼上下文的語義,這樣它能學到如果周圍是money,那麼bank更可能是”銀行”的語義。最原始的RNN由於梯度消失和梯度爆炸等問題很難訓練,後來引入了LSTM和GRU等模型來解決這個問題。最早的RNN只能用於分類、迴歸和序列標註等任務,通過引入兩個RNN構成的Seq2Seq模型可以解決序列的變換問題。比如機器翻譯、摘要、問答和對話系統都可以使用這個模型。尤其機器翻譯這個任務的訓練數據比較大,使用深度學習的方法的效果已經超過傳統的機器學習方法,而且模型結構更加簡單。到了2017年,Google提出了Transformer模型,引入了Self-Attention。Self-Attention的初衷是為了用Attention替代LSTM,從而可以更好的並行(因為LSTM的時序依賴特效很難並行),從而可以處理更大規模的語料。Transformer出來之後被廣泛的用於以前被RNN/LSTM/GRU霸佔的地盤,Google更是在Transformer的論文裡使用”Attention is all you need”這樣霸氣的標題。現在Transformer已經成為Encoder/Decoder的霸主。

雖然RNN可以學到上下文的信息,但是這些上下文的語義是需要通過特定任務的標註數據使用來有監督的學習。很多任務的訓練數據非常少並且獲取成本很高,因此在實際任務中RNN很難學到複雜的語義關係。當然通過Multi-Task Learning,我們可以利用其它相關任務的數據。比如我們要做文本分類,我們可以利用機器翻譯的訓練數據,通過同時優化兩個(多個)目標,讓模型同時學到兩個任務上的語義信息,因為這兩個任務肯定是共享很多基礎語義信息的,所以它的效果要比單個任務好。但即使這樣,標註的數據量還是非常有限的。

因此2018年的研究熱點就變成了怎麼利用無監督的數據學習Contextual Word Embedding(也叫做Universal Sentence Embedding),也就是通過無監督的方法,讓模型能夠學到一個詞在不同上下文的不同語義表示方法。當然這個想法很早就有了,比如2015年的Skip Thought Vector,但是它只使用了BookCorpus,這隻有一萬多本書,七千多萬個句子,因此效果並沒有太明顯的提升。

在BERT之前比較大的進展是ELMo、ULMFiT和OpenAI GPT。尤其是OpenAI GPT,它在BERT出現之前已經橫掃過各大排行榜一次了,當然Google的BERT又橫掃了一次,並且PR效果更加明顯。所以OpenAI看風頭都被Google強勁,自然有些羨慕嫉妒恨,也就有了今天我們要討論的OpenAI GPT-2。

UMLFiT比較複雜,而且效果也不是特別好,我們暫且不提。ELMo和OpenAI GPT的思想其實非常非常簡單,就是用海量的無標註數據學習語言模型,在學習語言模型的過程中自然而然的就學到了上下文的語義關係。它們倆都是使用Transformer來學習語言模型,但是在進行下游任務處理的時候就有所不同,ELMo是把它當成特徵。拿分類任務來說,輸入一個句子,用ELMo把它掃一次,這樣就可以得到每個詞的表示,這個表示是考慮上下文的,因此”He deposited his money in this bank”和”His soldiers were arrayed along the river bank”中的兩個bank的向量是不同的。下游任務用這些向量來做分類,它會增加一些網絡層,但是ELMo語言模型的參數是固定的。而OpenAI GPT不同,它直接用特定任務來Fine-Tuning Transformer的參數。因為用特定任務的數據來調整Transformer的參數,這樣它更可能學習到與這個任務特定的上下文語義關係,因此效果也更好。

而BERT和OpenAI GPT的方法類似,也是Fine-Tuning的思路,但是它解決了OpenAI GPT(包括ELMo)單向信息流的問題,同時它的模型和語料庫也更大。依賴Google強大的計算能力和工程能力,BERT橫掃了OpenAI GPT,在後者霸主寶座屁股還沒坐熱的時候就把它趕下臺。成王敗寇,再加上Google的PR能力,很少還有人記得OpenAI GPT的貢獻了。要說BERT的學術貢獻,最多是利用了Mask LM(這個模型在上世紀就存在了)和Predicting Next Sentence這個Multi-task Learning而已,其餘的方法都是完全follow OpenAI GPT的。因此OpenAI心情鬱悶也就可以理解了,這次搞出個GPT-2也是想出來露個臉,刷一下存在感。

更多技術細節,有興趣的讀者可以參考詳解谷歌最強NLP模型BERT或者參與作者的BERT課程。地址:http://fancyerii.github.io/2019/03/05/bert-prerequisites/

BERT的缺陷

如果你是OpenAI GPT的科學家,你會怎麼辦呢?當然如果能提出一個更加突破性的模型,然後在各大比賽上橫掃BERT,這自然是最理想的。但是學術研究又不能像媒體宣傳的那樣天天突破(作者訂閱的各種公眾號倒是每天都能看到突破,因此經常被震驚),要拼資源和算力那顯然拼不過Google。其實除了OpenAI,其它公司也想搞點新聞,比如Microsoft最近搞了個MT-DNN,據說效果要比BERT好(一點),但是由於好的有限,而且有沒有源代碼甚至模型,誰知道是不是用tricky的方法過擬合這些數據集呢?

我們回到OpenAI,顯然短期類無法超過BERT,Google開源的BERT模型橫掃了其它更多榜單,彷彿挑釁般的對其他對手說:不服你跑個分啊。被當面打臉,顯然很鬱悶。那怎麼辦呢?OpenAI的科學家突然找到了BERT模型的一個弱點——它不是”正常的”語言模型,因此不能生成句子。BERT的Mask LM只能用來做完形填空題,也就是用手遮住一個句子的某個單詞,然後讓它猜哪個詞更可能,但是普通的語言模型是可以生成句子的。抓住這個點之後,OpenAI大作文章。它使用Common Crawl的8百萬文章(共40GB,不知道是否壓縮過)訓練了一個15億(1542M)參數的”最大模型”,不過參數雖然很多,但是訓練數據確實有點少。作者訓練箇中文詞向量還得搞個幾千萬的百科文章,Google的數據那得用TB來做單位吧。因此作者在文中強調模型是underfit的(All models still underfit Web-Text and held-out perplexity has as of yet improved givenmore training time.),參數多,數據少,那自然不能訓練太久,否則過擬合後效果更差(但是生成句子過擬合無所謂,直接把莎士比亞全集的句子背出來肯定能震驚很多人)。訓練了這個模型用來刷榜?我猜測作者嘗試過,結果呢?那自然就不用說了,否則我們看到的就不是現在的這個新聞了。

不過沒關係,他們的目標是BERT的軟肋——不能生成句子(段落和篇章當然就更不行了)。我們來看看論文的實驗是怎麼設計的:

語言模型

BERT不是普通的語言模型吧,好,那咱們來PK一下(你是零分啊)。但是用Transformer去跑語言模型這樣的灌水文章別人早發過了,沒啥意思。因此要搞出一個Zero-shot的概念:你們在一個很小的語料庫訓練一個語言模型然後大家比賽,俺不這麼跟你玩。俺用很大的語料訓練一個模型,然後不用你的數據,效果還能超過你們在小數據上的效果。

當然這個概念還是不錯的,結果如下圖所示。

迄今最大規模?OpenAI通用語言模型GPT-2論文解析

圖:不同數據集上語言模型的PPL,越小越好

我們看到,除了最後一個1BW的很大的語料庫,OpenAI都超過了它們。其實這也說明了,如果有很多的領域數據,還是領域數據好使,這在機器翻譯系統裡也得到了驗證。如果訓練數據較少,我們通常使用預訓練的詞向量作為模型詞向量的初始值。如果訓練數據非常少,我們通常固定預訓練的詞向量;如果訓練數據還可以,那麼就Fine-Tuning一下。如果訓練數據很多,比如在機器翻譯任務裡,預訓練的詞向量和隨機初始化的效果沒什麼區別(開始的時候好一點,因為比較是相對較好的初始值)。

Children’s Book

類似於完型填空,其實BERT是可以搞的。但是NLP的比賽那麼多,Google總不能都做完吧。國內很多AI公司天天發PR稿:我們又獲得了一個世界第一。其實很多外行的讀者並不知道這個比賽只有5個參數選手,可能其中2個還是某個在校學生擠出週末打遊戲的時間去做的。

迄今最大規模?OpenAI通用語言模型GPT-2論文解析

圖:Children’s Book任務

效果似乎還不錯,離人類的水平相差不遠。

LAMBADA

PPL從99.8降到8.6,測試的準確率從19%提高到52.66%。作者不瞭解這個比賽,不做點評。

Winograd Schema Challenge

63%到70.7%,似乎還不錯。作者也不瞭解這個比賽,不做點評。

Reading Comprehension

這是最近很火的比賽類型,有很多數據集,這裡使用的是CoQA,BERT的baseline是89的F1得分(越大越好),GPT-2的得分是55。這似乎差得太遠啊,但是作者有高大上的解釋:BERT是用來監督數據的,俺們不用訓練數據。有點像考試不及格的學渣對學霸說,雖然你得了89分,但是你天天熬夜背題,俺天天翹課也差點及格了,說明俺比你有天賦。學霸說:那你也天天熬夜背題啊,看看能不能跑分跑過我?學渣說:俺們是搞素質教育的,不搞題海戰術。

Summarization

摘要任務,分越高越好,成績單如下:

迄今最大規模?OpenAI通用語言模型GPT-2論文解析

圖:Children’s Book任務

機器翻譯

SOTA的BLEU分(越高越好)33.5,俺不學習也得了11.5。

Question Answering

無監督的效果慘不忍睹。

大翻盤

這是最終大殺器,咱們來PK生成文章了。論文附錄挑選了許多生成的”故事”,作者英語比較差,看不出好壞來。學術界最近對產生式(Generative)模型非常感興趣,尤其是在圖像和視覺領域。不過作者對此並不感興趣,作者是實用主義者,生成花裡胡哨的東西並不能解決實際的問題。大家上網隨便一搜,都能找到各種作詩機器人、對聯機器人或者生成某些名人風格的文字。看起來格律嚴謹對仗工整,其實都是毫無意義。當然,也不是說生成的模型完全無用,比如Gmail用模型自動生成郵件的回覆,作者試了一下還不錯。不管怎麼說,OpenAI是扳回一城了,因此也就有了鋪天蓋地的新聞出來。

代碼

因為沒有中文模型,只能跑英文,所以作者這三腳貓的英語水平還是藏拙的好,就不做點評了。讀者可以自己試試。

git clone https://github.com/openai/gpt-2.git && cd gpt-2

需要安裝Tensorflow 1.12.0(作者試了1.11也是可以的,因為BERT的官方實現要求1.11+):

pip3 install tensorflow==1.12.0

安裝其它依賴:

pip3 install -r requirements.txt

下載模型:

python3 download_model.py 117M

因為模型放在storage.googleapis.com,所以需要科學上網,可以這樣修改代碼,請把”127.0.0.1:1080”改成你自己的代理:

$ git diff
diff --git a/download_model.py b/download_model.py
index 2a38294..83d6fb8 100644
--- a/download_model.py
+++ b/download_model.py
@@ -15,7 +15,11 @@ if not os.path.exists(subdir):
 
 for filename in ['checkpoint','encoder.json','hparams.json','model.ckpt.data-00000-of-00001', 'model.ckpt.index', 'model.ckpt.meta', 'vocab.bpe']:
 
- r = requests.get("https://storage.googleapis.com/gpt-2/" + subdir + "/" + filename, stream=True)
+ proxies = {
+ 'http': 'http://127.0.0.1:1080',
+ 'https': 'http://127.0.0.1:1080',
+ }
+ r = requests.get("https://storage.googleapis.com/gpt-2/" + subdir + "/" + filename, stream=True, proxies=proxies)
 
 with open(os.path.join(subdir, filename), 'wb') as f:

使用前需要設置編碼:

export PYTHONIOENCODING=UTF-8

無條件生成:

python3 src/generate_unconditional_samples.py | tee /tmp/samples

模型會一直生成文字,除了打到屏幕,也會輸出到/tmp/samples。這是作者的機器產生的一些文字:

======================================== SAMPLE 1 ========================================
argo strategists -- and had been hoping to get more players in the game scheduled for a later date.
As is typical of this talk, Reiter brought an event she insisted should last 35 minutes but she never invented it sight-in with the main band. Instead, he introduced 20,000 people of all stripes -- "Fort Riley" graffiti shaped like moves Fahrenheits Toy universe potential employees' ingratiating strategies from the open, feudal Community of Things to acquire a Minnesota whichold for rebuilding, company leadership got angry with "oo-vista land owner and Devil programmer Red Cypur," tinker man Joe Bills sought to derail the talks, and KCAs accused Leaming Petals of stealing significant money from their hopes for Saint Paul. Considering the foxy life goes on in the community's renaissance community (which got an industry-wide gamebroke eight years ago), it seems the alarm should last at least another 21 minutes. Briefing Seattle's students is a good idea: They'll continue to develop with what Leaping Petals claims resulted in - exorbitantly inflated tickets for local signage maybe?
aka: Learning Quality Chemistry: Clues lesson and clear blue/purple chemistry everywhere that wasn't possible on 1974-55 seconds bloated 2000 737 960 Bulls petty lawn disturbers, then all theft d�uses banned Larry Sears Chicago Plaine Cubs cage layouts attacking wood piles North Carolina trash horse manure biking or riding misnamed couch Branded Richard et al. reenacting the May/July roller coaster Gladiator environmental fireworks gear biking over the comet Suspicious Jeremy Guttenbergh Park police wanted 'blacked out' stickerhoter Tank boomer environmental fireworks fan men wading into Wucca Bansal bitching aloud any lit results on Gladiators High school kids in one afternoon bondors scuttle ideas with baleful 'ethos because gets in next fortnight handshake segregated monitors lease kissing soundtrack discharge polar bear on number of stickers done aliteral reviews webster dolphins rollercoaster delectable snowboard finch Who does to u with a mouse weaves because is McPoon.
Critical Kept from Community Discussions:
I live in Minneapolis from Australia with my husband Michael and my kids. The kids are 6 months and 11 years old, between 7 and 11 [old student, 8 at the time]; The parents are both cisfolkers with mixed black and feminism/anti-hedonism backgrounds and made worlds race,[3] being borni (daughters: LGBT I agree), purgative[4] cohortj (then janitors: completely)... K Happpur deny Francisco sang a song about covering your body disrespectful channel military pits using casino clubs WITH and murder eargsof her black ass bc well we already did, scaled [others took legit member and the OCO first], ate not much and no rain during Thalia Lam's jizz outings THEN PER MIND FELON / confused that lack of drunk water has blown up to 1 beer most like to try to avoid drinking heavily i, in the age of the tap water, prefer not to watch NASCAR John Howard's cut quiz (did i b) when he was 27 IBAAAAAAAAARRRRR!!! 142 cu.) overlaps teacherical from school friend Craig Crow for a quote favorable in 4th wall art: BUY 1 pint: 20 mac and peanut I have read alot about computers, movie instructions, and architectural design methods and its no secret that the computer is the new frontier…. My theories and practice arose when my mom's car smashed into her own car after making heavy contact with shards of a 9mm camera. Please don't scoff at me Jake, empty an eye & hasten to Homer home, I open the Cracker Box from childhood $11.00 May and June 1976 records to suggest starting draft chock heads while engineering but 3 were given because when I am 45 Freddy tried to discuss WWII, why act rebels too so they could work with me as college grad while gmaxwell started writing the Crow landed near fellers and learned from discolored fractions on wikipedia, the irony being that he weren't surprisingly bad deep blue ass till all messed up: "Shape inspiration/_materialMouse: Moor energy!_MaterialMouse: base machine..(Drop machines such as post-machines have they mention plasmoids in a different context? right? wanted to show subjects in a row of pictograms....)" very clearly Morris wasn't selling you a bottle of Vermont Diesel or feeder rat. (Okay folks to another topic, testable...): SLUSH A super rare 3 on 1 railroad track (as in, I haven't yet been able to get on or off the train or drunk juice?) http://www.ikecotrick.com/...IowansMikeCutoff17.html ahahahahahaap
Kyle Kraftbergh gets two at the same session watching Dave actually go. Has been a head coach for the previous 5 months here and continues to focus on the games sports

條件生成:

python3 src/interactive_conditional_samples.py --top_k 40

作者:李理,環信人工智能研發中心vp,十多年自然語言處理和人工智能研發經驗。主持研發過多款智能硬件的問答和對話系統,負責環信中文語義分析開放平臺和環信智能機器人的設計與研發。 轉載請註明來源“環信easemob”


分享到:


相關文章: