paper解读:Bi-Directional Attention Flow For Machine Comprehension

本文介绍了一种基于双向注意力机制的阅读理解模型,该模型在ICLR2017发表,已被广泛引用。通过结合query和context的多级特征,模型能够更准确地理解和定位答案。论文详细讲解了模型的六大部分,包括字符嵌入、词嵌入、上下文嵌入、注意力流、建模和输出层。双向注意力流层通过计算query和context之间的相似度矩阵,实现query到context和context到query的注意力,从而捕捉关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于双向注意力的阅读理解(ICLR2017,引用800多,入门阅读理解可以看这篇)
paper: https://arxiv.org/abs/1611.01603
code: https://github.com/allenai/bi-att-flow

模型框架

模型主要框架如下图所示:
在这里插入图片描述

包括六个部分:
Character Embedding Layer:使用character-level CNNs将词转换成向量;
Word Embedding Layer:使用预训练的word embedding模型将词转换成向量,如glove等;
Contextual Embedding Layer:利用周围单词的上下文提示来完善单词的嵌入,如Bi-LSTM。同时应用于query和context;
Attention Flow Layer:将query向量和context向量耦合,包括query2context attention和context2query attention;
Modeling Layer:使用RNN模型学习上下文表示;
Output Layer:得到query的答案。
值得注意的是,前三步在不同粒度下计算query和context的特征,这有点像计算机视觉领域的CNN中的多阶段特征计算的过程。

双向注意力流

下面具体讲一下Attention Flow Layer.
在这一步中,作者计算两个方向的attention:从context到query以及query到context。这两个方向的attention都基于相同的相似度矩阵S∈RT×JS\in R^{T\times J}SRT×J,其中H表示context embedding,U表示query embedding。St,jS_{t,j}St,j表示context的第t个时刻和query的第j个时刻的相似度,具体如下:
St,j=α(H:t,U:j)∈RS_{t,j}=\alpha(H_{:t},U_{:j})\in RSt,j=α(H:t,U:j)R
其中,α\alphaα是可训练标量,H∈R2d×T,U∈R2d×JH\in R^{2d\times T}, U\in R^{2d\times J}HR2d×T,UR2d×JH:tH_{:t}H:t表示H的第t列,即第t个时刻的向量,同样,U:jU_{:j}U:j表示U的第j列,即第j个时刻的向量.可选的,α(h,u)=wST[h;u;h∘u]\alpha(h,u)=w^T_S[h;u;h\circ u]α(h,u)=wST[h;u;hu]wST∈R6dw^T_S\in R^{6d}wSTR6d是一个可训练权重向量。

context-to-query attention

context-to-query(C2Q)目的是得到context的每个词中,与query各个词的相关性。
at∈RJa_t\in R^JatRJ表示第t个context word与query各个词的attention权重,其中∑jatj=1\sum_ja_{tj}=1jatj=1(这里应该是所有j的和为1,作者写的是all t,应该是写错了)。at=softmax(St:)∈RJa_t=softmax(S_{t:})\in R^Jat=softmax(St:)RJ,因此U~:t=∑jatjU:j\widetilde U_{:t}=\sum_ja_{tj}U_{:j}U:t=jatjU:j

query-to-context attention

query-to-context attention(Q2C)目的是得到query的每个词中,与其最相似的context word,这是回答query的一个重要参考。
首先,使用b=softmax(maxcol(S))∈RTb=softmax(max_{col}(S))\in R^Tb=softmax(maxcol(S))RT获得context words的attention权重。其次,h~=∑tbtH:t∈R2d\widetilde h=\sum_tb_tH_{:t}\in R^{2d}h=tbtH:tR2d.此向量表示上下文中相对于query而言最重要的单词的加权和. h~\widetilde hh在列维度上复制T次得到H~∈R2d×T\widetilde H\in R^{2d\times T}HR2d×T.
最后,对上述向量进行拼接得到G:t=β(H:t,U~:t,H~:t)∈RdGG_{:t}=\beta (H_{:t},\widetilde U_{:t},\widetilde H_{:t})\in R^{d_G}G:t=β(H:t,U:t,H:t)RdG,特别地,可令β(h,u~,h~)=[h;u~,h∘u~;h∘h~]\beta(h,\widetilde u,\widetilde h)=[h;\widetilde u,h\circ \widetilde u;h\circ \widetilde h]β(h,u,h)=[h;u,hu;hh]

Modeling Layer

将上一步的G作为输入,使用bi-LSTM得到输出M∈R2d×TM\in R^{2d\times T}MR2d×T

Output Layer

QA任务需要模型从paragraph中找到一个子序列来作为query的答案。因此,output layer的目的是预测开始索引和结束索引。
p1=softmax(wp1T[G;M])p^1=softmax(w^T_{p^1}[G;M])p1=softmax(wp1T[G;M])
p2=softmax(wp2T[G;M])p^2=softmax(w^T_{p^2}[G;M])p2=softmax(wp2T[G;M])
training loss使用两个索引的交叉熵损失的和,即
L(θ)=−1N∑iNlog(pyi11)+log(pyi22)L(\theta)=-\frac{1}{N}\sum^N_ilog(p^1_{y^1_i})+log(p^2_{y^2_i})L(θ)=N1iNlog(pyi11)+log(pyi22)
测试阶段:当pk1pl2p^1_kp^2_lpk1pl2取得最大值时,使用answer span(k,l)作为query的答案,其中k≤lk\leq lkl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值