云南网站制作公司,视频网站设计模板,网站后台设置,搜索引擎关键词广告前言
使用google-bert/bert-base-chinese模型进行中文文本分类任务#xff0c;使用THUCNews中文数据集进行训练#xff0c;训练完成后#xff0c;可以导出模型#xff0c;进行预测。
项目详细介绍和数据下载
数据集下载地址
Github完整代码
现记录训练过程中的一些感悟…前言
使用google-bert/bert-base-chinese模型进行中文文本分类任务使用THUCNews中文数据集进行训练训练完成后可以导出模型进行预测。
项目详细介绍和数据下载
数据集下载地址
Github完整代码
现记录训练过程中的一些感悟
1、训练时遇到的两个核心参数warmup_steps和weight_decay
代码片段如下
需要弄明白一些基础概念
epoch指模型在训练过程中遍历完整个训练数据集一次。
step指模型在训练过程中处理完一个batch的数据并完成一次梯度更新。
batch_size 指在一次step中模型用于训练的数据量。
假设 训练数据集有 n 个样本每个epoch的step计算方式 s t e p n b a t c h _ s i z e step \frac{n}{batch\_size} stepbatch_sizen 训练过程的总步数为 s t e p s s t e p × n u m _ t r a i n _ e p o c h s steps step \times num\_train\_epochs stepsstep×num_train_epochs
warmup_steps主要目的是为了平稳地提升学习率让模型在训练初期不会因为太高的学习率而跳过或远离全局最优解。
常见做法是将其设置为总训练步数的5%到10%的值。
此训练过程中warmup steps下限的计算方式如下训练数据18w w a r m u p _ s t e p s 180000 32 × 5 × 5 % 1406 warmup\_steps \frac{180000}{32} \times 5 \times 5\% 1406 warmup_steps32180000×5×5%1406
减少 warmup_steps 可能会导致模型更快地达到较高的学习率从而错过或远离全局最优解。
weight_decay是用于正则化模型权重的实际上是 L2 正则化的一种形式
weight_decay的作用是在损失函数中添加一个惩罚项该惩罚项与权重的平方成正比这有助于抑制权重的大小从而防止模型过拟合
weight_decay设置得过低可能不足以防止过拟合设置得过高则可能导致模型欠拟合即模型过于简单无法很好地捕捉数据中的模式
2、通过tensorboard --logdir./logs可视化训练过程
训练过程截图如下
2.1、训练阶段
可以明显的看到训练时的学习率先逐渐上升之后在下降这是我们想要的趋势。训练的损失值逐步下降这也是我们希望的。但是当我们在分析评估数据数据集的损失时我们会发现此时模型应该是过拟合了。 2.2、推理阶段
随着训练过程的增加模型在评估数据集上的损失也是逐步减少当在step11250时评估数据集上的损失开始逐渐增加而训练数据的损失还在减少那么可以肯定模型已经过拟合了。
模型已经充分的挖掘训练数据集中的语义特征过分的学习到数据中的一些细枝末节。从而在新数据集上的表现越来越差。这种在训练数据集上表现优秀在评估或测试数据集上表现较差现象即模型出现了过拟合。 3、模型混淆矩阵的分析
混淆矩阵结果如下 指标如下
Accuracy0.9434Precision0.9438Recall0.9434
具体多分类任务指标和混淆矩阵分析参考这里非常详细。
4、如何解决模型过拟合的现象
【待更新】疯狂参数调节优化中…