主頁 >  其他 > 解密Prompt系列4. 升級Instruction Tuning:Flan/T0/InstructGPT/TKInstruct

解密Prompt系列4. 升級Instruction Tuning:Flan/T0/InstructGPT/TKInstruct

2023-03-27 08:37:32 其他

這一章我們聊聊指令微調,指令微調和前3章介紹的prompt有什么關系呢?哈哈只要你細品,你就會發現大家對prompt和instruction的定義存在些出入,部分認為instruction是prompt的子集,部分認為instruction是句子型別的prompt,

對比前三章介紹過的主流prompt范式,指令微調有如下特點

  1. 面向大模型:指令微調任務的核心是釋放模型已有的指令理解能力(GPT3中首次提出),因此指令微調是針對大模型設計的,因為指令理解是大模型的涌現能力之一,而prompt部分是面向常規模型例如BERT
  2. 預訓練:與其說是instruction tunning,更像是instruction pretraining,是在預訓練階段融入多樣的NLP指令微調,而非針對特定下游任務進行微調,而之前的promp主要服務微調和zeroshot場景
  3. multitask:以下模型設計了不同的指令微調資料集,但核心都是多樣性,差異化,覆寫更廣泛的NLP任務,而之前的prompt模型多數有特定的任務指向
  4. 泛化性:在大模型上進行指令微調有很好的泛化性,在樣本外指令上也會存在效果提升
  5. 適用模型:考慮指令都是都是sentence形式的,因此只適用于En-Dn,Decoder only類的模型,而之前的prompt部分是面向Encoder的完形填空型別

下面我們介紹幾個指令微調相關的模型,模型都還是那個熟悉的模型,核心的差異在于微調的指令資料集不同,以及評估側重點不同,每個模型我們只側重介紹差異點,按時間順序分別是Flan, T0,InstructGPT, TK-Instruct

Google: Flan

  • paper: 2021.9 Finetuned Langauge Models are zero-shot learners
  • github:https://github.com/google-research/FLAN
  • 模型:137B LaMDA-PT
  • 一言以蔽之:搶占先機,Google第一個提出指令微調可以解鎖大模型指令理解能力

谷歌的Flan是第一個提出指令微調范式的,目的和標題相同使用指令微調來提升模型的zero-shot能力,論文使用的是137B的LAMDA-PT一個在web,代碼,對話, wiki上預訓練的單向語言模型,

指令集

在構建資料集上,谷歌比較傳統,直接把Tensorflow Dataset上12個大類,總共62個NLP任務的資料集,通過模板轉換成了指令資料集

為了提高指令資料集的多樣性,每個任務,會設計10個模板,所以總共是620個指令,并且會有最多3個任務改造模板,所謂的任務改造就是把例如影評的情感分類任務,轉化成一個影評生成任務,更充分的發揮已有標注資料構建更豐富的指令資料集,哈哈感覺這里充滿了人工的力量,

為了保證資料集的多樣性和均衡性,每個資料集的訓練樣本限制在3萬,并且考慮模型對一個任務的適應速度取決于任務資料集大小,因此按使用資料集樣本大小占比按比例采樣混合訓練,

效果

效果上137B的指令微調模型大幅超越GPT3 few-shot, 尤其是在NLI任務上,考慮NLI的句子對基本不會在預訓練文本中自然作為連續上下句出現,而指令微調中設計了更自然地模板帶來了大幅的效果提升,

除了以上存在明顯效果提升的任務,在一些任務本身就和指令相似的任務,例如常識推理和指代消歧任務,指令微調并不能帶來顯著的效果提升,

作者做了更多的消融實驗,驗證指令微調中以下幾個變數

  1. 模型規模:
    作者進一步論證了指令微調帶來的效果提升存在明顯的大模型效應,只有當模型規模在百億左右,指令微調才會在樣本外任務上帶來提升,作者懷疑當模型規模較小時,在較多任務上微調可能會占用模型本就不多的引數空間,造成預訓練時的通用知識遺忘,降低在新任務上的效果,

  1. 多任務影響:
    考慮指令微調是在多任務上進行,作者希望剔除指令微調中多任務微調帶來的影響,因此嘗試進行多任務非指令微調(使用資料集名稱代替指令),效果上指令微調顯著更優,說明指令模板的設計確實存在提升模型指令理解力的效果,

  2. few-shot:
    除了zero-shot,Flan同時驗證了few-shot的效果,整體上few-shot的效果優于zero-shot,說明指令微調對few-shot也有效果提升,

  3. 結合prompt-tunning
    既然指令微調提升模型對指令的理解能力,作者認為應該對進一步使用soft-prompt也應該有提升,因此進一步使用了prompt-tunning對下游任務進行微調,不出意外Flan比預訓練LaMDA的效果有顯著的提升,

