學習心得
(1)Predict Next Token:GPT拿到一筆訓練資料的時候,先給它BOS這個token,然后GPT output一個embedding,然后接下來,你用這個embedding去預測下一個,應該出現的token是什么,
(2)一般Few Shot的意思是說,確實只給了它一點例子,但是GPT里的不是一般的learning,這里面完全沒有gradient descent;完全沒有要去調GPT那個模型引數的意思,所以在GPT的文獻里面,把這種訓練給了一個特殊的名字——In-context Learning(代表說它不是一般的learning,它連gradient descent都沒有做)
(3)可以通過talk to transformer(http://talktotransformer.com/)看GPT是怎樣運作的(用的比較小的GPT模型)讓你可以輸入一個句子,然后讓它會把接下來的其余的內容把它補完,
(4)GPT如何進行tokenize操作?和BERT的區別是什么?
GPT2使用Transformer的Decoder模塊構建
作業方式(自回歸):產生每個token;將token添加到輸入的序列中,形成一個新序列;將上述新序列作為模型下一個時間步的輸入,
文章目錄
- 學習心得
- 一、Predict Next Token
- 二、How to use GPT?
- 托福聽力的栗子
- “In-context” Learning(沒有梯度下降)
- (1)“Few-shot” Learning
- (2)“One-shot” Learning “Zero-shot” Learning
- 三、Beyond Text
- 3.1 Image - SimCLR
- 3.2 Image - BYOL
- 3.3 Speech
- 3.4 Speech GLUE - SUPERB
- Toolkit
- Reference
BERT做的是填空題,GPT就是改一下我們現在在,self-supervised learning的時候,要模型做的任務
一、Predict Next Token
GPT要做的任務是,預測接下來,會出現的token是什么,舉例來說,假設你的訓練資料裡面,有一個句子是臺灣大學,那GPT拿到這一筆訓練資料的時候,它做的事情是這樣,你給它BOS這個token,然后GPT output一個embedding,然后接下來,你用這個embedding去預測下一個,應該出現的token是什么

那在這個句子裡面,根據這筆訓練資料,下一個應該出現的token是"臺",所以你要訓練你的模型,根據第一個token,根據BOS給你的embedding,那它要輸出"臺"這個token,這個部分,詳細來看就是這樣,你有一個embedding,這邊用h來表示,然后通過一個Linear Transform,再通過一個softmax,得到一個distribution,跟一般你做分類的問題是一樣的,希望output的distribution,跟正確答案的Cross entropy,越小越好,也就是你要去預測,下一個出現的token是什麼,
接下來要做的事情,就是以此類推了,你給你的GPT,BOS跟"臺",它產生embedding,接下來它會預測,下一個出現的token是什麼,那你告訴它說,下一個應該出現的token,是"灣"

好 再反覆繼續下去,你給它BOS “臺"跟"灣”,然后預測下一個應該出現的token,它應該要預測"大",你給它"臺"跟"灣"跟"大",接下來,下一個應該出現的token是"學"

那這邊呢,是指拿一筆資料 一個句子,來給GPT訓練,當然實際上你不會只用一筆句子,你會用成千上萬個句子,來訓練這個模型,然后就這樣子說完了,它厲害的地方就是,用了很多資料,訓了一個例外巨大的模型,這個GPT的模型,它像是一個transformer的decoder,不過拿掉BOS的attention這個部分,也就是說,你會做那個mask的attention,

就是你現在在預測給BOS,預測臺的時候,你不會看到接下來出現的詞匯,給它臺要預測灣的時候,你不會看到接下來要輸入的詞匯,以此類推 這個就是GPT,這個GPT最知名的就是,因為GPT可以預測下一個token,那所以它有生成的能力,你可以讓它不斷地預測下一個token,產生完整的文章,所以我每次提到GPT的時候,它的形象都是一隻獨角獸,

GPT系列最知名的一個例子,就是用GPT寫了一篇,跟獨角獸有關的新聞,因為他放一個假新聞,然后那個假新聞裡面說,在安地斯山脈發現獨角獸等等,一個活靈活現的假新聞
為了讓你更清楚了解,GPT運作起來是什麼樣子,那這個線上有一個demo的網頁,叫做talk to transformer(http://talktotransformer.com/),就是有人把一個比較小的,不是那個最大的GPT的模型,不是public available的,有人把比較小的GPT模型放在線上,讓你可以輸入一個句子,讓它會把接下來的其余的內容,把它補完,
二、How to use GPT?
怎麼把它用在downstream 的任務上呢,舉例來說,怎麼把它用在question answering,或者是其他的,跟人類語言處理有關的任務上呢
GPT用的想法跟BERT不一樣,其實GPT也可以跟BERT用一樣的做法——在使用BERT時,把BERT model 拿出來,后面接一個簡單的linear的classifier,那你就可以做很多事情,你也可以把GPT拿出來,接一個簡單的classifier,也是會有效,
但是在GPT的論文中,它沒有這樣做,它有一個更狂的想法,因為
(1)首先就是,BERT那一招BERT用過了嘛,所以總不能再用一樣的東西,這樣寫paper就沒有人覺得厲害了
(2)GPT這個模型也許真的太大了,大到連fine tune可能都有困難
我們在用BERT的時候,你要把BERT模型,后面接一個linear classifier,然后BERT也是你的,要train的model的一部分,所以它的引數也是要調的,所以在剛才助教公告的,BERT相關的作業裡面,你還是需要花一點時間來training,雖然助教說你大概20分鐘,就可以train完了,因為你并不是要train一個,完整的BERT的模型,BERT的模型在之前,在做這個填空題的時候,已經訓練得差不多了,你只需要微調它就好了,但是微調還是要花時間的,也許GPT實在是太過巨大,巨大到要微調它,要train一個epoch,可能都有困難
托福聽力的栗子

首先你會看到一個題目的說明,告訴你說現在要考選擇題,請從ABCD四個選項裡面,選出正確的答案等等;然后給你一個范例,告訴你說這是題目,然后正確的答案是多少;然后你看到新的問題,期待你就可以舉一反三開始作答,GPT系列要做的事情就是,這個模型能不能夠,做一樣的事情呢
“In-context” Learning(沒有梯度下降)
(1)“Few-shot” Learning
舉例來說假設要GPT這個模型做翻譯,先學幾個翻譯題后就直接做翻譯題(就是這么神奇),

這個在GPT的文獻裡面,叫做Few-shot Learning,但是它跟一般的Few-shot Learning又不一樣,所謂Few Shot的意思是說,確實只給了它一點例子,所以叫做Few Shot,但是它不是一般的learning,這裡面完全沒有gradient descent,完全沒有要去調,GPT那個模型引數的意思,所以在GPT的文獻裡面,把這種訓練給了一個特殊的名字,它們叫做In-context Learning,代表說它不是一般的learning,它連gradient descent都沒有做
(2)“One-shot” Learning “Zero-shot” Learning
當然你也可以給GPT更大的挑戰,我們在考托福聽力測驗的時候,都只給一個例子而已,那GPT可不可以只看一個例子,就知道它要做翻譯這件事,這個叫One-shot Learning.

還有更狂的,是Zero-shot Learning,直接給它一個敘述,說我們現在要做翻譯了,GPT能不能夠自己就看得懂,就自動知道說要來做翻譯這件事情呢,那如果能夠做到的話,那真的就非常地驚人了,那GPT系列,到底有沒有達成這個目標呢,這個是一個見仁見智的問題啦

它不是完全不可能答對,但是正確率有點低,相較於你可以微調模型,正確率是有點低的,那細節你就再看看GPT那篇文章,第三代的GPT,它測驗了42個任務,這個縱軸是正確率,這些實線 這三條實線,是42個任務的平均正確率,那這邊包括了Few Shot,One Shot跟Zero Shot,三條線分別代表Few Shot,One Shot跟Zero Shot,橫軸代表模型的大小,它們測驗了一系列不同大小的模型,從只有0.1個billion的引數,到175個billion的引數,那從只有0.1個billion的引數,到175個billion的引數,我們看Few Shot的部分,從20幾%的正確率 平均正確率,一直做到50幾%的平均正確率,那至於50幾%的平均正確率
目前看起來狀況是,有些任務它還真的學會了,舉例來說2這個加減法,你給它一個數字加另外一個數字,它真的可以得到,正確的兩個數字加起來的結果,但是有些任務,它可能怎麼學都學不會,譬如說一些跟邏輯推理有關的任務的結果就非常非常地慘,有關GPT3的細節參考 https://youtu.be/DOG1L9lvsDY
三、Beyond Text
到目前為止我們舉的例子,都是只有跟文字有關,但是你不要誤會這種self-supervised learning的概念,只能用在文字上,在CV,computer vision,也就是影像,在語音跟影像的應用上也都可以用,self-supervised learning的技術,那其實今天,self-supervised learning的技術,非常非常地多,我們講的BERT跟GPT系列,它只是三個型別的,這個self-supervised learning的方法,的其中一種,是屬于prediction那一類

3.1 Image - SimCLR

3.2 Image - BYOL

BYOL這個東西——根本不知道它為什麼會work,不是 這個是很新的論文,這個是去年夏天的論文,那這個論文是,而且還曾經一度得到,state of the art的結果,deep learning就是這麼神奇
3.3 Speech
那在語音的部分,你也完全可以使用,self-supervised learning的概念

也可以訓練語音版的BERT(比如語音也可以做填空題,把一段聲音訊號掩蓋住,然后讓機器猜被蓋住的是東西是什么;語音也可以預測接下來會出現的內容,比如用GPT預測接下來要出現的token),也已經有不少相關的成果了,
3.4 Speech GLUE - SUPERB
在語音上像NLP的GLUE這樣子的benchmark corpus(corpus是預料集),但在語音上 到目前為止,還沒有類似的基準的資料庫,所以臺大就共同開發了一個語音版的GLUE(SUPERB,它是Speech processing Universal,PERformance Benchmark的縮寫),SUPERB有十個不同的任務,語音任務不只有將語音轉為文字,還有判斷是誰講的、語音的語氣、語意、語調等,

Toolkit
這個Toolkit裡面就包含了各式各樣的self-supervised learning的模型,這些模型可以做各式各樣語音的下游的任務,self-supervised learning的技術,不是只能被用在文字上,在這個影像上 在語音上,都仍然有非常大的使用空間,

Reference
李宏毅2021深度學習課程
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/295322.html
標籤:AI
