论文解读系列| 03:【NER】FGN模型详解

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 汉字作为象形文字有其潜在的特殊字形信息,而这一点经常被忽视。FGN是一种将字形信息融入网络结构的中文NER方法。除了用一个新型CNN对字形信息进行编码外,该方法可以通过融合机制提取字符分布式表示和字形表示之间的交互信息。

基本信息

论文地址:
https://arxiv.org/abs/2001.05272

论文代码:FGN

更多、更及时内容欢迎留意微信公众号小窗幽记机器学习

摘要

汉字作为象形文字有其潜在的特殊字形信息,而这一点经常被忽视。FGN是一种将字形信息融入网络结构的中文NER方法。除了用一个新型CNN对字形信息进行编码外,该方法可以通过融合机制提取字符分布式表示字形表示之间的交互信息。

FGN主要有2个创新点:

  • (1)FGN 提出一种新型的CNN结构,即CGS-CNN,以获取字形信息相邻图之间的交互信息
  • (2)提出一种滑动窗口和注意机制来融合每个字符的BERT表示字形表示。这种方法可以捕获语境和字形之间潜在交互知识。

FGN在4个中文NER数据集上进行了实验。实验表明,FGN+LSTM-CRF在中文NER上刷新记录。

模型结构

FGN可以分为三个阶段:表示阶段、融合阶段和标记阶段。文章也遵循基于字符的序列标签的策略进行中文NER。

image.png

表示阶段

汉字表示主要包括来自BERT的字符表示基于CGS-CNN的字形表示。这些代表的细节表示方法如下。

BERT:BERT是一个多层Transformer编码器,可以对单词或字符进行分布式表示。文章使用预先训练好的中文BERT来编码句子中的每个字符。与一般的fine-tuning策略不同,首先在train data上对BERT进行微调并使用CRF层作为序列标注器(即tagger)。再冻结BERT的参数并将其转移到FGN中。实验表明这一策略确实有效。

CGS-CNN: Figure 2描述了CGS-CNN的结构。

image.png

文章只选择简体中文字体来生成字形向量。这是因为之前的学者研究表明,只使用一种中文字体就能达到与七种字体相媲美的性能。CGS-CNN的输入格式是字符图序列。首先将句子转换为图序列,其中每个字符被替换成50×50的灰度图。非中文字符参数矩阵初始化为0到1之间。再使用2个3×3×3的3D卷积层来编码图序列,每个50×50的图输出8个通道,即8个filter。3D卷积可以从空间和时间两个维度上提取特征,这意味着每个字形向量可以从邻近的图形中获得额外的字形信息。使用填充(padding)对图序列的维度进行填充,以确保通过3D卷积后保持图序列的长度不变,这对基于字符的标注任务来说是必要的。3D卷积的输出再过几组2D卷积和2D最大池化,将每个图压缩成64个通道的2×2田字格结构。为了过滤噪音和空白像素,将2×2结构拉平,并使用1D最大池化来提取每个字符的字形向量。字形向量的向量的大小被设定为64,这比Tianzige-CNN输出1024维小得多。与Glyce模型不同,Glyce使用图像分类任务来学习字形表示,而CGS-CNN在领域数据集中训练整个NER模型时学习CGS-CNN的参数。

融合阶段

文章中使用一个滑动窗口来滑动BERT表示结果和字形表示结果。在滑动窗口中,对每个slice pair计算外积(outer product)以捕捉局部的交互特征。再用Slice-Attention来平衡每个slice pair的重要性,并将它们结合起来,输出一个融合表征。

不同步的滑动窗口(Out-of-sync Sliding Window)

滑动窗口此前已被应用于多模态情感计算。使用滑动窗口的原因是,直接用外积融合向量将指数级地扩大向量大小。这会增加后续网络结构的空间复杂性和时间复杂性。同时,这种方法要求多模态表征具有相同的维度尺寸,这不适合同时滑动BERT向量和字形向量。因为BERT的字符表示比字形表示有更丰富的语义信息,需要更大的向量尺寸。文章使用一个不同步(out-of-sync)的滑动窗口以满足不同的向量大小,同时保持相同的slice数。

假设有一个汉字,其字符向量定义为$c_{-} v \in$ $\mathbb{R}^{d^c}$其字形向量为$g_{-} v \in \mathbb{R}^{d^g}$,其中$d^c$和$d^g$分别表示字符向量和字形向量的维度。为确保这两个向量在通过滑动窗口后保持相同数量的slice数,滑动窗口的设置需要满足以下限制:
$$ n=\frac{d^c-k^c}{s^c}+1=\frac{d^g-k^g}{s^g}+1, n \in \mathrm{N}^* $$
其中$n$是一个正整数,代表两个向量的slice数;$k^c$和$s^c$分别表示字符向量的滑动窗口大小和stride的大小。$k^g$和$s^g$分别表示字形向量的滑动窗口大小和跨度stride的大小。为满足上述限制文章使用的策略是限制滑动窗口的超参数,使$d^c$,$k^c$,$s^c$分别是$d^g$,$k^g$,$s^g$的整数倍。为了得到slice pairs,首先计算每一步(即一个stride)滑动窗口的左边界索引位置:

image.png

其中$p_{(i)}^c$和$p_{(i)}^g$分别代表字符和字形向量在第$i$步的滑动窗口的边界索引位置。可以通过以下公式获得每个slice:

