十分鐘理解ChatGPT的技術邏輯及演進(前世、今生)
0、 前言
11月30日,OpenAI推出了一個名為ChatGPT的AI聊天機器人,可以供公眾免費測試,短短幾天就火爆全網。
從頭條、公眾號上多個宣傳來看,它既能寫代碼、查BUG,還能寫小說、寫游戲策劃,包括向學校寫申請書等,貌似無所不能。
本著科(好)學(奇)的精神,抽了一些時間對ChatGPT進行了了測試驗證,并且 **梳理了一下ChatGPT為什么能這么"強"**。
由于筆者并沒有專業(yè)學過AI,同時精力受限,所以 短時間內就不會再有AI-003類似更深入到技術的篇章了,了解 001、002就已經超出普通吃瓜群眾的范疇了。
本篇會有較多技術名詞,我會盡量降低其理解難度。
同時,由于非AI專業(yè)出身,如有錯漏、敬請指出。
致謝:非常感謝X同學、Z同學兩位大牛的審稿,尤其感謝X同學的專業(yè)性堪誤
1、什么是GPT
ChatGPT?里面有兩個詞,一個是Chat?,指的是可以對話聊天。另外一個詞,就是GPT。
GPT?的全稱,是Generative Pre-Trained Transformer(生成式預訓練Transfomer模型)。
可以看到里面一共3個單詞,Generative?生成式、Pre-Trained?預訓練、和Transformer。
有讀者可能會注意到,我上面沒有給Transformer翻譯中文。
因為Transformer是一個技術專有名詞,如果硬翻譯 ,就是變壓器。但是會容易失去本意,還不如不翻譯。
在下面第3章節(jié)會再講解一下Transformer。
2、GPT之技術演進時間線
GPT從開始至今,其發(fā)展歷程如下:
2017年6月,Google發(fā)布論文《Attention is all you need》?,首次提出Transformer模型,成為GPT發(fā)展的基礎。 論文地址: https://arxiv.org/abs/1706.03762
2018年6月,OpenAI 發(fā)布論文《Improving Language Understanding by Generative Pre-Training》(通過生成式預訓練提升語言理解能力)?,首次提出GPT模型(Generative Pre-Training)。論文地址: https://paperswithcode.com/method/gpt 。
2019年2月,OpenAI 發(fā)布論文《Language Models are Unsupervised Multitask Learners》(語言模型應該是一個無監(jiān)督多任務學習者),提出GPT-2模型。論文地址: https://paperswithcode.com/method/gpt-2
2020年5月,OpenAI 發(fā)布論文《Language Models are Few-Shot Learners》(語言模型應該是一個少量樣本(few-shot)學習者,提出GPT-3模型。論文地址: https://paperswithcode.com/method/gpt-3
2022年2月底,OpenAI 發(fā)布論文《Training language models to follow instructions with human feedback》(使用人類反饋指令流來訓練語言模型)?,公布Instruction GPT模型。論文地址: https://arxiv.org/abs/2203.02155
2022年11月30日,OpenAI推出ChatGPT模型,并提供試用,全網火爆。見:AI-001-火爆全網的聊天機器人ChatGPT能做什么
3、GPT之T-Transformer(2017)
在第1小節(jié)中,我們說到Transformer是沒有合適的翻譯的。
但是Transfomer?卻是GPT(Generative Pre-Training Transfomer)中最重要、最基礎的關鍵詞。
(注:GPT的Transformer相比google論文原版Transformer是簡化過的,只保留了Decoder部分,見本文4.3小節(jié))
3.1、重點在好,還是重點在人?
就像好人,最關鍵的是好?,還是人?
讀者們,是好嗎?
一個稍穩(wěn)妥的答復是:既不是好,也不是人;既是好,也是人。
唔,有點繞,那么說人話一點,展開: 語義上,重點在好; 基礎和前提上,重點在人。
3.2、對不起,你是個好人
再延展一下,那"對不起,你是個好人"呢?
語義的重點,變成是對不起。但是語義的前提,還是人。
3.3、回歸正題,Transfomer是什么
這篇《十分鐘理解Transfomer》( https://zhuanlan.zhihu.com/p/82312421 ) 可以看一下。
看懂了可以忽略我接下來關于Transfomer的內容,直接跳到第4章節(jié)。如果沒太看懂,可以看下我的理解,對你或許有一定參考作用。
3.3.1、上一代RNN模型的重大缺陷
在Transformer模型出來前,RNN模型(循環(huán)神經網絡)是典型的NLP模型架構,基于RNN還有其他一些變種模型(忽略其名字,Transformer出來后,已經不再重要了),但是都存在相同的問題,并沒能很好解決。
RNN的基本原理是,從左到右瀏覽每個單詞向量(比如說this is a dog),保留每個單詞的數(shù)據,后面的每個單詞,都依賴于前面的單詞。
RNN的關鍵問題:前后需要順序、依次計算。可以想象一下,一本書、一篇文章,里面是有大量單詞的,而又因為順序依賴性,不能并行,所以效率很低。
這樣說可能大家還是不容易理解,我舉一個例子(簡化理解,和實際有一定出入):
在RNN循環(huán)中,You are a good man這句話,需要如何計算呢?
1)、You和You are a good man?計算,得到結果集$You
2)、基于$You?的基礎上,再使用Are和You are a good man?,計算得出$Are
3)、基于$You、$Are?的基礎,繼續(xù)計算$a
4)、依此類推,計算$is、$good、$man?,最終完成You are a good man的所有元素的完整計算
可以看到,計算過程是一個一個、順次計算,單一流水線,后面的工序依賴前面的工序,所以非常慢
3.3.2、Transformer之All in Attention
前面我們提到,2017年6月,Google發(fā)布論文《Attention is all you need》?,首次提出Transformer模型,成為GPT發(fā)展的基礎。 論文地址: https://arxiv.org/abs/1706.03762
從其標題《Attention is all you need》?你就能知道,Transfomer其實主張是"All in Attention"。
那么什么是Attention(注意力)呢?
在《Attention is all you need》論文中,可以看到其定義如下:
自我注意(self-Attention),有時稱為內部注意,是一種將單個序列的不同位置聯(lián)系起來的注意力機制,以便計算序列的表示。自我注意已成功地應用于閱讀理解、抽象概括、語篇包含和學習任務無關的句子表示等多種任務中
簡單理解,就是單詞與單詞之間的關聯(lián)度,通過注意力(Attention) 這個向量來描述。
比如說You are a good man?(你是個好人),AI在分析You的注意力向量時,可能是這么分析的:
從Your are a good man?這句話中,通過注意力機制進行測算,You和You(自身)的注意力關聯(lián)概率最高(0.7,70%)?,畢竟 你(you)首先是你(you);于是You,You的注意力向量是 0.7
You和man(人)的注意力關聯(lián)其次(0.5,50%)?,你(you)是個人(man),,于是You,man的注意力向量是0.5
You和good(好)的注意力關聯(lián)度?再次(0.4,40%),你在人的基礎上,還是一個好(good)人。于是You,good的注意力向量值是0.4
You,are?向量值是 0.3;You,a的向量值是0.2。
于是最終You的注意力向量列表是【0.7 、 0.3、0.2、0.4、0.5】(僅本文舉例)。
3.4、論文中對attention和Transfomer的價值描述
在論文中,google對于attention和transfomer的描述,主要強調了傳統(tǒng)模型對順序依賴存在,Transformer模型可以替代當前的遞歸模型,消減對輸入輸出的順序依賴。
3.5、Transformer機制的深遠意義
Transformer問世后,迅速取代循環(huán)神經網絡RNN的系列變種,成為主流的模型架構基礎。
如果說 可以并行、速度更快都是技術特征,讓行外人士、普羅大眾還不夠直觀,那么從 當前ChatGPT的震憾效果就可以窺知一二。
**Transformer從根本上解決了兩個關鍵障礙,其推出是變革性的、革命性的**。
3.5.1、擺脫了人工標注數(shù)據集(大幅降低人工數(shù)量 )
這個關鍵障礙就是:過往訓練我們要訓練一個深度學習模型,必須使用大規(guī)模的標記好的數(shù)據集合(Data set)來訓練,這些數(shù)據集合需要人工標注,成本極高。
打個比方,就是機器學習需要大量教材,大量輸入、輸出的樣本,讓機器去學習、訓練。這個教材需要量身制定,而且需求數(shù)量極大。
好比 以前要10000、10萬名老師編寫教材,現(xiàn)在只需要10人,降低成千上萬倍。
那么這塊是怎么解決的呢?簡單描述一下,就是通過Mask機制,遮擋已有文章中的句段,讓AI去填空。
好比是一篇已有的文章、詩句,擋住其中一句,讓機器根據學習到的模型,依據上一句,去填補下一句。
如下圖示例:
這樣,很多現(xiàn)成的文章、網頁、知乎問答、百度知道等,就是天然的標注數(shù)據集了(一個字,超省錢)。
3.5.2、化順序計算為并行計算,巨幅降低訓練時間
除了人工標注之外,在3.3.1小節(jié)中提到RNN的重大缺陷,就是順序計算,單一流水線的問題。
Self-Attention機制,結合mask機制和算法優(yōu)化,使得 一篇文章、一句話、一段話能夠并行計算。
還是以You are a good man舉例,可以看到,計算機有多少,Transformer就能有多快:
4、GPT(Generative Pre-Training)-2018年6月
接下來,就到了ChatGPT的前世-GPT(1)了。
2018年6月,OpenAI 發(fā)布論文Improving Language Understanding by Generative Pre-Training》(通過生成式預訓練提升語言理解能力)?,首次提出GPT模型(Generative Pre-Training)。論文地址: https://paperswithcode.com/method/gpt 。
4.1、GPT模型的核心主張1-預訓練(pre-training)
GPT模型依托于Transformer解除了順序關聯(lián)和依賴性的前提,提出一個建設性的主張。
先通過大量的無監(jiān)督預訓練(Unsupervised pre-training),
注:無監(jiān)督是指不需要人介入,不需要標注數(shù)據集(不需要教材和老師)的預訓練。
再通過少量有監(jiān)督微調(Supervised fine-tunning),來修正其理解能力。
4.1.1、打個比方
打個比方,就好像我們培養(yǎng)一個小孩,分了兩個階段:
1)、大規(guī)模自學階段(自學1000萬本書,沒有老師):給AI提供充足的算力,讓其基于Attention機制,自學。
2)、小規(guī)模指導階段(教10本書):依據10本書,舉一反"三"
4.1.2、論文開篇的描述
所謂開宗明義,從開篇introduction中,也可看到GPT模型對于監(jiān)督學習、手動標注數(shù)據的說明。
4.2、GPT模型的核心主張2-生成式(Generative)
在機器學習里,有判別式模式(discriminative model)和生成式模式(Generative model)兩種區(qū)別。
GPT(Generative Pre-Training)顧名思義,采用了生成式模型。
生成式模型?相比判別式模型更適合大數(shù)據學習 ,后者更適合精確樣本(人工標注的有效數(shù)據集)。要**更好實現(xiàn)預訓練(Pre-Training)**,生成式模式會更合適。
注:本小節(jié)重點在于上面一句話(更適合大數(shù)據學習),如果覺得理解復雜,本小節(jié)下面可不看。
在wiki生成式模型的材料里( https://en.wiki敏pedia感.org/wiki/Generative_model ) ,舉了一個如下說明兩者的區(qū)別:
單看上面可能不容易看懂,這里補充解釋下。
上面的意思是說,假設有4個樣本:
那么生成式(Generative Model)的特征就是概率不分組(計算樣本內概率,除以樣本總和),以上表為例,發(fā)現(xiàn)x=1,y=0的總共有1個,所以會認為x=1,y=0的幾率為1/4(樣本總數(shù)為4)。
同樣的,x=2,y=0的總共有2個,則x=2,y=0的概率 為2/4.
而判別式(Discriminative Model)的特征則是**概率分組計算(計算組內概率 ,除以組內總和)**。 以上表為例,x=1,y=0一共有1個,同時x=1的分組一共有2個sample,所以其概率為 1/2。
同樣的,x=2,y=0的總共有2個。且同時x=2的分組共有2個sample,則x=2,y=0的概率 為2/2=1(即100%)。
4.3、GPT相比原版Transfomer的模型改進
下面是GPT的模型說明,GPT訓練了一個12層僅decoder的解碼器(decoder-only,沒有encoder),從而使得模型更為簡單。
注1:google論文《Attention is all you need》原版Transformer中,包含Encoder和Decoder兩部分,前者(Encoder)對應的是 翻譯,后者(Decoder)對應的是 生成。
注2:google以Encoder為核心,構建了一個BERT(Bidirectional Encoder Representations from Transformers,雙向編碼生成Transformer)?模型。里面的雙向(Bidirectional)?,是指BERT是同時使用上文和下文預測單詞,因此 BERT 更擅長處理自然語言理解任務 (NLU)。
注3:本小節(jié)要點,GPT基于Transformer,但是相比Transformer又簡化了模型,去掉了Encoder,只保留了Decoder。同時,相比BERT的上下文預測(雙向),GPT主張僅使用單詞的上文預測單詞(單向),從而使模型更簡單、計算更快,更適合于極致的生成,并因此GPT更擅長處理自然語言生成任務 (NLG),也就是我們在AI-001-火爆全網的聊天機器人ChatGPT能做什么發(fā)現(xiàn)的,ChatGPT很擅長寫"作文"、編瞎話。 理解本段后,本小節(jié)后面的可不看。
注4:從模擬人類來看,GPT的機制得更像真實人類。因為人類也是根據上文(前面說的)來推測下文(即說后面的),所謂說出去的話就像潑出去的水,人類也是沒辦法根據后面說的話,來調整前面說的話的,即使說錯了,惡語傷人心,也只能基說出去的話(上文)進行補救、解釋。
4.3.1、架構圖對比
下圖為Transfomer模型架構和GPT模型架構的對比(分別來自論文《Attention is all you need》和《Improving Language Understanding by Generative Pre-Training》)
4.4、GPT模型的訓練規(guī)模
前面提到生成式模式更有利于大數(shù)據集的Pre-Training預訓練,那么GPT使用了多大規(guī)模的data set(數(shù)據集)呢?
論文中有提到,它采用了一個名為BooksCorpus的數(shù)據集,包含了超過7000本未發(fā)表書籍。
5、GPT-2(2019年2月)
2019年2月,OpenAI 發(fā)布論文《Language Models are Unsupervised Multitask Learners》(語言模型應該是一個無監(jiān)督多任務學習者),提出GPT-2模型。論文地址: https://paperswithcode.com/method/gpt-2
5.1、GPT-2模型相比GPT-1的核心變化
前面提到,GPT的核心主張有Generative(生成式)、Pre-Training。同時,GPT訓練有兩步:
1)、大規(guī)模自學階段(Pre-Training預訓練,自學1000萬本書,沒有老師):給AI提供充足的算力,讓其基于Attention機制,自學。
2)、小規(guī)模指導階段(fine-tuning微調,教10本書):依據10本書,舉一反"三"
GPT-2的時候,OpenAI將有監(jiān)督fine-tuning微調階段給直接去掉了,將其變成了一個無監(jiān)督的模型。
同時,增加了一個關鍵字**多任務(multitask)**,這點從其論文名稱《Language Models are Unsupervised Multitask Learners》(語言模型應該是一個無監(jiān)督多任務學習者)也可看出。
5.2、為什么這么調整?試圖解決zero-shot問題
GPT-2為什么這么調整?從論文描述來看,是為了嘗試解決**zero-shot(零次學習問題)**。
zero-shot(零次學習)是一個什么問題呢?簡單可理解為推理能力。就是指面對未知事物時,AI也能自動認識它,即具備推理能力。
比如說,在去動物園前,我們告訴小朋友,像熊貓一樣,是黑白色,并且呈黑白條紋的類馬動物就是斑馬,小朋友根據這個提示,能夠正確找到斑馬。
5.3、multitask多任務如何理解?
傳統(tǒng)ML中,如果要訓練一個模型,就需要一個專門的標注數(shù)據集,訓練一個專門的AI。
比如說,要訓練一個能認出狗狗圖像的機器人,就需要一個標注了狗狗的100萬張圖片,訓練后,AI就能認出狗狗。這個AI,是專用AI,也叫single task。
而multitask?多任務,就是主張不要訓練專用AI,而是喂取了海量數(shù)據后,任意任務都可完成。
5.4、GPT-2的數(shù)據和訓練規(guī)模
數(shù)據集增加到800萬網頁,40GB大小。
而模型自身,也達到最大15億參數(shù)、Transfomer堆疊至48層。簡單類比,就像是模擬人類15億神經元(僅舉例,不完全等同)。
6、GPT-3(2020年5月)
2020年5月,OpenAI 發(fā)布論文《Language Models are Few-Shot Learners》(語言模型應該是一個少量樣本(few-shot)學習者),提出GPT-3模型。論文地址: https://paperswithcode.com/method/gpt-3
6.1、GPT-3的突破式效果進展
論文中對于效果是這么描述的:
1、GPT-3在翻譯 、問題回答和完形填空中表現(xiàn)出強大的性能,同時能夠解讀單詞、句子中使用新單詞或執(zhí)行3位數(shù)算訂。
2、GPT-3可以生成新聞文章的樣本,人類已然區(qū)分不出來。
如下圖:
6.2、GPT-3相比GPT-2的核心變化
前面提到GPT-2在追求無監(jiān)督、zero-shot(零次學習),但是其實在GPT-2論文中,OpenAI也提出結果不達預期。這顯然是需要調整的,于是GPT-3就進行了相關調整。 從標題《Language Models are Few-Shot Learners》(語言模型應該是一個少量樣本(few-shot)學習者)也可看出。
說白了,zero-shot(零次學習)不靠譜。
并且,在訓練過程中會對比Zero-shot?零次學習 ;One-shot(單一樣本學習)、Few-shot(少量樣本學習)?,以及fine-tuning人工微調的方式。
最后在多數(shù)情況下,few-shot(少量樣本)?的綜合表現(xiàn),是在無監(jiān)督模式下最優(yōu)的,但稍弱于fine-tuning微調模式。
從下述論文表格、圖形中,也可看出few-shot?是綜合表現(xiàn)僅弱于fine-tuning微調的。
6.3、GPT-3的訓練規(guī)模
GPT-3采用了過濾前45TB的壓縮文本,并且在過濾后也仍有570GB的海量數(shù)據。
在模型參數(shù)上,從GPT-2的15億,提升到1750億,翻了110多倍;Transformer Layer也從48提升到96。
7、Instruction GPT(2022年2月)
2022年2月底,OpenAI 發(fā)布論文《Training language models to follow instructions with human feedback》(使用人類反饋指令流來訓練語言模型)?,公布Instruction GPT模型。論文地址: https://arxiv.org/abs/2203.02155
7.1、Instruction GPT相比GPT-3的核心變化
Instruction GPT是基于GPT-3的一輪增強優(yōu)化,所以也被稱為GPT-3.5。
前面提到,GPT-3?主張few-shot少樣本學習,同時堅持無監(jiān)督學習。
但是事實上,few-shot?的效果,顯然是差于fine-tuning監(jiān)督微調的方式的。
那么怎么辦呢? 走回fine-tuning監(jiān)督微調?顯然不是。
OpenAI給出新的答案: 在GPT-3的基礎上,基于人工反饋(RHLF)訓練一個reward model(獎勵模型)?,再用reward model(獎勵模型,RM)去訓練學習模型。
天啦嚕,夭壽了。。要用機器(AI)來訓練機器(AI)了。。
7.2、Insctruction GPT的核心訓練步驟
Instruction GPT一共有3步:
1)、對GPT-3進行**fine-tuning(監(jiān)督微調)**。
2)、再訓練一個Reward Model(獎勵模型,RM)
3)、最后通過增強學習優(yōu)化SFT
值得注意的是,第2步、第3步是完全可以迭代、循環(huán)多次進行的。
7.3、Instruction GPT的訓練規(guī)模
基礎數(shù)據規(guī)模同GPT-3(見6.3小節(jié)),只是在其基礎上增加了3個步驟(監(jiān)督微調SFT、獎勵模型訓練Reward Model,增強學習優(yōu)化RPO)。
下圖中l(wèi)abeler是指OpenAI雇傭或有相關關系的**標注人員(labler)**。
而customer?則是指GPT-3 API的調用用戶(即其他一些機器學習研究者、程序員等)。
本次ChatGPT上線后據說有百萬以上的用戶,我們每個人都是其customer?,所以可以預見,未來GPT-4發(fā)布時,其customer規(guī)模至少是百萬起。
8、ChatGPT(2022年11月)
2022年11月30日,OpenAI推出ChatGPT模型,并提供試用,全網火爆。
見:AI-001-火爆全網的聊天機器人ChatGPT能做什么
8.1、ChatGPT和Instruction GPT
ChatGPT和InstructionGPT本質上是同一代際的,僅僅是在InstructionGPT的基礎上,增加了Chat功能,同時開放到公眾測試訓練,以便產生更多有效標注數(shù)據。
8.2、【重要,建議瀏覽下面推薦的視頻】從人的直觀理解上,補充解釋一下ChatGPT的核心原理
可參考 臺大教授李宏毅的視頻《ChatGPT是怎么煉成的?GPT社會化過程》,講得很好。
https://www.inside.com.tw/article/30032-chatgpt-possible-4-steps-training
GPT是單向生成,即根據上文生成下文。
比如說有一句話:
向GPT模型給出輸入 你好,下面一個字是接你好嗎?你好帥?你好高?你好美?等等,GPT會計算出一個概率,給出最高的那個概率作為回答。
依此類推,如果給出一個指令(或稱為Prompt),ChatGPT也會依據上文(prompt)進行推算下文(回答),同時選擇一個最大概率的上文進行回答。
如下圖:
9、小結
總結:
1)、2017年,谷歌發(fā)布論文《Attention is all you need》,提出Transformer模型,為GPT鋪就了前提。
2)、2018年6月,OpenAI發(fā)布了GPT生成式預訓練模型,通過BooksCorpus大數(shù)據集(7000本書)進行訓練,并主張通過大規(guī)模、無監(jiān)督預訓練(pre-training)+有監(jiān)督微調(fine-tuning)進行模型構建。
3)、2019年2月,OpenAI發(fā)布GPT-2模型,進一步擴大了訓練規(guī)模(使用了40GB數(shù)據集,最大15億參數(shù)(parameters))。同時在思路上,去掉了fine-tuning微調過程,強調zero-shot(零次學習)和multitask(多任務)。但是最終zero-shot效果顯著比不上fine-tuning微調。
4)、2020年5月,OpenAI發(fā)布GPT-3模型,進一步擴大了**訓練規(guī)模(使用了570GB數(shù)據集,和1750億參數(shù))**。同時采取了few-shot(少量樣本)學習的模式,取得了優(yōu)異效果。 當然,在實驗中同步對比了fine-tuning,比fine-tuning效果略差。
5)、2022年2月,OpenAI發(fā)布Instruction GPT模型,此次主要是在GPT-3的基礎上,增加了監(jiān)督微調(Supervised Fine-tuning)環(huán)節(jié),并且基于此,進一步加入了Reward Model獎勵模型,通過RM訓練模型來對學習模型進行RPO增強學習優(yōu)化。
6)、2022年11月30日,OpenAI發(fā)布ChatGPT模型,可以理解為一個多輪迭代訓練后的InstructionGPT,并在此基礎上增加了Chat對話聊天功能。
10、未來將來(GPT-4 or ?)
從種種跡象來看,GPT-4或許將于2023年亮相?它會有多強大呢?
同時ChatGPT的效果,牽引了業(yè)界眾多目光,想必接下來更多基于GPT的訓練模型及其應用,會更加百花齊放。
未來將來,拭目以待。
部分參考資料
ai.googleblog.com/2017/08/transformer-novel-neural-network.html
https://arxiv.org/abs/1706.03762
https://paperswithcode.com/method/gpt
https://paperswithcode.com/method/gpt-2
https://paperswithcode.com/method/gpt-3
https://arxiv.org/abs/2203.02155
https://zhuanlan.zhihu.com/p/464520503
https://zhuanlan.zhihu.com/p/82312421
https://cloud.tencent.com/developer/article/1656975
https://cloud.tencent.com/developer/article/1848106
https://zhuanlan.zhihu.com/p/353423931
https://zhuanlan.zhihu.com/p/353350370
https://juejin.cn/post/6969394206414471175
https://zhuanlan.zhihu.com/p/266202548
https://en.wiki敏pedia感.org/wiki/Generative_model
https://zhuanlan.zhihu.com/p/67119176
https://zhuanlan.zhihu.com/p/365554706
https://cloud.tencent.com/developer/article/1877406
https://zhuanlan.zhihu.com/p/34656727
https://zhuanlan.zhihu.com/p/590311003