網(wǎng)站適合用angular做嗎十大免費(fèi)引流平臺
目錄
- 語言模型回顧
- 大模型的兩種路線
- 專才
- 通才
- 二者的比較
- 專才養(yǎng)成記
- 通才養(yǎng)成記
- Instruction Learning
- In-context Learning
- 自動Prompt
部分截圖來自原課程視頻《2023李宏毅最新生成式AI教程》,B站自行搜索
語言模型回顧
GPT:文字接龍
How are __.
Bert:文字填空
How __ you.
使用大型語言模型就好比下圖:
小老鼠就能駕馭大象。
大模型的兩種路線
專才
主要利用模型解決某一個特定的任務(wù),例如翻譯
或者是文本摘要:
通才
主要利用模型解決解決各種不同的任務(wù),對不同Prompt有不同的響應(yīng)。
例如上圖中的紅色字體就是Prompt。
早在18年就有The Natural Language Decathlon: Multitask Learning as Question Answering,讓語言模型完成各種不同的任務(wù),文章的思想就是將所有的不同的任務(wù)都看做是問答,例如:
上面的提問分別對應(yīng)了多種不同的任務(wù):閱讀理解,摘要,情感分析等。
這些提問用在現(xiàn)在的GPT上就是Prompt
二者的比較
專才的優(yōu)點(diǎn):在專才的單一任務(wù)上比通才性能要強(qiáng)。
Is ChatGPT A Good Translator? Yes With GPT-4 As The Engine
這個文章給出分析九印證了這一點(diǎn),先自問自答找出GPT翻譯的Prompt:
然后給出12種翻譯結(jié)果(兩兩互翻譯),從結(jié)果中可以看到ChatGPT比單一任務(wù)模型的BLEU分?jǐn)?shù)要低一些
這個文章是騰訊在ChatGPT剛出來的時候,還未發(fā)布API的時候測的(文章在23年3月有更新),且只做了10個句子。
微軟在23年2月發(fā)表了How Good Are GPT Models at Machine Translation? A Comprehensive Evaluation,ChatGPT與在WMT上取得最好成績的模型進(jìn)行比較,還是比不過。
通才的優(yōu)點(diǎn):只需要重新設(shè)計(jì)Prompt就可以開發(fā)新功能,不需要修改代碼。
專才養(yǎng)成記
改造方式有兩種:加外掛和微調(diào)
所謂加外掛就是基于BERT有四種用法,具體可以看這里。
微調(diào):以翻譯任務(wù)為例就是收集成對的語料,可以不用很大量,然后在訓(xùn)練好的語言模型(預(yù)訓(xùn)練好的)基礎(chǔ)上進(jìn)行GD。
Adapter:在語言模型中加入額外的layer,在訓(xùn)練過程中保存語言模型的參數(shù)不變,只更新Adapter中的參數(shù)。
Adapter有很多種,可以看這里。
魔鬼筋肉人版BERT。。。
EXPLORING EFFICIENT-TUNING METHODS IN SELF-SUPERVISED SPEECH MODELS,這篇李宏毅團(tuán)隊(duì)發(fā)表的文章中介紹了如何在BERT里面加Adapter
Bitfit:把Bias作為額外插件,在微調(diào)時只更新神經(jīng)元的Bias;
Houlsby:在最后的Feed-Forward后面的Houlsby再加入一層Feed-Forward結(jié)構(gòu),并只更新該結(jié)構(gòu)的參數(shù);
AdapterBias:是對后面Houlsby是結(jié)果加的Bias,主要是對結(jié)果進(jìn)行平移;
Prefix-tuning:修改Attention部分;
LoRA:修改Attention部分。
這里給出了多個Adapter專才的解決方法
通才養(yǎng)成記
有兩種做題方式:
Instruction Learning
根據(jù)題目敘述來回答問題
只做文字接龍的模型是看不同題目的,無法明白題目的含義,因此,需要對模型進(jìn)行Instruction-tuning,就是對模型進(jìn)行如下訓(xùn)練
21年的文章Multitask Prompted Training Enables Zero-Shot Task Generalization中就提出了類似的思想:
文章Finetuned Language Models Are Zero-Shot Learners提出FLAN(Finetuned Language Net),收集了大量不同領(lǐng)域NLP相關(guān)的數(shù)據(jù)集:
然后將這些任務(wù)轉(zhuǎn)化為相應(yīng)的模板,例如下面NLI的任務(wù),原文就給出10個模板。
最后結(jié)果如下,需要注意的是,在做各個任務(wù)evaluation的時候,訓(xùn)練過程是不帶evaluation任務(wù)的數(shù)據(jù)的,只是訓(xùn)練模型看各種模板。
文章Chain-of-Thought Prompting Elicits Reasoning in Large Language Models提供了另外一種讓模型學(xué)會看懂不同Prompt的思路。
模型在邏輯推理方面效果不好,例如下面例子中雖然給出了例子,但是模型回答應(yīng)用題就不對:
具體改進(jìn)就是在Prompt中加入億點(diǎn)點(diǎn)解題思路和推論過程:
最后模型在應(yīng)用題上的結(jié)果還不錯:
當(dāng)然這個好麻煩,我都會解題步驟還需要模型干嘛,然后就出現(xiàn)了下面的Prompt,結(jié)果居然起飛。
然后進(jìn)一步的在Self-Consistency Improves Chain of Thought Reasoning in Language Models里面借鑒了少數(shù)服從多數(shù)的理念,對CoT進(jìn)行了改進(jìn):
由于模型在生成答案是有隨機(jī)性的,因此考慮如果模型生成的答案中通過不同的計(jì)算方式得到相同的答案,那么這個答案大概率就是正確答案。
CoT的另外一個做法在文章Least-to-Most Prompting Enables Complex Reasoning in Large Language Models中提到,就是Least-to-Most Prompting。思想就是將復(fù)雜的數(shù)學(xué)問題進(jìn)行分解(Problem Reduction)
這里的數(shù)學(xué)問題是小女孩要玩滑梯,爬上去要4分鐘,滑下來要1分鐘,如果還有15游樂園關(guān)門,小女孩能玩幾次?
這里的第一次分解是依靠模型完成的,得到結(jié)果是先要求小女孩玩一次滑梯要多少時間?然后將分解的問題在丟進(jìn)模型得到結(jié)果是5分鐘,然后在將中間過程和最后的問題放入模型得到答案:3次。
In-context Learning
根據(jù)范例來回答問題
例如要做SA任務(wù),先要給一些例子
然后模型可以完成相關(guān)任務(wù),這個過程不涉及到GD:
由于不涉及到GD,模型是沒有對所給的范例進(jìn)行學(xué)習(xí)的,例如論文:Rethinking the Role of Demonstrations: What Makes In-Context Learning Work?中做了相關(guān)實(shí)驗(yàn),故意給出標(biāo)注錯誤/隨機(jī)的范例,發(fā)現(xiàn)模型性能并未下降很多,說明模型并未受到范例的影響。
下圖藍(lán)色是未給范例的結(jié)果,橙色正確范例的結(jié)果,而最后深橙色是隨機(jī)范例結(jié)果:
文章還做了另外一個實(shí)驗(yàn),用隨機(jī)sample來的語料進(jìn)行情感分析
下圖中紫色部分就是給錯誤語料示范的結(jié)果,發(fā)現(xiàn)性能下降比較厲害,也就意味在跨Domain上進(jìn)行Evaluation效果較差。
最后文章分析:模型本來就知道如何做情感分析,只不過需要范例來提示它,指出需要做情感任務(wù)。范例的樣本數(shù)量多少其實(shí)并不太重要。文中也給出了相應(yīng)的實(shí)驗(yàn)結(jié)果,橫軸為范例個數(shù):
也有部分論文提出其他觀點(diǎn):模型可以從范例中學(xué)習(xí)到相關(guān)知識,具體沒有展開。
當(dāng)下谷歌最新文章Larger language models do in-context learning differently做了以下實(shí)驗(yàn),顏色越深模型越大,橫軸表示模型吃進(jìn)去的標(biāo)簽錯誤百分比。圖中顯示模型越大越容易受到標(biāo)簽的影響。
附錄中還給出了一個離譜的用大模型做線性分類的實(shí)驗(yàn),實(shí)驗(yàn)數(shù)據(jù)如下:
Input: 648, 626, 543, 103, 865, 910, 239, 665, 132, 40, 348, 479, 640, 913, 885, 456
Output: Bar
Input: 720, 813, 995, 103, 24, 94, 85, 349, 48, 113, 482, 208, 940, 644, 859, 494
Output: Foo
Input: 981, 847, 924, 687, 925, 244, 89, 861, 341, 986, 689, 936, 576, 377, 982, 258
Output: Bar
Input: 191, 85, 928, 807, 348, 738, 482, 564, 532, 550, 37, 380, 149, 138, 425, 155
Output: Foo
Input: 284, 361, 948, 307, 196, 979, 212, 981, 903, 193, 151, 154, 368, 527, 677, 32
Output: Bar
Input: 240, 910, 355, 37, 102, 623, 818, 476, 234, 538, 733, 713, 186, 1, 481, 504
Output: Foo
Input: 917, 948, 483, 44, 1, 72, 354, 962, 972, 693, 381, 511, 199, 980, 723, 412
Output: Bar
Input: 729, 960, 127, 474, 392, 384, 689, 266, 91, 420, 315, 958, 949, 643, 707, 407
Output: Bar
Input: 441, 987, 604, 248, 392, 164, 230, 791, 803, 978, 63, 700, 294, 576, 914, 393
Output: Bar
…
期待模型根據(jù):
Input: 101, 969, 495, 149, 394, 964, 428, 946, 542, 814, 240, 467, 435, 987, 297, 466
Output:
得到:
Answer:
Bar
結(jié)果如下,橫軸是給出的輸入的維度:
上面的模型都是只學(xué)習(xí)文字接龍,就來做其他任務(wù),文章MetaICL: Learning to Learn In Context中提出讓模型學(xué)習(xí)如何進(jìn)行In-context Learning,就是要更好的馴化模型以達(dá)到更好的結(jié)果。
自動Prompt
現(xiàn)在大多數(shù)都是人直接下指令,屬于:
如果不給指令:
這種其實(shí)與專才中的Adapter流派類似。
還有使用RL的方法來找Prompt:Learning to Generate Prompts for Dialogue Generation through Reinforcement Learning
還有使用LM自己找出Prompt:Large Language Models Are Human-Level Prompt Engineers
先來一個模板:
然后為這個模板提供類似以下數(shù)據(jù):
希望模型能夠給出情感分類的Prompt。
具體流程如下圖:
1.先是給模板然后模型根據(jù)模板生成若干個Prompt;
2.將Prompt結(jié)果分別丟進(jìn)模型進(jìn)行生成;
3.對生成對結(jié)果排序;
4.選出較好的結(jié)果;
5.讓模型再次生成與這些結(jié)果相近的Prompt。
最后兩步效果提升不明顯,到第3步就好了。
劃重點(diǎn):注意看第一句最強(qiáng)催眠Prompt