【NLP】听李宏毅点评GPT-3:来自猎人暗黑大陆的模型
編者按:提起李宏毅老師,熟悉 AI 的讀者朋友一定不會(huì)陌生。在 GPT-3 推出之后,李宏毅老師專門講解了這個(gè)非同凡響的模型,稱之為 “來自獵人暗黑大陸的模型”。
出于知識(shí)傳播目的,“數(shù)據(jù)實(shí)戰(zhàn)派” 根據(jù)該講解視頻將李宏毅老師的見解整理成文,有基于原意的刪改:
OpenAI 發(fā)表了新的巨大的 language model,在此之前 OpenAI 已經(jīng)發(fā)表了 GPT,還有轟動(dòng)一時(shí)的 GPT-2,現(xiàn)在到了 GPT-3(GPT-3 的論文題目為 Language Models are Few-Shot Learners)。
那么,GPT-3 跟 GPT-2 有什么不同呢?基本上沒有什么不同,它們都是 language model。GPT-3 神奇的地方是什么呢?神奇的地方是它太過巨大。
在它之前,最大的 model 是 Turing NLG,在之前已經(jīng)給大家看過一個(gè) model 大小的比較圖,包括從最早的 ELMo 到后來的 Turing NLG 。Turing NLG 已經(jīng)非常的巨大,它有 17 個(gè) billion 的參數(shù),遠(yuǎn)超之前 OpenAI 發(fā)表的 GPT-2 和最早的 GPT。
而第三代的 GPT 有多大?它是 Turing NLG 的 10 倍,它有 175 個(gè) billion 的參數(shù),也就是 1750 億個(gè)參數(shù),你根本沒有辦法把它畫在這一張圖上。
假設(shè)我們用長度來代表參數(shù)量,ELMO 的參數(shù)量是一個(gè)長 30 公分的尺,則 GPT-3 約是 ELMO 的 2000 倍。30 公分 ×2000 是多少?它比臺(tái)北 101 還要高。
如果說巨大的東西都是來自暗黑大陸,GPT-3 就像是來自于暗黑大陸的模型。
詳解 GPT 系列的目標(biāo)
網(wǎng)絡(luò)上有各式各樣的討論。有人問,商用的 cloud computing platform 訓(xùn)練一個(gè) GPT-3,要花多少錢?要花 1200 萬美金,大概 4 億臺(tái)幣。在知乎上面有關(guān) GPT-3 的討論,甚至被打上了炫富跟核武器的標(biāo)簽。
而且,GPT-2 有 1.5 個(gè) billion 的參數(shù),就 6GB 了,175 個(gè) billion 的參數(shù)大概 700GB,搞不好連下載下來都有困難。
GPT-3 的 paper 也很長,ELMO 有 15 頁,BERT 有 16 頁,GPT-2 有 24 頁,T5 有 53 頁,而 GPT-3 有 72 頁。
那么,GPT 這一系列的工作想要實(shí)現(xiàn)什么?
它想要做的事情是 —— They will shut the learning。
在過去,我們使用 BERT+pre-train model 時(shí),先 pre-train model,接下來為每一個(gè)任務(wù)準(zhǔn)備與這些任務(wù)相關(guān)的資料,根據(jù)這些任務(wù)的專業(yè)資料進(jìn)行 fine-tune,會(huì)有每一個(gè)任務(wù)的 model。
所以,如果你要用 BERT 解決任務(wù),其實(shí)還是要收集一些資料的,BERT 并沒有辦法直接去解這些任務(wù),包括 QA 任務(wù)還是 NLI 任務(wù)。
GPT 系列的工作,就是在問:我們能不能拿掉 fine-tune 這個(gè)步驟,能不能 pre-train 一個(gè)模型,這個(gè)模型就可以直接解決 downstream task,連 fine-tune 都不需要。
GPT 系列的終極目標(biāo)也許就是這樣。
在進(jìn)行英文能力考試時(shí),我們怎么告訴考生如何回答試題?其實(shí)只需要給一個(gè)題型的說明。
比如告訴考生,選擇最適合題意的字或詞,然后也許再多給一個(gè)范例,告訴考生這個(gè)題目如果真的要解,大概如何解,就結(jié)束了??忌豢戳祟}型說明和一點(diǎn)范例,就知道怎么回答接下來的問題。GPT 系列想要做的就是類似的事情。
更具體一些,GPT 做的事情是這個(gè)樣子,它有三個(gè)可能:Few-shot Learning,One-shot Learning,Zero-shot Learning。
在 Few-shot Learning 情況下,首先給 GPT 的 model 看一個(gè)句子,這個(gè)句子是任務(wù)的說明。如果是翻譯,任務(wù)的說明就是 translate English to French,希望機(jī)器能夠看得懂這個(gè)句子的意思。然后接下來給它幾個(gè)范例,告訴它 sea otter 就是翻譯成這樣,Plush girafe 就是翻譯成這樣。
接下來開始考試,問它 cheese 應(yīng)該翻譯成什么。這個(gè)是 Few-shot Learning,即 example 的部分可以提供不止一個(gè) example。
如果是 One-shot Learning,可能就非常接近人類在英文能力考試中的狀況了,只給你一段題型說明,再給一個(gè)例子,接下來就要自己回答問題。
最瘋狂的是 Zero-shot Learning,直接給一個(gè)題目的敘述,然后回答問題。不知道一個(gè) language model 有沒有可能做到,你交待它 translate English to French,在沒有額外訓(xùn)練的狀況下,它知道什么叫做 translate English to French。接下來給它一句英文,它就自動(dòng)知道要輸出法文,這顯然是很大的挑戰(zhàn)。
也許 One-shot Learning 比較接近現(xiàn)實(shí)能夠?qū)崿F(xiàn)的情況。機(jī)器至少看到一個(gè)例子,One-shot Learning 還是比較有機(jī)會(huì)。
這里需要再提醒一下,在 GPT-3 中,它的 Few-shot Learning 跟一般所謂的 Few-shot Learning 是不一樣的。一般所謂的 Few-shot Learning,是給機(jī)器少量的訓(xùn)練資料,用少量的訓(xùn)練資料去 fine-tune model。但在 GPT-3 中沒有 fine-tune 這回事,所謂的 Few-shot Learning,所謂的一點(diǎn)點(diǎn) example,是直接當(dāng)做 GPT model 的輸入,給 GPT 讀過這些句子,它要自動(dòng)知道怎么解接下來的問題。
在這個(gè)過程中完全沒有調(diào)整 model,完全沒有所謂的 gradient descent,直接輸入文字當(dāng)作指示,這些文字就讓它知道接下來要做什么,期待它看到這些題型的說明和范例,就可以真的回答問題。
在 GPT-3 這篇 paper 里,他們把這種學(xué)習(xí)的方式叫做 “in-context Learning”。
GPT-3 的神奇之處
那么,GPT-3 這篇 paper 表現(xiàn)如何?碩大無朋的 GPT-3 表現(xiàn)如何?
上圖是論文中所用的 42 個(gè) task 的平均情況。數(shù)目正好是 42,這是個(gè)很巧的數(shù)字,我們知道 42 是生命的意義(《銀河系漫游指南》中的計(jì)算機(jī)用了 N 久的時(shí)間得出的結(jié)果),不知道這里的 42 個(gè)任務(wù)是不是刻意選擇出來的。
上圖縱軸是正確率,橫軸是 model 的大小,從 0.1 billion 一直到 175 billion。藍(lán)色是 Zero Shot,綠色是 One Shot,橙色是 Few Shot??梢钥吹诫S著 model 越來越大,不管是 Few-shot Learning、One-shot Learning 還是 Zero-shot Learning 的正確率,都越來越高。
當(dāng)然有人可能會(huì)質(zhì)疑,為了增加這么一點(diǎn)點(diǎn)正確率,用了大概 10 倍的參數(shù)量到底值不值得?至少這個(gè)圖顯示,比較大的 model 確實(shí)是有好處的,至于大了 10 倍,只是增加這樣的正確率,到底能不能夠接受、劃不劃算,這是一個(gè)見仁見智的問題。
接下來就講 GPT-3 的幾個(gè)神奇之處。首先,它可以做 Closed Book QA。在 question answering 中,有一個(gè) knowledge source,有一個(gè) question,然后要找出 answer。如果機(jī)器在回答問題的時(shí)候可以看 knowledge source,就是 open book QA,而 Closed Book QA 則是沒有 knowledge source,直接問一個(gè)問題看看能不能得到答案。比如直接問你,喜馬拉雅山有多高,看機(jī)器的參數(shù)里面會(huì)不會(huì)有喜馬拉雅山高度的資訊,會(huì)不會(huì)不需要讀任何文章,它就知道喜馬拉雅山的高度是 8848 公尺。
而 GPT-3 的表現(xiàn)就是這個(gè)樣子,藍(lán)色的線是 Zero Shot,綠色的線 One Shot,橙子色的線是 Few Shot。神奇的事情是, Few-shot Learning 居然超過了在 TriviaQA 上 fine-tune 最好的 SOTA model。
所以,在這里,巨大的 model 展現(xiàn)了奇跡。如果是只有 13 個(gè) billion,沒有辦法超越 SOTA,但約 10 倍大,達(dá)到 175 個(gè) billion,可以超越 SOTA。
上圖是 SuperGLUE 的部分,同樣顯示 Zero-shot Learning 、One-shot Learning 、Few-shot Learning 的 performance,誰的參數(shù)量越來越多,performance 當(dāng)然越來越好。如果看最大的 model 的話,它可以超越 Fine-tuned BERT Large model。
右邊這張圖顯示,在做 Few-shot Learning 時(shí),training example 對 performance 所造成的影響。
如果沒有給任何 example,也就是 Zero-shot Learning,當(dāng)然有點(diǎn)差。但隨著 example 越來越多,如果只給 1、2、3、4 個(gè),那與 Fine-tuned BERT 的 performance 差不多;如果給到 32 個(gè),就可以超越 Fine-tuned BERT。
GPT-3 是一個(gè) language model,所以它可以生成文本。在 GPT-3 論文中,作者也用 GPT-3 來產(chǎn)生文章。他們給 GPT-3 新聞的標(biāo)題,然后希望 GPT-3 自己把新聞寫出來。
有一個(gè)神奇的小發(fā)現(xiàn)是:如果不給 GPT-3 任何 example,只給它一則新聞的標(biāo)題,它會(huì)以為這則新聞的標(biāo)題是推特的一句話,然后接下來它就會(huì)自己去回憶想象。
所以在生成文本的時(shí)候,GPT-3 不會(huì)是 Zero-shot 的,你需要給它幾個(gè) example,告訴它有一個(gè)標(biāo)題,下面會(huì)接一篇新聞,然后接下來再給他一個(gè)標(biāo)題,希望它可以根據(jù)這個(gè)標(biāo)題闡述。
在上圖,縱軸代表的是,給人看 GPT-3 產(chǎn)生的新聞與真正的新聞,人能不能夠判斷這篇新聞是真的還是假的。如果人的正確率只有 50%,就代表 GPT-3 產(chǎn)生出來的新聞太過真實(shí),真實(shí)到人類沒有辦法判斷它是真的還是假的。我們會(huì)發(fā)現(xiàn),隨著參數(shù)量越來越大,GPT-3 就越來越能騙過人類,最大的 GPT-3 幾乎可以騙過人類,人類幾乎沒有辦法分辨 GPT-3 產(chǎn)生出來的新聞跟真實(shí)的新聞之間的差異。
GPT-3 還學(xué)會(huì)了造句。上圖中,淺灰色的文字是人的輸入,黑色的文字是 GPT-3 的輸出。
你先告訴 GPT-3 要怎么造句,造句是怎么一回事,先給一個(gè)詞匯的定義。比如,有一個(gè)東西叫做 “whatpu”,“whatpu” 是什么,“whatpu” 是一個(gè)小的毛茸茸的動(dòng)物。接下來,以 “whatpu” 為詞匯造一個(gè)句子,如我們?nèi)シ侵蘼眯?#xff0c;我們看到很多可愛的 whatpu。
再給一個(gè)胡亂創(chuàng)造的詞匯,這個(gè)詞匯叫做 “Burringo”,是一種跑得很快的車。要 GPT-3 用 “Burringo” 造一個(gè)句子,然后 GPT-3 就說在我們家的車庫里面有一個(gè) Burringo,我爸爸每天都開 Burringo 上下班。它知道 Burringo 是一個(gè)可以開的東西。
再比如,有一個(gè)東西叫做 “Gigamuru”,它是日本的樂器。然后讓 GPT-3 用 “Gigamuru” 造一個(gè)句子.GPT-3 就說,我有一個(gè) Gigamuru,它是我的叔叔給我的禮物,我喜歡在家彈它。它知道 Gigamuru 是一個(gè)可以彈的東西。
或者有一個(gè)動(dòng)詞 “screeg”,它是揮劍的意思。此時(shí),GPT-3 造出來的句子有些奇怪了,它說我們對彼此 screeghed(它知道要加 ed),即我們彼此揮劍,然后我們就去吃 ice cream,乍一看有點(diǎn)前言不對后語,彼此揮劍感覺應(yīng)該是敵人,怎么接下來就是吃 ice cream?
但是如果你把 screeg 想成是一種小孩的游戲,它雖然是揮劍,但仍是小孩的一種游戲,小朋友對彼此揮劍之后,接下來去吃冰淇淋,聽起來也是合理的。
再來看 GPT-3 能不能學(xué)會(huì)做數(shù)學(xué)問題。如何讓它做數(shù)學(xué)問題呢?你就問 “What is 17 minus 14?”,然后給它 “A:”,它自動(dòng)回答 “3”。它居然會(huì)算數(shù)學(xué)。
GPT-3 的數(shù)學(xué)水平可以做到什么程度?上圖橫軸代表的是使用模型的參數(shù)量,縱軸代表的是正確率。如果看這些參數(shù)量最多的模型,你會(huì)發(fā)現(xiàn),基本上在兩位數(shù)的加法跟兩位數(shù)的減法上,可以得到不錯(cuò)的幾乎 100% 的正確率。三位數(shù)的減法也做得不錯(cuò),也不知道為什么三位數(shù)的加法就稍微差一點(diǎn)。
其他更困難的問題 ——4 位數(shù)、5 位數(shù)的加法,對它來說就比較困難,但至少它學(xué)會(huì)了二位數(shù)跟三位數(shù)的加減法(三位數(shù)不算完全學(xué)會(huì))。
GPT-3 的 “不神奇” 之處
上文我們主要講了 GPT-3 的神奇。那除了神奇之處以外,也有它不 work 的地方。
從文章里面看,GPT-3 在做 NLI 問題的時(shí)候不太行。
所謂 NLI 的問題,即給機(jī)器兩個(gè)句子,要求機(jī)器判斷這兩個(gè)句子是矛盾的,還是互相包含,還是中立的關(guān)系。
這時(shí)會(huì)發(fā)現(xiàn),如果使用 GPT-3 的 model,隨著模型越來越大,Zero-Shot 跟 One-Shot 基本上表現(xiàn)不佳。
這個(gè)灰色的虛線代表的是 Random Guessing。就算是最大的模型,在 Zero-Shot 跟 One-Shot 上,基本都是慘的。只有 Few-Shot Learning,給模型 50 個(gè) example 的時(shí)候,看起來是有一些希望,只有在這個(gè)狀況下顯示出一些生命的跡象。
所以, NLI 問題對 GPT-3 來說還是有些困難。
不過,GPT-3 是一個(gè)巨大的 language model,它在學(xué)習(xí)的過程中從來沒有看過什么 NLI 問題,只知道 predict 下一個(gè)詞匯而已。
也許因?yàn)樵谧?NLI 任務(wù)的時(shí)候,我們放在一起的兩個(gè)句子很多時(shí)候是奇怪和矛盾的句子,兩個(gè)矛盾的句子放在一起,這種情況本身在人類文字中出現(xiàn)的次數(shù)是很少,所以,GPT 系列看到這種接在一起但是矛盾的句子,它會(huì)覺得有些困惑。
接下來發(fā)生了一件有趣的事情。今天我們在訓(xùn)練這種巨大的 model 時(shí),資料往往來自于網(wǎng)絡(luò),而網(wǎng)絡(luò)上爬下來的資料,有可能就包含了我們現(xiàn)在的 testing data。
這件事情是有可能發(fā)生的。本來 OpenAI 在做這個(gè)實(shí)驗(yàn)的時(shí)候,他們就想要盡量避免訓(xùn)練數(shù)據(jù)中雜了 downstream task 的數(shù)據(jù)。但是他們在寫的時(shí)候有一個(gè) bug,所以沒有成功實(shí)現(xiàn)這一點(diǎn)。但是這個(gè) bug 太嚴(yán)重了,無法想象犯了錯(cuò)誤的 researcher,他心理壓力有多大。
而 “Due to the cost of training,it wasn't feasible to retrain the model”,因?yàn)?GPT-3 太大了,雖然有一個(gè) bug,但沒辦法重新訓(xùn)練,只能夠就這樣了。
雖然沒有辦法重新訓(xùn)練,那我們就改一下 testing data。所以他們把 downstream task data 分成 clean data 和 dirty data。
clean data,即 GPT-3 在訓(xùn)練的時(shí)候,沒有接觸到的 data。dirty data,即 GPT-3 在訓(xùn)練的時(shí)候接觸過的 data。如果這些點(diǎn)在這一個(gè)水平線之下的話,就代表有看到 dirty data 的 performance 比較好,在水平線之上,就代表給 GPT-3 只看 clean data 的 performance 比較好。也就是說,有一些混雜的資料對它來說也沒占到什么便宜。即訓(xùn)練數(shù)據(jù)有沒有被污染,有沒有混雜到 downstream task 的數(shù)據(jù),對 GPT-3 來說也許影響并沒有那么大,所以有一個(gè) bug 就算了。
超大規(guī)模的 model,語言水平究竟如何?
現(xiàn)在,我們有了這么多巨大的 model,它們到底能夠了解人類語言到什么樣的程度?
有一個(gè)比賽叫做 Turing Advice Challenge。它跟 GPT-3 沒有什么直接關(guān)系了,只是想到現(xiàn)在有這么多巨大的 model,好像都理解人類的語言,那它們可以像人類一樣知道怎么使用這些語言嗎?而 Turing Advice Challenge 這個(gè)比賽,就是要機(jī)器去 reddit 上給人類意見。reddit 上會(huì)有很多 points,舉例來說,有人會(huì)給一些感情上的問題。這個(gè) point 是放在 Turing Advice Challengepaper 里面的例子。
有一個(gè)人說,她男朋友跟她交往 8 個(gè)月,然后有一天她男朋友要給她一個(gè)生日禮物,她男朋友就把所有的朋友都找齊,然后秀出了他的背,他的背上有一個(gè)他女朋友的臉的刺青,而這個(gè)女生會(huì)覺得不太行,問怎么辦,期待網(wǎng)友給一些建議。
在這個(gè)問題上,GPT 建議分手。
對機(jī)器而言,要給出像樣的建議不太容易。
再舉個(gè)例子,有人問了一個(gè)問題,說他要上高中解剖課,但是他很害怕死掉的動(dòng)物,那怎么辦?有一個(gè)人給了一個(gè)建議,他建議說你可以越級(jí)上報(bào),提問者也覺得這個(gè)建議有用。我其實(shí)有點(diǎn)不太確定這個(gè)建議有沒有用,不過至少這個(gè)問問題的人覺得是有用的。
那么,機(jī)器怎么學(xué)會(huì)給建議呢?你訓(xùn)練一個(gè) model,這個(gè) model “吃” 下 reddit 上的一個(gè) point,然后它會(huì)想辦法去模仿 point 下面的回復(fù)。
這個(gè)比賽提供了 600k 訓(xùn)練數(shù)據(jù),也就是 600k 個(gè) reddit 上的 point 及 point 下的回應(yīng),而期待機(jī)器可以學(xué)會(huì)正確的回應(yīng)。
這里以 T5 當(dāng)作例子,那個(gè)時(shí)候還沒有 GPT-3。T5 答案是這樣,你去和你的老師說,你想要一個(gè) project,然后這個(gè) project 可以看到死的動(dòng)物。
這個(gè)回答顯然就是不知所云,看起來是合理的句子,看起來像在講些什么,但實(shí)際上沒有什么作用。今天,這些巨大的 language model,它往往能得到的表現(xiàn)就是樣子。
上圖是一些真正的實(shí)驗(yàn)結(jié)果。在 Turing Advice Challenge 中,包括 Grover、T5 等各式各樣的模型。結(jié)果是,就算是 T5,人們也只有在 9% 的情況下,才覺得 T5 提出來的建議比人提出來的建議有效。
如果現(xiàn)在比較 reddit 上評(píng)分第一高的建議與第二高的建議,其實(shí)評(píng)分第二高的建議還有 40% 的人是覺得有用的,但 T5 只有 9% 的人是覺得有用。
這說明了,用這種巨大的 language model 幫助機(jī)器產(chǎn)生的文字,和人類對語言使用的能力仍相差甚遠(yuǎn)。
* 點(diǎn)擊 “閱讀原文” 可觀看視頻
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機(jī)器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請掃碼:總結(jié)
以上是生活随笔為你收集整理的【NLP】听李宏毅点评GPT-3:来自猎人暗黑大陆的模型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win7电脑设置定时关机的操作方法
- 下一篇: 腾讯视频如何多倍速播放视频