赞
踩
这篇文章是腾讯人工智能实验室发表在EMNLP 2017上的文章,基于细粒度的模板解数学应用题。
总结下来,该工作主要分为三个部分:
训练集中的题目包含文本和表达式。
有了每个模板对应的归纳特征,我们就想要对训练集中的数据进行训练。训练的过程分为两个部分,一部分是训练选择模板的正确性,另一部分是在选择候选的模板之后,将操作数填到模板中的位置正确性。对于这两个部分的训练,损失函数都是使用了Ranking SVM的方法。
定义选择模板的损失:
L
=
1
2
∣
∣
v
t
∣
∣
2
+
C
∑
i
l
(
v
t
T
f
(
x
i
,
t
j
)
+
−
v
t
T
f
(
x
i
,
t
l
)
−
)
L = \frac{1}{2}||v_t||^2 + C \sum_{i} l(v_t^T f(x_i, t_j)^+ - v_t^T f(x_i, t_l)^-)
L=21∣∣vt∣∣2+Ci∑l(vtTf(xi,tj)+−vtTf(xi,tl)−)
其中的l(t) = max(0, 1-t)^2,+表示预测正确。这里的f(x_i, t_j)表示特征向量,特征是根据题目x_i和模板t_j来人工构造的。v_t^T表示可学习参数。所以上式的目标就是要使得题目x_i属于模板t_j的可能性大于属于其他模板的可能性。为每个题目选择可能性最大的top-n个模板作为候选模板。
定义操作数填到模板各位置上的损失:
L
=
1
2
∣
∣
v
a
∣
∣
2
+
C
∑
i
l
(
v
a
T
f
(
x
i
,
a
k
)
+
−
v
a
T
f
(
x
i
,
a
l
)
−
)
L = \frac{1}{2}||v_a||^2 + C \sum_{i} l(v_a^T f(x_i, a_k)^+ - v_a^T f(x_i, a_l)^-)
L=21∣∣va∣∣2+Ci∑l(vaTf(xi,ak)+−vaTf(xi,al)−)
上式想要达到的目标就是尽可能的让操作数在模板的正确的位置上。
在参数v^T训练好之后,我们就可以利用这个模型,来判断测试集中的题目属于哪个模板的概率比较大。以及题目中的操作数应该如何填在模板的slot当中。
对应这两个问题,这里应该定义两个概率函数。
一个是计算题目x_i属于模板t_j的概率:
p
(
t
j
∣
x
i
;
v
t
)
=
e
x
p
(
v
t
⋅
f
(
x
i
,
t
j
)
)
∑
t
j
′
∈
T
e
x
p
(
v
t
⋅
f
(
x
i
,
t
j
′
)
)
p(t_j|x_i; v_t) = \frac{exp(v_t \cdot f(x_i, t_j))}{\sum_{t_j' \in T}exp(v_t \cdot f(x_i, t_j'))}
p(tj∣xi;vt)=∑tj′∈Texp(vt⋅f(xi,tj′))exp(vt⋅f(xi,tj))
一个是确定该题目对应于模板的位置(对齐操作):
p ( a k ) = e x p ( v a ⋅ f ( x i , a k ) ) ∑ a k ′ ∈ A e x p ( v a ′ ⋅ f ( x i , a k ′ ) ) p(a_k) = \frac{exp(v_a \cdot f(x_i, a_k))}{\sum_{a_k' \in A}exp(v_a' \cdot f(x_i, a_k'))} p(ak)=∑ak′∈Aexp(va′⋅f(xi,ak′))exp(va⋅f(xi,ak))
这篇文章基于模板匹配来解决Math Word Problems,本质上还是属于相似度比较的范畴,即计算待解题目和训练集中的模板的相似度,找到相似度最高的模板,然后将题目文本中的操作数对应到解题模板中去。得到解题的表达式,最终得到结果。
文中的方法和他所比较的方法都存在一个问题,就是在一个模板对应的题目很少的情况下,最终得到的准确率结果就比较差。因为如果一个模板对应的题目很少,那么对于这个模板的训练就不足,那么久很难得到好的结果。
关于这一点,之前的文章中也有讲到混合模型,就是当相似度大于一个阈值的时候,就是用相似度比较的方法,当相似度小于阈值的时候,就是用端到端的深度学习方法。这篇文章为什么没有使用呢?
文章中值得借鉴的一点就是:对模板进行了细粒度的分析,对于模板中所出现的操作符及其对应的两个操作数,都会找一些与其对应的文本表达。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。