0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入淺出Prompt Learning要旨及常用方法

深度學(xué)習(xí)自然語言處理 ? 來源:深度學(xué)習(xí)自然語言處理 ? 2023-03-03 11:00 ? 次閱讀

近年來 NLP 學(xué)術(shù)領(lǐng)域發(fā)展真是突飛猛進(jìn),剛火完對比學(xué)習(xí)(contrastive learning),又有更火的提示學(xué)習(xí) prompt learning。眾所周知,數(shù)據(jù)標(biāo)注數(shù)據(jù)很大程度上決定了 AI 算法上限,并且成本非常高,無論是對比學(xué)習(xí)還是提示學(xué)習(xí)都著重解決少樣本學(xué)習(xí)而提出,甚至在沒有標(biāo)注數(shù)據(jù)的情況下,也能讓模型表現(xiàn)比較好的效果。本文主要介紹 prompt learning 思想和目前常用的方法。

NLP的訓(xùn)練范式有哪些

目前學(xué)術(shù)界一般將 NLP 任務(wù)的發(fā)展分為四個(gè)階段即 NLP 四范式: 1. 第一范式:基于傳統(tǒng)機(jī)器學(xué)習(xí)模型的范式,如 tf-idf 特征 + 樸素貝葉斯等機(jī)器算法; 2. 第二范式:基于深度學(xué)習(xí)模型的范式,如 word2vec 特征 + LSTM 等深度學(xué)習(xí)算法,相比于第一范式,模型準(zhǔn)確有所提高,特征工程的工作也有所減少; 3. 第三范式:基于預(yù)訓(xùn)練模型 + finetuning 的范式,如 BERT + finetuning 的 NLP 任務(wù),相比于第二范式,模型準(zhǔn)確度顯著提高,但是模型也隨之變得更大,但小數(shù)據(jù)集就可訓(xùn)練出好模型; 4. 第四范式:基于預(yù)訓(xùn)練模型 + Prompt + 預(yù)測的范式,如 BERT + Prompt 的范式相比于第三范式,模型訓(xùn)練所需的訓(xùn)練數(shù)據(jù)顯著減少。

75155c84-b91e-11ed-bfe3-dac502259ad0.png

在整個(gè) NLP 領(lǐng)域,你會發(fā)現(xiàn)整個(gè)發(fā)展是朝著精度更高、少監(jiān)督,甚至無監(jiān)督的方向發(fā)展的,而 Prompt Learning 是目前學(xué)術(shù)界向這個(gè)方向進(jìn)軍最新也是最火的研究成果。 為什么需要提示學(xué)習(xí) 為什么呢?要提出一個(gè)好的方式那必然是用來解決另一種方式存在的缺陷或不足,那我們就先從它的上一個(gè)范式來說起,就是預(yù)訓(xùn)練模型 PLM + finetuning 范式常用的是 BERT+ finetuning:

75446c22-b91e-11ed-bfe3-dac502259ad0.png

這種范式是想要預(yù)訓(xùn)練模型更好的應(yīng)用在下游任務(wù),需要利用下游數(shù)據(jù)對模型參數(shù)微調(diào);首先,模型在預(yù)訓(xùn)練的時(shí)候,采用的訓(xùn)練形式:自回歸、自編碼,這與下游任務(wù)形式存在極大的 gap,不能完全發(fā)揮預(yù)訓(xùn)練模型本身的能力 必然導(dǎo)致:較多的數(shù)據(jù)來適應(yīng)新的任務(wù)形式——>少樣本學(xué)習(xí)能力差、容易過擬合

755c7d6c-b91e-11ed-bfe3-dac502259ad0.png

▲ 上下游任務(wù)形式存在gap 其次,現(xiàn)在的預(yù)訓(xùn)練模型參數(shù)量越來越大,為了一個(gè)特定的任務(wù)去 finetuning 一個(gè)模型,然后部署于線上業(yè)務(wù),也會造成部署資源的極大浪費(fèi)。

7570ef04-b91e-11ed-bfe3-dac502259ad0.png

▲ 模型專用性特定任務(wù)微調(diào)導(dǎo)致部署成本過高

提示學(xué)習(xí)是什么

首先我們應(yīng)該有的共識是:預(yù)訓(xùn)練模型中存在大量知識;預(yù)訓(xùn)練模型本身具有少樣本學(xué)習(xí)能力。 GPT-3 提出的 In-Context Learning,也有效證明了在 Zero-shot、Few-shot 場景下,模型不需要任何參數(shù),就能達(dá)到不錯(cuò)的效果,特別是近期很火的 GPT3.5 系列中的 ChatGPT。

