目录
1. Self-Guided Contrastive Learning for BERT Sentence Representations
Bert使用[CLS]作为句子的表示,并在微调的过程中鼓励[CLS]捕获整个句子的特征。但是,[CLS]的效果可能并不如池化等操作:
BERT(-base)在STS-B测试集上使用不同池方法的分层性能显示,相比于[CLS],平均、最大池的效果更好。因此,本文关注于修改BERT以计算更好的句子嵌入(相比于CLS、池化等操作),将中间BERT隐藏表示回收为正样本(最后的句子嵌入应与正样本接近),并使用the NTXent loss作为额外的损失函数,提升Bert模型捕捉句子级别特征的能力。
其方法很简单:
首先,把Bert克隆成两个副本,
B
E
R
T
F
BERT_F
BERTF(固定参数)和
B
E
R
T
T
BERT_T
BERTT(微调参数)。将
B
E
R
T
T
BERT_T
BERTT最后一层的[CLS]向量,即
c
i
c_i
ci,视为我们在微调过程中/之后要优化/利用的最后一个句子嵌入:
之后,使用
B
E
R
T
F
BERT_F
BERTF计算的得到一句话
s
i
s_i
si的向量化表示:
这里
H
i
,
k
∈
R
l
e
n
(
s
i
)
×
d
H_{i,k}\in R^{len(s_i)×d}
Hi,k∈Rlen(si)×d,
l
l
l是Bert的层。然后对所有层的表示应用池化得到
h
i
,
k
h_{i,k}
hi,k,然后将对所有池化之后的表示采样,得到一个经由
B
E
R
T
F
BERT_F
BERTF计算的句子表示:
其中
σ
\sigma
σ是采样器。将句子的两种不同表示合并成一个统一的集合
X
X
X:
根据
X
X
X计算NTXent loss:
这里,
τ
\tau
τ是描述温度的超参数,
f
f
f是MLP,
g
(
u
,
v
)
g(u,v)
g(u,v)是余弦相似度,
μ
(
)
\mu()
μ()是一个匹配函数,用来选择是哪种句子表示:
然后,在这个损失函数的基础上,添加正则化项,避免两种不同的句子表示之间的距离过大:
最终优化的损失函数如下:
本文就是借助了Bert本身的中间参数信息构建一个自我引导的学习框架,从而提升Bert的句子表示性能。
2. Obtaining Better StaticWord Embeddings Using Contextual Embedding Models
Bert的出现拉低了原有的静态词向量(比如Glove、CBOW等)的地位(顺便吐槽一下由于设备比较垃圾一直都不太喜欢用Bert,但是架不住大家都用),但是这些静态词向量在一些下游任务,尤其是不适宜部署大规模预训练模型的低资源情况下依旧十分重要。现有的语言模型都是由上下文决定待预测的单词,这源自于很基础的一个概念:一个词的意思来自于它的上下文。因此,为了将现有的上下文词表示模型提取为静态词嵌入,本文增加了一种受CBOW启发的静态词嵌入方法作为锚定方法,以容纳(上下文)Teacher模型的附加上下文信息。这里的Teacher就是指一些已经预训练好的语言模型,比如本文对比的Bert、RoBerta、GPT-2。然后,利用和CBOW类似的上下文学习方法学习单词的静态嵌入。具体的方法如下文。
Method
首先定义待训练语料
C
C
C,训练的目标是在语料中句子(或者是段落)包含的上下文中优化目标函数:
其中,
w
t
w_t
wt是被屏蔽的目标词汇,
E
c
t
x
E_{ctx}
Ectx为上下文表示,这个损失函数就是最最小化目标单词与其上下文之间的距离,也就是通过上下文去表示中心词。
f
(
)
f()
f()为:
l
l
l函数为logistic loss function:
U和V分别为目标词嵌入和源N-gram矩阵,N为负目标样本集和。对于
f
f
f来说,
u
T
v
u^Tv
uTv可以视为二者embedding的相似程度,而
l
l
l与
x
x
x成反比,所以相似度越高
l
l
l越小,因此可以最小化损失函数进行优化;同理,对于负例
w
′
w'
w′,需要优化
−
u
w
′
T
v
-u^T_{w'}v
−uw′Tv以保证与负例的相似程度低。举个例子,对于SENT2VEC,其中心词
w
t
w_t
wt简单地由所有在句子中单词的向量的平均(当然不能包括中心词或是叫做目标词):
将这个
E
c
t
x
E_{ctx}
Ectx替换成不同的上下文,比如n-gram,就可以得到不同类型的静态表示了。在本文中,提出了两种不同的
E
c
t
x
E_{ctx}
Ectx:
- Sentences as context。与SENT2VEC一样,都是使用句子
S
S
S作为context,而不同的地方是使用不微调的
B
e
r
t
Bert
Bert等预训练模型参数计算其上下文
M
(
S
,
w
)
M(S,w)
M(S,w),因此
E
c
t
x
E_{ctx}
Ectx可以重写为:
- 当然,除了使用句子,还可以使用更加长的上下文,也就是包含
S
S
S的段落
P
S
P_S
PS:
本文的提出的方法可以认为是知识蒸馏,利用了Teacher模型(Bert、GPT等)学习到的知识,直接将静态的模型结算结果注入到上下文训练的过程中,这个过程实际上是包含了Teacher模型的一些注意力、位置信息的,所以得到的词嵌入效果要更好。就简单看一个实验结果好了(不同嵌入方法在词相似度任务上的性能比较):
3. X-Class: Text Classification with ExtremelyWeak Supervision
弱监督的文本表示方法往往会选定一些seed,但是本文探讨了一种极弱情况下的监督方式,连种子词也不要了,仅仅使用class的name进行标记数据的扩充,然后进行文本分类。通俗来说,首先,以class name进行相似词的扩充,因为从表示学习的角度来看,与class name相似的词应该更能代表这一整个类的特征,这样便能得到一个词集合,用于表示class。之后,通过class的表示对文档的表示进行预估,具体说,根据token与类表示的相似度为它们分配权重,之后根据token的加权平均得到一个文档的表示。之后,借助聚类对文档进行聚类,选取与中心点(class表示)相似度最高的top 50%作为标记数据,训练分类器进行分类。
所以,大体的工作流程分为如下三个部分:class 文档表示、聚类、分类器训练。
Class-oriented Document Representation
Class Representation Estimation。本文中提到,每个类可以用一系列关键词来表示,可以通过扩充关键词来丰富类的表示:
在图中,使用sports的上下文进行扩充,得到了sports 类别下的词为:sports,win…对于每个单词,通过平均输入语料库中出现的所有单词的上下文化表示来获得它的静态表示:
其中
D
i
,
j
D_{i,j}
Di,j是第
i
i
i个文档中第
j
j
j个词的表示,
t
i
,
j
t_{i,j}
ti,j则是相应的上下文token。在本文里,需要迭代地为每个类找到下一个关键字,并通过对所有找到的关键字的加权平均重新计算每个迭代的类表示。因为每个类的数量并不平均,并且使用相同的上下文窗口内的词对类进行平均会造成语义漂移。如此一来,不同的class就会有不同数量的关键词,形成一个列表
K
c
K_c
Kc。按照关键词添加的顺序进行一个加权得到最终的class表示:
迭代的过程为:对于给定的类,列表中的第一个关键字总是类名。在第i次迭代中,我们将检索静态表示与当前类表示最相似的列表外单词。然后根据所有i + 1个单词计算一个新的类表示。当关键词列表达到一定数量(100)或是新的class表示不能够重新产生和目前关键词列表中的词相同的单词,就停止。
Document Representation Estimation。接下来就用class的表示去估计文档的表示。根据token与类表示的相似度为它们分配权重,如图所示:
对于第
i
i
i个文档中的第
j
j
j个token,有两种不同的表示:上下文表示
t
i
,
j
t_{i,j}
ti,j,单词的静态表示
s
w
s_w
sw。上下文表示通过考虑上下文来消除具有多种含义的词的歧义,而静态版本解释了文档中可能存在的异常值。因此这两种都可以用于表示token。然后,本文使用了两种不同的注意力:
-
Significance:
它捕获了token的表示 e e e与class的表示 x c x_c xc之间的最大相似性,也就是假定了本token只与一个class相关。 -
Relation
它根据单词与集中的一般类集的关联程度对单词进行排名,因此这算是一种软注意力,可以获悉与本token与所有class的相似性的评分。
因此,结合两种不同的单词token计算方式,就一共产生了2×2=4种不同的注意力计算每个token的注意权重。根据每个注意机制的相似性对token进行递减排序,以获得一个排名列表,然后依旧是根据排名赋予不同的注意力以权值,最终得到token的基于不同类的注意力的加权的一个表示。最终,利用得到的权重,得到文档 E i E_i Ei的表示。
Document-Class Alignment and Text Classifier Training
使用Gaussian Mixture Model (GMM)进行聚类。初始的类簇中心当然是class的表示,然后文档作为样本点,进行聚类。之后根据GMM中对其所分配的聚类的后验概率得到文档从属于某一类别的置信度,设置最高的50%作为可训练的样本。通过这些样本训练一个分类器,最终做到了极弱监督情况下的文本表示。