ABCNN

昨天和师兄聊了一下对attention的理解
其实相似性矩阵本身并不是模型的参数,是参数的只是后面的dense layers;

看了好久才弄懂ABCNN的卷积过程。
其实卷积也还是就是Yoon Kim的方法。
协助理解的时候,这篇讲的还是很好的:

https://blog.csdn.net/liuchonge/article/details/69587681

后面这里提了一下,说把中间pooling层的输出也合并到最后的输出里,可以增强performance,但是实测效果却一般。感觉原因还是:
基于Yoon Kim的方法的话,第二层卷积的输入本身就是各个kernel输出的结果了,再卷积就没有提取局部特征的解释性了。

以下是ABCNN_1的过程:

输入的时候是两个句子

a=[a¯1,a¯2,...,a¯m]b=[b¯1,b¯2,...,b¯n] a = [ a ¯ 1 , a ¯ 2 , . . . , a ¯ m ] b = [ b ¯ 1 , b ¯ 2 , . . . , b ¯ n ]

首先计算一个相似度矩阵

Ai,j=matchscore(a¯i,b¯j) A i , j = m a t c h s c o r e ( a ¯ i , b ¯ j )

a¯i,b¯j a ¯ i , b ¯ j 表示对应的词向量
matchscore m a t c h s c o r e 则是 1/(1+|xy|) 1 / ( 1 + | x − y | ) , 其中 |xy| | x − y | 是欧氏距离

那么其实现在

aR dmbR dnAR mn a ∈ R   d ∗ m b ∈ R   d ∗ n A ∈ R   m ∗ n

接下来,我们可以得到

Fa=Wa˙ATFb=Wb˙A F a = W a ˙ A T F b = W b ˙ A

其中:
WaR dn; FaR dmWbR dm; FbR dn W a ∈ R   d ∗ n ;   F a ∈ R   d ∗ m W b ∈ R   d ∗ m ;   F b ∈ R   d ∗ n

然后将 a,Fa a , F a 看成句子的两个channels输入到CNN中,做卷积
channel的作用其实可以看这里:
https://blog.csdn.net/sscc_learning/article/details/79814146
这样其实就是卷积核的维度也要增加一维。

你可能感兴趣的:(人工智能算法,NLP)