Stochastic Answer Networks for Natural Language Inference 论文解读

这篇论文没有源码,有的部分在论文里写的不够详细,所以有些地方说的可能会有些不对,请见谅!

论文地址 :https://arxiv.org/pdf/1804.07888.pdf

它的模型结构是这样的

第一部分 是Embbeding层,它是将word_embedding 和 character_embedding 拼接起来一起输入到神经网络中,在输入之前,它通过了两层 Position-wise Feed-Forward 层,它应该采用的是和 Transformer 里一样的结构,因为句子的词向量和字符向量拼接在一起后每个单词的向量维度不一样,所以需要FFN层去降维,FFN层的函数如下图

第二部分 是使用两层堆叠的BiLSTM层来提取文本特征,正常情况下,BiLSTM得到的是两个方向的输出,作者这里使用了maxout layer 得到了返回值较大的那个值,具体怎么操作的就不知道了,总之就是得到了C^p\in R^{2d*m}C^h\in R^{2d*n} 两个特征向量

第三部分  就是交互层了,这里使用的Transformer里的Attention方法。先将上一层得到的C^p 和 C^h 通过一层的ReLu 函数变成 \hat{C}^p 和 \hat{C}^h ,然后再使用Attention,最后使用dropout处理一下

得到的Attention后的结果 A 与C^p 和  C^h 拼接得到 U^p ,A的转置 A' 与 C^p 和 C^h拼接得到 U^h,这里转置的原因和ESIM模型里求Attention后得到两个结果是一样的,不多说了。

然后将 U^p 和 C^p 作为BiLSTM的两个输入,输入到一层的BiLSTM中得到 M^p,同理 U^h 和 C^h也是这样得到M^h,只不过在 Premise 这边需要再输入一层GRU,我觉得接下来的东西才算是本文的一个亮点吧。

第四部分 将上层得到两个BiLSTM输出 M^p 和 M^h 输入到 GRU 中,其中初始隐藏层状态 S0 是由 M^h 加权求和得到。   这个j 在论文里没有解释,我猜测应该是第 j个单词,因为上一层的M^h 取得应该是最后一个时刻的输出,同理也是采用maxout 方法取最大的那个方向的值,既然是最后一个时刻,所以 j 不可能是时间步。

GRU的每一个时间步的隐藏状态 S_t 是  这样得到的,其中 x_t 是由上一时刻的隐藏状态 S_{t-1} 和 M^p 做运算得到的,

在每一个时间步对输出结果做一个softmax分类 , 其中 t 是时间步,\theta 是可学到的参数。

最后将所有时间步的 P^r 做一个平均,,在训练过程中,做平均之前会先做一个 stochastic prediction dropout 的操作。

这就是SAN的网络结构了。

总结:

我觉得模型的前面部分纯属是垒模型,深度学习越深越好,后面输入到GRU算是本篇论文的创新吧,将每个时间步都做了计算,算是一步一步地推理出正确结果,所以这个论文也是做自然语言推理的。

参考:

https://zhuanlan.zhihu.com/p/76786318

https://www.jianshu.com/p/3fcdf7333c53?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

发布了25 篇原创文章 · 获赞 1 · 访问量 1437

猜你喜欢

转载自blog.csdn.net/Matrix_cc/article/details/104828419