在二元分类任务中,LM(数亿个参数)如何击败LLM(十亿个参数)?有可能吗还是我在微调时犯了错误?

问题描述 投票:0回答:1

前言

我正在尝试微调基于变压器的模型(LM 和 LLM)。我使用的LM是DEBERTA,LLM是LLaMA 3。任务是对文本是否包含居高临下的语言进行分类(二元分类)。

我使用

AutoModelForSequenceClassification
,它为 LM 和 LLM 的模型顶层添加了一个分类层。

实施

  1. 数据集:

    • 数量:大约有 10,000 条文本,每个文本都标记为
      0
      (不居高临下)和
      1
      (居高临下)。比例是
      1:10
      (居高临下:不居高临下)。
  2. 参数

参数 LM 法学硕士
批量大小 32 16(per_device_train_batch_size = 4,gradient_accumulation_steps = 4)
纪元/步骤 2 纪元 1000 个步骤(20% 用作验证集)
学习率 线性 (2e-5) 常数 (2e-5)
优化器 AdamW(lr = 2e-5,eps = 1e-8) paged_adamw_32bit
微调 全面微调 LoRA(rank=32,dropout=0.5,alpha=8),具有 8 位量化
学习率 线性 (2e-5) 常数 (2e-5)
精准 0,659 0,836
回忆 0,47 0,091
F1-分数 0,549 0,164

问题与问题

这是训练样本的日志。验证 f1 分数始终为

>0.6
。但验证损失却停留在
0.24
。是微调LLM的样本之一。

enter image description here

  1. 为什么对于我调整的某些参数变化,测试集 f1-score 的范围仅在 0 - 0.2 之间?
  2. LM 在某项特定任务上击败 LLM 的情况常见吗?如果是,合理化是什么?
python nlp huggingface-transformers large-language-model transformer-model
1个回答
0
投票

验证 F1 分数 (>0.6) 和测试集 F1 分数(范围从 0 到 0.2)之间的差异表明您的模型与验证集过度拟合,或者模型如何推广到看不见的问题数据。以下是一些潜在的原因以及您可以采取的解决此问题的步骤:

  1. 验证集过度拟合 验证集大小:确保您的验证集足够大并且能够代表测试集。如果您的验证集太小或不够多样化,它可能无法有效地估计模型在未见过的数据上的性能。

数据泄漏:仔细检查验证集是否有数据泄漏到训练过程中。如果训练和验证数据之间无意中重叠,或者预处理步骤(如标记化)没有正确地分别应用于训练和验证集,则可能会发生泄漏。

超参数调优:如果您根据验证集性能执行了广泛的超参数调优,则模型可能过于贴近验证集特征,导致测试集泛化不佳。

  1. 模型复杂性和泛化 模型大小:基于 Transformer 的模型(例如 DeBERTa 和 LLaMA 3)非常大,如果没有适当的正则化或调整,很容易过度拟合小型数据集。考虑使用 dropout、权重衰减或提前停止等技术来防止训练期间过度拟合。

正则化:确保训练过程中有效应用dropout等正则化技术,防止模型记忆训练数据。

  1. 评估指标 F1-score 解释:由于测试集上的 F1-score 范围为 0 到 0.2,因此表明在精度和召回率方面表现不佳。这可能是由于模型未能正确分类居高临下的语言实例(误报和误报)。 改进步骤: 增加数据多样性:如果可行,用更多样化的示例来扩充数据集,尤其是来自少数群体的示例(居高临下的文本)。这可以帮助提高模型泛化能力。

交叉验证:实施交叉验证,以更可靠地估计模型在不同数据分割上的性能。

误差分析:对测试集预测进行详细的误差分析。识别模型失败的模式(例如,难以检测的特定类型的居高临下的语言)。这可以指导进一步的模型改进或数据集调整。

模型微调:考虑调整与学习率计划、优化器甚至模型架构本身相关的超参数(例如层配置或使用集成方法)。

© www.soinside.com 2019 - 2024. All rights reserved.