759fa218-b91e-11ed-bfe3-dac502259ad0.png

Prompt Learning 的本質(zhì): 將所有下游任務(wù)統(tǒng)一成預(yù)訓(xùn)練任務(wù);以特定的模板,將下游任務(wù)的數(shù)據(jù)轉(zhuǎn)成自然語言形式,充分挖掘預(yù)訓(xùn)練模型本身的能力。 本質(zhì)上就是設(shè)計(jì)一個(gè)比較契合上游預(yù)訓(xùn)練任務(wù)的模板,通過模板的設(shè)計(jì)就是挖掘出上游預(yù)訓(xùn)練模型的潛力,讓上游的預(yù)訓(xùn)練模型在盡量不需要標(biāo)注數(shù)據(jù)的情況下比較好的完成下游的任務(wù),關(guān)鍵包括 3 個(gè)步驟:

設(shè)計(jì)預(yù)訓(xùn)練語言模型的任務(wù)

設(shè)計(jì)輸入模板樣式(Prompt Engineering)

設(shè)計(jì) label 樣式及模型的輸出映射到 label 的方式(Answer Engineering)

Prompt Learning 的形式: 以電影評論情感分類任務(wù)為例,模型需根據(jù)輸入句子做二分類: 原始輸入:特效非??犰?,我很喜歡。 Prompt 輸入:提示模板 1:特效非??犰牛液芟矚g。這是一部 [MASK] 電影;提示模板 2:特效非??犰牛液芟矚g。這部電影很 [MASK] 提示模板的作用就在于:將訓(xùn)練數(shù)據(jù)轉(zhuǎn)成自然語言的形式,并在合適的位置 MASK,以激發(fā)預(yù)訓(xùn)練模型的能力。

75b67a74-b91e-11ed-bfe3-dac502259ad0.png

▲ 提示學(xué)習(xí)模板框架 類別映射 / Verbalizer:選擇合適的預(yù)測詞,并將這些詞對應(yīng)到不同的類別。

75d7e970-b91e-11ed-bfe3-dac502259ad0.png

▲ 類別映射 通過構(gòu)建提示學(xué)習(xí)樣本,只需要少量數(shù)據(jù)的 Prompt Tuning,就可以實(shí)現(xiàn)很好的效果,具有較強(qiáng)的零樣本/少樣本學(xué)習(xí)能力。

常見的提示學(xué)習(xí)方法

4.1 硬模板方法

4.1.1硬模板-PET(Pattern Exploiting Training) PET 是一種較為經(jīng)典的提示學(xué)習(xí)方法,和之前的舉例一樣,將問題建模成一個(gè)完形填空問題,然后優(yōu)化最終的輸出詞。雖然 PET 也是在優(yōu)化整個(gè)模型的參數(shù),但是相比于傳統(tǒng)的 Finetuning 方法,對數(shù)據(jù)量需求更少。 建模方式: 以往模型只要對 P(l|x) 建模就好了(l 是 label),但現(xiàn)在加入了 Prompt P 以及標(biāo)簽映射(作者叫 verbalizer),所以這個(gè)問題就可以更新為:

7607dda6-b91e-11ed-bfe3-dac502259ad0.png

其中 M 表示模型,s 相當(dāng)于某個(gè) prompt 下生成對應(yīng) word 的 logits。再通過 softmax,就可以得到概率:

761d8eb2-b91e-11ed-bfe3-dac502259ad0.png

作者在訓(xùn)練時(shí)又加上了 MLM loss,進(jìn)行聯(lián)合訓(xùn)練。

762ee0b8-b91e-11ed-bfe3-dac502259ad0.png

▲ 訓(xùn)練架構(gòu) 具體的做法:

在少量監(jiān)督數(shù)據(jù)上,給每個(gè) Prompt 訓(xùn)練一個(gè)模型;

對于無監(jiān)督數(shù)據(jù),將同一個(gè)樣本的多個(gè) prompt 預(yù)測結(jié)果進(jìn)行集成,采用平均或加權(quán)(根據(jù) acc 分配權(quán)重)的方式,再歸一化得到概率分布,作為無監(jiān)督數(shù)據(jù)的 soft label ;

在得到的 soft label上 finetune 一個(gè)最終模型。

4.1.2 硬模板-LM-BFF LM-BFF 是陳天琦團(tuán)隊(duì)的工作,在 Prompt Tuning 基礎(chǔ)上,提出了 Prompt Tuning with demonstration & Auto Prompt Generation。

765af16c-b91e-11ed-bfe3-dac502259ad0.png

