1 兩種大語言模型:GPT VS BERT
?2 對于大語言模型的兩種不同期待
2.1 “專才”
2.1.1 成為專才的好處?
Is ChatGPT A Good Translator? A Preliminary Study 2023 Arxiv
箭頭方向指的是從哪個方向往哪個方向翻譯表格里面的數值越大表示翻譯的越好可以發現專門做翻譯的工作會比ChatGPT好一些
How Good Are GPT Models at? Machine Translation? A? Comprehensive Evaluation
同樣地,專項翻譯任務上,ChatGPT不如一些專門做翻譯的模型
?2.1.2 使用方式
對于訓練模型進行改造
?bert的先天劣勢就是,他是句子填空,而不是句子接龍,所以希望他進行某一項任務,需要對他進行額外的處理,以及額外的參數微調(finetune)
2.1.2.1 加head
額外地對BERT進行一定的添加,使其能夠輸出希望的結果
?2.1.2.2 微調 Finetune

?2.1.2.3 對訓練模型做改造——加入Adapter
在語言模型里插入額外的模組,語言模型的參數不動,只更新adapter的參數?
?2.1.2.3.1 為什么需要Adapter?
如果沒有Adapter的話,100個任務就需要存放100個大模型(的參數)
?有了Adapter之后,同樣的100個任務,我們只需要存一個大模型的參數,和100個任務對應Adapter的參數即可。而一般Adapter的參數量比大模型少多了
?
2.2 “通才”
?通過人類給模型下的指令(prompt)實現,
2.2.1 成為通才的好處
?2.2.2 In-context Learning
給大語言模型一個句子,讓他分析句子是正面的還是負面的
?
我們需要告訴模型我們要進行情感分析。怎么告訴呢?
- 我們給大模型一些例子,(前面那些句子+情感分析結果)
- 把那些例子串起來,加上我們想要分析的句子,一股腦喂給大模型,讓大模型輸出是正面還是負面
?2.2.2.1? 大模型真的能從這些例子中學到信息?
2.2.2.1.1 Rethinking the Role of Demonstrations: What Makes In-Context Learning Work? 2022 ARXIV
故意給模型輸入一些錯誤的情感分析標注,看模型的分析結果![]()
![]()
- ?No demo是沒有范例
- 橙色是給了正確的范例
- 紅色是給了一些錯誤的范例
——>可以發現正確率并沒有下降很多
并沒有從范例里學到很多有用的信息??
?
?
那么,故意給一些不在這個domain里面的,無關的輸入呢?
?這種將無關domain的信息加入的結果就是紫色部分,可以看到如果是來自不同的domain的話,效果會下降
??
?
所以這篇論文中,in-context learning作用的猜測是:“喚醒”模型
?換句話說,大語言模型本身就會情感分析,in-context learning的作用是“喚醒”他,讓語言模型知道接下來做的任務是情感分析
?這篇論文的另一個例子也佐證了這個觀點,我們提供的句子-情感結果對增加,精度漲的不多(如果是finetune的話,精度會提升的很快)
?
?
——>說明并不是靠in-context learning提供的這幾個輸入來學習情感分析。大語言模型本身就已經具備了情感分析的功能了
?2.2.2.1.2?Larger language models do in-context learning differently 2023 arxiv
- ?每一個圖像中,顏色越深的表示模型越大
- 橫軸表示in-context learning階段提供給大模型的有多少比例的是錯誤的信息
- 可以看到大模型受到錯誤范例的影響是很大的,而小模型(GPT3,這里的小是相對的小)受到錯誤范例的影響是不大
- 上一篇paper考慮的是較小的模型,所以可能會覺得給了錯誤的范例影響不大
- 同時我們可以看到,在大模型中,當in-context learning的錯誤率為100%(全是相反的結果)的時候,大模型的正確率都是低于50%的,說明他們確實從錯誤的資料中學到了一些知識
與此同時,我們直接讓大模型進行分類任務
我們在in-context learning階段將input和output全部作為輸入提供給大模型,讓大模型來進行分類任務
??
可以看到大模型確實學到了in-context learning中的信息
?
2.2.2.2 讓模型學習 in-context learning
[2110.15943] MetaICL: Learning to Learn In Context (arxiv.org)?
前面的in-context learning都是沒有finetune過程了,這里相當于finetune了一下?
?用別的任務的in-context learning的范例、輸入、輸出進行微調
?2.2.3 instruction tuninging?
大語言模型還是需要進行一定的微調,才能效果比較好,這個微調的過程就是instruction-tuning
訓練(finetune)的時候, 給模型一些指令和對應的答案。測試的時候,給finetune指令之外的其他指令。讓模型自己給出合理的回應。
早期模型如Multitask Prompted Training Enables Zero-Shot Task Generalization就提出了一個T0模型,來達成instruction-tuning的效果
?
?[2109.01652] Finetuned Language Models Are Zero-Shot Learners (arxiv.org)
FLAN也是一個早期做instruction tuning的work
?
首先收集大量的NLP任務和數據集
?
而由于instruction tuning是希望模型理解人類下的指令,所以FLAN每一個NLP的任務想了十種不同的描述方式(template)
??
- 當測試任務是natrual language inference的時候,finetune訓練的時候就沒有這個任務
- zero shot 是只有指令,沒有in-context learning
- few-shot就是in-context learning
- FLAN就是進行instruction learning的結果
?
?2.2.4 Chain of Thought
[2201.11903] Chain-of-Thought Prompting Elicits Reasoning in Large Language Models (arxiv.org)
另一種更詳細地給機器prompting的方法
- 如果是數學這種需要推理的問題,直接給 in-context learning 往往效果若不好
- ?而如果我們給范例的時候,同時給推導過程+答案。期望模型輸出答案的時候,也先輸出推導,再輸出答案
- 這就叫Chain of Thought Prompting
?
- ?從效果上來看,加了CoT之后的效果更好
?2.2.5 加一些prompting,讓CoT效果更好
[2205.11916] Large Language Models are Zero-Shot Reasoners (arxiv.org)
在進行CoT的時候,范例輸完了,需要模型回答的問題說完了,加一行’Let's think step by step',可以獲得更好的效果
Large Language Models Are Human-Level Prompt Engineers ICLR 2023
加的那一行文字不一樣,效果也不一樣
2.2.6 CoT+Self=consistency
[2203.11171] Self-Consistency Improves Chain of Thought Reasoning in Language Models (arxiv.org)
?
- 使用CoT讓模型先輸出推導過程,再輸出推導結果,可能每次推導過程不一樣 答案也不一樣
- 這里讓語言模型產生好幾次推導和對應的結果,出現最多次的答案就是正確答案
- 當然也可以每個答案 用語言模型算一個幾率(信心分數)權重
- 但這個權重論文中說沒有什么幫助,所以直接根據數量投票就好
2.2.7 強化學習找Prompt
[2206.03931] Learning to Generate Prompts for Dialogue Generation through Reinforcement Learning (arxiv.org)
2.2.8 直接用LLM來找Prompt
[2211.01910] Large Language Models Are Human-Level Prompt Engineers (arxiv.org)
?