如今,大型語言模型(LLM)正在越來越關注,但是它們的零/少數學習能力經常得到評估,我覺得它們並未用於使用它們來微調文本分類,例如現有的預訓練模型,例如Bert。因此,為了找出LLM可以進行多少文本分類,我們使用LLM使用與文本分類相同的文本分類進行了實驗。
該實驗的目的是調查當常規文本分類使用LLM(通常引起零/少量學習能力)的關注時,會發生什麼。
伯特(Bert)是一個雙向模型,該伯特(Bert)通常用於文本分類,並且經常使用句子令牌[CLS]進行文本分類。但是,如今通常使用的LLM,例如Llama,是單向模型。因此,在單向模型中,拿句子令牌沒有意義。因此,在此實施中,我們將句子末端令牌的嵌入式表示形式用於文本分類,將transformers的LlamaForSequenceClassification類用作參考。在單向語言模型中,只能將其結束令牌視為系列中整個語句的令牌,因此它被認為是[CLS]的合適替代方法。
此外,由於從記憶和計算效率的角度來看,LLM的全面微調非常困難,因此我們使用Lora,這是一種微調技術,可通過僅調整附加額外的低級別矩陣來實現與完整微調相當的性能。注意:PEFT用於用Lora解釋材料進行微調。
在評估實驗中,我們將對Livedoor新聞語料庫的九個值進行分類。實驗內容幾乎與使用BERT的作者的文本分類教程相同。
在評估實驗中,使用了七種類型的日本LLM。具體而言,我們對四個RINNA 3.6B模型以及網絡7B,3B和1B模型進行了實驗。
作為調整超參數的一種方式,我們進行了實驗,將學習率設置為1E-4、3E-4、5E-4和1E-3。我們還為模型嘗試了三種類型的輸入格式。具體而言,對於Livedoor新聞語料庫中的每篇文章,標題存儲在一個稱為title和文章body變量中,並註入以下三個模板中。
| 模板類型 | 外貌 |
|---|---|
| 0 | f“ title:{title} nbody:{body} nlabel:” |
| 1 | f“ title:{title} nbody:{body}” |
| 2 | f“ {title} n {body}” |
我們對上述學習率和模板的所有組合進行了一對一的實驗,並使用了在最終測試集中評估的開發集合中具有最高宏平均F值的高參數。洛拉(Lora)的等級r固定為32。
請注意,實驗結果不是準確的,因為實驗僅對單個隨機數種子值進行一次,並且沒有進行分裂的交叉驗證。因此,請不要過分信任下面的結果,但請僅作為參考來查看它們。
結果如下表所示。實驗結果以宏平均F值的降序排列。可以從存儲在results目錄中的CSV文件中查看所有後續結果。
| 準確性 | 精確 | 記起 | F1 | |
|---|---|---|---|---|
| RINNA/日語-GPT-NEOX-3.6B-Instruction-SFT-V2 | 97.96 | 97.77 | 97.76 | 97.75 |
| rinna/japesen-gpt-neox-3.6b | 97.55 | 97.24 | 97.39 | 97.30 |
| rinna/japesen-gpt-neox-3.6b-Instruction-sft | 97.55 | 97.32 | 97.27 | 97.27 |
| rinna/japesent-gpt-neox-3.6b-Instruction-Ppo | 97.55 | 97.03 | 97.37 | 97.18 |
| 網絡/開放式CALM-7B | 97.01 | 96.76 | 96.42 | 96.55 |
| 網絡/開放式3B | 96.88 | 96.38 | 96.51 | 96.42 |
| 網絡/開放式CALM-1B | 94.43 | 94.24 | 93.80 | 93.98 |
從表格上,我們可以看到指令調諧的rinna/japanese-gpt-neox-3.6b-instruction-sft-v2顯示出最高的F值。另一方面,在7B處的相對較大的模型, cyberagent/open-calm-7b的F值略低。為了提高性能,可能有必要對其進行更多調整,例如Rola的R和其他高paras。
順便說一句, rinna/japanese-gpt-neox-3.6b-instruction-sft-v2的F值為97.75 ,高於studio-ousia/luke-japanese-large-lite這是使用97.47實現的文本分類tutorial tutorial Tutorial Tutorial Tutorial tutorial tutorial tutial tus tup fality的f值。當然,模型中的參數數量約為9倍,因此不能簡單地比較,但是如果您想使用LLM+Lora作為BERT的替代方案進行文本分類的性能可能是一個不錯的選擇。
接下來,下表顯示了本實驗中三個代表性模型的rinna/japanese-gpt-neox-3.6b模板cyberagent/open-calm-7b rinna/japanese-gpt-neox-3.6b-instruction-sft-v2 。
| 模板 | 瓦爾。 F1 | F1 | |
|---|---|---|---|
| RINNA/日語-GPT-NEOX-3.6B-Instruction-SFT-V2 | 2 | 97.27 | 97.75 |
| RINNA/日語-GPT-NEOX-3.6B-Instruction-SFT-V2 | 1 | 97.18 | 97.14 |
| RINNA/日語-GPT-NEOX-3.6B-Instruction-SFT-V2 | 0 | 97.05 | 96.80 |
| rinna/japesen-gpt-neox-3.6b | 1 | 97.14 | 97.30 |
| rinna/japesen-gpt-neox-3.6b | 2 | 96.92 | 97.36 |
| rinna/japesen-gpt-neox-3.6b | 0 | 96.61 | 96.69 |
| 網絡/開放式CALM-7B | 1 | 97.22 | 96.55 |
| 網絡/開放式CALM-7B | 0 | 97.07 | 96.56 |
| 網絡/開放式CALM-7B | 2 | 96.88 | 96.85 |
通常,LLM的推理能力受模板的極大影響(提示)。另一方面,由於該實驗不是零/少量射擊的設置,因此可以預期,由於模板引起的性能差異可以在某種程度上降低。但是,結果表明該模板先前已經在F值(F值中的1點)中產生了一定的差異。 template_type=0是一個相對複雜的模板, template_type=2是一個簡單的模板,簡單地與線路斷裂相連,但是可以看出,簡單的template_type=2傾向於具有更好的性能。提示在零/少量設置中非常重要,但是如果您可以進行微調,最好將提示保持盡可能簡單。
接下來,讓我們看一下固定在rinna/japanese-gpt-neox-3.6b和template_type固定為2的每個學習率的性能。
| LR | 瓦爾。 F1 | 準確性 | 精確 | 記起 | F1 |
|---|---|---|---|---|---|
| 5E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 3E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-2 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 5E-3 | 24.78 | 32.20 | 36.30 | 30.27 | 28.21 |
| 3E-3 | 2.18 | 12.91 | 1.43 | 11.11 | 2.54 |
| 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 5E-4 | 96.77 | 98.23 | 98.02 | 97.87 | 97.93 |
| 3E-4 | 96.74 | 96.88 | 96.46 | 96.21 | 96.30 |
| 1E-4 | 94.79 | 97.01 | 96.85 | 96.72 | 96.76 |
| 5E-5 | 94.28 | 95.92 | 95.73 | 95.50 | 95.58 |
| 3E-5 | 93.74 | 94.02 | 93.50 | 93.61 | 93.55 |
| 1E-5 | 78.94 | 81.25 | 80.21 | 79.43 | 79.62 |
從桌子來看,可以看出,儘管相當大的學習率對於與洛拉的學習有效,但上限約為1e-3 ,如果您使用了非常大的學習率(例如1e-2 ,那麼您的學習就不會順利進行。我想在更廣泛的模型上看到實驗結果,但是在使用LLM+Lora進行分類時,我認為嘗試將5e-4的學習率作為第一步是一個好主意。
此外,當模型固定到rinna/japanese-gpt-neox-3.6b , template_type 2和lora的r固定為32 ,讓我們看一下每個批次大小的性能差異。
| 批量大小 | LR | 瓦爾。 F1 | 準確性 | 精確 | 記起 | F1 |
|---|---|---|---|---|---|---|
| 2 | 5E-4 | 97.12 | 98.10 | 98.02 | 97.48 | 97.70 |
| 16 | 1E-3 | 97.12 | 97.83 | 97.77 | 97.37 | 97.52 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
| 64 | 5E-4 | 96.57 | 97.55 | 97.39 | 97.35 | 97.35 |
| 4 | 5E-4 | 97.08 | 97.42 | 97.37 | 97.01 | 97.15 |
| 8 | 3E-4 | 97.20 | 97.28 | 96.99 | 96.87 | 96.91 |
該表以f值的降序排列。結果,有可能在某種程度上取決於批次大小,可能會產生性能差異,但是在本實驗中,該實驗僅通過一個隨機數種子值進行了一次,因此似乎很難得出明確的結論。通常,較小的批量尺寸需要更長的時間來訓練,並且性能往往不穩定,因此現在將批量大小設置為16或32左右可能是一個好主意。
最後,讓我們看一下lora lora每r的性能時,將模型固定到rinna/japanese-gpt-neox-3.6b ,而template_type固定為2 。
| 洛拉r | LR | 瓦爾。 F1 | 準確性 | 精確 | 記起 | F1 |
|---|---|---|---|---|---|---|
| 8 | 5E-4 | 97.45 | 97.15 | 96.97 | 96.75 | 96.83 |
| 64 | 1E-3 | 97.22 | 97.28 | 96.96 | 96.85 | 96.89 |
| 16 | 1E-3 | 97.20 | 97.69 | 97.59 | 97.27 | 97.38 |
| 4 | 3E-4 | 97.12 | 97.69 | 97.64 | 97.24 | 97.40 |
| 32 | 1E-3 | 96.92 | 97.69 | 97.51 | 97.27 | 97.36 |
結果,我覺得開發集中的F值與測試集中的F值之間沒有太大的相關性。由於洛拉(Lora)r的價值被認為是“模型越大,值越小”,我認為僅將其設置為僅幾個B的中型LLMS將其設置為32或更高,但是我想嘗試更多的實驗。
在此實施中,我們使用LLM進行了傳統文本分類的實驗。結果,通過使用LORA進行良好的調整,我們可以通過簡單地調整少量參數來實現相當高的性能,而“使用LLM作為Bert的替代方案”也可以被視為合理的選擇。即使設置微調,模板也傾向於影響性能。此外,在使用LORA進行良好的調整時,必須將學習率設置為相當大的價值,並且發現等級r的價值也可能影響性能。
作者:Hayato Tsukagoshi
電子郵件:[email protected]
如果您想在論文中參考此實施等。請使用以下內容:
@misc {
hayato-tsukagoshi-2023-llm-lora-classification,
title = { {Text Classification with LLMs and LoRA} } ,
author = { Hayato Tsukagoshi } ,
year = { 2023 } ,
publisher = { GitHub } ,
journal = { GitHub repository } ,
howpublished = { url{https://github.com/hppRC/llm-lora-classification} } ,
url = { https://github.com/hppRC/llm-lora-classification } ,
}