模型微调——模型性能提升方法及注意事项(自用)

名词补充

人为为训练数据标注的标签称为黄金标准或真实值,这个过程一定程度上保证训练的准确性,但是其人工标注的成本和时间很高,并且标注的标签受人的主观因素影响。
导致模型性能不佳的因素和解决办法

不同类别的数据不平衡:统计各类数据的条数,然后对条数落差大的数据进行类别增加。这一步是对模型训练前的数据检查,也是最容易且能较大程度提高模型性能的方式。

并且在训练过程中,可以将各个类的预测评分进行存储并同时得到每个类的平均预测评分,利用平均预测评分来查看哪个类预测准确度高,哪个类的准确率过低需要进行调整。对于每个类的预测评分可以用来进行概率值分布,得到其预测评分的柱状分布,然后可以选择对应的阈值用于决定后续模型问答的答案输出,如果低于这个阈值则模型不输出预测结果或预测结论

训练后查看模型评分 ,如果不好,可以试着调整模型的超参数或直接更换模型

③对训练好的模型进行测试,查看测试数据集的混淆矩阵 ,然后来于计算测试中每个类的精度、准确度和召回率

④对数据集中的训练数量较少的类进行数据增加,增加的这部分数据称为过采样 (相对来说,减少训练数据较多的数据,减少的这部分数据称为欠采样 )。对于过采样方法是随机复制一些样本数据并添加进训练数据中。

学习欠采样和过采样的链接:

Undersampling and oversampling imbalanced data | Kaggle

⑤对出现训练数据不足,需要过采样的情况,不仅可以通过随机复制来实现,也可以通过生产新数据的方式来实现。那么生成的新数据肯定不能是盲目生成,这里有几种生成新数据的方法:

A.基于规则生成新的训练数据

这里涉及一个NLTK 库,其中涉及编译原理中的上下文无关语法这类规则(CFG,context-free grammar) ,使用这个规则可以生成结构化数据,而这个规则重在编写的语法,与规则名称和规则本身无关 。但是这种方法得到的数据过于模板化,不能提高模型应对复杂语境的需要以及模型可能会由于大量的这类句子出现过拟合的现象

B.使用LLM生成新的训练数据

这个方法是最简单且快速 的方法,其可以直接在LLM界面窗口上进行提出:"给我生成与我给出的数据条主题一致的新数据,并给出40条,每条文本不要过长,大概60个文本即可,并且力求简洁"。为了使得LLM生成的新数据的多样性,可以对LLM的温度参数进行调整,参数调整范围:[0,2],温度越低,即越靠近0,那么模型就越冷静,对同一问题的多次回复差别不大(这里面的原理是:模型的温度越低,其模型选择高概率词作为下一个词;模型的温度越高,其模型可能会选择低概率词作为下一个词)

C.使用众包的方法生成新的训练数据

使用**人工来产生新数据,一般不推荐,**除非需产生的数据的复杂性高,标准高,难度大,才采用这个方式,否则其新数据的产生的成本太高了。

D.采用复合方式产生新的数据

比如基于规则和LLM混用的方式产生新的数据。

对于权威数据集,则采用以上方式产生的数据有待确证

可视化数据集的相似程度分布(散点图),以此来决定对数据集是否需要更细的分类。

⑦如果通过①②③④⑤⑥查看到测试的准确度过低可以采用对程序的结构进行更改

以上五点都是基于数据集不是标准数据集的情况,如果数据集是标准的,那么不能对其进行更改,否则所进行的工作就无法与其他研究人员的工作进行对比,即丧失研究可比性,那么此时只能使用对模型超参数的调节或者对模型的更换。
二分类和多分类的在激活函数与损失函数的选择的不同

**二分类:**激活函数选择sigmoid且得到一个概率值;损失函数选择Binary Cross-Entropy

**多分类:**激活函数选择softmax且得到各类的概率值,损失函数选择Sparse Categorical Cross-Entropy(稀疏分类交叉熵)、Catergorical Cross-Entropy(分类交叉熵)
数据集管理技巧

将数据集存储在文件夹中,在这个大文件夹下每个类都有一个单独的文件夹,避免出现套用多层文件夹的情况保存各类数据

相关推荐
静心问道2 小时前
STEP-BACK PROMPTING:退一步:通过抽象在大型语言模型中唤起推理能力
人工智能·语言模型·大模型
静心问道8 小时前
APE:大语言模型具有人类水平的提示工程能力
人工智能·算法·语言模型·大模型
cooldream200910 小时前
华为云Flexus+DeepSeek征文|利用华为云一键部署 Dify 平台并接入 DeepSeek 大模型,构建长篇文章生成助手
大模型·华为云·dify
静心问道13 小时前
SELF-INSTRUCT:使用自生成指令对齐语言模型
人工智能·语言模型·大模型
大模型铲屎官10 天前
【Go语言-Day 7】循环控制全解析:从 for 基础到 for-range 遍历与高级控制
开发语言·人工智能·后端·golang·大模型·go语言·循环控制
玩电脑的辣条哥10 天前
AI-Sphere-Butler之如何将豆包桌面版对接到AI全能管家~新玩法(一)
人工智能·大模型·豆包·ai全能管家·豆包助手
喜欢吃豆10 天前
快速手搓一个MCP服务指南(一):FastMCP 快速入门指南详解
网络·人工智能·python·深度学习·大模型·mcp
mengyoufengyu11 天前
DeepSeek15-揭密模型上下文协议(MCP)
人工智能·大模型·deepseek
linweidong11 天前
一站式用AI编程神奇Cursor/Trae(VScode环境)开发运行Scala应用
大数据·vscode·后端·大模型·scala·ai编程·cursor