大模型高效微調(diào)Prompt Tuning論文解讀 原創(chuàng)
原文題目:The Power of Scale for Parameter-Effificient Prompt Tuning,規(guī)模的力量:參數(shù)高效的提示調(diào)整
摘要:在這項工作中,我們探索了“提示調(diào)整”(prompt tuning),這是一種簡單但有效的機(jī)制,用于學(xué)習(xí)“軟提示”(soft prompts),以調(diào)節(jié)凍結(jié)的語言模型,使其執(zhí)行特定的下游任務(wù)。與 GPT-3 使用的離散文本提示不同,軟提示是通過反向傳播學(xué)習(xí)得到的,并且可以調(diào)整以納入任意數(shù)量的標(biāo)記示例信號。我們的端到端學(xué)習(xí)方法在性能上大幅度超越了 GPT-3 的少樣本學(xué)習(xí)。更引人注目的是,通過對 T5 模型大小的消融實驗,我們展示了提示調(diào)整隨著規(guī)模的增加而更具競爭力:隨著模型參數(shù)超過數(shù)十億,我們的方法“縮小了差距”,并且匹配了模型調(diào)整(即調(diào)整所有模型權(quán)重)的強(qiáng)大性能。這一發(fā)現(xiàn)尤其相關(guān),因為大型模型在共享和服務(wù)上成本高昂,而能夠?qū)⒁粋€凍結(jié)的模型重用于多個下游任務(wù)可以減輕這種負(fù)擔(dān)。我們的方法可以看作是對最近提出的“前綴調(diào)整”(prefix tuning)的簡化,這是由 Li 和 Liang(2021)提出的,我們提供了與這種方法以及其他類似方法的比較。最后,我們展示了使用軟提示調(diào)節(jié)凍結(jié)模型在域轉(zhuǎn)移的魯棒性方面帶來了好處,并實現(xiàn)了高效的“提示集成”(prompt ensembling)。
1、引言
隨著預(yù)訓(xùn)練大型語言模型的廣泛成功,出現(xiàn)了一系列技術(shù)來適應(yīng)這些通用模型以執(zhí)行下游任務(wù)。ELMo(Peters 等人,2018 年)提出了凍結(jié)預(yù)訓(xùn)練模型并學(xué)習(xí)其每層表示的任務(wù)特定權(quán)重。然而,自從 GPT(Radford 等人,2018 年)和 BERT(Devlin 等人,2019 年)以來,主導(dǎo)的適應(yīng)技術(shù)一直是模型調(diào)整(或“微調(diào)”),這是 Howard 和 Ruder(2018 年)提出的,即在適應(yīng)過程中調(diào)整所有模型參數(shù)。
最近,Brown 等人(2020 年)展示了提示設(shè)計(或“引導(dǎo)”)在通過文本提示調(diào)節(jié)凍結(jié)的 GPT-3 模型行為方面出奇地有效。提示通常由任務(wù)描述和/或幾個典型示例組成。這種回歸到“凍結(jié)”預(yù)訓(xùn)練模型的方法特別吸引人,尤其是隨著模型大小的不斷增加。與其為每個下游任務(wù)要求模型的單獨副本,一個單一的通用模型可以同時服務(wù)于許多不同的任務(wù)。
不幸的是,基于提示的適應(yīng)有幾個關(guān)鍵缺點。任務(wù)描述容易出錯并需要人工參與,而且提示的有效性受到模型輸入中可以適應(yīng)多少條件文本的限制。因此,下游任務(wù)的質(zhì)量仍然遠(yuǎn)遠(yuǎn)落后于調(diào)整過的模型。例如,盡管使用了 16 倍多的參數(shù),GPT-3 175B 在 SuperGLUE 上的少樣本性能比微調(diào)的 T5-XXL(Raffel 等人,2020 年)(71.8 對比 89.3)低 17.5 分。
最近提出了幾項自動化提示設(shè)計的努力。Shin 等人(2020 年)提出了一種在離散詞匯空間上的搜索算法,該算法由下游應(yīng)用訓(xùn)練數(shù)據(jù)指導(dǎo)。雖然這種技術(shù)超越了手動提示設(shè)計,但與模型調(diào)整相比仍有差距。Li 和 Liang(2021 年)提出了“前綴調(diào)整”并在生成任務(wù)上展示了強(qiáng)大的結(jié)果。這種方法凍結(jié)了模型參數(shù),并在調(diào)整過程中將錯誤反向傳播到編碼器堆棧中每層(包括輸入層)前添加的前綴激活。Hambardzumyan 等人(2021 年)通過將可訓(xùn)練參數(shù)限制在掩碼語言模型的輸入和輸出子網(wǎng)絡(luò)中,簡化了這個配方,并在分類任務(wù)上展示了合理的結(jié)果。
圖 1:T5 的標(biāo)準(zhǔn)模型調(diào)整實現(xiàn)了強(qiáng)大的性能,但需要為每個終端任務(wù)存儲模型的單獨副本。我們對 T5 的提示調(diào)整隨著規(guī)模的增加,與模型調(diào)整的質(zhì)量相匹配,同時實現(xiàn)了對單一凍結(jié)模型在所有任務(wù)中的重用。我們的方法顯著優(yōu)于使用 GPT-3 的少樣本提示設(shè)計。我們展示了調(diào)整方法在 3 次運行中的平均值和標(biāo)準(zhǔn)差。
在本文中,我們提出了提示調(diào)整作為一種進(jìn)一步簡化適應(yīng)語言模型的方法。我們凍結(jié)了整個預(yù)訓(xùn)練模型,并且只允許每個下游任務(wù)添加額外的 k 個可調(diào)標(biāo)記到輸入文本的前面。這個“軟提示”是端到端訓(xùn)練的,并且可以壓縮來自完整標(biāo)記數(shù)據(jù)集的信號,使我們的方法能夠超越少樣本提示并縮小與模型調(diào)整的質(zhì)量差距(圖 1)。同時,由于單一預(yù)訓(xùn)練模型被回收用于所有下游任務(wù),我們保留了凍結(jié)模型的高效服務(wù)優(yōu)勢(圖 2)。
圖 2:模型調(diào)整需要為每個下游任務(wù)創(chuàng)建整個預(yù)訓(xùn)練模型的任務(wù)特定副本,推理必須在單獨的批次中執(zhí)行。提示調(diào)整只需要為每個任務(wù)存儲一個小的任務(wù)特定提示,并使用原始預(yù)訓(xùn)練模型實現(xiàn)混合任務(wù)推理。對于 T5 “XXL” 模型,每個調(diào)整過的模型副本需要 110 億個參數(shù)。相比之下,我們調(diào)整過的提示每個任務(wù)只需要 20,480 個參數(shù)——假設(shè)提示長度為 5 個標(biāo)記,這減少了超過五個數(shù)量級。
雖然我們與 Li 和 Liang(2021 年)以及 Hambardzumyan 等人(2021 年)同時開發(fā)了我們的方法,但我們是第一個展示僅憑提示調(diào)整(無需中間層前綴或特定任務(wù)輸出層)就足以與模型調(diào)整競爭的。通過第 2-3 節(jié)的詳細(xì)實驗,我們展示了語言模型容量是這些方法成功的關(guān)鍵因素。正如圖 1 所示,提示調(diào)整隨著規(guī)模的增加變得更加有競爭力。
我們在第 4 節(jié)與類似方法進(jìn)行了比較。明確將特定任務(wù)參數(shù)與通用語言理解所需的“通用”參數(shù)分開,具有一系列額外的好處。我們在第 5 節(jié)展示了通過在保持通用參數(shù)固定的同時在提示中捕獲任務(wù)定義,我們能夠?qū)崿F(xiàn)對領(lǐng)域變化的更好韌性。在第 6 節(jié),我們展示了“提示集成”,為同一任務(wù)學(xué)習(xí)多個提示,可以提高質(zhì)量并且比經(jīng)典模型集成更高效。最后,在第 7 節(jié),我們調(diào)查了我們學(xué)習(xí)到的軟提示的可解釋性??傊?,我們的主要貢獻(xiàn)是:
1. 提出提示調(diào)整,并展示其在大型語言模型領(lǐng)域與模型調(diào)整的競爭力。
2. 消融了許多設(shè)計選擇,并展示隨著規(guī)模的增加,質(zhì)量和魯棒性得到提高。
3. 展示提示調(diào)整在領(lǐng)域變化問題上超越模型調(diào)整。
4. 提出“提示集成”并展示其有效性。
2、提示調(diào)整
遵循 T5(Raffel 等人,2020 年)的“文本到文本”方法,我們將所有任務(wù)都視為文本生成。我們不再將分類建模為給定某些輸入時輸出類別的概率 Pr(y|X),其中 X 是一系列標(biāo)記,y 是單個類別標(biāo)簽,而是將其建模為條件生成,其中 Y 是代表類別標(biāo)簽的標(biāo)記序列。T5 將分類建模為 Prθ(Y |X),由構(gòu)成其編碼器和解碼器的 Transformer(Vaswani 等人,2017 年)的權(quán)重 θ 參數(shù)化。
(注釋,我們采用了一種叫做 T5 的方法來處理各種自然語言處理任務(wù)。T5 方法的核心思想是把任務(wù)看作是文本生成問題。在傳統(tǒng)的分類任務(wù)中,我們通常關(guān)注于計算給定輸入(比如一句話或者一張圖片)時,輸出某個特定類別的概率。這里的輸入 X 可以理解為一系列文字或者圖像中的像素點,而 y 是我們想要預(yù)測的類別標(biāo)簽,比如“貓”或“狗”。
但在 T5 方法中,我們不再這樣做。相反,我們把分類任務(wù)看作是一個生成過程,即給定輸入 X,我們不是直接預(yù)測一個類別標(biāo)簽 y,而是生成一個代表這個類別的文本序列 Y。這個序列 Y 可以是任何形式的文本,比如一個類別的名稱或者描述。
T5 方法使用一種叫做 Transformer 的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來實現(xiàn)這個過程。Transformer 是一種特別擅長處理序列數(shù)據(jù)的網(wǎng)絡(luò),它通過學(xué)習(xí)輸入數(shù)據(jù)中的模式來生成輸出。在 T5 中,Transformer 的參數(shù)(即 θ)是由模型的訓(xùn)練數(shù)據(jù)來決定的,這些參數(shù)決定了模型如何將輸入 X 轉(zhuǎn)換成輸出序列 Y。
簡單來說,T5 方法把分類任務(wù)變成了一個文本生成游戲,模型需要學(xué)會如何根據(jù)給定的輸入生成正確的文本輸出,而不是直接給出一個類別標(biāo)簽。這種方法使得模型在處理各種不同的自然語言處理任務(wù)時更加靈活和強(qiáng)大。)
提示是在模型生成 Y 的過程中添加額外信息的方法。通常,提示是通過在輸入 X 前添加一系列標(biāo)記 P 來完成的,使得模型在保持模型參數(shù) θ 固定的同時,最大化正確 Y 的可能性 Prθ(Y |[P; X])。在 GPT-3 中,提示標(biāo)記的表示 P = {p1, p2, ..., pn} 是模型嵌入表的一部分,由凍結(jié)的 θ 參數(shù)化。找到最優(yōu)提示需要通過手動搜索或非可微搜索方法(Jiang 等人,2020 年;Shin 等人,2020 年)選擇提示標(biāo)記。提示調(diào)整去除了提示 P 必須由 θ 參數(shù)化的限制;相反,提示有自己的專用參數(shù) θP,可以更新。雖然提示設(shè)計涉及從固定詞匯的凍結(jié)嵌入中選擇提示標(biāo)記,但提示調(diào)整可以被視為使用固定提示的特殊標(biāo)記,其中只有這些提示標(biāo)記的嵌入可以更新。我們新的條件生成現(xiàn)在是 Prθ;θP (Y |[P; X]),并且可以通過最大化 Y 的可能性通過反向傳播進(jìn)行訓(xùn)練,同時只對 θP 應(yīng)用梯度更新。
(注釋:這段話描述了在自然語言處理(NLP)中,特別是在使用像 GPT-3 這樣的大型預(yù)訓(xùn)練語言模型時,如何通過“提示”(prompt)來引導(dǎo)模型生成特定輸出的過程。這里的“提示”是一種向模型提供額外信息的方法,以便在生成文本時考慮到這些信息。下面是對這段話的通俗解釋:
1. 提示的作用:提示是在模型生成文本(Y)的過程中,向模型提供額外的上下文信息。這樣,模型在生成文本時,可以更好地理解任務(wù)的意圖,并生成更符合預(yù)期的輸出。
2. 如何添加提示:提示通常是通過在原始輸入(X)前添加一系列的標(biāo)記(P)來實現(xiàn)的。這些標(biāo)記是預(yù)先定義好的,它們幫助模型理解任務(wù)的上下文。
3. 模型參數(shù):在 GPT-3 這樣的模型中,模型的參數(shù)(θ)是固定的,而提示標(biāo)記(P)是由這些固定參數(shù)參數(shù)化的。這意味著模型在生成文本時,會根據(jù)這些固定的提示標(biāo)記來生成輸出。
4. 尋找最優(yōu)提示:為了找到最佳的提示,研究人員可能需要手動搜索或者使用一些非可微的搜索方法來選擇最合適的提示標(biāo)記。
5. 提示調(diào)整(Prompt Tuning):這是一種新的方法,它允許提示標(biāo)記有自己的參數(shù)(θP),這些參數(shù)可以在訓(xùn)練過程中更新。這與傳統(tǒng)的提示設(shè)計不同,因為傳統(tǒng)的提示設(shè)計中,提示標(biāo)記是從固定詞匯中選擇的,其嵌入(即表示)是不可更新的。
6. 條件生成:在提示調(diào)整中,模型的生成過程現(xiàn)在考慮了兩組參數(shù):模型的原始參數(shù)(θ)和提示的專用參數(shù)(θP)。這樣,模型在生成文本時,會同時考慮這兩組參數(shù)。這個過程可以通過反向傳播和梯度更新來訓(xùn)練,但只有提示的專用參數(shù)(θP)會接受梯度更新。
這段話描述了一種讓模型在生成文本時更加靈活的方法。通過引入可更新的提示參數(shù),模型可以在訓(xùn)練過程中調(diào)整這些參數(shù),以更好地適應(yīng)特定的任務(wù),從而提高生成文本的質(zhì)量和相關(guān)性。)
給定一系列 n 個標(biāo)記 {x1, x2, ..., xn},T5 首先做的是嵌入這些標(biāo)記,形成一個矩陣 Xe ∈ Rn×e,其中 e 是嵌入空間的維度。我們的軟提示表示為一個參數(shù) Pe ∈ Rp×e,其中 p 是提示的長度。然后,我們的提示被連接到嵌入的輸入,形成一個單一的矩陣 [Pe; Xe] ∈ R(p+n)×e,然后像平常一樣通過編碼器-解碼器。我們的模型被訓(xùn)練以最大化 Y 的可能性,但只有提示參數(shù) Pe 被更新。
(注釋:這段話描述的是 T5(Text-to-Text Transfer Transformer)模型處理文本輸入并生成輸出的過程。T5 是一種自然語言處理模型,它將所有任務(wù)都統(tǒng)一為文本到文本的轉(zhuǎn)換問題。下面是對這段話的通俗解釋:
1. 標(biāo)記序列:首先,我們有一系列標(biāo)記(x1, x2, ..., xn),這些可以是單詞、字符或者任何其他形式的文本單元。這些標(biāo)記是輸入文本的基本組成部分。
2. 嵌入:T5 模型首先將這些標(biāo)記轉(zhuǎn)換成嵌入(Xe),這是一個矩陣,其中每一行代表一個標(biāo)記的嵌入向量。嵌入向量是高維空間中的點,它們能夠捕捉標(biāo)記的語義信息。矩陣的維度是 n×e,其中 n 是標(biāo)記的數(shù)量,e 是嵌入向量的維度。
3. 軟提示:接下來,我們有一個“軟提示”(Pe),這是一個參數(shù)化的表示,它也是一個矩陣,維度為 p×e。軟提示的長度是 p,它提供了額外的信息來指導(dǎo)模型的輸出。這個軟提示是可學(xué)習(xí)的,意味著它的參數(shù)會在模型訓(xùn)練過程中更新。
4. 連接提示和嵌入:然后,我們將軟提示(Pe)和標(biāo)記的嵌入(Xe)連接起來,形成一個更大的矩陣 [Pe; Xe]。這個新矩陣的維度是 (p+n)×e,它包含了原始輸入標(biāo)記的嵌入和軟提示的信息。
5. 通過編碼器-解碼器:連接后的矩陣接著被送入模型的編碼器-解碼器部分。編碼器負(fù)責(zé)理解輸入的語義內(nèi)容,解碼器則負(fù)責(zé)生成輸出。這個過程就像是在翻譯或者解釋輸入的文本。
6. 訓(xùn)練模型:在訓(xùn)練過程中,模型的目標(biāo)是最大化輸出 Y(可能是文本、分類標(biāo)簽等)的可能性。但是,只有軟提示的參數(shù) Pe 會被更新,而原始標(biāo)記的嵌入?yún)?shù)保持固定。這意味著模型在訓(xùn)練時會學(xué)習(xí)如何調(diào)整軟提示,以便更好地完成任務(wù)。
我們通過一個具體的例子來說明如何在 T5 模型中連接提示(prompt)和嵌入(embedding)。
假設(shè)我們的任務(wù)是情感分析,即判斷一段文本是正面的還是負(fù)面的。我們有一段簡單的文本輸入:“我今天過得很愉快。” 首先,我們需要將這段文本轉(zhuǎn)換成模型可以理解的形式。
1. 文本標(biāo)記化:我們首先將這段文本分解成標(biāo)記(tokens),比如單詞或字符。在這個例子中,我們可能會得到這樣的標(biāo)記序列:["我", "今天", "過", "得", "很", "愉快", "。"]。
2. 嵌入:接下來,我們?yōu)檫@些標(biāo)記創(chuàng)建嵌入。在 T5 模型中,每個標(biāo)記都會被轉(zhuǎn)換成一個固定維度的向量。假設(shè)嵌入維度是 512,我們就會得到一個 7×512 的矩陣 Xe,其中每一行代表一個標(biāo)記的嵌入。
3. 創(chuàng)建提示:為了指導(dǎo)模型進(jìn)行情感分析,我們需要創(chuàng)建一個提示。這個提示是一個可學(xué)習(xí)的參數(shù)矩陣 Pe,它的維度是提示長度 p 乘以嵌入維度 e。假設(shè)我們的提示長度是 3,那么我們的提示矩陣 Pe 就是 3×512。
4. 連接提示和嵌入:現(xiàn)在,我們將提示矩陣 Pe 和嵌入矩陣 Xe 連接起來。這意味著我們將提示的行添加到嵌入矩陣的頂部。這樣,我們得到了一個新的矩陣 [Pe; Xe],它的維度是 (3+7)×512,即 10×512。這個新矩陣包含了原始文本的嵌入信息和我們?yōu)榍楦蟹治鋈蝿?wù)提供的額外指導(dǎo)。
5. 通過編碼器-解碼器:這個連接后的矩陣 [Pe; Xe] 將被送入 T5 模型的編碼器-解碼器部分。編碼器會處理這個矩陣,理解文本和提示的聯(lián)合含義。然后,解碼器會嘗試生成一個輸出,比如情感標(biāo)簽“正面”。
6. 訓(xùn)練模型:在訓(xùn)練過程中,我們的目標(biāo)是調(diào)整提示參數(shù) Pe,以便模型能夠更準(zhǔn)確地預(yù)測情感標(biāo)簽。我們通過最大化正確輸出(在這個例子中是“正面”)的可能性來訓(xùn)練模型,同時保持其他嵌入?yún)?shù)固定。通過這個過程,T5 模型能夠利用提示來更好地理解和執(zhí)行特定的 NLP 任務(wù)。)
2.1 設(shè)計決策
有許多可能的方法來初始化提示表示。最簡單的是從零開始訓(xùn)練,使用隨機(jī)初始化。一個更復(fù)雜的選項是將每個提示標(biāo)記初始化為從模型詞匯表中抽取的嵌入。從概念上講,我們的軟提示以與輸入前文本相同的方式調(diào)節(jié)凍結(jié)網(wǎng)絡(luò)的行為,因此,一個類似單詞的表示可能作為一個很好的初始化起點。對于分類任務(wù),第三個選項是使用枚舉輸出類別的嵌入來初始化提示,類似于 Schick 和 Schütze(2021 年)的“verbalizers”。由于我們希望模型在輸出中產(chǎn)生這些標(biāo)記,用有效目標(biāo)標(biāo)記的嵌入來初始化提示應(yīng)該能夠引導(dǎo)模型將其輸出限制在合法的輸出類別上。
另一個設(shè)計考慮是提示的長度。我們方法的參數(shù)成本是 EP,其中 E 是標(biāo)記嵌入維度,P 是提示長度。提示越短,需要調(diào)整的新參數(shù)就越少,因此我們的目標(biāo)是找到一個仍然表現(xiàn)良好的最小長度。
2.2 取消學(xué)習(xí)跨度損壞
與像 GPT-3 這樣的自回歸語言模型不同,我們實驗的 T5 模型使用編碼器-解碼器架構(gòu),并在跨度損壞目標(biāo)上進(jìn)行預(yù)訓(xùn)練。具體來說,T5 的任務(wù)是“重建”輸入文本中被遮蔽的跨度,這些跨度被標(biāo)記有獨特的哨兵標(biāo)記。目標(biāo)輸出文本由所有被遮蔽的內(nèi)容組成,由哨兵分隔,再加上一個最終哨兵。例如,從文本 “Thank you for inviting me to your party last week” 我們可以構(gòu)建一個預(yù)訓(xùn)練示例,其中輸入是 “Thank you <X> me to your party <Y> week” 而目標(biāo)輸出是 “<X> for inviting <Y> last <Z>”。
(注釋:想象一下,你有一個機(jī)器人,它擅長玩一個填空游戲。在這個游戲中,一段話中的某些詞會被特殊的符號(哨兵)遮住,機(jī)器人的任務(wù)是猜出這些被遮住的詞是什么。
GPT-3:
GPT-3 這個機(jī)器人玩這個游戲的方式是,它先看一段話,然后一個接一個地猜出每個被遮住的詞。它在猜下一個詞時,會考慮到前面所有已經(jīng)猜過的詞。
T5:
而 T5 這個機(jī)器人玩這個游戲的方式有點不同。它不是逐個猜詞,而是直接看整段話,然后一次性猜出所有被遮住的詞。它在猜詞時,會考慮到整段話的上下文,而不是只看前面的詞。
在 T5 的預(yù)訓(xùn)練中,它通過這種方式學(xué)習(xí)如何理解整段話的意思,并準(zhǔn)確地填入被遮住的部分。這個過程就像是在訓(xùn)練機(jī)器人,讓它學(xué)會如何讀懂整篇文章,而不僅僅是一句話。
舉個例子,如果給 T5 一段話:“Thank you for inviting me to your party last week”,在預(yù)訓(xùn)練中,這段話可能會被修改為:“Thank you <X> me to your party <Y> week”,其中 <X> 和 <Y> 是被遮住的部分。T5 的任務(wù)是猜出 <X> 是 "for",<Y> 是 "last",然后輸出完整的句子:“<X> for inviting <Y> last <Z>”,這里的 <Z> 是句子的結(jié)束標(biāo)記。)
雖然 Raffel 等人(2020 年)發(fā)現(xiàn)這種架構(gòu)和預(yù)訓(xùn)練目標(biāo)比傳統(tǒng)語言建模更有效,我們假設(shè)這種設(shè)置不適合產(chǎn)生一個可以通過提示調(diào)整輕松控制的凍結(jié)模型。特別是,一個僅在跨度損壞上預(yù)訓(xùn)練的 T5 模型,如 T5.1.1,從未見過真正的自然輸入文本(無哨兵標(biāo)記),也從未被要求預(yù)測真正的自然目標(biāo)。實際上,由于 T5 的跨度損壞預(yù)處理的細(xì)節(jié),每個預(yù)訓(xùn)練目標(biāo)都會以哨兵開始。雖然通過微調(diào)可以輕松克服這種“不自然”的輸出哨兵的傾向,但我們懷疑僅通過提示來覆蓋這一點會困難得多,因為解碼器的先驗無法調(diào)整。
(注釋:這里討論 T5 模型的訓(xùn)練方式和它在處理自然語言輸入時可能遇到的問題。我來用一個通俗的例子來解釋:
想象一下,你正在訓(xùn)練一個機(jī)器人來學(xué)習(xí)如何讀懂和理解書籍。在 Raffel 等人(2020)的研究中,他們使用了一種特殊的訓(xùn)練方法,讓機(jī)器人通過填補書中被遮蓋的部分來學(xué)習(xí)。這種方法比傳統(tǒng)的讓機(jī)器人整本書整本地學(xué)習(xí)更有效。
但是,這里有一個假設(shè):這種訓(xùn)練方法可能不適合用來創(chuàng)建一個可以輕松通過提示(prompt)來控制的機(jī)器人。特別是,如果機(jī)器人(T5 模型)只在被遮蓋的部分上進(jìn)行訓(xùn)練,它可能就不知道如何處理沒有遮蓋、沒有特殊標(biāo)記的真正書籍(自然輸入文本)。
換句話說,T5 模型在訓(xùn)練時看到的文本都是被特殊標(biāo)記(哨兵)遮蓋過的,它學(xué)會了預(yù)測這些遮蓋部分。但是,當(dāng)它遇到真正的書籍時,它可能會不習(xí)慣,因為它從未被要求預(yù)測沒有這些特殊標(biāo)記的文本。
雖然可以通過進(jìn)一步訓(xùn)練(微調(diào))來讓機(jī)器人適應(yīng)真正的書籍,但作者懷疑僅通過改變提示(就像給機(jī)器人一個新的指令)來解決這個問題會非常困難。這是因為機(jī)器人的“大腦”(解碼器的先驗知識)已經(jīng)習(xí)慣了有特殊標(biāo)記的文本,很難通過簡單的提示來改變這種習(xí)慣。)
鑒于這些擔(dān)憂,我們在三種設(shè)置中實驗了 T5 模型。(1)“跨度損壞”:我們使用現(xiàn)成的預(yù)訓(xùn)練 T5 作為我們的凍結(jié)模型,并測試其輸出下游任務(wù)預(yù)期文本的能力。(2)“跨度損壞 + 哨兵”:我們使用相同的模型,但將所有下游目標(biāo)前添加一個哨兵,以便更接近預(yù)訓(xùn)練中看到的的目標(biāo)。(3)“LM 適應(yīng)”:我們繼續(xù) T5 的自監(jiān)督訓(xùn)練,但只增加少量額外的步驟,使用 Raffel 等人(2020 年)討論的“LM”目標(biāo);給定自然文本前綴作為輸入,模型必須產(chǎn)生自然文本的延續(xù)作為輸出。關(guān)鍵的是,這種適應(yīng)只發(fā)生一次,產(chǎn)生一個單一的凍結(jié)模型,我們可以在任何數(shù)量的下游任務(wù)中重復(fù)使用它進(jìn)行提示調(diào)整。
(注釋:這里描述了對 T5 模型進(jìn)行的三種不同實驗設(shè)置,以評估和改進(jìn)模型在處理自然語言任務(wù)時的表現(xiàn)。下面是對這些設(shè)置的解釋:
1. 跨度損壞(Span Damage):
- 在這個設(shè)置中,研究人員使用了已經(jīng)預(yù)訓(xùn)練好的 T5 模型,這個模型被稱為“凍結(jié)模型”,因為它的參數(shù)在實驗中不會改變。
- 他們測試了這個模型在生成下游任務(wù)(如情感分析、文本摘要等)預(yù)期文本的能力。這里的“下游任務(wù)”指的是模型在預(yù)訓(xùn)練之外的其他任務(wù)。
- 這個實驗的目的是看看 T5 模型在沒有進(jìn)一步訓(xùn)練的情況下,能否直接適應(yīng)新任務(wù)并生成正確的輸出。
通俗的理解:想象一下,你有一個機(jī)器人,它在工廠里被訓(xùn)練來組裝玩具,但是它只能在玩具的某些部分被遮蓋(損壞)的情況下進(jìn)行組裝?,F(xiàn)在,我們想知道這個機(jī)器人在沒有遮蓋的情況下,能否獨立完成整個玩具的組裝。這就是“跨度損壞”實驗,我們看看機(jī)器人(T5模型)在沒有經(jīng)過額外訓(xùn)練的情況下,能否處理正常的、沒有被遮蓋的文本。
2. 跨度損壞 + 哨兵(Span Damage + Sentinel):
- 在這個設(shè)置中,研究人員對 T5 模型進(jìn)行了微調(diào),他們在所有下游任務(wù)的目標(biāo)文本前添加了一個特殊的標(biāo)記(哨兵)。
- 這樣做是為了模擬 T5 在預(yù)訓(xùn)練時看到的目標(biāo)文本,因為預(yù)訓(xùn)練時的目標(biāo)文本通常以哨兵開始。
- 通過這種方式,研究人員試圖讓模型更好地適應(yīng)預(yù)訓(xùn)練和下游任務(wù)之間的差異。
通俗解釋:在這個實驗中,我們給機(jī)器人一個提示,告訴它在組裝玩具之前,先看看一個特殊的標(biāo)記(哨兵)。這個標(biāo)記就像是在告訴機(jī)器人:“注意,這里有一個特殊的部分?!蔽覀冞@樣做是為了幫助機(jī)器人更好地適應(yīng)它在訓(xùn)練時習(xí)慣的那種有遮蓋的玩具。在 T5 模型的情況下,我們在每個任務(wù)的目標(biāo)文本前添加一個哨兵,以便模型能更好地處理它在預(yù)訓(xùn)練時見過的那種文本。
3. LM 適應(yīng)(LM Adaptation):
- 在這個設(shè)置中,研究人員繼續(xù)對 T5 模型進(jìn)行自監(jiān)督訓(xùn)練,但只增加了少量的訓(xùn)練步驟。
- 他們使用了一種稱為“LM”(Language Model)的目標(biāo),這是 Raffel 等人(2020)討論的一種訓(xùn)練方法。
- 在這種訓(xùn)練中,模型接收一個自然文本前綴(例如,句子的開頭部分)作為輸入,并需要生成這個文本的自然延續(xù)作為輸出。
- 這種適應(yīng)過程只進(jìn)行一次,然后產(chǎn)生一個單一的凍結(jié)模型。這個模型可以在多個下游任務(wù)中重復(fù)使用,并且可以通過提示調(diào)整來適應(yīng)不同的任務(wù)。
通俗解釋:我們嘗試讓機(jī)器人學(xué)習(xí)如何根據(jù)給定的指令(自然文本前綴)來組裝玩具。我們只給機(jī)器人一次機(jī)會來學(xué)習(xí)這個新技能,然后我們就讓它用這個技能來處理各種各樣的玩具組裝任務(wù)。在 T5 模型的實驗中,我們讓模型學(xué)習(xí)如何根據(jù)給定的文本前綴來生成接下來的文本。這樣,即使模型在訓(xùn)練時只學(xué)了一次,它也能在多種不同的任務(wù)中通過調(diào)整提示來適應(yīng)。
這些實驗設(shè)置旨在探索如何讓 T5 模型更好地適應(yīng)和執(zhí)行各種自然語言處理任務(wù),無論是直接使用預(yù)訓(xùn)練模型,還是通過微調(diào)和額外的自監(jiān)督訓(xùn)練來提高其適應(yīng)性。)
通過 LM 適應(yīng),我們希望“快速”將 T5 轉(zhuǎn)變?yōu)楦愃朴?GPT-3 的模型,它總是輸出現(xiàn)實的文本,并且已知作為“少樣本學(xué)習(xí)者”對提示反應(yīng)良好。與從頭開始預(yù)訓(xùn)練相比,這種后期轉(zhuǎn)變的成功程度如何并不明顯,據(jù)我們所知,之前還沒有進(jìn)行過研究。因此,我們實驗了各種長度的適應(yīng),最多達(dá)到 100K 步。
3、結(jié)果
我們的凍結(jié)模型建立在所有大小的預(yù)訓(xùn)練 T5 檢查點之上(小型、基礎(chǔ)型、大型、XL、XXL)。我們利用公共的 T5.1.1 檢查點,這些檢查點在原始 T5.1 的基礎(chǔ)上進(jìn)行了改進(jìn)。
我們的“默認(rèn)”配置,用綠色的‘×’()標(biāo)記,使用了一種針對語言模型(LM)調(diào)整過的 T5 版本,額外訓(xùn)練了 100K 步,使用類別標(biāo)簽進(jìn)行初始化(見第 3.2 節(jié)),并使用 100 個標(biāo)記的提示長度。雖然這比 Li 和 Liang(2021)使用的默認(rèn) 10 個標(biāo)記前綴要長,但我們的方法仍然使用了更少的任務(wù)特定參數(shù),因為我們只調(diào)整輸入層,而不是覆蓋所有網(wǎng)絡(luò)層的激活。詳見圖 4 的詳細(xì)比較。我們很快就會看到,隨著模型大小的增加,甚至更短的提示也是可行的。
我們在 SuperGLUE 基準(zhǔn)(Wang 等人,2019a)上衡量性能,這是一個包含八個具有挑戰(zhàn)性的英語語言理解任務(wù)的集合。我們在每個數(shù)據(jù)集相關(guān)的開發(fā)集上報告指標(biāo)。
我們的每個提示都在單個 SuperGLUE 任務(wù)上訓(xùn)練;沒有多任務(wù)設(shè)置或跨任務(wù)混合訓(xùn)練數(shù)據(jù)。我們按照 Raffel 等人(2020)的方法,將每個 SuperGLUE 數(shù)據(jù)集翻譯成文本到文本的格式,但我們省略了輸入前的任務(wù)名稱,這些名稱指示了一個示例屬于哪個 SuperGLUE 任務(wù)。
我們使用 T5 的標(biāo)準(zhǔn)交叉熵?fù)p失訓(xùn)練我們的提示,訓(xùn)練步驟為 30,000 步,學(xué)習(xí)率恒定為 0.3,批量大小為 32。檢查點是通過在開發(fā)集上的早停選擇的,停止指標(biāo)是數(shù)據(jù)集的默認(rèn)指標(biāo),或者是使用多個指標(biāo)評估的數(shù)據(jù)集的指標(biāo)平均值。所有實驗都是在 JAX(Bradbury 等人,2018)中運行的,使用 Adafactor 優(yōu)化器(Shazeer 和 Stern,2018),權(quán)重衰減為 1e?5,β2 衰減為 0.8,并且關(guān)閉參數(shù)縮放。模型是在 Flax(Heek 等人,2020)中實現(xiàn)的。更多細(xì)節(jié)可在附錄 A 中找到。
3.1 縮小差距
為了將我們的方法與標(biāo)準(zhǔn)模型調(diào)優(yōu)進(jìn)行比較,我們使用 T5 庫中指定的默認(rèn)超參數(shù)(學(xué)習(xí)率 0.001,以及恢復(fù)預(yù)訓(xùn)練參數(shù)狀態(tài)的 Adafactor 優(yōu)化器)在 SuperGLUE 上對公共的 T5.1.1 檢查點進(jìn)行調(diào)優(yōu)。我們考慮了兩個基線。
(1)“模型調(diào)優(yōu)”:為了進(jìn)行公平比較,我們像在我們的提示調(diào)優(yōu)設(shè)置中一樣,分別對每個任務(wù)進(jìn)行調(diào)優(yōu)。
(2)“模型調(diào)優(yōu)(多任務(wù))”:我們使用 T5 的多任務(wù)調(diào)優(yōu)設(shè)置來實現(xiàn)更具競爭力的基線。在這種情況下,單個模型在所有任務(wù)上共同調(diào)優(yōu),文本前綴指示任務(wù)名稱。
在圖 1(第 1 頁)中,我們看到隨著規(guī)模的增加,提示調(diào)優(yōu)與模型調(diào)優(yōu)的競爭性越來越強(qiáng)。在 XXL 尺寸(110億參數(shù))下,即使任務(wù)特定參數(shù)少于 20,000 倍,提示調(diào)優(yōu)甚至與更強(qiáng)的多任務(wù)模型調(diào)優(yōu)基線相匹配。
為了與提示設(shè)計進(jìn)行比較,我們包括了 Brown 等人(2020)報告的 GPT-3 在 SuperGLUE 開發(fā)集上的少次學(xué)習(xí)性能。圖 1 顯示,提示調(diào)優(yōu)大幅度超過了 GPT-3 的提示設(shè)計,經(jīng)過提示調(diào)優(yōu)的 T5-Small 與 GPT-3 XL(大 16 倍以上)相匹配,而經(jīng)過提示調(diào)優(yōu)的 T5-Large 擊敗了 GPT-3 175B(大 220 倍以上)。
prompt tuning和prefix tuning的區(qū)別:我們通過一個實際的例子來說明:
Prompt Tuning 實際例子:
假設(shè)我們有一個預(yù)訓(xùn)練的GPT模型,我們要將其用于文本分類任務(wù),比如判斷一段新聞是否是體育類。在Prompt Tuning中,我們不直接微調(diào)整個模型參數(shù),而是創(chuàng)建一組新的可學(xué)習(xí)參數(shù)(通常稱為“prompt tokens”的嵌入向量),這些向量將被插入到輸入序列的開始。
例如,原新聞標(biāo)題為:“湖人隊在NBA總決賽中獲勝”。Prompt Tuning時,我們將添加一個或多個虛擬提示標(biāo)記如“<類別:體育>”,并用一組可訓(xùn)練的浮點數(shù)向量表示這個提示標(biāo)記。模型接收到的輸入會變成:“<類別:體育> 湖人隊在NBA總決賽中獲勝”。在訓(xùn)練過程中,只有這些提示標(biāo)記的嵌入向量會被更新以優(yōu)化模型對體育新聞類別的識別能力,而原始GPT模型的其余部分保持不變。
Prefix Tuning 實際例子:
對于同樣要使用GPT模型進(jìn)行文本生成的任務(wù),例如自動補全對話,Prefix Tuning則不是簡單地添加幾個固定的提示標(biāo)記,而是利用一個可學(xué)習(xí)的前綴序列來引導(dǎo)解碼過程。
假設(shè)有如下場景:用戶輸入了一半的句子“今天天氣怎么樣?”,模型需要生成合適的回復(fù)。在Prefix Tuning中,我們會初始化一個由可訓(xùn)練參數(shù)組成的“前綴隱狀態(tài)”序列,并將其與輸入一起送入模型的解碼器層。這個前綴序列會在每個解碼步驟中與模型當(dāng)前的隱藏狀態(tài)結(jié)合,影響模型接下來生成的詞語。
具體操作上,Prefix Tuning不會改變輸入序列的實際內(nèi)容,而是通過修改解碼器初始幾步的內(nèi)部狀態(tài)來間接影響輸出結(jié)果,從而使得模型能根據(jù)訓(xùn)練數(shù)據(jù)更好地完成特定的文本生成任務(wù)。
本文轉(zhuǎn)載自公眾號AIRoobt ,作者:AIRoobt
原文鏈接:??https://mp.weixin.qq.com/s/zxDrkIWtiTYNZPRiBt3y0g??
