摘要
当数据不足或需要适应看不见的类时,文本分类往往会遇到困难。在这种具有挑战性的情况下,最近的研究使用元学习来模拟小样本任务,在该任务中,将新问题与样本级别的小型支持集进行比较。但是,这种基于样本的比较可能会受到同一类中各种表达式的严重干扰。因此,我们应该能够学习支持集中每个类的一般表示,然后将其与新问题进行比较。在本文中,我们提出了一种新颖的归纳网络,通过在元学习中创新地利用动态路由算法来学习这种广义的类表示。这样,我们发现该模型能够更好地归纳和推广。我们在经过充分研究的情感分类数据集(英语)和真实世界的对话意图分类数据集(中文)上评估了提出的模型。实验结果表明,在两个数据集上,所提出的模型均明显优于现有的最新方法,证明了逐级泛化在小样本文本分类中的有效性。
1.介绍
深度学习在计算机视觉,语音识别和自然语言处理等许多领域都取得了巨大的成功。但是,对于大型标签数据集,监督式深度学习众所周知是贪婪的,这会导致由于标注成本而限制了深度模型在新的类别上的泛化能力。另一方面,人类很容易就能以很少的实例或刺激快速学习新的概念类别。这一明显的差距为进一步研究提供了沃土。
小样本学习致力于通过从极少数带有标签的示例中识别新颖的类来解决数据不足问题。仅一个或几个示例的局限性就挑战了深度学习中的标准微调方法。早期研究仅在有限的程度上应用了数据扩充和正则化技术来缓解因数据稀疏而导致的过拟合问题。相反,研究人员探索了元学习,以在人类学习的启发下将分布分配到类似任务上。当代的小样本学习方法通常遵循测试和训练条件必须匹配的原则,将训练过程分解为辅助元学习阶段,该阶段包括许多元任务。他们通过将元任务从一个小批量转换为另一个小批量来提取一些可转让的知识。 这样,小样本模型可以仅通过一个带有标签的小型支持集对新类进行分类。
然而,现有的方法对小样本学习仍然面临许多重要问题,包括实行强有力的先验,任务间复杂的梯度转移,和微调目标的问题。Snell等人提出的方法将非参数方法和度量学习相结合,为其中一些问题提供了潜在的解决方案。非参数方法可以使新示例快速被吸收,而不会遭受灾难性的过度拟合。这样的非参数模型仅需要学习样本的表示和度量标准。但是,相同类别的实例是相互关联的,并且具有统一的分数和特定的分数。在以前的研究中,通过简单地将支持集中样本的表示形式相加或取平均值来计算类级别的表示形式。这样做可能会在同一类别的各种形式的样本所带来的噪声中丢失基本信息。请注意,小样本学习算法无法在支持集上进行微调。当增加支持集的大小,由一个大数据量带来的改善也将会被更多的样本级别的噪音所抵消。
相反,我们通过在类级别上进行归纳来探索一种更好的方法:忽略无关的细节,并从同一类中具有各种语言形式的样本中封装一般语义信息。因此,需要一种全面的体系结构,其可以重构支持集的分层表示并且将样本表示动态地转换为类表示。
最近,提出了胶囊网络(capsule network),它具有解决上述问题的令人兴奋的潜力。一个胶囊网络通过使用执行动态路由的“胶囊”来编码个体和整体之间的内在空间关系从而构成视点不变的知识。遵循类似的灵感,我们可以将样本视为个体,将类视为整体。我们提出了归纳网络,其目的是基于动态路由过程,对从小型支持集中的样本中学习广义类级别表示的能力进行建模。首先,编码器模块为问题和支持样本生成表示形式。接下来,归纳模块执行动态路由过程,其中矩阵变换可以看作是从样本空间到类空间的映射,然后类表示的生成全都取决于按协议进行的路由而不是任何参数,这为所提出的模型提供了强大的归纳能力,可以处理看不见的类。通过将样本的表示形式视为胶囊输入,将类的类别视为胶囊输出,我们希望识别出与样本级噪声无关的类的语义。最终,对问题和类之间的交互进行了建模-关系模块将比较它们的表示,以确定问题是否与类匹配。整体模型定义了基于episode的元训练策略,具有端到端的元训练能力,具有通用性和可伸缩性,可以识别看不见的类别。
我们工作的具体贡献如下:
- 我们为归纳文本分类建议了归纳网络。为了处理小样本学习任务中的样本多样性,就我们所知,我们的模型是第一个模型,该模型显式地建模了从小型支持集中推导类级别表示的能力。
- 提出的归纳模块将动态路由算法与典型的元学习框架结合在一起。矩阵转换和路由过程使我们的模型能够很好地泛化以识别看不见的类。
- 我们的方法在两个小样本的文本分类数据集(包括经过深入研究的情感分类基准和现实世界中的对话意图分类数据集)上的表现优于当前的最新模型。
2.相关工作
2.1 小样本学习
关于小样本学习的开创性工作可以追溯到2000年代初(Fe-Fei等,2003; Fei-Fei等,2006)。 作者将生成模型与复杂的迭代推理策略结合在一起。最近,许多方法都使用了元学习(Finn等人,2017; Mishra等人,2018)策略,从某种意义上讲,它们从一组辅助任务中提取了一些可转让的知识,从而帮助他们学习很好地针对少数问题解决问题,而不会遭受过度拟合的困扰。通常,这些方法可以分为两类。
(1)基于优化的方法
这种类型的方法旨在学习根据给定的样例计算出的梯度来优化模型参数。Munkhdalai和Yu(2017)提出了元网络,该元网络跨任务学习了元级知识,并通过快速参数化转移了归纳偏差,从而实现了快速概括。Mishra等(2018)引入了一种称为SNAIL的通用元学习架构,该架构使用了时间卷积和软注意力的新颖组合。
(2)距离度量学习
这些方法与上述方法不同,后者在学习目标小样本问题时会带来一些复杂性。基于度量的小样本学习的核心思想类似于最近邻和核密度估计。在一组已知标签的预测概率是支持集样本的标签的加权总和。Vinyals等产生了通过余弦距离测量的加权K最近邻分类器,称为匹配网络。Snell等提出了原型网络,该网络学习了一个度量空间,可以通过对每个类别的原型表示计算欧式距离的平方来进行分类。与固定度量指标不同,关系网络学会了一种深度距离度量标准,可以将问题与给定示例进行比较(Sung等人,2018年)。
近来,已经提出了一些专门针对小样本文本分类问题的研究。 徐等通过元学习研究了终身域词嵌入。 Yu等认为最优元模型可能会因任务而异,他们通过将元任务聚类为几个定义的聚类来采用多指标模型。Rios和Kavuluru(2018)开发了针对多标签文本分类的小样本文本分类模型,该模型在标签空间上存在已知结构。 徐等提出了一个开放世界的学习模型来处理产品分类问题中看不见的类。我们从不同的角度解决了小样本学习问题,并提出了一种动态路由归纳方法来封装样本中的抽象类表示形式,从而在两个数据集上实现了最新的性能。
2.2 胶囊网络Capsule Network
胶囊网络最早由Sabour等人提出,该网络能够健壮地学习部分整体关系中的不变性。最近,在自然语言处理领域已经探索了胶囊网络。杨等成功地将胶囊网络应用到具有大型标签数据集的完全监督的文本分类问题。 与他们的工作不同,我们研究小样本的文本分类分体。夏等重用了类似于Yang等人的监督模型进行意图分类,其中基于胶囊的体系结构得到扩展,以计算目标意图和源意图之间的相似性。与他们的工作不同,我们提出了用于小样本学习的归纳网络,其中我们提议使用胶囊和动态路由从基于样本的模型中学习广义的类级表示。动态路由方法使我们的模型在小样本文本分类任务中可以更好地推广。
3.问题定义
3.1 小样本分类
小样本分类(Vinyals等,2016; Snell等,2017)是一项任务,在这个任务中,仅给出每个新类别的几个样例的条件下,必须对分类器进行调整以适应训练中未见的新类别。我们有一个带有标签的具有类别集合 C t r a i n C_{train} Ctrain的大型训练集。但是,经过训练后,我们的最终目标是在包含不相交的新的类别集合 C t e s t C_{test} Ctest的测试集上生成分类器,在这个测试集中,只有一小部分带标签的支持集可用。如果支持集C个类别中的每个仅包含K个标记样例,则目标小样本问题称为C-way K-shot problem。通常,K太小而无法训练监督分类模型。因此,我们的目标是在训练集上进行元学习,并提取可转让的知识,这将使我们能够在支持集上进行更好的小样本学习,从而对测试集进行更准确的分类。
3.2 训练过程
必须仔细选择训练过程,以在测试时匹配推理。利用训练集的一种有效方法是将训练过程分解为辅助元学习阶段,并通过基于episode的训练来模仿小样本学习设置,如Vinyals等人所提出的。我们构造一个元episode来计算梯度并在每次训练迭代中更新我们的模型。首先通过从训练集中随机选择类别的子集,然后在每个选定的类别中选择示例的子集作为支持集S和其余示例的子集作为问题集Q,形成元episode。元训练过程明确学习到给定的支持集S,以最大程度地减少问题集Q上的损失。我们将此策略称为基于episode的元训练,其详细信息如算法1所示。值得注意的是,要对模型进行训练有成千上万的潜在元任务,因此很难过拟合。例如,如果数据集包含159个训练类别,每次选择5个类别,则这将导致
C
159
5
=
794747031
C^5_{159}=794747031
C1595=794747031种可能。
4.模型
我们的归纳网络如图1所示(3-way 2-shot模型),它由三个模块组成:编码器模块,归纳模块和关系模块。在本节的其余部分,我们将展示这些模块在每个元episode中如何工作。
4.1 编码器模块
这个模块是一个双向循环神经网络,具有self-attention能力,如Lin等人所述。给定输入文本
x
=
(
w
1
,
w
2
,
.
.
.
,
w
T
)
x =(w_1,w_2,...,w_T)
x=(w1,w2,...,wT),其由单词嵌入序列表示。我们使用双向LSTM处理文本:
h
t
→
=
L
S
T
M
→
(
w
t
,
h
t
−
1
)
(
1
)
h
t
←
=
L
S
T
M
←
(
w
t
,
h
t
−
1
)
(
2
)
\overrightarrow{h_t}=\overrightarrow{LSTM}(w_t,h_{t-1})\qquad(1)\\ \overleftarrow{h_t}=\overleftarrow{LSTM}(w_t,h_{t-1})\qquad(2)
ht=LSTM(wt,ht−1)(1)ht=LSTM(wt,ht−1)(2)
然后我们将
h
t
→
\overrightarrow{h_t}
ht与
h
t
←
\overleftarrow{h_t}
ht连接起来,以获得隐藏状态
h
t
h_t
ht。令每个单向LSTM的隐藏状态大小为
u
u
u。为简单起见,我们将所有
T
T
T个
h
t
s
h_ts
hts记为
H
=
(
h
1
,
h
2
,
.
.
.
,
h
T
)
H =(h1,h2,...,h_T)
H=(h1,h2,...,hT)。 我们的目标是将可变长度的文本编码为固定大小的嵌入。我们通过在
H
H
H中选择
T
L
S
T
M
T~LSTM
T LSTM隐藏向量的线性组合来实现。计算线性组合需要self-attention机制,该机制将整个LSTM隐藏状态
H
H
H作为输入,并输出权重为
a
a
a的向量:
a
=
s
o
f
t
m
a
x
(
W
a
2
t
a
n
h
(
W
a
1
H
T
)
)
(
3
)
a = softmax(W_{a2}tanh(W_{a1}H^T))\qquad(3)
a=softmax(Wa2tanh(Wa1HT))(3)
其中,
W
a
1
∈
R
d
a
×
2
u
W_{a1}\in R^{d_a\times2u}
Wa1∈Rda×2u和
W
a
2
∈
R
d
a
W_{a2}\in R^{d_a}
Wa2∈Rda是权重矩阵,
d
a
d_a
da是一个超参数。文本的最终表示
e
e
e是
H
H
H的加权:
e
=
∑
t
=
1
T
a
t
⋅
h
t
(
4
)
e =\sum^T_{t=1}a_t· h_t\qquad (4)
e=t=1∑Tat⋅ht(4)
4.2 归纳模块
本节介绍了提出的动态路由归纳算法。我们将通过等式4从支持集
S
S
S获得的这些向量
e
e
e视为样本向量
e
s
e^s
es,将来自问题集
Q
Q
Q的向量
e
e
e作为问题向量
e
q
e^q
eq。最重要的步骤是提取支持集中每个类的表示形式。归纳模块的主要目的是设计从样本向量
e
i
j
s
e^s_{ij}
eijs到类向量
c
i
c_i
ci的非线性映射:
{
e
i
j
s
∈
R
2
u
}
i
=
1
,
.
.
.
C
,
j
=
1...
K
↦
{
c
i
∈
R
2
u
}
i
=
1
C
.
\{e^s_{ij} ∈ R^{2u}\}_{i=1,...C,j=1...K}\mapsto \{c_i ∈ R^{2u}\}^C_{i=1}.
{eijs∈R2u}i=1,...C,j=1...K↦{ci∈R2u}i=1C.
在输出胶囊的数量为一个的情况下,我们在此模块中应用动态路由算法(Sabour et al.,2017)。为了在我们的模型中接受任何方式的任意输入,在支持集中的所有样本向量上采用了权重可转换的形式。支持集中的所有样本向量共享相同的变换权重
W
s
∈
R
2
u
×
2
u
W_s∈R^{2u×2u}
Ws∈R2u×2u和偏差
b
s
b_s
bs,因此该模型足够灵活,可以处理任何规模的支持集。每个样本预测向量
e
^
i
j
s
\hat{e}^s_{ij}
e^ijs的计算公式为:
e
^
i
j
s
=
s
q
u
a
s
h
(
W
s
e
i
j
s
+
b
s
)
(
5
)
\hat{e}^s_{ij}=squash(W_se^s_{ij} + b_s)\qquad (5)
e^ijs=squash(Wseijs+bs)(5)
其中,
s
q
u
a
s
h
squash
squash是整个矢量的非线性压缩函数,它使矢量的方向保持不变,但减小了其大小。给定输入向量
x
x
x,
s
q
u
a
s
h
squash
squash定义为:
s
q
u
a
s
h
(
x
)
=
∣
∣
x
∣
∣
2
1
+
∣
∣
x
∣
∣
2
x
∣
∣
x
∣
∣
(
6
)
squash(x)=\frac{||x||^2}{1+||x||^2}\frac{x}{||x||}\qquad(6)
squash(x)=1+∣∣x∣∣2∣∣x∣∣2∣∣x∣∣x(6)
等式5编码了较低级别的样本特征与较高级别的类别特征之间的重要不变语义关系(Hinton等人,2011)。为了确保类向量自动封装此类的样本特征向量,将反复地应用动态路由。在每次迭代中,该过程都会动态修改连接强度,并通过“路由softmax”确保类
i
i
i与该类中所有支持样本之间的耦合系数
d
i
d_i
di的和为1:
d
i
=
s
o
f
t
m
a
x
(
b
i
)
(
7
)
d_i = softmax (b_i)\qquad (7)
di=softmax(bi)(7)
其中
b
i
b_i
bi是耦合系数的对数,在第一次迭代中由0初始化。给定每个样本预测向量
e
^
i
j
s
\hat{e}^s_{ij}
e^ijs,每个类别候选向量
c
^
i
\hat{c}_i
c^i是类别
i
i
i中所有样本预测向量
e
^
i
j
s
\hat{e}^s_{ij}
e^ijs的加权和:
c
^
i
=
∑
j
d
i
j
⋅
e
^
i
j
s
(
8
)
\hat{c}_i= \sum_jd_{ij} · \hat{e}^s_{ij}\qquad (8)
c^i=j∑dij⋅e^ijs(8)
然后应用非线性“
s
q
u
a
s
h
i
n
g
squashing
squashing”函数以确保路由过程的矢量输出的长度不会超过1:
c
i
=
s
q
u
a
s
h
(
c
^
i
)
(
9
)
c_i = squash(\hat{c}_i)\qquad (9)
ci=squash(c^i)(9)
每次迭代的最后一步是通过“协议路由”方法调整耦合系数
b
i
j
b_{ij}
bij的对数。如果产生的类别候选向量具有一个样本预测向量的大标量输出,则存在自上而下的反馈,该反馈会增加该样本的耦合系数,而降低其他样本的耦合系数。这种调整类型对于小样本学习的情况非常有效且稳定,因为它不需要恢复任何参数。每个
b
i
j
b_{ij}
bij通过以下方式更新:
b
i
j
=
b
i
j
+
e
^
i
j
s
⋅
c
i
(
10
)
b_{ij} = b_{ij} + \hat{e}^s_{ij} · c_i (10)
bij=bij+e^ijs⋅ci(10)
正式地,我们将归纳方法称为动态路由归纳,并在算法2中对其进行总结。
4.3 关系模块
在归纳模块生成类向量
c
i
c_i
ci并将问题集中的每个问题文本由编码器模块编码为问题向量
e
q
e^q
eq之后,接下来的基本过程是测量每个[问题-类别]对之间的相关性。关系模块的输出称为关系得分,代表
c
i
c_i
ci和
e
q
e^q
eq之间的相关性,它是0到1之间的标量。具体而言,我们在此模块中使用神经张量层(Socher等人,2013),该模块在建模两个向量之间的关系方面显示了巨大的优势(Wan等人,2016; Geng等人,2017)。在本文中,我们选择它作为交互函数。张量层输出如下的关系向量:
v
(
c
i
,
e
q
)
=
f
(
c
i
T
M
[
1
:
h
]
e
q
)
(
11
)
v(c_i, e^q) = f(c^T_iM^{[1:h]}e^q)\qquad(11)
v(ci,eq)=f(ciTM[1:h]eq)(11)
其中
M
k
∈
R
2
u
×
2
u
,
k
∈
[
1
,
.
.
.
,
h
]
M^k∈R^{2u×2u},k∈[1,...,h]
Mk∈R2u×2u,k∈[1,...,h]是张量参数的一个切片,
f
f
f是称为RELU的非线性激活函数(Glorot等,2011)。
第
i
i
i个类和第
q
q
q个问题之间的最终关系得分
r
i
q
r_{iq}
riq由sigmoid函数激活的完全连接层计算得出。
r
i
q
=
s
i
g
m
o
i
d
(
W
r
v
(
c
i
,
e
q
)
+
b
r
)
(
12
)
r_{iq} = sigmoid(W_rv(c_i, e^q) + b_r)\qquad (12)
riq=sigmoid(Wrv(ci,eq)+br)(12)
4.4 目标函数
我们使用均方误差(MSE)损失来训练我们的模型,将关系得分
r
i
q
r_{iq}
riq回归为真实得分
y
q
y_q
yq:匹配对具有相似性1,错配对具有相似性0。在一个episode中,给定具有C个类别的支持集S和查询集
Q
=
(
x
q
,
y
q
)
q
=
1
n
Q = {(x_q,y_q)}^n_{q = 1}
Q=(xq,yq)q=1n,损失函数定义为:
L
(
S
,
Q
)
=
∑
i
=
1
C
∑
q
=
1
n
(
r
i
q
−
1
(
y
q
=
=
i
)
)
2
(
13
)
L(S,Q)=\sum^C_{i=1}\sum^n_{q=1}(r_{iq}-1(y_q==i))^2\qquad(13)
L(S,Q)=i=1∑Cq=1∑n(riq−1(yq==i))2(13)
从概念上讲,我们正在预测关系分数,可以将其视为回归问题,并且真实得分在
{
0
,
1
}
\{0,1\}
{0,1}空间内。
这三个模块的所有参数都通过反向传播共同训练。每个训练阶段的所有参数均使用Adagrad(Duchi等人,2011)。由于其泛化性质,我们的模型不需要对从未见过的类进行任何微调。归纳和比较能力与训练episodes一起累积在模型中。