一、概述
1 Motivation
構造instruction data非常耗時耗力,常受限于質量,多樣性,創造性,阻礙了instruction-tuned模型的發展。
背景:instruction-tuned方法是指利用非常多的指令數據【人類instructions指令和respond回答數據】去finetuned LLM模型,讓模型能夠理解人類指令,訓練后使其對新的任務有非常強的zero-shot能力。
2 Methods
方法概述:本文提出self-instruct框架,通過bootstrapping off方法讓原始的LM模型直接生成instruction數據,通過過濾和篩選后,產生大量的insturction指令數據(多樣性和效果都不錯),進而可以極大降低instruction數據的構建成本。
方法步驟總結:通過少量種子數據 + LM模型本身(未經過tuned模型)=> 生成instruction(指令)+ input(指令提到的輸入,可以為空)+ output(響應輸出)=> 然后filters過濾無效和相似的樣本 => 來構造非常多的instruction指令遵循數據,詳細步驟如下:
2.1 Defining Instruction Data
Instruction:指令
X:根據instruction,X可能為空或者不為空。例如:輸入X為空的Instruction:write an essay about school safety,輸入不為空的Instruction:write an essay about the following topic
Y:答案,只根據X或者Instruction理想的response回答
2.2 Automatic Instruction Data Generation
Instruction Generation:使用175個種子數據來生成新的Instruction,每一步采用8-few-shot的策略,其中6個是人類寫的,2個是機器生成的。
Classification Task Identification:利用LM采用few-shot的方式來預測1中生成的instructions是否為分類任務,采用12個分類任務,19個非分類任務作為few-shot的例子。
2.3 Instance Generation:采用兩種方法來生成實例X和Y
輸入優先方法(Input-first Approach),首先根據說明提出輸入字段X,然后產生相應的輸出Y,這里task就是input X,output就是輸出Y,也是通過in-context learning來做的,主要處理非分類的實例生成。
分類任務的輸出優先方法(Output-first Approach),先生成可能的類標簽,然后生成對應句子【這么做是為了控制正負樣本比例】
2.4Filtering and Postprocessing
過濾相似度比較高的,和已有的樣本ROUGE-L小于0.7的才要
過濾image,picture,graph通常LLM無法處理的詞
過濾instruction相同但是answer不同的
過濾太長或者太短
2.5FineTuning
采用多個templates模版,來encode instruction和instance進行訓練,提升不同格式的魯棒性。
3 Conclusion
比原始的GPT-3模型,絕對提升了33%,并且達到了差不多追上InstructGPT001的效果。就算利用公開的instruct數據,也有不錯的提升。
總結:
就用了175個原始種子數據,利用GPT3接口finetuned模型,比原始的GPT3高了33個點,并且居然和InstructGPT001效果差不太多了。
有了充分的訓練數據,在SUPERNI數據集(其更偏向于研究領域任務,與人類的Instruction的分布還是有差異,后續也針對真實的人類Instruction分布做了實驗)上訓練,用了本文提出的self-instruct還是有2個點的提升。
self-instruct提供了一個不用大量標注就能讓原始的LM(未經過指令學習的模型)學習理解人類指令的解決方案,極大地降低指令數據的生成和標注成本。
本文發布了大規模的synthetic數據集,方便后續大家進行instruction tuning的研究。
4 limitation
長尾效應還比較嚴重:self-instruct依賴于LMs生成數據,會繼承LM的缺陷,偏向于出現頻率高的詞。在常見的指令上效果可能不錯,在長尾樣本上可能效果比較差。
依賴大模型:依賴大模型的歸納偏差(inductive biases),可能只在大模型上效果比較好,由于大模型資源要求比較大,這也限制了小模型的使用。
可能會增強LM的偏見:可能會放大social bias,例如模型可能無法產生比較balanced的label。
二、詳細內容
1 評估本文self-instruct在用戶實際需求的Instructions上是否有效果
背景:SUPERNI數據更偏向于研究任務,這里通過頭腦風暴構造了一些更偏向用戶實際需求的Instructions,來檢驗self-instruct的效果,還是和InstructGPT系列來比較
結論:效果也基本接近InstructGPT001,說明了其有效性,這里只使用了252個種子數據,也可以極大地降低Instruction構建的成本。
2 評估使用本文self-instruct方法擴充的Instruction是否真的有用
方法:從Instruction數量、回復response質量兩個角度來進行試驗,其中response質量對比是通過蒸餾更好模型的response來做的實驗。
實驗1:評估擴充的訓練數據量級對效果的影響
方法:從最開始的175個種子數據,逐步增加數據量,評估效果。
結論:大概訓練數據在16K左右,效果就比較平了,帶來的提升沒那么大了。
實驗2:評估生成的response的質量對效果的影響(從更好的模型InstructGPT蒸餾得到更好的response)
結論:44.4%提升到54.4%,說明更好的回復質量對模型的提升也是巨大的。
3 生成的數據量級
訓練GPT3的數據量級:52k個Instruction數據,82k個實例。
4 生成的數據的多樣性
評估方法1:挑選top20最常見的動詞,然后畫出其top4的直接noun object分布,衡量整體的數據分布。
評估方法2:畫出與種子數據中,最相近文本的Rouge-L的分布,衡量與種子數據的分布差異。
結論:發現多樣性還不錯,這也是生成的數據能讓模型學會通用的指令遵循的原因之一。
5 生成數據的質量
統計指標:隨機挑選200個指令,每個指令隨機挑選一個實例來標注
指令有效率:92%
input與指令一致:79%
output正確(能很好地響應Instruction和input的要求):58%
各個場景都有效:54%
總結:盡管生成的數據還是包含誤差,但是大多數還是正確的,可以提供有用的指導,讓模型能學會遵循人類指令。
三、個人總結
相當于驗證了少量種子數據 + 原始預訓練模型 => 生成大批量 多樣性 + 質量還不錯的 指令數據的可行性 => 好處是可以極大降低指令遵循數據集構建的成本。
這篇文章解釋了為什么大模型能聽懂人類指令的困惑,可以看出,原始的GPT-3模型學習了非常多的知識,但是人類指令遵循的能力非常非常差,通過self-instruct構造大量的多樣、高質量的指令數據和答案,模型就開始能聽懂指令,理解這個指令的具體含義,并給出人類期望的respond響應。其中指令的【多樣性】和回復的【質量】是非常關鍵的兩個因素。
對于如何對齊人類的價值觀:可以參考復旦moss模型【參考資源1】,也是構造了非常多的對人類無害的種子數據,然后利用模型生成非常多的指令遵循數據,讓模型盡可能的生成無害的結果,從另一個角度看,如果不法分子誘導模型去生成暴力傾向等不符合人類期望的答案,那么可能會訓練出毒性非常大的模型,這也是非常恐怖的,難怪微軟的文章說原始的gpt-3.5系列可能具備更強的能力,說明OpenAI在這方面做了非常強的約束。也難怪OpenAI強烈建議對大模型進行監管。
-
機器
+關注
關注
0文章
784瀏覽量
40778 -
模型
+關注
關注
1文章
3298瀏覽量
49065 -
數據集
+關注
關注
4文章
1209瀏覽量
24792
原文標題:ACL2023 | 大模型如何快速構建指令遵循數據集?Self-Instruct:只需175條種子數據追上InstructGPT
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論