nlp-keypoints
  • 前言
  • 中文NER掠影
    • overview
    • LatticeLSTM
    • WC-LSTM
    • SoftLexicon
    • FLAT
    • LEBERT
    • 中文NER总结
  • Embedding知识板块
    • Word2Vec
    • Transformer
    • Bert
    • XLNet
    • Albert
    • Roberta
  • ML/DL基础板块
    • 特征工程
    • 初始化
    • 激活函数
    • 正则化
    • Dropout
    • 损失函数
    • 优化方法
    • Attention
    • CNN
    • LSTM
    • CRF
    • Jieba分词原理
    • 其他统计学习
  • 知识图谱板块
    • Brat标注
    • NER
    • NRE
    • 远程监督
    • 事件图谱/事理图谱
  • 文本分类知识板块
    • FastText
    • TextCNN
    • DPCNN
  • 相似匹配板块
    • Ranking Loss
    • 匹配模型
  • 树模型知识板块
    • 决策树考点
    • Bagging vs Boosting
    • GBDT考点
    • Xgboost
  • 面试复盘整理
    • MM科技
    • V哥面的知识图谱
    • HS
    • HSJY
    • HM医疗
    • 平安科技
    • M科技
由 GitBook 提供支持
在本页
  • 1: "展平式"无损引入此信息
  • 2: 4组相对位置编码信息

这有帮助吗?

  1. 中文NER掠影

FLAT

上一页SoftLexicon下一页LEBERT

最后更新于2年前

这有帮助吗?

paper :

source: ACL 2020

code:

模型当时刷新了中文 NER任务的SOTA,模型还是很值得去学习的。。

模型主要有 2方面的贡献:

  • 无损引入词汇信息:(与SoftLexicon的垂直展开不同,FLAT是将词展平的方式放在query句尾,用attention与原query的字进行交互)

  • 改进Transformer的原有相对位置编码,使得展平的词与字能够进行计算位置信息,更适用于NER任务

1: "展平式"无损引入此信息

受到位置向量表征的启发,FLAT设计了一种position encoding来融合Lattice 结构,对于每一个字符和词汇都构建两个head position encoding 和tail position encoding,这种方式可以重构原有的Lattice结构,如下图。

这样铺平之后,直接做self-attention,建模字符与所有词汇信息间的交互。将Lattice结构展平,将其从一个有向无环图展平为一个平面的Flat-Lattice Transformer结构,由多个span构成:每个字符的head和tail是相同的,每个词汇的head和tail是skipped的。

2: 4组相对位置编码信息

原生Transformer的绝对位置编码本身缺乏方向性,虽然具备距离感知,但还是被self-attention机制打破了。

仔细分析,BiLSTM在NER任务上的成功,一个关键就是BiLSTM能够区分其上下文信息的方向性,来自左边还是右边。而对于Transformer,其区分上下文信息的方向性是困难的。

因此,作者决定提升Transformer的位置感知和方向感知

那么相对位置emb可以表示为:

每个token都有head和tail这样2个位置信息,所以,作者设计:每2个token间,由4种相对距离表示xix_ixi​和xjx_jxj​之间的关系:head-head,head-tail,tail-head,head-tail这样的相对位置信息,如下图:

dij(hh)=head[i]−head[j]d_{ij}^{(hh)}=head[i]-head[j]dij(hh)​=head[i]−head[j]
dij(ht)=head[i]−tail[j]d_{ij}^{(ht)}=head[i]-tail[j]dij(ht)​=head[i]−tail[j]
dij(th)=tail[i]−head[j]d_{ij}^{(th)}=tail[i]-head[j]dij(th)​=tail[i]−head[j]
dij(tt)=tail[i]−tail[j]d_{ij}^{(tt)}=tail[i]-tail[j]dij(tt)​=tail[i]−tail[j]
Rij=ReLU(Wr(pdijhh⊕pdijht⊕pdijth⊕pdijtt))R_{ij}=ReLU( W_r( p_{d_{ij}^{hh}}\oplus p_{d_{ij}^{ht}} \oplus p_{d_{ij}^{th}}\oplus p_{d_{ij}^{tt}}))Rij​=ReLU(Wr​(pdijhh​​⊕pdijht​​⊕pdijth​​⊕pdijtt​​))

pdp_dpd​的计算方式与Transformer是相同的,三角函数:

pd(2k)=sin(d/100002k/dmodel)p_d^{(2k)}=sin(d/10000^{2k/d_{model}})pd(2k)​=sin(d/100002k/dmodel​)
pd(2k+1)=cos(d/100002k/dmodel)p_d^{(2k+1)}=cos(d/10000^{2k/d_{model}})pd(2k+1)​=cos(d/100002k/dmodel​)
FLAT: Chinese NER Using Flat-Lattice Transformer
FLAT