1.统一训练监控指标和评估指标

评估一个模型的最佳指标是在实体级别计算它的F1值,而不是token级别计算它的的准确率。自定义一个f1值的训练监控指标传给回调函数

Preliminary
  • TP:实际为P,预测为P
  • TN:实际为N,预测为N
  • FP:实际为N,预测为P
  • FN:实际为P,预测为N

如何记忆:

  • TP/TN: 以T开头,表明预测正确,预测即为第二个字母
  • FP/FN: 以F开头,表明预测错误,预测与第二个字母相反
Accuracy

最简单也是最好理解的,也是我们很早就开始接触的一个指标就是准确率,即预测正确的样本除以总样本数




bert-bilstm-crf提升NER模型效果的方法_梯度下降


Recall, Precision, F1
  • Recall(召回率):预测正确的正类在正类样本中的比例(针对于样本真实情况)
  • Precision(精确率):预测正确的正类在预测为正类中的比例(针对于预测情况)
  • F1:两者通常难以兼得,因此引入两者的调和平均,来得到一个trade-off的值


bert-bilstm-crf提升NER模型效果的方法_梯度下降_02


2、学习率衰减策略

学习率是深度学习中的一个重要的超参,如何调整学习率是训练出好模型的关键要素之一。

在训练过程中,一般根据训练轮数设置动态变化的学习率。

  • 刚开始训练时:学习率以 0.01 ~ 0.001 为宜。
  • 一定轮数过后:逐渐减缓。
  • 接近训练结束:学习速率的衰减应该在 100 倍以上。
  • 两种学习率衰减模式,一种为线性衰减,一种为指数衰减。
  • 如果学习率过小,梯度下降很慢,如果学习率过大,如 Andrew Ng 的 Stanford 公开课程所说梯度下降的步子过大可能会跨过最优值。不同的学习率对 loss 的影响如下图所示:


bert-bilstm-crf提升NER模型效果的方法_梯度下降_03


3、分层设置学习率,非bert层要大

在使用bert或者其它预训练模型进行微调,下接其它具体任务相关的模块时,会面临这样一个问题,bert由于已经进行了预训练,参数已经达到了一个较好的水平,如果要保持其不会降低,学习率就不能太大,而下接结构是从零开始训练,用小的学习率训练不仅学习慢,而且也很难与BERT本体训练同步。因此在训练时候就需要对预训练层设置较小学习率,对下接层设置较大学习率。

4、使用对抗训练提升模型鲁棒性

对抗训练是一种能有效提高模型鲁棒性和泛化能力的训练手段,其基本原理是通过在原始输入上增加对抗扰动(噪声),得到对抗样本,再利用对抗样本进行训练,从而提高模型的表现。

5、更精细化的调参

调整learning_rate or batch_size or lamb等等

实验数据记录


#

模型

超参数

实验结果

备注

1

bilstm+crf

lstm_units = 64

epochs =80

batch_size = 32

drop_rate = 0.2

f1=0.6075





bert-bilstm-crf提升NER模型效果的方法_人工智能_04





2

bilstm+crf

lstm_units = 128

epochs = 80

batch_size = 32

drop_rate = 0.2

f1=0.6011





bert-bilstm-crf提升NER模型效果的方法_Powered by 金山文档_05





3

bert+bilstm+crf

epochs = 8

max_len = 80

batch_size = 32

lstm_units = 128

drop_rate = 0.1

leraning_rate = 1e-5

f1=0.6697





bert-bilstm-crf提升NER模型效果的方法_Powered by 金山文档_06





4

bert+bilstm+crf

epochs = 32

max_len = 150

batch_size = 16

lstm_units = 128

drop_rate = 0.1

leraning_rate = 1e-5




bert-bilstm-crf提升NER模型效果的方法_梯度下降_07







bert-bilstm-crf提升NER模型效果的方法_梯度下降_08



f1=0.7262





bert-bilstm-crf提升NER模型效果的方法_bert_09





5

bert+bilstm+crf

epochs = 32

max_len = 150

batch_size = 16

lstm_units = 128

drop_rate = 0.1

leraning_rate = 1e-5

f1=0.6745





bert-bilstm-crf提升NER模型效果的方法_梯度下降_10





统一训练监控指标和评估指标

增加学习率衰减策略


6

bert+bilstm+crf

epochs = 32

max_len = 150

batch_size = 16

lstm_units = 128

drop_rate = 0.1

leraning_rate = 1e-5

f1=0.7159





bert-bilstm-crf提升NER模型效果的方法_梯度下降_11






分层次设置学习率

lr_multiplier=500

7

bert+bilstm+crf

epochs = 32

max_len = 150

batch_size = 16

lstm_units = 128

drop_rate = 0.1

leraning_rate = 1e-5

f1=0.6889





bert-bilstm-crf提升NER模型效果的方法_Powered by 金山文档_12







分层次设置学习率

lr_multiplier=500

增加对抗训练(噪声)

8

bert+bilstm+crf

epochs = 32

max_len = 150

batch_size = 16

lstm_units = 128

drop_rate = 0.1

leraning_rate = 1e-5

f1=0.6828





bert-bilstm-crf提升NER模型效果的方法_Powered by 金山文档_13








统一训练监控指标和评估指标

增加学习率衰减策略

分层次设置学习率

lr_multiplier=500

增加对抗训练(噪声)

5

bert+bilstm+crf

epochs = 16

max_len = 150

batch_size = 16

lstm_units = 128

drop_rate = 0.1

leraning_rate = 1e-5

f1=0.7201





bert-bilstm-crf提升NER模型效果的方法_人工智能_14





统一训练监控指标和评估指标

5