image.png

其中为$c_{-} s_{(i)}$和$g_{-} s_{(i)}$分别表示两个向量中的第$i$个slice。$c_{-} v_{(p_{(i)}^c+1)}$表示$c_{-} v$在第$(p_{(i)}^c+1)$个维度的值。为了从局部角度融合两个slice,采用外积法来生成一个交互式张量,如公式所示:

image.png

其中 $m_i$ 表示第 $i$ 个slice pair的融合张量,$c_{-} v_{(p_{(i)}^c+1)} g_{-} v_{(p_{(i)}^g+1)}$表示两者相乘。

再将 $m_i$ 拉平为 $m_i^{\prime} \in \mathbb{R}^{d^c d^g}$。每个字符的 slices 表征可以表示为:

$$ m^{\prime}=\left\{m_1^{\prime}, m_2^{\prime}, \ldots m_{n-1}^{\prime}, m_n^{\prime}\right\}, m^{\prime} \in \mathbb{R}^{n \times\left(k^c c^g\right)} $$

其中 $m^{\prime}$ 包含$n$个slice pairs的融合结果向量,每个向量的维度大小是$k^c k^g$。

Slice-Attention

外积(outer product)为字符级的表示提供了交互式信息,但是与此同时也产生了更多的噪音,因为许多特征是不相关的。参照注意力机制,文章提出了Slice-Attention("切片-注意力"),它可以自适应地量化每个slice pair的重要性,并将它们结合起来以表征一个字符。slice pair的重要性可以如下计算:

image.png

其中,$a_i$表示第$i$个slice pair 的重要性值。Sigmoid函数可以将向量的值范围限制在0和1之间,这样可以确保后续的点乘计算有意义。最终通过加权计算得到每个字符的融合向量:

image.png

序列标注阶段

在做最终的序列标记之前,将每个字符级别上的向量拼接起来。句子的最终表示可以定义为$x=\{x_1,x_2,...,x_\tau\}$,其中$\tau$代表句子的长度。采用BiLSTM作为序列编码器,采用CRF作为解码器获取命名实体标签。简而言之,获取字符向量后直接输入到BiLSTM+CRF。

相关文章
|
10月前
|
人工智能 IDE 程序员
阿里也出手了!灵码AI IDE问世
各位程序员小伙伴们,是不是还在为写代码头秃?别担心,阿里云带着它的通义灵码 AI IDE 来拯救你啦! 相信不少小伙伴已经在VSCode、JetBrains IDE等主流开发工具中安装过通义灵码这款插件。 通义灵码插件全网总下载量超 1500 万,开发者采纳代码行数超 30 亿且每月增速 20%-30%。 今天我们要说的不是这款插件,而是阿里刚出的“为AI而生的灵码IDE”。
2040 0
|
C语言
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
791 5
|
机器学习/深度学习 自然语言处理 算法
Scikit-Learn与深度学习:融合与比较
【4月更文挑战第17天】本文比较了Scikit-Learn与深度学习框架在机器学习中的应用。Scikit-Learn以其易用性和丰富算法库深受喜爱,适合结构化数据处理,但面对复杂问题和大规模数据时可能力不从心。深度学习则以强大的神经网络解决图像、语音等任务,但需大量计算资源且解释性差。两者可互补,如预处理后输入深度学习模型,或在集成学习中融合。选择工具应考虑问题性质和资源,未来两者有望进一步融合创新。
|
缓存 Shell iOS开发
macos的AppCode破解安装激活2022-09-07最新教程(附破解工具及激活码)
本文讲的是AppCode破解、AppCode激活码、AppCode安装、AppCode永久激活码的最新永久激活教程。
1699 0
macos的AppCode破解安装激活2022-09-07最新教程(附破解工具及激活码)
|
Linux 测试技术 调度
新工具开源!一款iOS自动化利器(附地址)
tidevice 是阿里的内部的一个小组用来做 iOS 自动化用的工具,通过逆向iOS通信协议,使用纯Python实现。目前淘宝和其他部分事业部已经全面使用了该技术,进行iOS应用的性能采集,UI自动化。
2995 0
新工具开源!一款iOS自动化利器(附地址)
|
前端开发 JavaScript 搜索推荐
HTML炫酷的相册
HTML炫酷的相册
286 1
|
机器学习/深度学习 算法
【机器学习】梯度消失和梯度爆炸的原因分析、表现及解决方案
本文分析了深度神经网络中梯度消失和梯度爆炸的原因、表现形式及解决方案,包括梯度不稳定的根本原因以及如何通过网络结构设计、激活函数选择和权重初始化等方法来解决这些问题。
4164 0
Simulink|局部遮荫下光伏组件多峰值PSO-MPPT控制
Simulink|局部遮荫下光伏组件多峰值PSO-MPPT控制
|
机器学习/深度学习 移动开发 数据可视化
贝叶斯优化实战(一)(4)
贝叶斯优化实战(一)
794 0
|
机器学习/深度学习 移动开发 算法
秒懂算法 | 基于图神经网络的推荐算法
图神经网络(Graph Neural Networks,GNN)是近几年兴起的学科,用来作推荐算法自然效果也相当好,但是要学会基于图神经网络的推荐算法之前,需要对图神经网络自身有个了解。
1414 0
秒懂算法 | 基于图神经网络的推荐算法

热门文章

最新文章