您现在的位置是:首页 >技术教程 >【论文精读】CONTAINER: Few-Shot Named Entity Recognition via Contrastive Learning网站首页技术教程
【论文精读】CONTAINER: Few-Shot Named Entity Recognition via Contrastive Learning
CONTAINER_ Few-Shot Named Entity Recognition via Contrastive Learning
前言
一篇来自ACL2022的文章,采用对比学习的方法提高模型的性能,在实现方法上和实验论证部分很值得借鉴,至于和大模型性能的对比,还需要进一步的调研~
Abstract
低资源场景NER不可或缺,但现有的方法仅从源域学习特定的语义特征和中间表示,这会影响对目标域的泛化能力,降低性能。为此本文提出CONTAINER,一种新颖的对比学习技术,可以优化小样本NER中token间分布的距离,从而有效缓解过拟合问题。该方法在多个数据集上模型性能显著提升,包括在具有挑战的场景。
1 Introduction
由于受监督的NER模型需要大规模的人工标注数据,因此低资源约束下小样本NER引起广泛关注。为了避免在有限数据集上产生过拟合的问题,元学习被引入帮助学习。很多方法使用原型网络,它对每个分类创建一个原型表示,对每一个需要分类的查询,计算分类的原型向量和查询点的距离来确定。
小样本NER任务有如下挑战:
- 作为序列标注任务,需要更具上下文的一致性和标签内依赖关系进行标注;
- 不属于任何类的token被标注为O,这会出现训练集被标注为O的token在测试集中是有效目标的情况;
- 小样本设置下没有足够多的样本可供为验证集,超参数调整困难。
第二点在原型网络中,由于实体是通过原型聚类的,经过训练的权重将会与源域类紧密相关,这会导致测试集数据在嵌入时放弃许多与其真实目标实体相关的有用特征。
CONTAINER利用对比学习的力量来应对以上挑战。
- 试图减少相似样本的token嵌入的距离,增大不同实体的token嵌入距离,可以更好捕获标签依赖性;
- 使用通用目标进行训练,可以避免现有方法出现的O-token陷阱;
- 不需要任何特定数据集调整超参数。
和传统的对比学习方法优化embedding之间相似性目标不同,CONTAINER优化分布差异,有效地对高斯嵌入建模。点embedding只是简单优化样本距离,而高斯嵌入面临通过方差估计维持类分布的额外约束。因此高斯embedding显示对实体类分布进行建模,这样不仅提升通用特征的表示,还有助于小样本目标的域适应。此外之前的任务还表明高斯embedding可以捕获表征的不确定性、表达自然不对称性,同时只需要更少的样本就能表达很好的泛化能力。
总的来说,本文的主要贡献如下:
- 提出一种新颖的利用对比学习来推断其高斯嵌入的分布距离的方法;
- 证明CONTAINER域适应能力很强,即使支持集很少的情况下;
- 大量实验表明方法是优于sota的。
2. Task Formulation
2.1 Few-shot Setting
小样本NER中,模型在源域中训练,在数据稀缺的目标域测试,在N-way K-shot设置中,目标域有N个标签,每个标签有K个样本。
2.2 Tagging Scheme
为了公平将CONTAINER和先前的SOTA模型进行对比,本文遵守IO标记方案,I类型表示所有的token都在一个实体内,O类型表示所有其他token。
2.3 Evaluation Scheme
为了和Few-NERD排行榜中的sota模型比较,采用episode evaluation方法,即计算多个测试集的micro-F1分数来评估模型,每个episode包含一个K-shot支持集和K-shot未标注的查询集去做预测。
3. Method
CONTAINER利用对比学习来优化不同token实体表示之间的分布差异。这种对比不是专注于标签特定属性,而是明确训练模型以区分不同类别的token。进一步说采用高斯embedding代替传统的点表示法可以高效对实体类进行建模,激发token的通用表示。最后它让少量样本也能微调模型而不会过拟合。
方法整体步骤如下:
- 在源域上训练;
- 在目标域上进行微调;
- 最后使用实例级最近邻分类器在测试集上推理。
3.1 Model
CONTAINER结合BERT生成上下文表示。和使用投影点映射进行对比学习的SIMCLR不同,CONTAINER假设token嵌入遵循高斯分布。具体来说,使用投影网络
f
μ
f_{mu}
fμ和
f
Σ
f_{Sigma}
fΣ来生成高斯分布参数:
μ
i
=
f
μ
(
h
i
)
,
Σ
i
=
ELU
(
f
Σ
(
h
i
)
)
+
(
1
+
ϵ
)
oldsymbol{mu}_{i}=f_{mu}left(oldsymbol{h}_{i}
ight), quad oldsymbol{Sigma}_{i}=operatorname{ELU}left(f_{Sigma}left(oldsymbol{h}_{i}
ight)
ight)+(1+epsilon)
μi=fμ(hi),Σi=ELU(fΣ(hi))+(1+ϵ)
h
i
h_i
hi是经过BERT输出的中间表示,
μ
i
∈
R
l
oldsymbol{mu}_{i} in mathbb{R}^{l }
μi∈Rl,
Σ
i
∈
R
l
×
l
oldsymbol{Sigma}_{i} in mathbb{R}^{l imes l}
Σi∈Rl×l分别表示高斯嵌入的均值和对角协方差,上述投影作为单独一层网络。ELU是指数线性单元,
ϵ
epsilon
ϵ是极小值。
3.2 Training in Source Domain
为了计算对比损失,考虑样本中所有有效token对的KL散度,
x
p
x_p
xp和
x
q
x_q
xq被认为是正样本如果它们有相同的标签。给定它们的高斯嵌入
N
(
μ
p
,
Σ
p
)
mathcal{N} left ( oldsymbol{mu}_{p},oldsymbol{Sigma}_{p}
ight )
N(μp,Σp)和
N
(
μ
q
,
Σ
q
)
mathcal{N} left ( oldsymbol{mu}_{q},oldsymbol{Sigma}_{q}
ight )
N(μq,Σq),可以计算如下的KL散度:
D
K
L
[
N
q
∥
N
p
]
=
D
K
L
[
N
(
μ
q
,
Σ
q
)
∥
N
(
μ
p
,
Σ
p
)
]
=
1
2
(
Tr
(
Σ
p
−
1
Σ
q
)
+
(
μ
p
−
μ
q
)
T
Σ
p
−
1
(
μ
p
−
μ
q
)
−
l
+
log
∣
Σ
p
∣
∣
Σ
q
∣
)
egin{array}{l} D_{mathrm{KL}}left[mathcal{N}_{q} | mathcal{N}_{p}
ight]=D_{mathrm{KL}}left[mathcal{N}left(oldsymbol{mu}_{q}, oldsymbol{Sigma}_{q}
ight) | mathcal{N}left(oldsymbol{mu}_{p}, oldsymbol{Sigma}_{p}
ight)
ight] \ =frac{1}{2}left(operatorname{Tr}left(oldsymbol{Sigma}_{p}^{-1} oldsymbol{Sigma}_{q}
ight)
ight. \ quad+left(oldsymbol{mu}_{p}-oldsymbol{mu}_{q}
ight)^{T} oldsymbol{Sigma}_{p}^{-1}left(oldsymbol{mu}_{p}-oldsymbol{mu}_{q}
ight) \ left.quad-l+log frac{left|oldsymbol{Sigma}_{p}
ight|}{left|oldsymbol{Sigma}_{q}
ight|}
ight) end{array}
DKL[Nq∥Np]=DKL[N(μq,Σq)∥N(μp,Σp)]=21(Tr(Σp−1Σq)+(μp−μq)TΣp−1(μp−μq)−l+log∣Σq∣∣Σp∣)
由于KL散度的非对称性,需要计算其两个方向:
d
(
p
,
q
)
=
1
2
(
D
K
L
[
N
q
∥
N
p
]
+
D
K
L
[
N
p
∥
N
q
]
)
d(p,q)=frac{1}{2}(D_{mathrm{KL}}left[mathcal{N}_{q} | mathcal{N}_{p}
ight]+D_{mathrm{KL}}left[mathcal{N}_{p} | mathcal{N}_{q}
ight])
d(p,q)=21(DKL[Nq∥Np]+DKL[Np∥Nq])
首先在资源丰富的数据集上训练,每个训练step中,随机抽样一批大小为b的序列
X
mathcal{X}
X,获取它们的高斯嵌入
N
(
μ
i
,
Σ
i
)
mathcal{N} left ( oldsymbol{mu}_{i},oldsymbol{Sigma}_{i}
ight )
N(μi,Σi),找到样本
p
p
p的正样本
X
p
mathcal{X}_p
Xp然后计算其相对于同批次中所有其他有效token的高斯嵌入损失:
X
p
=
{
(
x
q
,
y
q
)
∈
X
∣
y
p
=
y
q
,
p
≠
q
}
mathcal{X}_p=left { left ( x_q,y_q
ight ) in mathcal{X} | y_p=y_q, p
e q
ight }
Xp={(xq,yq)∈X∣yp=yq,p=q}
ℓ
(
p
)
=
−
log
∑
(
x
q
,
y
q
)
∈
X
p
exp
(
−
d
(
p
,
q
)
)
/
∣
X
p
∣
∑
(
x
q
,
y
q
)
∈
X
,
p
≠
q
exp
(
−
d
(
p
,
q
)
)
ell(p)=-log frac{sum_{left(x_{q}, y_{q}
ight) in mathcal{X}_{p}} exp (-d(p, q)) /left|mathcal{X}_{p}
ight|}{sum_{left(x_{q}, y_{q}
ight) in mathcal{X}, p
eq q} exp (-d(p, q))}
ℓ(p)=−log∑(xq,yq)∈X,p=qexp(−d(p,q))∑(xq,yq)∈Xpexp(−d(p,q))/∣Xp∣
通过这种方式可以计算批次中所有token对的分布散度。
3.3 Finetuning to Target Domain using Support Set
源域训练结束,在目标域的支持集用相似的方式微调,因为数据量很少,所以放在一个batch。当多个小样本用于目标类时,模型可以通过优化高斯嵌入的KL散度来有效适应新域。相反,1-shot会对模型适应目标类带来挑战,如果没有关于目标域的先验知识,一个样本不足以推断出目标类分布的方差。因此对于1-shot场景,优化距离为:
d
′
(
p
,
q
)
=
∥
μ
p
−
μ
q
∥
2
2
d'(p,q)=left | oldsymbol{mu}_{p}-oldsymbol{mu}_{q}
ight | ^2_2
d′(p,q)=
μp−μq
22
即嵌入分布均值之间的平方欧氏距离。当模型有先验知识时,仍然使用之前的KL散度。
上表显示在微调阶段,1-shot场景使用平方欧氏距离优化能获得更好的性能,但是5-shot场景优化高斯嵌入会得到更好的结果。
早停机制: 使用小支持集存在过拟合风险,并且由于验证集稀缺,无法保证到达微调的饱和点,为缓解此情况,依赖计算出的对比损失,采用patience为1的早停机制。
3.4 Instance Level Nearest Neighbor Inference
训练和微调结束后将抽取的PLM用于推理。由于投影层之前的表征包含更多的信息,因此投影层不用于推理。计算来自PLM的测试数据的表示,并找到最近邻支持集表示用于推理。
计算测试集表征和支持集的表征的距离,将与支持集距离最短的标签作为测试集的标签。
维特比解码:先前工作表明CRF可以消除错误预测提高性能,因此在推理阶段使用维特比解码,并使用StructShot中的抽象转换分布。对于转换概率,通过计算三个抽象标记O、I、I-other在训练集中出现次数来估计它们之间的转换,这些转换概率最终均匀分布到目标域中。发射概率从最近邻推理阶段计算的。将域转移结果(表3)和其他任务(2,4,5)比较,发现如果测试数据集没有显著的域迁移,对比学习可以自动提取标签的依赖性。
4. Experiment Setups
数据集: 作者使用各种领域的数据集,包括通用(OntoNotes)、医药(I2B2)、新闻(CoNLL’03)、社交(WNUT’17),还在代表各种文本的GUM上进行测试,它包含访谈、新闻、乐器和旅游,领域的多样性使其成为一个具有挑战性的数据集。此外,还在一个新的大规模数据集Few-NERD上进行评估,它包含8个粗粒度实体,66个细粒度实体。上表是这些数据集的摘要。
Baselines: 首先在传统数据集上进行比较,接着与FEWNERD排行榜基线进行比较,作者采用基于原型网络的ProtoBERT最近邻度量方法NNShot,它利用嵌入空间中样本的位置,额外的也添加基于 Structshot 的维特比解码作为主要的 SOTA 基线。
4.1 Tag-set Extension Setting
小样本NER中常见的例子是新实体类型可能出现在相同的文本域中,即域内跨类型,因此有人提出使用OntoNotes数据集测试标签集扩展能力。18个类被封为3组A,B,C,每组6个种类,模型在两个组数据集上训练,第三组上进行测试,训练阶段所有测试组中的实体被标注为O。上表是不同模型在数据集上表现结果,CONTAINER比sota高出了12.75,性能有实质提升。
4.2 Domain Transfer Setting
即跨域同类型,将OntoNotes作为源域,评估在I2B2、C0NLL、WNUT上的性能,结果如上表所示。虽然其他域和OntoNotes几乎没有交集,但是CoNLL的目标实体完全包含在OntoNotes实体中,几乎与监督学习相当。
4.3 Few-NERD Setting
有两个不同的设置,Few-NERD(INTRA)和Few-NERD(INTER)。Few-NERD(INTRA)中,训练集、验证集和测试集按照粗粒度类型划分。另一方面,在Few-NERD(INTER)中,粗粒度类型是共享的,尽管所有细粒度类型都是互相不相交的。由于共享粗粒度类型的限制,Few-NERD(INTER)更具挑战性。性能评估结果如上表所示,CONTAINER在两项测试排行榜中都建立了新的基准测试结果。
Few-NERD(INTRA): 按照粗粒度的实体进行分类,例如训练集:People,MISC,Art,Product,验证集:Event,Building,测试集:ORG,LOC,由于不同粗粒度之间相关度很低,任务具有挑战性。
Few-NERD(INTER): 按照细粒度进行划分,每个粗粒度类中随机挑选60%的细粒度实体类作为训练集,20%作为验证集,20%作为测试集,考察的是细粒度实体之间的泛化性能。
5. Results and Analysis
5.1 Overall Results
表2-5表明,在每个场景中,CONTAINER都优于所有其他基线方案。比如Few-NERD(INTRA)中训练集和测试集粗粒度实体类型不重叠,是一个充满挑战的场景,但是CONTAINER表现良好。显然,通过对比高斯嵌入优化进行分布建模,可以更好利用小样本数据。为了保持模型架构一致性,没有进行细致的调参,CONTAINER仍然显示出相当的性能。
5.2 Training Objective
传统的对比学习器通常会优化点嵌入的余弦相似度,但是在小样本NER等更具挑战的NLU任务中表现不佳。本文将具有欧几里得距离和余弦相似度的点嵌入方法和高斯嵌入KL散度方法的性能进行比较,如下表所示:
根据上表对的实验结果,表明高斯嵌入更适合微调到小样本目标域。
接着采用t-SNE降维方法将embedding可视化,如上图所示,可以看到具有KL散度的高斯嵌入更好地分理处不同类别,所以得分会更高。
5.3 Effect of Model Fine-tuning
为了仔细检查微调的结果,使用PERSON、DATE、MONEY、LOC、FAC、PRODUCT目标实体对OntoNotes的标签extension任务进行了案例研究。
可以看出微调确实提升了小样本的性能,并且在5-shot设置下更为显著,说明CONTAINER可以充分利用目标域汇总可用的小样本。
5.4 Modeling Label Dependencies
分析结果,可以观察到跨域同类型场景使用维特比解码在性能上得到一定的收益,但是在其他任务上几乎没有提升,这是因为训练域和目标域在标签集扩展和FEW-NERD有很大的重叠,因此模型可以通过批量对比学习间接学习标签依赖关系。因此除非源域和目标域有明显的偏移,否则不通过维特比解码也能获得最佳性能。
6. Related Works
略。
7. Conclusion
本文提出一个基于对比学习的框架CONTAINER,可以对高斯嵌入进行建模并优化token之间的分布距离,避免了先前小样本NER方法的缺陷。通过实验评估,即使在具有挑战性的场景,CONTAINER也始终优于之前的SOTA。
阅读总结
通过这篇文章的深入阅读,让我对对比学习在小样本NER中的应用有了更深刻的认识,在之前我思维定式认为对比学习主要作用在数据层面,没想到还能够作用在模型中,并且由于高斯分布带来的不确定性,提升了模型的泛化能力,不得不感慨方法的巧妙。实验和分析部分多达5页(还不包括附录),作者论证的思路非常严谨,首先是在不同数据集上和sota进行比较,接着是模型组件性能的论证,分别论证高斯嵌入KL散度方法的优越性、微调的性能提升、对比学习学到的标签依赖性,其中高斯嵌入KL散度方法的优越性用可视化的方式展现,颇具有说服力。当然了,阅读这篇文章的目的还是为了探索没有大模型的支持下,小样本NER还能否继续做下去,目前看来性能上表现还是非常优秀的,训练成本也很低,只是不知道和基于大模型的小样本NER对比,还有没有优势,这需要进一步调研。