- 转载:学习ML的皮皮虾
- 地址:https://zhuanlan.zhihu.com/p/148223989
abstract
NLP 中句子表示很重要。这篇文章,我们考虑一个用于句子表示的持续学习场景:给定语料序列,我们的目标是在维持旧语料准确率的同时针对新语料优化句子表示。为了解决这个问题,我们提出使用 corpus-independent features 初始化句子编码器,然后使用 Boolean operations of conceptor matrices sequentially 更新句子编码器去学习 corpus-dependent features。我们基于文本相似度任务评估我们的方法,结果展示我们的句子编码器能够持续从新语料学习特征且维持他在之前语料上的表现。
introduction
在开放域的 NLP 系统中例如 conversational agents,通常我们会面对一个动态环境,其训练数据会逐渐随时间推移不断积累,随之其分布也会不断变化。为了在这样的系统中有效进行句子编码,我们考虑持续句子表示学习任务:给定语料序列,我们的目标是训练句子编码,使得他们可以持续的从新语料中学习特征,同时维持在过去语料上的表现。基于这个目标,我们提出使用 conceptor 矩阵限制下的词向量去完成句子编码。我们应用 conceptor 矩阵的布尔操作去更新句子表示以满足以下考虑。
- zero-shot learning:初始句子编码器(没有训练样本)能够有效的产生句子 embedding
- resistant to catastrophic forgetting
notation
词典 V V V 中的每个词 w w w 有对应的词向量 v w v_w vw , p ( w ) p(w) p(w) 是词 w w w 的出现概率。语料 D D D 是句子 s s s的集合。对于一个矩阵 Y = { y i } i ∈ I Y=\{ y_i \} _{i∈I} Y={yi}i∈I ,表示有 I I I个列向量。
linear sentence encoders
smoothed inverse frequency (SIF) 将一串词向量变为一个句子向量有三步:
- 对于训练集中的每个句子,SIF 计算每个词向量的加权平均(1-3)
- 估计训练样本的“common discourse direction”(4)
- 对于测试集中的每个句子,它计算词向量的加权平均得到
q
s
q_s
qs,利用之前学到的
u
u
u将
q
s
q_s
qs做映射,移去其中的 cdd(5-8)
(类似于一个简单的三层神经网络)
continual learning
我们发现使用 SIF 方法由训练语料估计 common discourse directions 这种方法在持续学习场景中可能并不是最优的。例如,考虑我们连续被给推文和新闻的训练语料,原来在推文上训练 encoder,现在新加入 news 训练语料,如果重新把 news 加进去所有数据一起训练新的 encoder,可能对二者都不是最优的,因为这两种语料不太一致,而且还可能存在大语料覆盖小语料的可能,再者我们不能每次新加入语料都全部重新训练。为了使得当前的 common discourse 对于另一个语料也有泛化能力,我们提出去使用 conceptor 矩阵,去标记和更新 common discourse feature。
1.matrix conceptors
一个 conceptor 矩阵是一个满足最小化:
的 regularized identity map(一种映射)。F 代表 Frobenius norm(F 范数)。
α
−
2
α^{-2}
α−2是scalar 参数,叫作 aperture。C 有闭合解:
X
=
{
x
i
}
i
∈
{
1
,
2
,
.
.
n
}
X=\{ x_i\}_{i∈\{ 1,2,..n\} }
X={xi}i∈{1,2,..n}是 data collection matrix。C 是样本
x
i
x_i
xi线性子空间的一个 soft projection matrix。concepter 满足大多数布尔法则,对于两个 conceptor C 和 B:
CvB 是由两个数据点集合的并联计算而来的 conceptor,而 C, B 由其分别计算得来。这样的话想要计算 CvB,我们不需要去求样本的并,只需要分别求 C, B 再并就可以。
2.使用 conceptor
假设我们连续给定 M 个训练语料
D
1
,
.
.
.
,
D
M
D^1,...,D^M
D1,...,DM,首先不用任何训练语料,我们首先初始化一个 conceptor,其提取 corpus-independent 的 common 语义特征(discourse features)。更具体的,我们计算
其中
[
v
w
]
w
∈
Z
[v_w]_{w∈Z}
[vw]w∈Z是一个 colum-wisely 矩阵,其存储单词的词向量,单词来自于停用词列表 Z,
α
α
α是一个超参数。在初始化之后,对于每个新到的训练语料
D
i
D^i
Di,我们计算一个新的 conceptor:
去从语料
D
i
D^i
Di中抽取通用的语料特征,这里
q
s
q_s
qs是 SIF 计算的向量加权平均(上算法1)。我们之后使用布尔操作去计算:
其同时从新语料和旧语料中提取通用语料特征。在所有 M 个语料都被表示之后,我们按照 SIF 的模式,使用
C
M
C^M
CM移去句子中的 common discourse features。上面描述的 conceptor-aided (CA) 连续句子表示学习方法算法流程如下:
对于上述算法,如果不考虑 M 个语料,即移去 2-8 行,则是仅依赖于预训练词向量的零样本学习,使用 C 0 C^0 C0代替 C M C^M CM,将其称为‘zero-shot CA’。
experiment
使用 semantic textual similarity(STS)数据集,评估指标是预测的句子相似度和真实相似度之间的 Pearson correlation coefficient(PCC)。由体裁不同将语料分为五种:news, captions, wordnet, forums, tweets(数量大->小)。使用的预训练词向量为 GloVe vectors (trained on the 840 billion token Common Crawl) (Pennington et al., 2014). Additional experiments with Word2Vec (Mikolov et al., 2013), Fasttext (Bojanowski et al., 2017), Paragram-SL-999。
数据集分为5类,五个子图分别代表在其各自的数据上进行测试的结果。子图中的横坐标代表依序添加的语料,拿子图1 举例:1 代表使用 NEWS 进行训练,在 news 上进行评估、2 代表使用 news 和 captions 进行训练,在 news 上进行评估,依次下去。虚线代表不涉及迁移,只使用本领域的数据训练并在本领域数据上进行测试,蓝色线表示使用 SIF 算法利用所有的语料从头开始训练,比如子图1中的2对应的意思就是使用 news 和 captions 语料共同训练一个 SIF 模型。
conclusions
第一篇考虑持续表示学习任务的文章。未来:
- 整合更复杂的预训练模型
- 本文只考虑了线性句子编码
- 引入自编码器,应用到具体的下游任务