back to index

【機器學習2021】自督導式學習 (Self-supervised Learning) (四) – GPT的野望


link |
00:01.000
好,上次我們還沒有把Self-Supervised Learning的部分講完,我們講完了BERT。
link |
00:08.000
除了BERT以外,還有下一個也是鼎鼎有名的模型,就是GPT系列的模型。
link |
00:16.000
那GPT系列的模型做的是什麼呢?上次我們有說BERT做的是什麼?BERT做的是填空題。
link |
00:23.000
GPT做的事情是什麼呢?GPT就是改一下我們現在在Self-Supervised Learning的時候要模型做的任務。
link |
00:30.000
GPT要做的任務是預測接下來會出現的token是什麼。
link |
00:36.000
舉例來說,假設你的訓練資料裡面有一個句子是臺灣大學,那GPT拿到這一筆訓練資料的時候,它會做什麼樣的訓練呢?
link |
00:46.000
它做的事情是這樣,你給它begin of sentence這個token,然後GPT output一個embedding,
link |
00:54.000
接下來你用這個embedding去預測下一個應該出現的token是什麼。
link |
01:02.000
那在這個句子裡面根據這筆訓練資料,下一個應該出現的token是什麼呢?
link |
01:08.000
下一個應該出現的token是臺,所以你要訓練你的模型根據第一個token,根據begin of sentence給你的embedding,那它要輸出臺這個token。
link |
01:20.000
而如果這個部分詳細來看就是這樣,你有一個embedding,這邊用h來表示,
link |
01:26.000
然後通過一個linear transform,再通過一個softmax得到一個distribution,跟一般你做分類的問題是一樣的。
link |
01:33.000
接下來你希望你output的distribution跟正確答案的cross entropy越小越好,也就是你要去預測下一個出現的token是什麼。
link |
01:43.000
接下來要做的事情就是以此類推了,你給你的GPTbegin of sentence跟臺,它產生embedding,接下來它要預測下一個出現的token是什麼,
link |
01:55.000
那你告訴它說下一個應該出現的token是灣。然後再反覆繼續下去,你給它begin of sentence臺跟灣,然後預測下一個應該出現的token,它應該要預測大。
link |
02:07.000
你給它臺跟灣跟大,接下來下一個應該出現的token是學,它應該要預測出下一個應該出現的token是學。
link |
02:16.000
這邊是只拿一筆資料,一個句子來給GPT訓練,但實際上你不會只用一筆句子,你會用成千上萬的句子來訓練這個模型。
link |
02:28.000
然後呢,就沒有然後了,就這樣子,說完了。
link |
02:33.000
它厲害的地方就是用了很多資料訓練一個異常巨大的模型,然後看看它會有什麼厲害的地方。
link |
02:41.000
那這邊有一個小小的應該要跟大家說的地方是說,這個GPT的模型它像是一個transformer的decoder。
link |
02:50.000
我們知道transformer有encoder有decoder,對不對,這個我們上課的時候都有講過。
link |
02:54.000
模型呢,它的架構像是transformer的decoder,不過要拿掉prose attention那個部分,也就是說你會做那個mask的attention。
link |
03:04.000
就是你現在在預測給begin of sentence預測台的時候,你不會看到接下來出現的詞彙。
link |
03:11.000
給它台要預測one的時候,你不會看到接下來要輸的詞彙,以此類推。
link |
03:16.000
這個就是GPT。
link |
03:19.000
那這GPT最知名的就是因為GPT可以預測下一個token,所以它有生成的能力,你可以讓它不斷地預測下一個token產生完整的文章。
link |
03:32.000
所以我每次提到GPT的時候,它的形象都是一隻獨角獸。
link |
03:37.000
為什麼它的形象是一隻獨角獸呢?因為GPT系列最知名的一個例子,就是用GPT寫了一篇跟獨角獸有關的新聞,
link |
03:48.000
讓它放一個假新聞,然後那假新聞裡面說在安迪斯山脈發現獨角獸等等,一個活靈活現的假新聞。
link |
03:55.000
所以大家提到GPT的時候都會想到那一則假新聞。
link |
04:00.000
那為了讓你更清楚了解GPT運作起來是什麼樣子,線上有一個demo的網頁叫做talk2transformer,
link |
04:08.000
就是有人把一個比較小的,不是最大的GPT模型,最大的GPT模型不是public available的,
link |
04:17.000
有人把比較小的GPT模型放在線上,讓你可以輸入一個句子,這樣它會把接下來的其餘的內容把它補完。
link |
04:26.000
它這個運作起來看起來像是......
link |
04:30.000
好,這個就是GPT系列,它可以把一句話補完。
link |
04:36.000
那把一句話補完,怎麼把它用在當事人的任務上呢?
link |
04:41.000
舉例來說,怎麼把它用在question answering或者是其他的跟人類語言處理有關的任務上呢?
link |
04:50.000
GPT用的想法跟BERT不一樣,其實我要強調一下GPT也可以跟BERT用一樣的做法。
link |
04:59.000
大家還記得BERT是怎麼做的嗎?
link |
05:01.000
把BERT model拿出來,後面接一個簡單的linear classifier,那你就可以做很多事情。
link |
05:07.000
你也可以把GPT拿出來,接一個簡單的classifier,我相信也是會有效。
link |
05:13.000
但是在GPT的論文中,它沒有這樣做,它有一個更狂的想法。
link |
05:20.000
為什麼會有更狂的想法呢?
link |
05:22.000
因為首先就是BERT那一招BERT用過了嘛,所以總不能再用一樣的東西,這樣寫paper就沒有人覺得厲害了。
link |
05:29.000
然後再來就是GPT的模型也許真的太大了,大到連FineTune可能都有困難。
link |
05:38.000
你像我們在用BERT的時候,你要把BERT的模型後面接一個linear classifier,然後BERT也是你要train的model的一部分,所以它的參數也是要調的。
link |
05:48.000
所以在剛才助教公告的BERT相關的作業裡面,你還是需要花一點時間來train,雖然助教說大概20分鐘就可以train完了。
link |
05:57.000
因為你並不是要train一個完整的BERT的模型,BERT的模型在之前在做填空題的時候已經訓練得差不多了,你只需要微調它就好了。
link |
06:07.000
但是微調還是要花時間的,也許GPT實在是太過巨大,巨大到要微調它,要train一個APOC可能都有困難。
link |
06:18.000
所以GPT系列有一個更狂的使用方式,這個更狂的使用方式和人類更接近。
link |
06:25.000
你想想看,假設你去考譬如說托福的聽力測驗,你是怎麼去考托福的聽力測驗的呢?
link |
06:33.000
這個托福聽力測驗的敘述是長什麼樣子的呢?
link |
06:37.000
首先你會看到一個題目的說明,告訴你說現在要考選擇題,請從ABCD四個選項裡面選出正確的答案等等。
link |
06:46.000
然後給你一個範例告訴你說這是題目,然後正確的答案是多少。
link |
06:52.000
然後你看到新的問題,期待你就可以舉一反三開始作答。
link |
06:58.000
GPT系列要做的事情就是這個模型能不能夠做一樣的事情呢?
link |
07:04.000
舉例來說,假設要GPT這個模型做翻譯,你就先打Translate English to French,先給它這個句子,這個句子代表問題的描述。
link |
07:16.000
然後給它幾個範例,跟它說Sea Otter,然後箭號後面就應該長這個樣子,或者是Plush Giraffe後面就應該長這個樣子等等。
link |
07:31.000
然後接下來你問它說Cheese,箭號,叫它把後面的補完,希望它就可以產生翻譯的結果。
link |
07:39.000
不知道大家能不能夠了解這個想法是多麼的狂。在Training的時候,GPT並沒有教它做翻譯這件事。
link |
07:48.000
它唯一學到的就是給一段文字的前半段,把後半段補完,就像我們剛才給大家示範的例子一樣。
link |
07:57.000
現在我們直接給它前半段的文字就長這個樣子,到時候它說你要做翻譯了,給你幾個例子,告訴你說翻譯是怎麼回事,接下來給它Cheese這個英文單字,後面能不能就直接接出法文的翻譯結果呢?
link |
08:16.000
這個在GPT的文獻裡面叫做Fusion Learning,但是它跟一般的Fusion Learning又不一樣,所謂Fusion的意思是說確實只給了它一點例子,所以叫做Fusion。
link |
08:30.000
但是它不是一般的Learning,這裡面完全沒有什麼Gradient Descent,我們Training的時候就是要跑Gradient Descent嘛,這邊完全沒有Gradient Descent,完全沒有要去調GPT那個模型參數的意思。
link |
08:43.000
所以在GPT的文獻裡面,把這種訓練給了一個特殊的名字,它們叫做Context Learning,代表說它不是一般的Learning,它連Gradient Descent都沒有做。
link |
08:55.000
當然你也可以給GPT更大的挑戰,我們在考托福聽力測驗的時候,都只給一個例子而已,那GPT可不可以只看一個例子,就知道它要做翻譯這件事,這個叫One-Shot Learning。
link |
09:10.000
還有更狂的是Zero-Shot Learning,直接給它一個敘述說我們現在要做翻譯了,GPT能不能夠自己就看得懂,就自動知道說要來做翻譯這件事情呢?如果能夠做到的話,那真的就非常的驚人。
link |
09:25.000
那GPT系列到底有沒有達成這個目標呢?這個是一個見仁見智的問題,它不是完全不可能答對,但是正確率有點低,相較於你可以微調模型,正確率是有點低的。
link |
09:44.000
細節你就再看看GPT那篇文章,第三代的GPT它測試了42個任務,這個縱軸是正確率,這三條實線是42個任務的平均正確率。
link |
10:03.000
這邊包括了Few-Shot、One-Shot跟Zero-Shot,三條線分別代表Few-Shot、One-Shot跟Zero-Shot。橫軸代表模型的大小,它們測試了一系列不同大小的模型,從只有0.1個Billion的參數到175個Billion的參數。
link |
10:21.000
從0.1個Billion的參數到175個Billion的參數,我們看Few-Shot learning的部分從20幾%的平均正確率一直做到50幾%的平均正確率。
link |
10:35.000
至於50幾%的平均正確率算是有做起來還是沒有做起來,這個就是見仁見智的問題了。
link |
10:42.000
看起來的狀況是,有些任務它還真的學會了,舉例來說這個加減法,你給它一個數字加另外一個數字,它是可以得到正確的兩個數字加起來的結果。
link |
10:56.000
但是有些任務它可能怎麼學都學不會,比如說一些跟邏輯推理有關的任務,它的結果就非常非常的慘。
link |
11:05.000
有關GPT-3的細節就留給大家自己研究,這邊有一個過去上課的錄影,我把連結放在這邊給大家參考。
link |
11:15.000
剛才舉的例子,到目前為止我們舉的例子都是只有跟文字有關,但是你不要誤會說這種Self-supervised learning的概念只能用在文字上。
link |
11:26.000
在語音、CVCV就是Computer Vision,也就是影像,在語音跟影像的應用上也都可以用Self-supervised learning的技術。
link |
11:37.000
其實今天Self-supervised learning的技術非常非常的多,我們講的BERT跟GPT系列,它只是三個類型的Self-supervised learning的方法的其中一種,它們是屬於Prediction那一類。
link |
11:50.000
其實還有其他的類型,就不是我們這一堂課要講的。接下來的課程,你可能會覺得有點流水帳,就是我們每一個主題告訴你說這個主題裡面有什麼,但是細節更多的知識就留給大家自己來做更進一步的研究。
link |
12:08.000
所以這一頁投影片只是要告訴你說,在Self-supervised learning這個部分,我們講的只是整個領域的其中一小塊,還有更多的內容是等待大家去探索的。
link |
12:20.000
有關影像的部分,我們就真的不會細講。我這邊就是放兩頁投影片帶過去告訴你說,有一招非常有名的叫做Sincere,它的概念也不難,我相信你自己讀論文應該也有辦法看懂它。
link |
12:36.000
還有很奇怪的叫做Boyle。Boyle這個東西,我們是不太可能在上課講它,更不知道它為什麼會work。這是很新的論文,這個是去年夏天的論文。
link |
12:51.000
這個論文是假設它不是已經發表文章,然後學生來跟我提這個想法,我一定不會讓它走,我覺得這不可能會work的,這是一個不可能會實踐的想法,不可能會成功的。這個想法感覺有一個巨大的瑕疵,但不知道為什麼它是work的,而且還曾經一度得到state of the art的結果。Deep learning就是這麼神奇。
link |
13:15.000
在語音的部分,你也完全可以使用Self-supervised learning的概念,你完全可以試著訓練語音版的Bird。
link |
13:29.000
那怎麼訓練語音版的Bird呢?你就看看文字版的Bird是怎麼訓練的,比如說做填空題,語音也可以做填空題。
link |
13:38.000
語音也可以預測接下來會出現的內容,像GPT就是預測接下來要出現的token,那語音你也可以叫模型預測接下來會出現的聲音訊號,所以你也可以做語音版的GPT。
link |
13:55.000
不管是語音版的Bird,語音版的GPT,其實都已經有很多相關的研究成果了。不過其實在語音上,相較於文字處理的領域,還是有一些比較缺乏的東西。
link |
14:09.000
我認為現在很缺乏的一個東西,就是像Groove這樣的Benchmark corpus。在自然語言處理的領域,在文字上有Groove這個Corpus。我們在這一門課的剛開頭,這個投影片的剛開頭就告訴你說,有一個基準的資料庫叫做Groove,它裡面有九個NLT的任務。
link |
14:31.000
今天你要知道Bird做得好不好,就讓它去跑那九個任務,再去平均,那代表這個Self-supervised learning模型的好壞。但在語音上,到目前為止,還沒有類似的基準的資料庫。
link |
14:46.000
所以我們實驗室就跟其他的研究團隊共同開發了一個語音版的Groove,我們叫做Superb。它是Speech Processing Universal Performance Benchmark的縮寫。你知道今天你做什麼模型都一定要硬湊梗才行,所以這邊也是要硬湊一個梗,把它叫做Superb。
link |
15:07.000
其實我們已經準備得差不多了,網站都已經做好了,等其他團隊的人看過以後就可以上線了。現在雖然還沒有上線,但是再過一陣子你應該就可以找到相關的連結。
link |
15:21.000
在這個基準語料庫裡面包含了十個不同的任務,語音其實有非常多不同的面向。很多人講到語音相關的技術,都只知道語音辨識,把聲音轉成文字。但這並不是語音技術的全貌,語音其實包含了非常豐富的資訊。
link |
15:41.000
它除了有內容的資訊,就是你說了什麼,還有其他的資訊,舉例來說,這句話是誰說的?這個人說這句話的時候,他的語氣是什麼樣?還有這句話背後,他到底有什麼樣的語意?
link |
15:56.000
所以我們準備了十個不同的任務,這個任務包含了語音不同的面向,包括去檢測一個模型,它能夠識別內容的能力,識別誰在說話的能力,識別它是怎麼說的能力,甚至是識別這句話背後語意的能力。
link |
16:13.000
從全方位來檢測一個Self-supervised learning的模型,它在理解人類語言上的能力。而且我們還有一個Toolkit,這個Toolkit裡面就包含了各式各樣的Self-supervised learning的模型,還有這些Self-supervised learning的模型,它可以做的各式各樣語音的下游的任務,我把連結放在這邊給大家參考。
link |
16:38.000
講這些,只想告訴大家說,Self-supervised learning的技術不是只能被用在文字上,在影像上、在語音上,都仍然有非常大的空間可以使用Self-supervised learning的技術。
link |
16:54.000
Self-supervised learning的部分,這個Berg和GVT,我們就講到這邊。