766fa706-b91e-11ed-bfe3-dac502259ad0.png

硬模板方法的缺陷: 硬模板產(chǎn)生依賴兩種方式:根據(jù)經(jīng)驗(yàn)的人工設(shè)計(jì) & 自動化搜索。但是,人工設(shè)計(jì)的不一定比自動搜索的好,自動搜索的可讀性和可解釋性也不強(qiáng)。

76b210c8-b91e-11ed-bfe3-dac502259ad0.png

上圖實(shí)驗(yàn)結(jié)果可以看出硬模板 對于 prompt,改變 prompt 中的單個(gè)單詞會給實(shí)驗(yàn)結(jié)果帶來巨大的差異,所以也為后續(xù)優(yōu)化提供了方向,如索性直接放棄硬模板,去優(yōu)化 prompt token embedding。

4.2軟模板方法

4.2.1 軟模板- P tuning 不再設(shè)計(jì)/搜索硬模板,而是在輸入端直接插入若干可被優(yōu)化的 Pseudo Prompt Tokens,自動化地尋找連續(xù)空間中的知識模板:

不依賴人工設(shè)計(jì)

要優(yōu)化的參數(shù)極少,避免了過擬合(也可全量微調(diào),退化成傳統(tǒng) finetuning)

76d60122-b91e-11ed-bfe3-dac502259ad0.png

傳統(tǒng)離散 prompt 直接將模板 T 的每個(gè) token 映射為對應(yīng)的 embedding,而 P-Tuning 將模板 T 中的 Pi(Pseudo Prompt)映射為一個(gè)可訓(xùn)練的參數(shù) hi。 優(yōu)化關(guān)鍵點(diǎn)在于,自然語言的 hard prompt,替換為可訓(xùn)練的 soft prompt;使用雙向 LSTM 對模板 T 中的 pseudo token 序列進(jìn)行表征;引入少量自然語言提示的錨字符(Anchor)提升效率,如上圖的“capital”,可見 p-tuning 是 hard+soft 的形式,并不是完全的 soft 形式。 具體的做法:

初始化一個(gè)模板:The capital of [X] is [mask]

替換輸入:[X] 處替換為輸入 “Britian”,即預(yù)測 Britain 的首都

挑選模板中的一個(gè)或多個(gè) token 作為 soft prompt

將所有 soft prompt 送入 LSTM,獲得每個(gè) soft prompt 的隱狀態(tài)向量 h

將初始模板送入 BERT 的 Embedding Layer,所有 soft prompt 的 token embedding 用 h 代替,然后預(yù)測mask。

核心結(jié)論:基于全量數(shù)據(jù),大模型:僅微調(diào) prompt 相關(guān)的參數(shù),媲美 fine-tuning 的表現(xiàn)。 代碼:https://github.com/THUDM/

4.2.2 軟模板- Prefix tuning P-tuning 更新 prompt token embedding 的方法,能夠優(yōu)化的參數(shù)較少。Prefix tuning 希望能夠優(yōu)化更多的參數(shù),提升效果,但是又不帶來過大的負(fù)擔(dān)。雖然 prefix tuning 是在生成任務(wù)上被提出來的,但是它對 soft prompt 后續(xù)發(fā)展有著啟發(fā)性的影響。

76ee35d0-b91e-11ed-bfe3-dac502259ad0.png

▲ 優(yōu)化每一層的 Prompt token embedding,而不僅僅是輸入層

由上圖可見,模型上在每層 transformer 之前加入 prefix。特點(diǎn)是 prefix 不是真實(shí)的 token,而是連續(xù)向量(soft prompt),Prefix-tuning 訓(xùn)練期間凍結(jié) transformer 的參數(shù),只更新 Prefix 的參數(shù)。 只需要存儲大型 transformer 的一個(gè)副本和學(xué)習(xí)到的特定于任務(wù)的前綴即可,為每個(gè)附加任務(wù)產(chǎn)生非常小的開銷。

77174588-b91e-11ed-bfe3-dac502259ad0.png

▲ 自回歸模型

以圖上自回歸模型為例的做法:

輸入表示為 Z = [ prefix ; x ; y ]

Prefix-tuning 初始化一個(gè)訓(xùn)練的 矩陣 P,用于存儲 prefix parameters

前綴部分 token,參數(shù)選擇設(shè)計(jì)的訓(xùn)練矩陣,而其他部分的 token,參數(shù)則固定 且為預(yù)訓(xùn)練語言模型的參數(shù)

核心結(jié)論:Prefix-tuning 在生成任務(wù)上,全量數(shù)據(jù)、大模型:僅微調(diào) prompt 相關(guān)的參數(shù),媲美 fine-tuning 的表現(xiàn)。 代碼:https://github.com/XiangLi1999/PrefixTuning