BigScience: T0

  • paper: 2021.10 Multitask prompted training enables zero-shot task generation
  • T0: https://github.com/bigscience-workshop/t-zero
  • Model: 11B T5-LM
  • 一言以蔽之: Flan你想到的我也想到了! 不過我的指令資料集更豐富多樣

T0是緊隨Flan發布的論文,和FLan對比有以下以下幾個核心差異:

  • 預訓練模型差異:Flan是Decoder-only, T0是Encoder-Decoder的T5,并且考慮T5的預訓練沒有LM目標,因此使用了prompt-tunning中以LM任務繼續預訓練的T5-LM
  • 指令多樣性:T0使用的是PromptSource的資料集,指令要比Flan更豐富
  • 模型規模:Flan在消融實驗中發現8B以下指令微調效果都不好,而3B的T0通過指令微調也有效果提升,可能影響是En-Dn的預訓練目標差異,以及T0的指令集更多樣更有創意
  • 樣本外泛化任務: Flan為了驗證指令微調泛化性是每次預留一類任務在剩余任務訓練,訓練多個模型,T0是固定了4類任務在其余任務上微調

下面我們細說下T0的指令資料和消融實驗

指令集

T0構建了一個開源Prompt資料集P3(Public Pool of Prompts),包括173個資料集和2073個prompt,從豐富程度上比Flan提升了一整個數量級,不過只包含英文文本,更多資料集的構建細節可以看PromptSource的論文,

作者在指令集的多樣性上做了2個消融實驗

  1. 指令集包括的資料集數:
    在T0原始指令集的基礎上,作者分別加入GPT-3的驗證集,以及SuperGLUE,訓練了T0+和T0++模型,在5個hold-out任務上,更多的資料集并不一定帶來效果的提升,并且在部分推理任務上,更多的資料集還會帶來spread的上升(模型在不同prompt模板上表現的穩定性下降)

  1. 每個資料集的prompt數(p):通過每個資料集采樣不同數量的prompt進行訓練,作者發現隨prompt數提升,模型表現的中位數會有顯著提升,spread存在不同程度的下降,不過看起來存在邊際遞減的效應,

OpenAI: InstructGPT

  • paper: 2022.3 Training Language Model to follow instructions with human feedback
  • Model: (1.3B, 6B, 175B) GPT3
  • 一言以蔽之:你們還在刷Benchamrk?我們已經換玩法了!更好的AI才是目標

這里把InstructGPT拆成兩個部分,本章只說指令微調的部分,也就是訓練三部曲中的第一步,論文中叫SFT(Supervised fine-tuning),從論文的資料構建和評估中,不難發現OpenAI對于什么是一個更好的模型的定義和大家出現了差異,當谷歌,BigScience聯盟還在各種不同的標準任務上評估LM模型能力提升時,OpenAI的重點已經變成了更好的AI,也就是能更好幫助人類解決問題的人工智能,簡化成3H原則就是

  • Helpful:模型能幫助用戶解決問題
  • Honest: 模型能輸出真實資訊
  • Harmless: 模型輸出不能以任何形式傷害人類

于是正文部分的評估基本沒有常見的Accuracy,F1等,而是變成了各種人工評估的打分,例如LikeScore,Hallucinations等等,指令微調資料集的分布也從標準NLP任務向用戶在playground中提交的問題偏移,下面我們細說下這兩部分

指令集

先說下SFT指令集的構建,InstructGPT構建了訓練12725+驗證1653條prompt指令,由標注員的標注樣本和用戶在playground中和模型互動的指令共同構成,相比T0指令的多樣性又有大幅提升,不過以下的指令數量包括了few-shot采樣,也就是1個instruction采樣不同的few-shot算多條指令,

除了豐富程度,和T0以及Flan指令集最大的差異在于指令型別的分布, 標注人員標注了以下三類樣本

  • Plain: 標注同學自由構建任務指令
  • Few-shot:自由構建任務的同時給出few-shot樣例
  • User-Based: 基于用戶申請waitlist時給出的使用用途,讓標注同學構建對應的指令任務

整體上會更偏向于用戶在真實場景下和模型互動可能提問的問題,自由式生成例如腦暴,改寫,聊天,自由創作類的任務占了絕大多數, 而T0,Flan的指令集集中在NLP的分類和QA任務,這類任務的在實際互動中占比其實很小,下圖是OpenAI play ground中收集的用戶指令的分布

以及從論文的表述中存在迭代 ,也就是標注同學標注的指令集用于訓練第一版InstructGPT,然后發布到playground,收集更多的用戶和模型互動的指令,再使用用戶指令來訓練后續的模型,因此在用戶導向的資料集上OpenAI相比所有競爭對手都有更深厚的積累,你以為在白嫖人家的playground?人家也在收集資料提升他們的模型,

