本文只给出了Context2Query和Query2Context部分的理解
两部分只是对相似性矩阵
S
\bold{S}
S
∈
\in
∈
R
T
∗
J
\mathbb{R}^{T*J}
RT∗J 进行进一步处理, 我觉得有书写错误,如果看Figure 1可知应该修改为
S
\bold{S}
S
∈
\in
∈
R
J
∗
T
\mathbb{R}^{J*T}
RJ∗T。
Context-to-Query Attention:
这一部分主要针对该绿色小图而言,context中某个词与query中哪个词相关,形象点的表示如图:
Query-to-Context Attention:
query中某个词与Context中哪个词最相关
但其实我觉得这个做法有点牵强,对与Context-to-query中对列求softmax相比,该部分的操作是对
h
t
h_t
ht列进行Max操作后,也就是针对question 中的{
u
1
u_1
u1,
u
2
u_2
u2, …,
u
J
u_J
uJ}中保留与
h
t
h_t
ht最相关的以
u
j
u_j
uj, 针对每一列都如此操作后,得到一个维度为T的向量,对此向量进行softmax, 这怎么就是Query2Context了呢?不理解不理解,有理解的快来帮帮我
如果按照我对Query2Context的理解,应该是针对 u j u_j uj对{ h 1 h_1 h1, h 2 h_2 h2, …, h T h_T hT},也即是每一行都进行softmax, 这才是真正的Query2Context, 才是题目里所说的双向attention流呼应,不过这样做的引入了新的维度J, 在计算上会很麻烦。请赐给我聪明才智让我快速懂了吧?果然读书少就是不能理解这么高深的论文呀
参考文献:
https://zhuanlan.zhihu.com/p/53626872
https://blog.csdn.net/chazhongxinbitc/article/details/78825704