你好,有幸阅读了您的一篇博客,但是正如你博客所说,BERT+BILSTM+CRF运行出来报错了,想问一下您发现是哪里出错了吗?研一小白找不到好难受
(子问题1:为什么不直接用Bert + CRF?子问题2:为什么不直接用BiLSTM + CRF?)
先说下我个人觉得的效果:
BERT+BiLSTM +CRF比BiLSTM+CRF以及BERT+CRF效果好。但我自己没做过对比实验。
原因如下:
1.BERT+BiLSTM+CRF>BiLSTM+CRF多了一层BERT初始化word embedding,比随机初始化肯定要好,这个就不多解释了。
2.BERT+BiLSTM+CRF>BERT+CRF首先BERT使用的是transformer,而transformer是基于self-attention的,也就是在计算的过程当中是弱化了位置信息的(仅靠position embedding来告诉模型输入token的位置信息),而在序列标注任务当中位置信息是很有必要的,甚至方向信息也很有必要,所以我们需要用LSTM习得观测序列上的依赖关系,最后再用CRF习得状态序列的关系并得到答案,如果直接用CRF的话,模型在观测序列上学习力就会下降,从而导致效果不好。