Github:https://github.com/Fritz449/ProtoNER
文章目录
- Abstract
- 1. Introduction
- 2. Related Work
- 3. Prototypical network
- 4. Few-shot NER
- RNN + CRF —— baseline方法
- Prototypical Network
- Models
- 1. RNN Baseline (Base)
- 2. Baseline prototypical network (BaseProto)
- 3. Regularised prototypical network (Protonet)
- 4. Transfer learning baseline (WarmBase)
- 5. Transfer learning + prototypical network (WarmProto)
- 6. WarmProto-CRF
- 7. WarmProto for zero-shot training (WarmProtoZero)
- 5. Experiments
- Conclusions
Abstract
- 提出问题:NLP任务受限于大量的标注数据,急需半监督或无监督的方法,降低标注数据的成本。
- 主要贡献:本文使用原型网络(一种度量学习的方法),可以在数据量极少(20个样例)的情况下保持良好性能,同时这个模型还可以用于零样本学习。
1. Introduction
- 提出问题:在标注数据不足的情况下,NER的效果受限。在现实情况下,难以获得充足的标注数据,尤其是在小语种中。即使用大量的标注语料,也可能一些实体出现次数少而影响效果。因此,在少量样本的数据集上做NER是十分有必要的。
其中一种方法是半监督学习方法,度量学习在半监督中十分重要,又包括:
- 匹配网络 —— matching networks
- 原型网络 —— prototypical networks
科普:度量学习通常用在图像分类上,可以看作是半监督学习方法,因为通常的做法是用已知的标注数据,去度量未标注数据。度量学习可以从,降维、最近邻分类、聚类中心、信息论等角度进行分类。
度量学习在NLP任务中应用不广泛,人们更多会使用迁移学习的方法。例如预训练的方法。
本文主要贡献:
- 将小样本NER描述成半监督学习方法
- 修改原型网络处理NER任务,效果SOTA
2. Related Work
- 特征转换
- 机器翻译,跨语种,处理小语种问题
- 共享向量空间
- 本体论
- 主动学习、强化学习
- 元学习
- 原型网络
3. Prototypical network
3.1 原型网络方法
核心思想:通过计算 support set 中的嵌入中心,然后衡量新样本与这些中心的距离来完成分类。
- support set:包含少量标注的样本
- query set:包含未标注样本,和support set的样本空间一致
- 计算嵌入中心公式,简单的取平均
- S k S_k Sk:类别为 k 的 support set
- f θ f_θ fθ:嵌入函数
-
x
i
x_i
xi:输入
c k = 1 ∣ ∣ S k ∣ ∣ ∑ i f θ ( x i ) c_k = \frac{1}{||S_k||} \sum_i f_θ(x_i) ck=∣∣Sk∣∣1i∑fθ(xi)
- 计算新样本到每个类别k的嵌入中心的距离: d ( f θ ( x ) , c k ) d(f_θ(x), c_k) d(fθ(x),ck),然后再用softmax对距离做映射,得到每个类别的概率 y ^ i = s o f t m a x ( l 1 , . . . , l k ) \hat y_i = softmax(l_1,...,l_k) y^i=softmax(l1,...,lk)。
- 训练目标优化交叉熵损失函数:
- y y y:真实值
-
y
^
\hat y
y^:预测值
L ( y , y ^ ) = − ∑ i = 1 N ′ y i l o g y ^ i L(y, \hat y) = - \sum^{N'}_{i = 1}y_i log\hat y_i L(y,y^)=−i=1∑N′yilogy^i
3.2 将原型网络的方法适配到NER任务
- 句子的词与上下文互相联系,并非像图片那样一张张离散。为了避免词的语义信息被分割,直接将整句话放入支持集或查询集。
- 用一个超参数 b o b_o bo 来代替O类型的概率, b o b_o bo 随着参数 θ θ θ 一起训练
- 将少量标注数据用于训练,包含这些数据类型的数据称为 in-domain training set。不在这些类别的数据称为 out-of-domain training set
4. Few-shot NER
使用了两个主要框架,RNN + CRF和Prototypical Network。
RNN + CRF —— baseline方法
步骤:
- 生成词向量,使用Glove或者ELMo等预训练模型
- 用LSTM生成字符级别的向量
- 将步骤1、2的词向量进行拼接,输入到Bi-LSTM中,Bi-LSTN处理整个句子,创造每个词的上下文相关表示
- 在Bi-LSTM的隐状态后拼接一个前向传播层计算每一个标签的对数
- 最后接CRF预测句子中所有词的可能分布
Prototypical Network
和上面的baseline方法类似,主要的不同点在于第四步。
先将这些隐状态映射到M维向量空间,前向传播层用于构建support set的原型,原型用于分类query set的样本。并试验去掉CRF和保留CRF的效果。网络结构如下:
Models
作者一共用了七个模型
1. RNN Baseline (Base)
就是上面描述的RNN baseline方法,只在 in-domian 训练集上训练。
2. Baseline prototypical network (BaseProto)
原型网络的baseline模型,在 in-domain 训练集上训练。
3. Regularised prototypical network (Protonet)
模型框架和训练过程和2一样,不同的是训练的数据集。在每个训练步中,选择以下两种训练方式之一。
- 使用 in-domain 训练集,数据标签的类别为C
- 选择不同的类别的数据,包括三种方式(i)随机u西安则一个新类别C’,(ii)在out-of-domain 一直选择新类别的样本,直到采样到N和C’类的样本,(iii)重新标记样本句子,使其仅包含C’类标签。
以 p 的概率选择方式1,(1-p)的概率选择方式2。
利用 out-of-domain 中的数据,有一定的概率训练类别C之外的数据,可以增加模型的鲁棒性。
4. Transfer learning baseline (WarmBase)
通用的迁移学习模型。使用了 out-of-domain 中的数据。训练包含两部分:
- 用模型1的RNN+CRF方法训练out-of-domian数据
- 共享同样的权重参数,再在in-domain数据上继续训练
5. Transfer learning + prototypical network (WarmProto)
结合原型网络和在out-of-domain中的预训练。
- 先在out-of-domian数据中训练一个模型3的base model
- 用预训练的base model初始化原型网络,继续做上述训练
6. WarmProto-CRF
只在out-of-domain中训练原型网络,并在后面加上CRF层
7. WarmProto for zero-shot training (WarmProtoZero)
训练同样的模型5,只不过将概率p设置为0,即只有方式二的训练集,训练集中的数据没有目标类型C。
在测试的时候,将目标类别C的N个实体作为支持集,并根据它们与原型的相似性将测试句子中的单词分配给该类或者分配O类。这是测试时唯一 zero-shot 场景。
5. Experiments
5.1 整体数据集描述
数据集包含O类在内的18个类别,3万个实例,类别不均匀分布。标注方式为BIO
5.2 数据准备 —— 小样本
in-domain、out-of-domina
- 如果想获得in-domain数据,就用O替换除B-C和I-C之外的所有标签;
- 如果想获得out-of-domain数据,就用O替换所有B-C和I-C标签。
low-sourced —— 采样
随机选择句子并重新标记,直到获得N个满足要求的句子,要求句子中包含至少一个类型C的实例。这样采样到的句子可能不止N个,某些句子中不包含C类型的实例。
这样采样出来的句子会产生较大方差,因为in-domain数据变化范围大。为了降低方差,作者定义了一个方法 p r ( C ) pr(C) pr(C)用于计算类别C在验证集上的比例。在训练集上,采样N句包含C类型实体的句子,和 N × ( 1 − p r ( C ) ) p r ( C \frac{N×(1-pr(C))}{pr(C} pr(CN×(1−pr(C))句不包含C类型实体的句子。使训练集的数据比例和验证集的数据比例保持一致。用同样的方法得到out-of-domain数据。
5.3 实验结果
在图3中可以看到,20句话训练明显还是欠拟合。
- 原型网络(模型1)和RNN+CRF(模型2)效果差不多,说明训练数据还是太少了
- 如果原型网络偶尔暴露在其他类型的实体中,效果会好一些
- 迁移学习带来的out-of-domain数据信息是有用的
- 迁移学习不适用于zero-shot学习
- 使用CRF层,性能急剧增长
Conclusions
- 原型网络适用于极其少量的标注数据,比当时的SOTA RNN模型更有效
- 本文提出的模型,在训练时偶尔可以训练到其他的类别,在原则上可以用于zero-shot文本分类
- 本文设计的原型网络在不同类别的实体表现相差很大,后续可以做更多的定性分析,看哪些数据适合与这种方法
- 目前实验只是对单一类别进行训练,后续考虑加入更多的类别