當(dāng)前位置:首頁(yè) >  站長(zhǎng) >  編程技術(shù) >  正文

環(huán)信AI公開課:OpenAI通用語(yǔ)言模型GPT-2論文解析

 2019-03-12 16:53  來源: 互聯(lián)網(wǎng)   我來投稿 撤稿糾錯(cuò)

  域名預(yù)訂/競(jìng)價(jià),好“米”不錯(cuò)過

OpenAI最近似乎搞了個(gè)大新聞,隨手一搜,”最大模型”、”15億參數(shù)”、”無(wú)需領(lǐng)域數(shù)據(jù)”等等躍然在目。當(dāng)然現(xiàn)在是標(biāo)題黨的年代,為了吸引眼球,外行媒體的夸張手法也能理解。當(dāng)然最大的爭(zhēng)議還是他們?cè)诠倬W(wǎng)上解釋為什么只提供小模型的理由:為了防止大模型用于生成欺詐和有歧視性的文章,我們只發(fā)布小規(guī)模的模型(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)。這個(gè)當(dāng)然引起了軒然大波,使得很多人在Reddit上吐槽。聽這語(yǔ)氣,人工智能已經(jīng)實(shí)現(xiàn)了,為了保護(hù)人類,他們不能把這個(gè)惡魔放出來。實(shí)際情況怎么樣呢?別聽專家的,最好還是我們自己讀讀論文跑跑代碼吧。

目錄

背景簡(jiǎn)介

BERT的缺陷

語(yǔ)言模型

Children’s Book

LAMBADA

Winograd Schema Challenge

Reading Comprehension

Summarization

機(jī)器翻譯

Question Answering

大翻盤

代碼

背景簡(jiǎn)介

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

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

這時(shí)我們可以通過RNN/LSTM/GRU來編碼上下文的語(yǔ)義,這樣它能學(xué)到如果周圍是money,那么bank更可能是”銀行”的語(yǔ)義。最原始的RNN由于梯度消失和梯度爆炸等問題很難訓(xùn)練,后來引入了LSTM和GRU等模型來解決這個(gè)問題。最早的RNN只能用于分類、回歸和序列標(biāo)注等任務(wù),通過引入兩個(gè)RNN構(gòu)成的Seq2Seq模型可以解決序列的變換問題。比如機(jī)器翻譯、摘要、問答和對(duì)話系統(tǒng)都可以使用這個(gè)模型。尤其機(jī)器翻譯這個(gè)任務(wù)的訓(xùn)練數(shù)據(jù)比較大,使用深度學(xué)習(xí)的方法的效果已經(jīng)超過傳統(tǒng)的機(jī)器學(xué)習(xí)方法,而且模型結(jié)構(gòu)更加簡(jiǎn)單。到了2017年,Google提出了Transformer模型,引入了Self-Attention。Self-Attention的初衷是為了用Attention替代LSTM,從而可以更好的并行(因?yàn)長(zhǎng)STM的時(shí)序依賴特效很難并行),從而可以處理更大規(guī)模的語(yǔ)料。Transformer出來之后被廣泛的用于以前被RNN/LSTM/GRU霸占的地盤,Google更是在Transformer的論文里使用”Attention is all you need”這樣霸氣的標(biāo)題?,F(xiàn)在Transformer已經(jīng)成為Encoder/Decoder的霸主。

雖然RNN可以學(xué)到上下文的信息,但是這些上下文的語(yǔ)義是需要通過特定任務(wù)的標(biāo)注數(shù)據(jù)使用來有監(jiān)督的學(xué)習(xí)。很多任務(wù)的訓(xùn)練數(shù)據(jù)非常少并且獲取成本很高,因此在實(shí)際任務(wù)中RNN很難學(xué)到復(fù)雜的語(yǔ)義關(guān)系。當(dāng)然通過Multi-Task Learning,我們可以利用其它相關(guān)任務(wù)的數(shù)據(jù)。比如我們要做文本分類,我們可以利用機(jī)器翻譯的訓(xùn)練數(shù)據(jù),通過同時(shí)優(yōu)化兩個(gè)(多個(gè))目標(biāo),讓模型同時(shí)學(xué)到兩個(gè)任務(wù)上的語(yǔ)義信息,因?yàn)檫@兩個(gè)任務(wù)肯定是共享很多基礎(chǔ)語(yǔ)義信息的,所以它的效果要比單個(gè)任務(wù)好。但即使這樣,標(biāo)注的數(shù)據(jù)量還是非常有限的。

因此2018年的研究熱點(diǎn)就變成了怎么利用無(wú)監(jiān)督的數(shù)據(jù)學(xué)習(xí)Contextual Word Embedding(也叫做Universal Sentence Embedding),也就是通過無(wú)監(jiān)督的方法,讓模型能夠?qū)W到一個(gè)詞在不同上下文的不同語(yǔ)義表示方法。當(dāng)然這個(gè)想法很早就有了,比如2015年的Skip Thought Vector,但是它只使用了BookCorpus,這只有一萬(wàn)多本書,七千多萬(wàn)個(gè)句子,因此效果并沒有太明顯的提升。

