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