如今,大型语言模型(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 } ,
}