免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
From zero to ChatGPT:從零開(kāi)始談ChatGPT
作者:許明
鏈接:
https://xv44586.github.io/2023/01/09/zero-to-chatgpt/
Language Model
統(tǒng)計(jì)語(yǔ)言模型
神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
升級(jí)
GPT-3
Prompt engineering
PET
Automated Discrete Prompt
Automated Continuous Prompt
Multi-Step Reasong(三步走)
CoT
Least-to-Most Prompting
self-ask
擴(kuò)展測(cè)試
Emergent Abilities
Scaling Up
Alignment
SFT
FeedME
Reinforcement learning with human feedback
Fine-tuning with human feedback
Instruction-tuning
ChatGPT
番外篇:
Fine-tuning
Fine-tuning with human feedback
RAG
Prompt Engineering
Instruction-tuning
如何提升LLM在某個(gè)(組)特定任務(wù)上的性能
如何將能力從大模型遷移到小模型上
Ref
關(guān)于頭圖
Language Model
長(zhǎng)期一來(lái),人類(lèi)一直夢(mèng)想著讓機(jī)器替代人來(lái)完成各種工作,其中也包括語(yǔ)言相關(guān)工作,如翻譯文字,識(shí)別語(yǔ)言,檢索、生成文字等。為了完成這些目標(biāo),就需要機(jī)器理解語(yǔ)言。最早人們想到的辦法是讓機(jī)器模擬人類(lèi)進(jìn)行學(xué)習(xí),如學(xué)習(xí)人類(lèi)通過(guò)學(xué)習(xí)語(yǔ)法規(guī)則、詞性、構(gòu)詞法、分析語(yǔ)句等學(xué)習(xí)語(yǔ)言。尤其是在喬姆斯基(Noam Chomsky 有史以來(lái)最偉大的語(yǔ)言學(xué)家)提出 “形式語(yǔ)言” 以后,人們更堅(jiān)定了利用語(yǔ)法規(guī)則的辦法進(jìn)行文字處理的信念。遺憾的是,幾十年過(guò)去了,在計(jì)算機(jī)處理語(yǔ)言領(lǐng)域,基于這個(gè)語(yǔ)法規(guī)則的方法幾乎毫無(wú)突破。
統(tǒng)計(jì)語(yǔ)言模型
另一個(gè)對(duì)自然語(yǔ)言感興趣的就是香農(nóng),他在很早就提出了用數(shù)學(xué)的方法來(lái)處理自然語(yǔ)言的想法。但是當(dāng)時(shí)即使使用計(jì)算機(jī)技術(shù),也無(wú)法進(jìn)行大量的信息處理。不過(guò)隨著計(jì)算機(jī)技術(shù)的發(fā)展,這個(gè)思路成了一種可能。首先成功利用數(shù)學(xué)方法解決自然語(yǔ)言問(wèn)題的是賈里尼克 (Fred Jelinek) 及他領(lǐng)導(dǎo)的IBM Wason實(shí)驗(yàn)室。賈里尼克提出的方法也十分簡(jiǎn)單:判斷一個(gè)詞序列(短語(yǔ),句子,文檔等)是否合理,就看他的可能性有多大。舉個(gè)例子:判斷“I have a pen” 翻譯為中文”我有個(gè)筆“是否合理,只需要判斷”I have a apple.我有個(gè)筆” 這個(gè)序列的可能性有多大。而如何判斷一個(gè)詞序列的可能性,就需要對(duì)這個(gè)詞序列的概率進(jìn)行建模,也就是統(tǒng)計(jì)語(yǔ)言模型:S 表示一連串特定順序排列的詞w_1,w_2, …, w_n,n 是序列的長(zhǎng)度,則 S 出現(xiàn)的概率P(S)=P(w_1,w_2,…w_n). 但是這個(gè)概率 P(S)  很難估算,所以這里我們轉(zhuǎn)化一下。首先,利用條件概率公式將其展開(kāi):
即:
接著,我們利用馬爾可夫假設(shè),即任意一個(gè)詞 w_i 出現(xiàn)的概率只與其前一個(gè)詞 w_{i-1}(或有限的幾個(gè)) 有關(guān)。于是,問(wèn)題就變的簡(jiǎn)單了許多。對(duì)應(yīng)的S 的概率就變?yōu)?
以上對(duì)應(yīng)的便是一個(gè)二元模型,當(dāng)然,如果詞由其前面的N-1 個(gè)詞決定,則對(duì)應(yīng)的是N元模型。
神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
統(tǒng)計(jì)語(yǔ)言模型有很多問(wèn)題:1.訓(xùn)練語(yǔ)料中未出現(xiàn)過(guò)的詞(句子)如何處理(OOV);2.長(zhǎng)尾低頻詞如何平滑;3.one-hot 向量帶來(lái)的維度災(zāi)難;4.未考慮詞之間的相似性等。為了解決上述問(wèn)題,Yoshua Bengio(深度學(xué)習(xí)三巨頭之一)在2003年提出用神經(jīng)網(wǎng)絡(luò)來(lái)建模語(yǔ)言模型,同時(shí)學(xué)習(xí)詞的低緯度的分布式表征(distributed representation),具體的:不直接對(duì)
建模,而是對(duì)
進(jìn)行建模;簡(jiǎn)化求解時(shí),不限制只能是左邊的詞,也可以含右邊的詞,即可以是一個(gè)上下文窗口(context) 內(nèi)的所有詞;共享網(wǎng)絡(luò)參數(shù)。
具體形式如下:
由于當(dāng)時(shí)的計(jì)算機(jī)技術(shù)的限制,神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型的概率結(jié)果往往都不好(一層MLP效果肯定好不了),所以當(dāng)時(shí)主要還是用這個(gè)形式訓(xùn)練詞向量。
升級(jí)
隨著數(shù)據(jù)、算力、模型架構(gòu)、范式等的升級(jí),神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型也得到了長(zhǎng)足的發(fā)展。如模型架構(gòu)從 mlp 到cnn/rnn 又到目前的transformer-base ,對(duì)應(yīng)的能力也在不斷發(fā)展,從之前只對(duì)$P(w_i|w_{i-1})$ 建模,通過(guò)”“并行”或“串行” 的方式,也可以對(duì)$P(w_i^n)$建模。求解NLP task 從原來(lái)的word2vector + ML 發(fā)展為pretrain + fine-tuning。目前最有代表性的就是BERT和GPT。
BERT: 雙向,autoencoding,MLM,encoder
GPT:left-to-right, autoregressive, LM, decoder
GPT-3
隨著NLP進(jìn)入BERT時(shí)代后,pretrain + fine tune 這種方式可以解決大量的NLP 任務(wù),但是他依然有很多限制:1.每個(gè)任務(wù)都需要大量的標(biāo)注數(shù)據(jù),這大大限制了模型的應(yīng)用。此外,還有大量不好收集標(biāo)注數(shù)據(jù)的任務(wù)存在;2.雖然pretrain 階段模型吸收了大量知識(shí),但是fine-tuned 后模型又被“縮”到一個(gè)很窄的任務(wù)相關(guān)的分布上,這也導(dǎo)致了一些問(wèn)題,比如在OOD(out-of-distribution) 上表現(xiàn)不好;3.如果參考人類(lèi)的話,人類(lèi)通常不需要在大量的標(biāo)注數(shù)據(jù)上學(xué)習(xí)后才能做任務(wù),而只需要你明確告知你想讓他干嘛(比如:將所給單詞翻譯為英語(yǔ):紅色->)或者給他幾個(gè)例子(比如:藍(lán)色->blue,綠色->green,紅色->),之后便能處理新的任務(wù)了。而我們的一個(gè)終極目標(biāo)就是希望模型能像人這樣,靈活的學(xué)習(xí)如何幫助我們完成工作。一個(gè)可能的方向就是元學(xué)習(xí)(meta-learning):學(xué)習(xí)如何學(xué)習(xí)。而在LM語(yǔ)境下,即我們希望LM 在訓(xùn)練的時(shí)候能獲得大量的技能和模式識(shí)別的能力,而在預(yù)測(cè)的時(shí)候能快速將技能遷移到新任務(wù)或者識(shí)別出新任務(wù)的要求。為了解決這個(gè)問(wèn)題,一個(gè)顯現(xiàn)出一定有效性的方法就是”in-context learning”:用指令(instruction)或者少量示例(demonstrations)組成預(yù)訓(xùn)練語(yǔ)言模型的輸入,期望模型生成的內(nèi)容可以完成對(duì)應(yīng)的任務(wù)。根據(jù)提供多少個(gè)示例,又可以分為zero-shot, one-shot, few-shot。
雖然in-context learning 被證明具有一定的有效性,但是其結(jié)果相比f(wàn)ine-tuing 還有一定的距離。而隨著預(yù)訓(xùn)練語(yǔ)言模型(PTM)的擴(kuò)大(scaling up),對(duì)應(yīng)的在下游task 上的表現(xiàn)也在逐步上升,所以O(shè)penAI就猜想:PTM的進(jìn)一步scaling up,對(duì)應(yīng)的in-context learning 的能力也會(huì)進(jìn)一步提升。于是他們做了GPT-3 系列模型,最大的為GPT-3 175B。
最終的模型效果簡(jiǎn)單總結(jié)一下:一些任務(wù)上few-shot (zero-shot)能趕上甚至超過(guò)之前fine-tuned SOTA(如:PIQA),有些任務(wù)上還達(dá)不到之前的SOTA(如:OpenBookQA);能做一些新task,如3位數(shù)算數(shù)。不過(guò)他們也發(fā)現(xiàn)了模型存在的一些問(wèn)題,并提出了一些可能的解決方案。
Prompt engineering
zero-shot/few-shot 這種設(shè)定確實(shí)給NLP 社區(qū)帶來(lái)了新的思路,但是175B 的模型實(shí)在是太大了,即不好訓(xùn)練又不好微調(diào)也不好部署上線,如何在小模型上應(yīng)用呢?此外,不同的pattern(prompt)下同一個(gè)task 的效果差距也非常大,如何找到效果最好的prompt 呢?于是大家就開(kāi)始花式探索prompt,NLPer 也變成了prompt-engineer (誤).PS:prompt 的語(yǔ)義目前即可以指模型的輸入,也可以指輸入的一部分。
PET
PET(Pattern-Exploiting Training)應(yīng)該是第一個(gè)(至少是我知道的)在小模型上在few-shot 設(shè)定下成功應(yīng)用的工作。PET 的主要思路是:
用通順的語(yǔ)言為task 構(gòu)造一個(gè)pattern(prompt),如: “下面是{label}新聞。{x}”;
將label 映射為文字。如: “0->體育 ,1-> 財(cái)經(jīng), 2->科技”;
將樣本按照pattern 進(jìn)行重構(gòu),凍結(jié)模型主體,只更新label 對(duì)應(yīng)的token(embedding),繼續(xù)LM (MLM) 訓(xùn)練;
預(yù)測(cè)時(shí),將label 對(duì)應(yīng)位置的token 再映射回label。
PET 在few-shot 的設(shè)定下,利用BERT-base 就能獲得比GPT-3 175B 更好的結(jié)果。不過(guò)pattern 是需要人來(lái)構(gòu)造的,pattern 的“好壞” 直接影響最終的效果。思考:PET中的fine-tuning 是與其pretrain 的形式是一致的,而pretrain 與 fine-tuning 形式一致能夠work 才是一種“自然”的事情,pretrain + fine-tuning 這種下游任務(wù)與預(yù)訓(xùn)練形式不一致能work 其實(shí)不是一個(gè)自然的事情,為什么pretrain + fine-tuning 能work 值得思考。
Automated Discrete Prompt
人來(lái)寫(xiě)prompt還是需要大量的時(shí)間和經(jīng)驗(yàn),而且,即使一個(gè)經(jīng)驗(yàn)豐富的人,寫(xiě)出的prompt 也可能是次優(yōu)的。為了解決這些問(wèn)題,一種辦法就是“自動(dòng)”的幫助我們尋找最優(yōu)的prompt。
Prompt Mining: 該方法是在語(yǔ)料上統(tǒng)計(jì)輸入X 與輸出Y 之間的中間詞或者依賴(lài)路徑,選取最頻繁的作為prompt,即:{X} {middle words} {Y}.
Prompt Paraphrasing: 該方法是基于語(yǔ)義的,首先構(gòu)造種子prompts,然后將其轉(zhuǎn)述成語(yǔ)義相近的表達(dá)作為候選prompts,通過(guò)在任務(wù)上進(jìn)行驗(yàn)證,最終選擇效果最優(yōu)的。
Gradient-based Search: 通過(guò)梯度下降搜索的方式來(lái)尋找、組合詞構(gòu)成最優(yōu)prompt。
Prompt Generation: 用NLG 的方式,直接生成模型的prompts。
Prompt Scoring: 構(gòu)造模型對(duì)不同的prompt 進(jìn)行打分,選擇分?jǐn)?shù)最高的prompt 作為最優(yōu)prompt。
Automated Continuous Prompt
雖然PET最初在構(gòu)造prompt 時(shí)認(rèn)為prompt需要是通順流暢的自然語(yǔ)言。而隨著各種自動(dòng)化方法構(gòu)造出了很多雖然句子不通順但是效果更好的prompt,大家也發(fā)現(xiàn):通順流暢的自然語(yǔ)言或者是自然語(yǔ)言的要求只是為了更好的實(shí)現(xiàn)預(yù)訓(xùn)練與下游任務(wù)的“一致性”,但是這并不是必須的,我們其實(shí)并不關(guān)心這個(gè)pattern 具體長(zhǎng)什么樣,我們真正關(guān)心的是他有哪些token 組成,都插入在什么位置,輸出空間是什么,以及最重要的在下游任務(wù)上表現(xiàn)有多好。
如上圖所示,其中[u*] 為unused token,我們?cè)趖uning 時(shí)依然凍結(jié)模型的參數(shù),只微調(diào)[u1-u8] 這8個(gè)token。
prompt tuning: 利用N 個(gè)unused token/new token 構(gòu)造prompt, 然后微調(diào)這N 個(gè)token。其中N 是個(gè)超參數(shù)。
Tuning initialized with Discrete prompts:用手工構(gòu)造的prompt 或者自動(dòng)搜索的離散prompt 初始化需要微調(diào)的token,然后進(jìn)行prompt tuning,有利于提高準(zhǔn)去率。
Hard-Soft Prompt Hybrid Tuning: 這類(lèi)方法將手動(dòng)設(shè)計(jì)和自動(dòng)學(xué)習(xí)相結(jié)合,增強(qiáng)prompt token 之間的相關(guān)性。如p-tuning 首先通過(guò)一個(gè)LSTM 訓(xùn)練手工設(shè)計(jì)的prompt中插入的可學(xué)習(xí)的token 來(lái)增強(qiáng)prompt 之間的相關(guān)性,讓prompt token 更接近“自然語(yǔ)言”。
Prompt-parameter Tuning: 僅僅訓(xùn)練prompt token 效果不夠好,將其與fine-tuning 結(jié)合。如prefix-tuning,在輸入前增加可學(xué)習(xí)的prompt token 的同時(shí),在模型每層都增加一部分可學(xué)習(xí)參數(shù)。
Multi-Step Reasong(三步走)
雖然大模型在很多task 都證明了其有效性,但是這些task 都是System 1 thinking,而System 2 thinking 任務(wù)需要更多的數(shù)學(xué)、邏輯以及常識(shí)推理。大模型對(duì)這類(lèi)任務(wù)還做不好目前,如數(shù)學(xué)推理、符號(hào)推理等。
Our responses to these two scenarios demonstrate the differences between our slower thinking process and our instantaneous one. System 1 thinking is a near-instantaneous process; it happens automatically, intuitively, and with little effort. It’s driven by instinct and our experiences. System 2 thinking is slower and requires more effort. It is conscious and logical.
– system-1-and-system-2-think
如GPT-3 175B 在GSM8K 上直接fine-tuning 也只能得到33% 的準(zhǔn)確率,通過(guò)在fine-tuned model 上進(jìn)行采樣,再標(biāo)注答案是否正確,然后訓(xùn)練一個(gè)verifier 來(lái)判斷生成的答案是否正確,最終也只能得到55%,而一個(gè)9-12 歲的孩子平均能得到60%。所以,OpenAI 的研究員認(rèn)為,如果想達(dá)到80% 以上,可能需要把模型擴(kuò)大到$10**16$(175T?媽媽咪啊)。然而,后續(xù)的工作Gopher 卻給這個(gè)思路潑了盆冷水:即使繼續(xù)放大模型,模型在這種推理任務(wù)上的表現(xiàn)也不會(huì)顯著提升。也許語(yǔ)言模型就不能做推理這種system 2 thinking task。
CoT
“不就是個(gè)張麻子嘛,辦他!”(誤)不就是推理嘛,LLM 也能做,只需要向人學(xué)習(xí)一下就行了。
回想讀書(shū)時(shí)做數(shù)學(xué)應(yīng)用題目,老師總是要求你寫(xiě)清解題步驟。而之前的方法總是讓模型一步到位,直接給出答案,所以模型考不好?,F(xiàn)在我們讓模型像人類(lèi)推理一樣,先給出思考步驟(chain of thought),然后再給出答案,模型的推理能力就能大大提高了。而這個(gè)思路,只需要few-shot(8 examples)就能達(dá)到58.1% 的準(zhǔn)確率,超過(guò)之前GPT-3 175B fine-tuning + verifier (SOTA)。除了GSM8K 這種算術(shù)推理外,在符號(hào)推理、嘗試推理任務(wù)上CoT 也是能將模型的性能提升一大截。CoT 確實(shí)很酷,改變了我們之前對(duì)LLM 的認(rèn)知,但是還不夠酷:很多時(shí)候我們不一定能湊夠8個(gè)樣本(我就無(wú)法快速給出8個(gè)帶有解題步驟的數(shù)學(xué)題),那能不能在zero-shot 下讓模型自己給出解題思路跟答案呢?
“Let’s think step by step.”
沒(méi)錯(cuò),答案就是這句話。只要在輸入后面加一句”Let’s think step by step.”哄哄模型,模型就會(huì)自己按照CoT 的方式先生成解題思路,然后再生成對(duì)應(yīng)的答案。(我第一次讀完paper 的感覺(jué)就是離譜他媽給離譜開(kāi)門(mén),離譜到家了)PS:這句話是試出來(lái)的,還有很多類(lèi)似的表達(dá)但是效果不如這句好。
methodGSM8K
9-12 year olds (Cobbe et al,.2021)60
Finetuned GPT-3 175B33
Finetuned GPT-3 + verifier55
PaLM 540B: standard prompting17.9
PaLM 540: chain of thought prompting58.1
GPT-3 175B + Complexity-based Consistency72.6
PaLM 540B: Cot + majority voting74.4
Codex 175B (GPT3.5) + complex chains of thought82.9
PaLM 540B: Zero-Shot12.5
PaLM 540B: Zero-Shot-Cot43
PaLM 540B: Zero-Shot-Cot + self consistency70.1
Zero-Shot-Cot 就能獲得43% 的準(zhǔn)確率,而Zero-Shot-Cot + self consistency 甚至可以獲得70.1的準(zhǔn)確率。Zero-Shot-CoT + self consistency: 按照Z(yǔ)ero-Shot-Cot 的方式,通過(guò)采樣(sample)讓模型生成多個(gè)結(jié)果,然后對(duì)答案進(jìn)行投票。目前在GSM8K上的SOTA是82.9,看來(lái)不需要繼續(xù)放大模型,只需要正確使用模型。
關(guān)于CoT 來(lái)源的問(wèn)題,目前的主要推論是可能來(lái)自預(yù)訓(xùn)練時(shí)數(shù)據(jù)中包含了代碼數(shù)據(jù)(code),主要論據(jù)為:1.GPT-3.5(Codex) 有CoT 能力,PaLM 也有,而其他LLM (包括原始GPT-3)卻沒(méi)有,這兩個(gè)模型與其他模型的一個(gè)主要區(qū)別就是增加了代碼數(shù)據(jù);2.有工作認(rèn)為CoT 與代碼的自然語(yǔ)言翻譯形式相同,所以CoT 可能來(lái)自這種能力的遷移。
Least-to-Most Prompting
如果仔細(xì)對(duì)比CoT 和之前的prompt 的話,其中最大的不同是CoT 模仿人類(lèi)推理將過(guò)程分為多個(gè)階段。而有些問(wèn)題如組合泛化直接用CoT 也不好解決。于是就提出了另一種多步推理的方法,Least-to-Most Prompting:首先將問(wèn)題分解為子問(wèn)題“To solve{Q}, we need to first solve: sub-q”,得到子問(wèn)題的答案后再來(lái)給出最后的答案.
self-ask
self-ask:先讓LLM 自問(wèn)自答生成多跳問(wèn)題與答案,然后再生成最終的答案。
擴(kuò)展測(cè)試
以上的實(shí)驗(yàn)都是基于事實(shí)的推理,但是我想看看模型是不是有類(lèi)似反事實(shí)推理的能力,所以我做了三個(gè)測(cè)試:第一次我直接讓他解釋一個(gè)反事實(shí)的東西;第二次設(shè)定一個(gè)反事實(shí)(紅色對(duì)應(yīng)單詞是”blue”), 基于此讓他做一個(gè)翻譯任務(wù);第三次,在給出的例子里增加相應(yīng)的事實(shí)(藍(lán)色->blue),繼續(xù)讓他做這個(gè)翻譯任務(wù)。
實(shí)驗(yàn)1
實(shí)驗(yàn)2
實(shí)驗(yàn)3
三個(gè)測(cè)試結(jié)果顯示模型確實(shí)有很強(qiáng)的推理能力,包括反事實(shí)的推理能力。此外,實(shí)驗(yàn)二、三顯示模型有很強(qiáng)的基于prompt 推理的能力(in-context learning?),甚至要想更正prompt 里錯(cuò)誤的信息需要花點(diǎn)心思才行。
PS:后面兩次測(cè)試只是證明了模型”能“基于prompt 做推理,而無(wú)法證明模型”總是“基于prompt 做推理。
思考:
目前流行的RAG(Retrieval-Augmented Generation)是不是基于模型具有的這種推理能力?
LLM 表現(xiàn)出的能胡說(shuō)八道(Hallucinations) 是否也是由模型具有這種反事實(shí)推理帶來(lái)的?以及如何讓”胡說(shuō)八道“變成”創(chuàng)造“。
這種能力也帶來(lái)了一個(gè)問(wèn)題:模型生成的答案并不是預(yù)訓(xùn)練數(shù)據(jù)優(yōu)先(pretrain data first),如果我們的prompt 里出現(xiàn)了反事實(shí)的東西(retrieval / dialog query/ demonstration),那模型就很可能生成一個(gè)”錯(cuò)誤“ 的答案。
Emergent Abilities
既然LLM 有這么多神奇的能力,包括Zero-Shot-CoT 這種推理能力。那我們之前這么多人用手工的或者自動(dòng)的方式構(gòu)造prompt,為什么沒(méi)找到”Let’s think step by step”這句話呢?
原因可能是你的模型不夠大(大力真的能出奇跡)。隨著LLM不斷的放大,當(dāng)他大到一定規(guī)模時(shí),他會(huì)突然顯現(xiàn)出新的能力,即”涌現(xiàn)能”力(Emergent Abilities)。而即使是今天,我們大部分人接觸的模型還是1B以下的,LLM 中被稱(chēng)作”small model” 的T5-11B 大部分人也用不起來(lái),這就限制了我們發(fā)現(xiàn)LLM 的各種能力。Emergency 的原始含義是指量變引起質(zhì)變,即:
Emergence is when quantitative changes in a system result in qualitative changes in behavior.
而在LLM 語(yǔ)境下,其含義為在小模型中沒(méi)有而在大模型中出現(xiàn)的能力,即:
An ability is emergent if it is not present in smaller models but is present in larger models.
Scaling Up
上表是目前已有工作中涌現(xiàn)各種能力的模型及其最小規(guī)模。基本可以認(rèn)為你需要至少68B parameter model (前提訓(xùn)練的OK)才能涌現(xiàn)新能力。而這里涌現(xiàn)新能力指的是性能優(yōu)于隨機(jī),而要達(dá)到可用,你可能需要繼續(xù)放大模型。如CoT 至少需要GPT-3 175B 才能優(yōu)于精調(diào)小模型(t5-11b).
此外,與模型性能有關(guān)的不光有參數(shù)量,還有數(shù)據(jù)大小,數(shù)據(jù)質(zhì)量,訓(xùn)練計(jì)算量,模型架構(gòu)等.合理的比較應(yīng)該是性能最好的LLM 在參數(shù)量上進(jìn)行比較,然而我們目前還不知道如何訓(xùn)練讓LLM 達(dá)到最優(yōu),所以同一個(gè)能力在不同模型上需要的參數(shù)量也不相同,如要涌現(xiàn)出2位數(shù)乘法的能力,只需要GPT-3 13B,而在LaMDA 卻需要68B。
所以除了規(guī)模外,還有別的因素影響著是否能出現(xiàn)新能力:
模型如何訓(xùn)練的,很多模型即使參數(shù)足夠大,有些能力也可能不會(huì)出現(xiàn)。如原始GPT-3 175B、bloom-176B 等雖然參數(shù)夠大,但是卻都沒(méi)有CoT 的能力。
LLM 的使用方法,fine-tuning/標(biāo)準(zhǔn)的prompt 方法在推理任務(wù)上效果不好,即使在GPT-3 175B 上效果也達(dá)不到中學(xué)生平均水平,而CoT 卻只要100B parameter model 即可超越之前最好結(jié)果。
如何提升模型能力,在follow instruction 上,之前的工作認(rèn)為至少需要68B parameter model 才能有效instruction-finetuning,而后續(xù)的flan-t5 卻在11B 上就得到了更好的性能;GPT-3 經(jīng)過(guò)RLFH 后的InstructGPT,在follow instruction 上, 1.3B 就已經(jīng)比之前的GPT-3 175B 性能更好。
模型的架構(gòu),上面的結(jié)果都是transformer-based 的,而有工作驗(yàn)證了其他模型架構(gòu)(RNN/MLP),最后結(jié)論是其他架構(gòu)即使放大,也無(wú)法像transformer-based model 一樣涌現(xiàn)能力。again: attention is all you need!
Alignment
到目前為止,我們已經(jīng)知道了LLM 有很多能力,而且隨著模型規(guī)模的擴(kuò)大,可能會(huì)出現(xiàn)更多的新能力。但是,有個(gè)問(wèn)題卻嚴(yán)重制約著他在實(shí)際中的應(yīng)用:prompt engineering。仔細(xì)思考一下這個(gè)問(wèn)題,其本質(zhì)其實(shí)是模型認(rèn)為處理一個(gè)task 的prompt 跟我們以為的不一樣,如我們認(rèn)為當(dāng)我們說(shuō)“問(wèn)答:”時(shí)模型就應(yīng)該知道后面的是一個(gè)QA task,而模型可能覺(jué)得,如果你想讓我做QA task,你需要告訴我”媽咪媽咪哄”。
這就好比至尊寶已經(jīng)得到了月光寶盒,但是卻需要找到“般若波羅蜜”這句口訣然后喊出來(lái)才能穿越一樣,而且環(huán)境稍微不同,具體穿越到哪還不一定。那更好的方式應(yīng)該是我們拿到月光寶盒,然后說(shuō)一句:我要穿越到白晶晶自殺前五分鐘,然后我們就穿越到了對(duì)應(yīng)的時(shí)空。
理想情況下,LLM 應(yīng)該正確理解用戶(hù)的指令,包括同一個(gè)任務(wù)的不同描述(LLM 應(yīng)該對(duì)語(yǔ)義相同的instruction 表現(xiàn)一致,而非對(duì)prompt 的形式非常敏感)。而LLM 訓(xùn)練時(shí)的任務(wù)是預(yù)測(cè)下一個(gè)時(shí)刻的詞(predict next token),而非處理用戶(hù)的指令(follow instruction),所以存在gap 也是很自然的事。為了緩解這個(gè)問(wèn)題,一個(gè)方法就是進(jìn)行“對(duì)齊”(Alignment),縮小模型與人類(lèi)對(duì)同一個(gè)instruction 之間理解的gap,從而讓模型能更好的理解用戶(hù)的指令。
Fine-tuning with human feedback
一種很直接的想法就是構(gòu)造數(shù)據(jù)進(jìn)行fine-tuning。所以為了讓模型更好的理解人類(lèi)的指令,我們需要通過(guò)人類(lèi)反饋進(jìn)行微調(diào)模型(human in the loop)。
SFT
構(gòu)造人類(lèi)真實(shí)場(chǎng)景中的指令即期望的輸出,然后直接進(jìn)行SFT(supervised fine-tuning)。
FeedME
進(jìn)過(guò)SFT 后模型可能已經(jīng)能很好的理解人類(lèi)指令了,但是其答案可能有其他問(wèn)題,如胡編亂造,包含色情敏感內(nèi)容等,此外,靠人寫(xiě)數(shù)據(jù)成本高又耗時(shí),所以我們可以對(duì)多個(gè)模型的結(jié)果進(jìn)行打分(7分),然后在7/7 的數(shù)據(jù)上繼續(xù)訓(xùn)練,對(duì)多個(gè)模型的最好結(jié)果進(jìn)行蒸餾(distill)。這個(gè)方法叫FeedME(Feedback Made Easy).
Reinforcement learning with human feedback
即使我們從人寫(xiě)完整的樣本轉(zhuǎn)換為人給模型采樣的結(jié)果進(jìn)行打分,整個(gè)流程依然需要人參與,也限制了整個(gè)流程的加速。為了更高效的進(jìn)行整個(gè)微調(diào)的流程,引入Reinforcement learning。該方法又叫RLHF(Reinforcement learning from human feedback)。
具體流程:
標(biāo)注人員手寫(xiě)(prompt,completion),然后進(jìn)行SFT。這里主要是得到一個(gè)比較好的初始化模型,即模型至少能有一定的follow instruction 的能力。
收集模型輸出并進(jìn)行打分,然后訓(xùn)練一個(gè)reward model。
利用強(qiáng)化學(xué)習(xí)優(yōu)化模型。
結(jié)果上看,效果顯著,1.3B 就超過(guò)了之前175B 的結(jié)果,而且隨著模型增大,結(jié)果也在上升。
Instruction-tuning
雖然fine-tuning with human feedback 可以提升LLM 在真實(shí)場(chǎng)景中用戶(hù)任務(wù)上(customer task)的性能,但是在學(xué)術(shù)任務(wù)(academic NLP tasks)上的性能卻會(huì)有所下降,即使OpenAI 嘗試在RL 中增加部分pretrain data同時(shí)增加LM loss來(lái)嘗試緩解這個(gè)問(wèn)題,但是依然沒(méi)有解決。
如何解決這個(gè)問(wèn)題呢?辦法就是instruction-tuning:利用academic NLP data,為其構(gòu)造對(duì)應(yīng)的zero-shot/few-shot/CoT pattern,然后進(jìn)行fine-tuning。
instruction-tuning 效果顯著:1.不光能提升大模型在academic NLP benchmark 上的性能,也能提升小模型上的性能;2.能提升instruction-tuning 時(shí)未見(jiàn)過(guò)的task 上的性能;3.能解鎖小模型上的CoT 能力;4.隨著任務(wù)數(shù)量的增加,對(duì)應(yīng)的提升也會(huì)增加。5.最重要的是也能提升LLM 理解人類(lèi)真實(shí)指令(follow instruction)的能力。
ps: 雖然follow human instruction 的能力提升了,但是跟InstructGPT 誰(shuí)的性能更好卻沒(méi)有對(duì)比,我猜應(yīng)該是不如InstructGPT,實(shí)際應(yīng)用/學(xué)術(shù)指標(biāo)兩者依然是天枰的兩端。
ChatGPT
那如何才能得到一個(gè)ChatGPT呢?
首先我們需要一個(gè)具備各種能力(潛力)的LLM,所以它要足夠大,訓(xùn)練的足夠好。OpenAI 大概率也是為此重新訓(xùn)練了一個(gè)GPT-3 模型(GPT-3.5),主要論據(jù)為:1.原始GPT-3 175B和復(fù)現(xiàn)GPT-3 的OPT-175B 都沒(méi)有CoT 能力,而GPT-3.5 有CoT;2.原始的GPT-3 的窗口只有2048,而其對(duì)應(yīng)的是絕對(duì)位置編碼,現(xiàn)在的GPT-3.5最大窗口為8192。3.原始的GPT-3 不能寫(xiě)代碼,現(xiàn)在的可以。
標(biāo)注人員手寫(xiě)符合人類(lèi)的instruction data(最好再混合一些academic instruction data,如:Flan),然后進(jìn)行SFT,讓模型能更好的follow instruction。
在對(duì)話場(chǎng)景下構(gòu)造對(duì)應(yīng)的instruction data,進(jìn)一步fine-tuning with human feedback(RLHF加速流程).
番外篇:
如何提升LLM在某個(gè)(組)特定任務(wù)上的性能
雖然LLM 具有很多能力,但在實(shí)際場(chǎng)景中,我們可能只使用其中的一個(gè)或一組特定的能力,那如何提升LLM 在某個(gè)特定任務(wù)上的性能呢?答案是:不確定。
Fine-tuning
另一個(gè)思考就是構(gòu)造大量的supervised data 直接fine-tuning。Gopher 中針對(duì)對(duì)話任務(wù)做了對(duì)比實(shí)驗(yàn)。Dialog-Tuned Gopher: fine-tuning Gopher on 5B tokens of curated dialog dataset from MassiveWebDialog-Prompted Gopher: few-shot
可以看到,fine-tuning 后的模型性能與直接prompt 的基本持平(甚至有點(diǎn)下降的趨勢(shì)),并沒(méi)有帶來(lái)任何提升。
而Codex(GPT-3) 針對(duì)代碼(code) 做了fine-tuning,利用159G github code data 在GPT-3 上進(jìn)行fine-tuning,模型從基本無(wú)法處理代碼任務(wù)提升到當(dāng)時(shí)的SOTA,甚至只需要12B 就能達(dá)到從0 到72% 。
Fine-tuning with human feedback
之前我們提到通過(guò)RLHF 可以進(jìn)行alignment,讓模型更好的follow instruction。但是,這種對(duì)齊也會(huì)對(duì)模型的性能帶來(lái)一定的損失,又叫“對(duì)齊稅”(alignment tax)。
在學(xué)術(shù)NLP的benchmark 上,code-davinci-2(base model of text-davinci-2/text-davinci-3)的性能都是優(yōu)于fine-tuning 后的模型。
RAG
另外一種常用的方案就是RAG(Retrieval-Augmented Generation)
從實(shí)驗(yàn)結(jié)果上看,RAG 能帶來(lái)一定的提升,但是有限,不如prompt 方法帶來(lái)的提升明顯。
而另一個(gè)工作說(shuō),RAG 是帶來(lái)提升還是下降跟別的因素有關(guān),如在QA 上,他可能跟對(duì)應(yīng)實(shí)體的知名度(popularity) 有關(guān)。LLM 已經(jīng)存儲(chǔ)了知名度高的實(shí)體信息,而RAG 并不能帶來(lái)性能提升,反而由于retrieval 到錯(cuò)誤信息而導(dǎo)致性能下降,對(duì)于知名度低的實(shí)體通過(guò)RAG 是能帶來(lái)顯著提升的。
Prompt Engineering
在CoT 出來(lái)之前,我們一度認(rèn)為L(zhǎng)LM 可能需要繼續(xù)進(jìn)行指數(shù)級(jí)的擴(kuò)大才能線性提升其推理能力,而CoT 的出現(xiàn)解鎖了模型的推理能力。所以,一個(gè)可能的方案可能是在特定任務(wù)上繼續(xù)尋找他的“般若波羅蜜”。
Instruction-tuning
instruction-tuning 已經(jīng)證明了他的有效性,如flan-t5,flan-PaLM 經(jīng)過(guò)instruction-tuning 后,其性能都得到了提升。
如何將能力從大模型遷移到小模型上
instruction-tuning,通過(guò)大量的instruction-data 進(jìn)行fine-tuning,可以解鎖小模型上對(duì)應(yīng)的能力,但是相對(duì)大模型,通常還是有差距。
壓縮模型,如有工作將OPT-175B 蒸餾至75B,性能基本無(wú)損。(但是75B依然很大啊大佬?。?。
蒸餾,讓性能更好的大模型,生成大量的task-data,然后在小模型上進(jìn)行fine-tuning,但是這可能需要生成很多data,鑒于LLM 都比較貴,所以這個(gè)可能需要很多錢(qián)。
Ref
數(shù)學(xué)之美
A Neural Probabilistic Language Model
Language Models are Few-Shot Learners
OPT: Open Pre-trained Transformer Language Models
Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing
P-tuning:自動(dòng)構(gòu)建模版,釋放語(yǔ)言模型潛能
Chain of Thought Prompting Elicits Reasoning in Large Language Models
Large Language Models are Zero-Shot Reasoners
Self-Consistency Improves Chain of Thought Reasoning in Language Models
Complexity-based Prompting for Multi-Step Reasoning.
Least-to-Most Prompting Enables Complex Reasoning in Large Language Models
Measuring and Narrowing the Compositionality Gap in Language Models
Emergent Abilities of Large Language Models
Training language models to follow instructions with human feedback
Training Verifiers to Solve Math Word Problems
Scaling Instruction-Finetuned Language Models
Scaling Language Models: Methods, Analysis & Insights from Training Gopher
model-index-for-researchers
How does GPT Obtain its Ability? Tracing Emergent Abilities of Language Models to their Sources
instruction-following
GENERATE RATHER THAN RETRIEVE: LARGE LANGUAGE MODELS ARE STRONG CONTEXT GENERATORS
When Not to Trust Language Models: Investigating Effectiveness and Limitations of Parametric and Non-Parametric Memories.
Evaluating Large Language Models Trained on Code
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
大模型可解釋性你能理得清嗎?綜述已來(lái),一文解你疑惑
Paper:《Instruction Tuning for Large Language Models: A Survey—大型語(yǔ)言模型的指令調(diào)優(yōu)的綜述》翻譯與解讀
一文搞懂!如何高效微調(diào)你的 LLM
ChatGPT的前世今生——原理解析和拓展思考
字節(jié)跳動(dòng)火山翻譯負(fù)責(zé)人:預(yù)訓(xùn)練時(shí)代的機(jī)器翻譯
GPT背后的提升源自prompt tuning——prompt統(tǒng)一范式,“萬(wàn)物皆可生成”。
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服