在BERT之前比較大的進(jìn)展是ELMo、ULMFiT和OpenAI GPT。尤其是OpenAI GPT,它在BERT出現(xiàn)之前已經(jīng)橫掃過各大排行榜一次了,當(dāng)然Google的BERT又橫掃了一次,并且PR效果更加明顯。所以O(shè)penAI看風(fēng)頭都被Google強(qiáng)勁,自然有些羨慕嫉妒恨,也就有了今天我們要討論的OpenAI GPT-2。

UMLFiT比較復(fù)雜,而且效果也不是特別好,我們暫且不提。ELMo和OpenAI GPT的思想其實(shí)非常非常簡(jiǎn)單,就是用海量的無(wú)標(biāo)注數(shù)據(jù)學(xué)習(xí)語(yǔ)言模型,在學(xué)習(xí)語(yǔ)言模型的過程中自然而然的就學(xué)到了上下文的語(yǔ)義關(guān)系。它們倆都是使用Transformer來學(xué)習(xí)語(yǔ)言模型,但是在進(jìn)行下游任務(wù)處理的時(shí)候就有所不同,ELMo是把它當(dāng)成特征。拿分類任務(wù)來說,輸入一個(gè)句子,用ELMo把它掃一次,這樣就可以得到每個(gè)詞的表示,這個(gè)表示是考慮上下文的,因此”He deposited his money in this bank”和”His soldiers were arrayed along the river bank”中的兩個(gè)bank的向量是不同的。下游任務(wù)用這些向量來做分類,它會(huì)增加一些網(wǎng)絡(luò)層,但是ELMo語(yǔ)言模型的參數(shù)是固定的。而OpenAI GPT不同,它直接用特定任務(wù)來Fine-Tuning Transformer的參數(shù)。因?yàn)橛锰囟ㄈ蝿?wù)的數(shù)據(jù)來調(diào)整Transformer的參數(shù),這樣它更可能學(xué)習(xí)到與這個(gè)任務(wù)特定的上下文語(yǔ)義關(guān)系,因此效果也更好。

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

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

BERT的缺陷

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

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

不過沒關(guān)系,他們的目標(biāo)是BERT的軟肋——不能生成句子(段落和篇章當(dāng)然就更不行了)。我們來看看論文的實(shí)驗(yàn)是怎么設(shè)計(jì)的:

語(yǔ)言模型

BERT不是普通的語(yǔ)言模型吧,好,那咱們來PK一下(你是零分啊)。但是用Transformer去跑語(yǔ)言模型這樣的灌水文章別人早發(fā)過了,沒啥意思。因此要搞出一個(gè)Zero-shot的概念:你們?cè)谝粋€(gè)很小的語(yǔ)料庫(kù)訓(xùn)練一個(gè)語(yǔ)言模型然后大家比賽,俺不這么跟你玩。俺用很大的語(yǔ)料訓(xùn)練一個(gè)模型,然后不用你的數(shù)據(jù),效果還能超過你們?cè)谛?shù)據(jù)上的效果。

當(dāng)然這個(gè)概念還是不錯(cuò)的,結(jié)果如下圖所示。

圖:不同數(shù)據(jù)集上語(yǔ)言模型的PPL,越小越好

我們看到,除了最后一個(gè)1BW的很大的語(yǔ)料庫(kù),OpenAI都超過了它們。其實(shí)這也說明了,如果有很多的領(lǐng)域數(shù)據(jù),還是領(lǐng)域數(shù)據(jù)好使,這在機(jī)器翻譯系統(tǒng)里也得到了驗(yàn)證。如果訓(xùn)練數(shù)據(jù)較少,我們通常使用預(yù)訓(xùn)練的詞向量作為模型詞向量的初始值。如果訓(xùn)練數(shù)據(jù)非常少,我們通常固定預(yù)訓(xùn)練的詞向量;如果訓(xùn)練數(shù)據(jù)還可以,那么就Fine-Tuning一下。如果訓(xùn)練數(shù)據(jù)很多,比如在機(jī)器翻譯任務(wù)里,預(yù)訓(xùn)練的詞向量和隨機(jī)初始化的效果沒什么區(qū)別(開始的時(shí)候好一點(diǎn),因?yàn)楸容^是相對(duì)較好的初始值)。

Children’s Book

類似于完型填空,其實(shí)BERT是可以搞的。但是NLP的比賽那么多,Google總不能都做完吧。國(guó)內(nèi)很多AI公司天天發(fā)PR稿:我們又獲得了一個(gè)世界第一。其實(shí)很多外行的讀者并不知道這個(gè)比賽只有5個(gè)參數(shù)選手,可能其中2個(gè)還是某個(gè)在校學(xué)生擠出周末打游戲的時(shí)間去做的。

圖:Children’s Book任務(wù)

效果似乎還不錯(cuò),離人類的水平相差不遠(yuǎn)。

LAMBADA

PPL從99.8降到8.6,測(cè)試的準(zhǔn)確率從19%提高到52.66%。作者不了解這個(gè)比賽,不做點(diǎn)評(píng)。

