1. 论文研读笔记
1.1 研究动机
本文可以算是问答系统的经典工作之一,文章是ICLR2016,来源于IBM的watson团队。文章着眼的任务可以算是对话系统最基本的任务,即给定一个问题,从回答候选池(answer condidate pool) 选择一个最佳答案。
1.2 研究方法
本文的思路现在看来,其实还是比较清晰简明的。 最基本的想法是将问题通过Bi-lstm 编码成一个向量,答案同样通过一个Bi-lstm成一个向量。通过比较向量的余弦距离,就可以选出最佳的答案。这个基本框架如下图所示,这里还有一个值得注意的是,其实两个Bi-LSTM是共享参数的。因为这样比较容易收敛。
考虑到用mean或者max pooling的内容嵌入能力不足,本文将LSTM 的输出接入一个巻积网络+max pooling,以增强问题和答案的组合表达能力(composite representation)。其设计如下:
本文另一个设计就是加入attention,这个设计也比较自然,因为对于答案的表达,我们其实是需要根据问题来决定关注点的,从设计上来看,就是对于答案的每一步输出乘以一个权重,这个权重由问题的嵌入来表示,其示意图如下:
其实用公式表示更加的清晰:
m
a
,
q
(
t
)
=
t
a
n
h
(
W
a
m
h
a
(
t
)
+
W
q
m
o
q
)
m_{a,q}(t) = tanh(W_{am}h_a(t) + W_{qm}o_q)
ma,q(t)=tanh(Wamha(t)+Wqmoq)
s
a
,
q
(
t
)
∝
e
x
p
(
w
m
s
T
m
a
,
q
(
t
)
)
s_{a,q}(t) ∝ exp(w^T_{ms}m_{a,q}(t))
sa,q(t)∝exp(wmsTma,q(t))
h
^
a
(
t
)
=
h
a
(
t
)
s
a
,
q
(
t
)
\hat{h}_a(t) = h_a(t)s_{a,q}(t)
h^a(t)=ha(t)sa,q(t)
其中
W
a
m
W_{am}
Wam,
W
q
m
W_{qm}
Wqm and
w
m
s
w_{ms}
wms是attention参数,而
h
^
a
(
t
)
\hat{h}_a(t)
h^a(t)则是加了attention的答案的嵌入表达。
1.3 实验结果
这篇文章的一个亮点就是实验用的是真实的保险行业的问题数据集InsuranceQA,问题的平均长度是7,答案的平均长度是94,语料库总共有24981个不同的答案,对于每一个问题平均的答案池是500。基本的实验结果如下:
模型在公开数据集TREC-QA上的表现依然比baseline 有了明显提升(MAP>1,MRR>3)。
1.4 创新点
本文的创新点个人认为主要在于:
- 利用Bi-LSTM对于问题和答案进行嵌入表达,通过向量空间寻找相似性,而不是直接通过词汇特征去找匹配
- 在LSTM的输出接上CNN,增强模型的表达能力
- attention 机制在QA上的灵活应用
1.5 个人点评
本文的思路其实是比较自然的,当然个人认为,在当时这种利用句子或者语境的嵌入表达,而不是仅仅对于Word2vec的粗暴处理(类似fasttext),对于后面的词语的上下文相关的嵌入的研究是有启发性的,比如elmo的工作,从本质上和这个是接近的。
但是从问答系统的设计上来看,其实逻辑是牵强的,即使这样编码的问和答余弦距离接近,就能证明问答最匹配么? 完全没有语义方面的考虑,其实是不合适的。一个基本的假设,如果答案是问题的简单重复,从相似度上,匹配的肯定是最高,但是其实并不是最佳答案。其实这样的问答系统的可用性,取决于答案的设计,以及候选答案池中的答案的差异性。