苏剑林《 你的CRF层的学习率可能不够大》阅读笔记

推荐一定一定要去看原文章,这里主要记录自己的阅读笔记。

苏剑林. (Feb. 07, 2020). 《你的CRF层的学习率可能不够大 》[Blog post]. Retrieved from https://kexue.fm/archives/7196

问题出发

  • CRF 是做序列化标注的经典方法,它理论优雅,实际也很有效。
  • BERT 模型出来后,有不少工作探索BERT+CRF用于序列化标注任务,然而很多实验结果表明在中文分词和实体识别任务上,相比于简单的BERT+softmax,BERT+crf似乎没有带来提升,和传统的BiLSTM+CRF或CNN+crf的模型表现不一致
  • 作者使用CRF做中文分析的时候发现,CRF层可能存在学习不充分的问题,实验结果显示这可能是CRF在BERT中没有提升的原因。

实验经过

  1. 转移矩阵的结果比较糟糕,引导出不合理的标注序列。
  2. 转移矩阵对最终的结果没有什么影响。原因:模型输出的每个字的标签分数远远大于转移矩阵的数值,并且区分度已经很明显了 ,所以转移矩阵就影响不到整体的结果了,换言之这时候直接Softmax然后取argmax就很好了。(验证方式:查看每个字的标签分数是不是要比转移矩阵的数值大。)

模型没有学习到好的转移矩阵的原因:学习率

BERT经过预训练后,针对下游任务进行finetune时,只需要非常小的学习率(通常是\(10^{−5}\)量级),太大反而可能不收敛。尽管学习率很小,但对于多数下游任务来说收敛是很快的,很多任务都只需要2~3个epoch就能收敛到最优。另一方面,BERT的拟合能力是很强的,所以它能比较充分地拟合训练数据。

BERT是经过预训练的,转移矩阵是附加的层,和BERT没有关系。当以\(10^{-5}\)量级的学习率进行finetuning的时候,BERT部分迅速收敛,也就是每个字的标签分布会迅速被拟合,同时因为BERT的拟合能力比较强,所以迅速拟合到一个比较优的状态(即目标标签打分很高,并且拉开了与非目标标签的差距)。而由于转移矩阵跟BERT没什么联系,当逐字标签分布迅速地收敛到较优值时,它还是以\(10^{−5}\)的速度“悠哉悠哉”地前进着,最终要比逐字标签的分数低一个数量级。而且,当逐字标签分布都已经能很好拟合目标序列了,也就不再需要转移矩阵了(转移矩阵的梯度会非常小,从而几乎不更新)

增加crf层的学习率(主体学习率的100倍以上的时候)转移矩阵变的合理。

实验结论

  • CRF没给BERT带来什么效果变化,原因是BERT的拟合能力太强了,导致不需要转移矩阵效果都很好
  • 对于拟合能力不是特别强大的模型(比如只用BERT的前几层,或者对于某些特别难的任务来说,完整的BERT拟合能力也不算充分),CRF及其转移矩阵还是有一定帮助的,而精调CRF层的学习率能带来更大的提升。

内容总结

本文从给bert4keras添加的CRF例子出发,发现BERT与CRF结合的时候,CRF层可能存在训练不充分的问题,进而猜测了可能的原因,并通过实验进一步肯定了猜测,最后提出通过增大CRF层学习率的方式来提升CRF的效果,初步验证了(在某些任务下)其有效性。

posted @ 2021-12-21 18:40  _无支祁  阅读(546)  评论(0)    收藏  举报