Glyce: Glyph-vectors for Chinese Character Representations

本篇论文选自2019年NeurIPS,论文链接Glyce: Glyph-vectors for Chinese Character Representations


摘要

对于像中文这种象形文字,其字符本身形式就含有一定信息,但是由于象形文字缺乏丰富的象形证据以及标准计算机视觉模型对于字符数据的弱泛化能力,这种信息在NLP任务中没得到充分利用。
在本paper中提出Glyce,提出三点创新:(1)利用历史上的汉字字体(金文,繁体中文等)来丰富字符象形证据;(2)设计了适合汉字图像处理的CNN结构(tianzige-CNN);(3)在多任务学习设置中,将图像分类用作辅助任务,以提高模型的泛化能力。

简介

早期的基于CNN的模型来处理字符没有取得进展甚至还会有负面效果,原因可归纳为三点:

  1. 没有使用正确的字体。汉字经过长时间的演化,字体有很大改变,比如现在的简体字相对于繁体字,字符表现形式本身失去了很多信息。
  2. 没有使用正确的CNN架构。将字符作为图像由CNN处理会有一个问题,传统的用来进行图像处理CNN处理的图像数据尺寸比字符图像会大很多。需要使用不同的CNN架构来捕捉字符图像的局部特征。
  3. 没有使用regulatory functions。传统的CNN用来进行图像处理,用来进行训练的数据量是很大的,然汉字的数量相对是很有限的。在防止模型过拟合以及提高模型泛化能力方面,辅助训练目标很有必要。

在本论文中将字符作为图像进行处理,使用CNN来获取字符的表示,针对上面三点原因提出:

  1. 使用多种不同时期的汉字以及字体。
  2. Tianzige-CNN (田字格)。
  3. 添加图像分类损失函数。

Glyce

使用不同时期的汉字以及多种字体

Glyce: Glyph-vectors for Chinese Character Representations_第1张图片
对同一个字符来说,对于不同时期的汉字或者字体,它的图像表现形式可能会差别很大。这种方式类似于计算机视觉领域的数据增强,可以提高模型泛化能力。

Tianzige-CNN

Glyce: Glyph-vectors for Chinese Character Representations_第2张图片
由于汉字数量相对有限,以及传统CNN处理的图像尺寸与汉字图像尺寸差别较大,提出Tianzige-CNN。输入图像的通道数即为不同的字体数。最后图像尺寸为2*2,和田字格尺寸相同,田字格结构能够表示出中文字符之间偏旁部首的分布及其汉字的书写顺序。网络最后使用分组卷积,可以减少参数量从而防止过拟合。

使用汉字图片分类损失作为辅助的训练策略

为了进一步降低整个网络过拟合的风险,将汉字图片分类损失函数作为辅助损失函数来辅助整个网络的训练过程。从CNN得到的字符嵌入 h i m a g e h_{image} himage被输入到图像分类器中,预测对应的charID。假设图像 x x x的label是 z z z,则图像分类任务 L ( c l s ) L(cls) L(cls)的训练目标为:
L ( c l s ) = − l o g   p ( z ∣ x ) = l o g   s o f t m a x ( W × h i m a g e ) \begin{aligned} L(cls) &= -log\,p(z|x)\\&=log\,softmax(W \times h_{image}) \end{aligned} L(cls)=logp(zx)=logsoftmax(W×himage)
L ( t a s k ) L(task) L(task)为最终具体任务的目标函数,比如语言建模,词义解析等。将 L ( t a s k ) L(task) L(task) L ( c l s ) L(cls) L(cls)进行线性组合得到最终的目标函数为:
L = ( 1 − λ ( t ) ) L ( t a s k ) + λ ( t ) L ( c l s ) L = (1-\lambda(t))L(task)+\lambda(t)L(cls) L=(1λ(t))L(task)+λ(t)L(cls)
λ ( t ) \lambda(t) λ(t)控制具体任务目标和辅助图像分类任务目标函数之间的比重, λ \lambda λ是关于迭代次数t的函数, λ ( t ) = λ 0 λ 1 t \lambda (t)=\lambda_0\lambda_1^t λ(t)=λ0λ1t λ 0 ∈ [ 0 , 1 ] \lambda_0\in[0, 1] λ0[0,1]代表初始值, λ 1 ∈ [ 0 , 1 ] \lambda_1\in[0,1] λ1[0,1]代表衰减值。这意味着图像分类任务的目标函数的影响随着训练的进行是不断减弱的,直观上的解释是早期的训练阶段,需要从图像分类任务中获取更多校准。引入图像分类任务作为训练目标其实是模拟的多任务学习。

结合BERT和Glyph信息

字形嵌入是可以直接应用到到下游模型,比如RNNs、LSTMs或者Transformers。由于BERT等预训练模型在NLP任务上表现很好,尝试将BERT与字形嵌入进行结合,由此思路设计的模型包含四层,BERT层、glyph层、Glyce-BERT层和具体任务输出层。
Glyce: Glyph-vectors for Chinese Character Representations_第3张图片

  • BERT层: 每个输入的句子S以预定义的特殊token CLS作为起始,以预定义的特征 token SEP作为句子结尾。给定预训练的BERT模型,利用BERT计算得到每个句子S的嵌入,以BERT transformer的最后一层的输出作为当前token的表征。

  • Glyph层: 从Tianzige-CNN输出的字形嵌入表示。

  • Glyce-BERT层: 在字形嵌入前面加入位置嵌入。再把加入了位置嵌入的字形嵌入与BERT嵌入拼接,最终得到满Glyce表征。该层也就是实现Glyph和BERT表征的结合。

  • 具体任务输出层: Glyce-BERT表征有位置信息,也有了来自BERT的上下文语境信息。此外,还需要一个额外的上下文模型以编码带有上下文语境的字形表征。为此,本文选用了一个多层transformers。transformers的输出表征输入到预测层。

将字形嵌入应用到具体任务中

Glyce: Glyph-vectors for Chinese Character Representations_第4张图片

实验

作者将该模型应用到多项NLP任务中,同多种baseline进行对比,均取得了不错了效果。另外作者还实验了不同的训练策略,是否使用汉字图片分类损失,以及不同的CNN架构的影响。部分实验结果如下:
Glyce: Glyph-vectors for Chinese Character Representations_第5张图片
Glyce: Glyph-vectors for Chinese Character Representations_第6张图片
Glyce: Glyph-vectors for Chinese Character Representations_第7张图片

总结

其实对于汉字这种象形文字其本身字符的表现形式就包含一定信息,将这种信息应用到自然语言处理中是最正常不过了。本文是将文字作为图像形式的数据,使用多种字体,借用CNN来提取字符信息。在我看过的其它的论文中还有将汉字进行分解,分解出的的偏旁部首也带有信息,利用偏旁部首的共享信息进行处理,然后接合LSTM之类的网络进行处理,可以参考2019年AAAI的一篇论文A Radical-Aware Attention-Based Model for Chinese Text Classification。

你可能感兴趣的:(NLP,人工智能,深度学习,NLP)