SFT使用cosine rate decay 例如微調了16個epoch,但是發現在第一個epoch上驗證集就已經過擬合了,但是過擬合會提升后續RLHF的模型效果,這部分我們放到RLHF章節再討論,也就是什么樣的模型更合適作為RLHF的起點

評估指標

從論文對如何把3H原則轉化成客觀的模型評估指標的討論上,不難感受到OpenAI對于標注標準有過很長期的討論和迭代,包括3個方向

  1. Helpful有用性

主要評價模型是否理解了指令意圖,考慮有些指令本身意圖的模糊性,因此有用性被泛化成標注同學1-7分的偏好打分,

  1. Harmless有害性

針對模型輸出是否有害其實取決于模型的輸出被用在什么場景中,OpenAI最初是用疑似有害性作為判斷標注,不過看起來可能雙審一致率不高,不同標注同學對疑似有害的認知存在較大差異,因此OpenAI設計了幾條明確的有害標準,和風控類似,包括涉黃,涉暴,有侮辱性言語等等,

  1. Honest事實性

相比Honest的含義 ,Truthfulness更適合用與沒有價值觀的模型,論文使用封閉域上模型偽造事實的概率,和在QA問題上的準確率來評估,

以上的標注標準,具體反映在以下的標注頁面中

模型效果

評估資料也分成了兩部分,標準NLP資料集,和API收集的指令資料進行標注得到,也就是OpenAI獨有資料,

  1. API資料集

有用性上,不論是在請求GPT,還是在請求InstructGPT的指令樣本中,不論是使用新的標注同學,還是和標注訓練樣本相同的標注同學,對比原始GPT3,SFT之后的模型like score都顯著更高,并且存在模型規模效應,

具體拆分到是否遵循指令,是否給出偽事實,以及能否對用戶起到幫助作用上,SFT微調后的模型都有顯著提升,

同時論文對比了使用Flan和T0的指令集對GPT3進行微調,發現雖然比原始GPT3有提升,但是效果會顯著差于使用更接近人類偏好的指令集微調的SFT,論文給出了兩個可能的原因

  • 公開NLP任務型別集中在分類和QA,這和OpenAI playground中收集的任務分布存在較大的差異
  • 公開NLP資料集的指令豐富程度 << 人們實際輸入的指令多樣性

  1. 標準NLP任務

在TruthfulQA任務上,SFT模型相比GPT有微小但是顯著的提升,整體事實性還是有待提高,

在RealToxicityPrompts資料集上,不管是人工打分還是Perspective模型打分都顯示,SFT相比GPT3,在產出有害內容上比例有顯著的下降,

綜上所述,InstructGPT在指令微調上最大突破是指令資料集分布的差異性,標準NLP任務更少,自由開放類任務更多,以及依賴Openai免費開放的playground,可以持續收集用戶的指令用于模型迭代,同時在評估標準上,在語言模型之外引入3H體系來評價模型作為AI的能力效果,

AllenAI:TK-Instruct

  • paper: 2022.4 SUPER-NATURAL INSTRUCTIONS:Generalization via Declarative Instructions on 1600+ NLP Tasks
  • 開源指令集:https://instructions.apps.allenai.org/
  • Model: 11B T5
  • 一言以蔽之:沒有最大只有更大的指令集,在英文和非英文的各類任務上超越InstructGPT?

Tk-Instruct最大的貢獻在于開源了更大規模的指令資料集,并且對上述提到的T0(promptSource),Flan,InstructGPT指令集進行了對比總結,如下

TK-Instruct在76大類,總共1616個任務上構建了指令集,任務分布比T0和Flan更加多樣和廣泛,比InstructGPT要小(不過因為Instruct GPT的指令更多是開放生成類的用戶指令所以不太可比),且占比上還是更偏向標準NLP任務型別,

其他細節這里不再贅述,這里放TK-InstructGPT更多是想看下以上T0,InstructGPT,TK-Instruct的效果對比,可以發現在內容理解任務上Tk-Instruct是要顯著超越InstructGPT的,在生成類任務上二者差不多,但整體和有監督微調(虛線)相比還有很大的提升空間,這里其實也是我對Chatgpt能力的一些疑慮,不可否認它在擬人化和對話上的成功,但是在標準NLP任務上ChatGPT的水平如何,這一點有待評估,好像又看到最近有類似的論文出來,后面再補上這部分

更多Prompt相關論文·教程,AIGC相關玩法戳這里DecryptPrompt


Reference

  1. https://bigscience.huggingface.co/blog/t0
  2. https://github.com/bigscience-workshop/promptsource

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/548225.html

標籤:其他

上一篇:一篇用AI生成圖片與內容的文章

下一篇:Spatio-Temporal Representation With Deep Neural Recurrent Network in MIMO CSI Feedback閱讀筆記

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more