在进行医疗大模型的微调时,如果loss值一直降低不了,可能存在多种原因。以下是一些可能的原因和相应的解决方案:
数据质量问题:
模型过拟合:
学习率设置不当:
优化器选择:
模型结构问题:
批次大小(Batch Size):
损失函数不适合:
数据预处理和增强:
早停法(Early Stopping):
超参数调整:
模型微调策略:
评估方法:
计算资源:
软件和硬件问题:
最后,建议详细记录实验过程和结果,以便分析问题所在并进行相应的调整。如果问题依然无法解决,可以考虑寻求领域专家的帮助或在专业社区中寻求建议。
配置文件写入完成后,点击从头开始训练,运行界面可以看到训练过程,此时你的显存占用应该达到100%,所以尽量不要使用电脑处理其他事务。在训练日志中,主要看该模型的reference_loss的数值,越低越好,目前我的经历中最低的有24.xxxxxxxx,一般来说2万步以上效果提升的不太明显。Losses详解你不需要理解每一个loss的具体含义,大致来说:●loss/g/f0、loss/g/mel和loss/g/total应当是震荡下降的,并最终收敛在某个值●loss/g/kl应当是低位震荡的●loss/g/fm应当在训练的中期持续上升,并在后期放缓上升趋势甚至开始下降观察losses曲线的趋势可以帮助你判断模型的训练状态。但losses并不能作为判断模型训练状态的唯一参考,甚至它的参考价值其实并不大,你仍需要通过自己的耳朵来判断模型是否训练好了。对于小数据集(30分钟甚至更小),在加载底模的情况下,不建议训练过久,这样是为了尽可能利用底模的优势。数千步甚至数百步就能有最好的结果。
这里我做了3个动作:1.提取训练后的权重2.打印权重(可以在vc界面直接看到执行的结果)3.输出可视化结果(用来贴图或者其他作用)计算结果迭代100次后,loss值稳定在0.1573左右,乍一看比较稳定了(暂时没考虑过拟合的问题,后面来讨论)Matplotlib的可视化结果隐藏层输出层数据我们倒着看,首先输出层目前看下来都是正向的,其中神经元4对结果的正向影响最明显。然后我们对应去看上面的隐藏层,神经元4中特征1(关注人数)和特征3(兴趣人数)对结果的正向影响最强。以此类推,可以得出一些相关性的结论。当然这里的计算准确性还不是很高,因为用了adam,每次计算的结果会受到抽取随机参数,初始化权重等因素影响,需要在实际问题中优化模型参数来解决。