4.2.3 軟模板- Soft Prompt Tuning Soft Prompt Tuning 系統(tǒng)后驗(yàn)證了軟模板方法的有效性,并提出:固定基礎(chǔ)模型,有效利用任務(wù)特定的 Soft Prompt Token,可以大幅減少資源占用,達(dá)到大模型的通用性。 對 Prefix-tuning 的簡化,固定預(yù)訓(xùn)練模型,只對下游任務(wù)的輸入添加額外的 k 個(gè)可學(xué)習(xí)的 token。這種方式在大規(guī)模預(yù)訓(xùn)練模型的前提下,能夠媲美傳統(tǒng)的 fine-tuning 表現(xiàn)。

7730efe2-b91e-11ed-bfe3-dac502259ad0.png

代碼:https://github.com/kipgparker/soft-prompt-tuning

總結(jié)

Prompt Learning 的組成部分

提示模板:根據(jù)使用預(yù)訓(xùn)練模型,構(gòu)建完形填空 or 基于前綴生成兩種類型的模板

類別映射 / Verbalizer:根據(jù)經(jīng)驗(yàn)選擇合適的類別映射詞

預(yù)訓(xùn)練語言模型

典型的 Prompt Learning 方法總結(jié)

硬模板方法:人工設(shè)計(jì)/自動構(gòu)建基于離散 token的模板

1)PET

2)LM-BFF

2. 軟模板方法:不再追求模板的直觀可解釋性,而是直接優(yōu)化 Prompt Token Embedding,是向量/可學(xué)習(xí)的參數(shù)

1)P-tuning

2)Prefix Tuning

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6715

    瀏覽量

    88316
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48366
  • nlp
    nlp
    +關(guān)注

    關(guān)注

    1

    文章

    481

    瀏覽量

    21935

原文標(biāo)題:深入淺出Prompt Learning要旨及常用方法

文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深入淺出AVR

    深入淺出AVR,一本書。
    發(fā)表于 07-15 12:02

    深入淺出玩轉(zhuǎn)FPGA

    深入淺出玩轉(zhuǎn)FPGA
    發(fā)表于 07-21 09:21

    深入淺出ARM7

    深入淺出ARM7
    發(fā)表于 08-18 10:12

    HDMI技術(shù)深入淺出

    HDMI技術(shù)深入淺出
    發(fā)表于 08-19 10:52

    深入淺出Android

    深入淺出Android
    發(fā)表于 08-20 10:14

    深入淺出Android

    深入淺出Android
    發(fā)表于 04-26 10:48

    深入淺出安防視頻監(jiān)控系統(tǒng)

    深入淺出安防視頻監(jiān)控系統(tǒng)深入淺出安防視頻監(jiān)控系統(tǒng)
    發(fā)表于 05-22 19:28

    深入淺出AVR

    深入淺出AVR
    發(fā)表于 08-23 10:10

    深入淺出matlab

    深入淺出matlab 本書介紹了MATLAB 7.X版本與其他語言混合編程的方法。內(nèi)容包括在MATLAB中以文件方式導(dǎo)入、導(dǎo)
    發(fā)表于 06-18 09:13 ?261次下載
    <b class='flag-5'>深入淺出</b>matlab

    深入淺出數(shù)據(jù)分析

    深入淺出數(shù)據(jù)分析,有需要的朋友下來看看。
    發(fā)表于 01-15 14:22 ?0次下載

    深入淺出談多層面板布線技巧

    深入淺出談多層面板布線技巧
    發(fā)表于 12-13 22:20 ?0次下載

    深入淺出Android—Android開發(fā)經(jīng)典教材

    深入淺出Android—Android開發(fā)經(jīng)典教材
    發(fā)表于 10-24 08:52 ?15次下載
    <b class='flag-5'>深入淺出</b>Android—Android開發(fā)經(jīng)典教材

    深入淺出數(shù)字信號處理

    深入淺出數(shù)字信號處理
    發(fā)表于 12-07 20:14 ?488次閱讀

    深入淺出學(xué)習(xí)250個(gè)通信原理資源下載

    深入淺出學(xué)習(xí)250個(gè)通信原理資源下載
    發(fā)表于 04-12 09:16 ?28次下載

    深入淺出學(xué)習(xí)低功耗藍(lán)牙協(xié)議棧

    深入淺出學(xué)習(xí)低功耗藍(lán)牙協(xié)議棧
    發(fā)表于 06-23 10:35 ?56次下載