Winograd Schema Challenge

63%到70.7%,似乎還不錯(cuò)。作者也不了解這個(gè)比賽,不做點(diǎn)評(píng)。

Reading Comprehension

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

Summarization

摘要任務(wù),分越高越好,成績(jī)單如下:

圖:Children’s Book任務(wù)

機(jī)器翻譯

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

Question Answering

無(wú)監(jiān)督的效果慘不忍睹。

大翻盤

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

代碼

因?yàn)闆]有中文模型,只能跑英文,所以作者這三腳貓的英語(yǔ)水平還是藏拙的好,就不做點(diǎn)評(píng)了。讀者可以自己試試。

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

需要安裝Tensorflow 1.12.0(作者試了1.11也是可以的,因?yàn)锽ERT的官方實(shí)現(xiàn)要求1.11+):

pip3 install tensorflow==1.12.0

安裝其它依賴:

pip3 install -r requirements.txt

下載模型:

python3 download_model.py 117M

因?yàn)槟P头旁趕torage.googleapis.com,所以需要科學(xué)上網(wǎng),可以這樣修改代碼,請(qǐng)把”127.0.0.1:1080”改成你自己的代理:

$ git diffdiff --git a/download_model.py b/download_model.pyindex 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:

使用前需要設(shè)置編碼:

export PYTHONIOENCODING=UTF-8

申請(qǐng)創(chuàng)業(yè)報(bào)道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)標(biāo)簽
ai技術(shù)

相關(guān)文章

  • 匯聚中國(guó)AI頂尖力量 云天勵(lì)飛參與華為AI大模型聯(lián)合創(chuàng)新

    2023年7月6日,第六屆世界人工智能大會(huì)(WAIC2023)在上海開幕,“人工智能大模型”是本屆大會(huì)的備受矚目的話題,據(jù)悉,在昇騰AI大模型的創(chuàng)新研發(fā)中,華為聯(lián)手26家行業(yè)領(lǐng)軍企業(yè),組建了一支協(xié)同創(chuàng)新的“AI明星隊(duì)”,云天勵(lì)飛作為中國(guó)人工智能企業(yè)的杰出代表,和互聯(lián)網(wǎng)大廠、運(yùn)營(yíng)商、科研院所等優(yōu)秀團(tuán)隊(duì)

    標(biāo)簽:
    ai技術(shù)
  • 用友大易:邁入AI招聘2.0時(shí)代,讓人力資源回歸本質(zhì)

    這幾個(gè)月來,以ChatGPT為代表的生成式AI展現(xiàn)出的能力令世界驚嘆。自從2016年AlphaGo戰(zhàn)勝李世石掀起了一波AI浪潮后,AI仿佛已經(jīng)沉寂了很久,ChatGPT的橫空出世就如同一束耀眼的光芒,讓AI這個(gè)名詞重回C位。過去在AI1.0時(shí)代,主要通過訓(xùn)練模型來實(shí)現(xiàn)圖像識(shí)別、聲音識(shí)別、語(yǔ)言處理等特

    標(biāo)簽:
    ai技術(shù)
  • 新發(fā)布的PaaS2.0,能否助力涂鴉智能再起飛?

    文:互聯(lián)網(wǎng)江湖作者:志剛2023年的IoT需要一個(gè)新故事。6月29日,涂鴉智能在開發(fā)者大會(huì)上,發(fā)布了企業(yè)級(jí)戰(zhàn)略PaaS2.0,希望通過一個(gè)平臺(tái)+四大開發(fā)服務(wù),建立起IoT生態(tài)。對(duì)于這場(chǎng)發(fā)布會(huì),市場(chǎng)的態(tài)度是積極的。美東時(shí)間6月29日收盤,涂鴉智能美股股價(jià)上漲5.6%,來到1.87美元/股。近日股價(jià)穩(wěn)定

    標(biāo)簽:
    ai技術(shù)
  • 大模型難掩AI制藥的悲傷:越過山丘,無(wú)人等候

    美團(tuán)曾經(jīng)的二號(hào)人物王慧文對(duì)標(biāo)OpenAI的創(chuàng)業(yè)項(xiàng)目光年之外,以20億賣給美團(tuán),再度引發(fā)市場(chǎng)對(duì)大模型的熱議。

    標(biāo)簽:
    ai技術(shù)
  • 拾起王慧文的AI夢(mèng),美團(tuán)沖向“光年之外”?

    2020年底,王慧文在朋友圈寫下這句話時(shí),外界本以為這位伴隨中國(guó)互聯(lián)網(wǎng)發(fā)展而持續(xù)創(chuàng)業(yè)20年的人物即將告別創(chuàng)業(yè)舞臺(tái)。但是,一個(gè)曾經(jīng)多次創(chuàng)業(yè),正值壯年的互聯(lián)網(wǎng)老將心中的創(chuàng)業(yè)熱情是難以熄滅的。

    標(biāo)簽:
    ai技術(shù)

熱門排行

信息推薦