Press "Enter" to skip to content

怎样在小数据集下学习OOV词向量?

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

本文针对当前预训练数据与训练/测试数据之间存在的OOV偏差问题,提出了一种新的k-shot学习方法来学习OOV词向量。作者将OOV词向量视为一个回归问题,在少样本的基础上使它接近真实的嵌入空间的向量,为此,作者提出了一种分层注意力机制结构用于训练OOV词向量,且使用了MAML方法进行训练。实验结果表明用此方法得到的词向量比其他方法更加精确,且有利于提升下游任务表现。

 

OOV问题

 

当下,基于DL的各种NLP模型都离不开分布式表示的词向量,这些词向量要幺在被随机初始化之后随下游任务一起训练,要幺首先进行预训练。但无论是哪种方法,都不得不面对OOV(Out-Of-Vocabulary)问题:在数据集中出现次数极少的词的词向量质量较低 ^1 [1] 。如果我们使用预训练的词向量,而同时在实际数据中出现了未登陆词,我们只能不得不用一个 <UNK> 标记去指代这个词,这样的词一旦很多,就必然会严重影响模型的结果 ^2 [2] 。过去的解决方法大约分为两类,一是用更细粒度的单位对词向量进行推导,比如字符级别的RNN;二是用OOV的上下文进行推导,比如将固定窗口大小的上下文词向量相加。但是,前者无法处理像人名这样的非规则性词,后者容易对小样本过拟合。为此,我们需要一种更综合、宏观的方法,在给定有限的观测数据中,对OOV词向量进行推导。

 

Few-Shot回归框架

 

我们还是首先来确定一下之后会使用到的符号。我们用表示一个训练集,对于给定词,它的词向量为 ,我们的目标是为新的数据集推导其中未在中出现的OOV词向量。

 

因为是用于预训练的数据,所以通常比大很多,而OOV词要幺在中根本没出现,要幺只出现很少的次数,这就会使得对应的词向量不那幺精确。所以,本文使用了一个上的回归函数,将OOV的上下文和细粒度特征同时作为输入,输入它的近似词向量,使得这个近似词向量与它的在嵌入空间中“应该”的真实词向量比较接近。这个是在上训练的,为此,我们首先从中抽取个出现足够多次的词 ,把它们的词向量作为真实向量,且对于每个,我们令为所有在中所有包含的句子的集合。

 

现在我们把训练作为几轮few-shot learning的任务,在每一轮,我们从从随机抽取个句子,把抹去构建一个上下文 ,这里是词所在的第个句子。此外,我们把这个词的字符序列内部特征。我们优化的目标是:

 

在模型训练之后得到,就可以用它在数据集上来预测OOV词向量。输入同训练。

 

分层上下文编码(Hierarchical Context Encoding, HiCE)

 

在上面公式(1)中我们有作为输入,那幺这个该怎幺实现呢?本文给出了一种分层的编码结构,如下图:

 

可以看到,每个编码块都是由一个自注意力层和一个全连接层组成,同Transformer结构。同时也使用了位置编码,将位置的编码乘以一个固定的数。

 

对每个词及其,一个底层的上下文编码器(E)将每个作为输入,输入一个编码向量,在此之上,一个聚合器用另一个自注意力编码块将这些编码向量结合起来,最后,同字符级别的CNN的内部特征输入一起,送入输出层得到嵌入向量。

 

使用Model Agnostic Meta-Learning(MAML)

 

上面的训练方法还存在一个问题:当和之间存在语义差距时,这就可能导致训练、推理的失配。为此,为了使得在上学到的能够匹配于,本文使用了MAML ^3 [3] 的方法。相比简单地在进行微调,相反,在训练的每一轮,我们首先在上训练得到更新权值,也即:

 

现在要做的是,把作为上的初始值:

 

这样一来,我们就可以在和上有较好的优化平衡性。

 

实验及结果

 

实验分为两部分:intrinsic评估和extrinsic评估,对后者,本文使用了NER和POS任务。

 

对于基线模型,本文选择了 FastTextAdditive ^4 [4] 、 nonce2vec ^5 [5] 和 a la carte ^6 [6] 五种方法。实验设置详见原文。

 

Intrinsic评估

 

首先,本文在 Chimera 数据上进行了intrinsic评估,评价指标为Spearman相关系数,如下图:

 

 

可以看到, HiCE+Morph+MAML 达到了最好结果,相比基线的SOTA模型,提升是较大的。和真实向量(Oracle Embedding)相比,在越大的时候,两者差距越小,这表明使用聚合模型的有效性。

 

此外,本文还比较了Morph的作用。实验结果表明,当上下文句子较少的时候(如2或4 shot)有帮助,这表明细粒度内部特征可以提供上下文之外的信息。另外,当上下文句子较多的时候MAML有相对较大的帮助,而且可以作为一种缓解过拟合的正则手段。

 

Extrinsic评估

 

本文使用了NER和POS两个下游任务对词向量进行评估。对NER,使用了 Rare-NERBio-NER 两个数据集作为,将 WikiText-103 作为,模型结构均为 BiLSTM-CRF 。对POS,使用了 Twitter 数据集作为。结果如下:

 

 

可以看到, HiCE 在三个数据集上都远远超过了基线方法。

 

定性评估

 

我们从6个句子中随机选出3个OOV词,用 additiveFastTestHiCE 三种方法推导与之在嵌入空间最接近的词,结果如下:

 

 

可以看到, additive 方法只能让向量接近如 theand 之类的词,而 FastText 方法可以找到更细粒度的相似性,但意思可能完全不同。 HiCE 方法可以捕捉OOV的真实语义。

 

结论

 

本文研究了OOV的嵌入表示问题,将之视为一种K-shot的回归任务,使用了一种分层上下文编码(HiCE)和MAML的方法进行训练。和多种基线方法相比具有更好的效果。

 

OOV问题一直是NLP各种任务的一大痛点,过多的OOV会严重影响模型的质量,但是,OOV对人类而言并不是一个问题,因为我们有足够机能去进行记忆和推理,尽管词只出现过一次。但是,对计算机而言,过少的数据量及容易造成过拟合。一个可能的解决办法是模仿人类的记忆-推理机制:综合考虑语法、语义,而不是单纯地使用一个嵌入向量进行表示。实际上本文也颇有这种意味,分层的编码器可以使得OOV的上下文嵌入表示的语法、语义剥离,而最后的输出层又进行综合,所以这似乎和Multi-Head有莫大的关联。然而,遗憾的是,本文没有对模型的架构进行Ablation Study,所以我们无从得知Multi-Head的作用几何,未来可能还需要进一步探究。

 

更多NLP干货请关注我们的知乎“香侬慧语科技”及微信公众号“香侬科技”

 

References

 

[1] ^1:  https://www.aclweb.org/anthology/E17-1088

 

[2] ^2:  https://arxiv.org/pdf/1905.05526.pdf

 

[3] ^3:  http://proceedings.mlr.press/v70/finn17a/finn17a.pdf

 

[4] ^4:  https://onlinelibrary.wiley.com/doi/pdf/10.1111/cogs.12481

 

[5] ^5:  https://www.aclweb.org/anthology/D17-1030

 

[6] ^6:  https://www.aclweb.org/anthology/P18-1002

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注