1.哪吒bert的基本理解
代码的实现连接在https://github.com/chenmingwei00/bert-ner
1.2哪吒主要改进点
哪吒是华为公司针对中文的bert预训练模型,首选感谢华为公司提供了这么好的开源项目,通过对哪吒论文的阅读与理解哪吒的重点主要放在三处改进之处,但是凭自己说这三点都是现成的:
1、Functional Relative Positional Encoding 相对位置编码;
2、Whole Word Masking strategy 全词mask策略,这个和哈工大的差得多,可以看源码;
3、Mixed Precision Training and the LAMB Optimizer 这个操作不作为本文重点。
本文主要是讲解命名实体识别的论文Flat:Chinese ner using flat-lattice transformer怎么结合哪吒bert的结构做命名实体识别。所以主要讲他们的共同之处,其中哪吒的相对位置Functional Relative Positional Encoding与flat是几乎相同的。所以这个作为主要探讨相对位置的命名实体识别的特殊之处。
1.3哪吒的预训练相对位置
在transformer中,每一个头head对序列的操作保持输入与输出的长度,用
表示输入,用
表示输出,每一个head都有三个可训练参数分别用
,后一层i位置的输出如下公式:
(1)
也就是当前词汇i的上一层表示是其他词汇的value的加权和, 其中权重
表示的是位置j相对位置i的重要度,用如下公式计算:
,(2)
此公式可以视为归一化操作,表示所有位置k对位置i的权重为分母,j相对位置i的权重做分子进行权重归一化。其中
是由其他位置的词向量乘以各自的
得到各自的关键信息,然后再乘以位置i的
向量作为每一个位置对i位置的重要度。公式如下:
(3)
由于多头的transformer结构“permutation invariant(排列不变)”针对单词位置顺序不敏感,这句话是非常关键的,也就是说其实针对self-attention,单词的顺序应该并不影响最后attention的结果,但是transformer增加了绝对位置,所以针对这个,也相应缓解了单次顺序的影响。后来提供了参数训练的相对位置的编码,计算相对位置之间的分数视为两个位置之间的距离。那么这种想法基于了公式(1)做了如下更改:

在以上的的两个公式中,
表示位置i和j的相对位置编码信息,表示的是位置差异引起的特征信息,他们在所有head是共享的。Transformer-XL [12] and XLNet [6]对应的位置编码信息的公式不同。哪吒预训练bert就是采用了相对位置编码信息,并且相对位置没有采用可训练方式,而是采用了函数式位置编码策略。公式如下:

这个就是采用了google的思想,所有从整体上来看,基本没有什么创新,但是结合全词mask,在中文的任务中效果非常不错。
1.4FLAT: Chinese NER Using Flat-Lattice Transformer
本片文章主要讲解的是如何利用中文词汇信息增加到transformer结构中,来解决lattice无法并行batch训练缺陷,按照论文介绍,整个模型结构如下图所示:

模型结构一目了然,候选中文词汇信息增加到句子最后位置。并且标记每一个词单位的在原始句子中的开始位置head以及结束为止tail,比如图中重庆的开始位置在句子中的位置是1,结束位置是2。针对词汇信息的embedding相对来说比较简单,直接在句子后进行拼接然后参与self-attention即可,但是这样如果预训练的词向量相对语义相对不够明显,词语信息相对于原始句子字符的重要度也就完全没有贡献度,针对以上,作者没有采用绝对位置编码,而是、同样采用了相对位置编码,实质和哪吒采用的方法基本类似,但是在哪吒源码中发现,有一个参数
max_relative_position = 64 ,
也就是针对所有最大位置前后幅度为64,那这样针对本论文的方法就会有限制,如果句子输入过长,就会把词语的相对位置给直接赋值为64,这样位置编码信息也就没有用了,但是整个位置编码的代码基本可以复用,在(二)会详细讲解复现代码。
在图2更加清楚地描述了模型的结构如图:

token就相当于直接拼接,然后针对词语embedding,加入self-attention中,位置信息共形成4个位置信息编码矩阵,分别是head位置信息相对head位置编码相减矩阵、head位置信息相对tail位置编码相减矩阵、tail位置信息相对head位置编码相减矩阵、tail位置信息相对tail位置编码相减矩阵、这四个矩阵就是仿照相对位置矩阵衍生而来,没啥区别。(个人见解,这四个矩阵反而会混淆位置信息),具体的表现形式就是形成了(假设句子长度为max_length)长度为max_length*max_length的方阵,就是两个位置向量按照上面四种方法相减得到,公式如下:

有一部分论文应该解释错误了
上标写着hh,并且公式(4),也是
,所以此处不应该是tail of
,所以不知道是怎么审稿的。同理其他的也代表相对位置距离,最后利用

求得每一个相对位置的向量信息,;利用拼接再映射到一个维度得到
,剩余的就不在说了。至此整个结合词性的transformer就说明完整了。此想法固然有一定的道理,但是本事复现后,在竞赛https://www.biendata.xyz/competition/ccks_2020_8/,面向试验鉴定的命名实体识别任务,基本不收敛,复现所使用的代码是在哪吒bert的基础上进行的。接下来将详细讲述复现过程,有哪位大牛发现本人与作者复现不同,请指正。当然,其中得到
与
略有不同。接下来就讲解详细过程。
哪吒BERT与FLAT模型

探讨哪吒BERT预训练模型及其在FLAT中文命名实体识别中的应用,深入解析相对位置编码、全词mask策略及混合精度训练。通过对比哪吒BERT与FLAT模型结构,阐述如何结合词性信息增强transformer模型。
最低0.47元/天 解锁文章
47





