Text Understanding with the Attention Sum Reader Network

关键词

Bi-GRU, Bi-LSTM, attention sum

来源

arXiv 2016.03.04 (published at ACL 2016)

问题

使用带attention的深度模型解决完型填空问题

技术细节

模型比attentive reader简单,分以下几步:

  1. 使用双向GRU/LSTM单元计算docment每个词的拼接词向量doc_endcoer
  2. 使用双向GRU/LSTM单元计算query正向尾词和反向首词的拼接词向量query_endcoer
  3. 计算doc_endcoerquery_endcoer的乘积,获得attention_res,并softmax(以保证值为正)
  4. attention_res中备选词的attention分别累和(论文的关键所在,成为之后完型填空的深度模型的必备结构
  5. 计算交叉熵并更新梯度
    如图:
    这里写图片描述

模型实现关键点

  1. 由于document长,大约600+/700+,有极个别更长的,这就导致之后训练时document的gradients很大,占用很多内存,笔者的11G显存经常报不够用。所以document长度700内就够了,batch_size设32基本就到极限了
  2. 计算准确率时,要计算本epoch内累积准确,而不能以batch为单位,否则会出现准确不断跳动的情况,让人以为训练有错
  3. 第5步计算交叉熵时,不能再计算第二次softmax,要计算normalize;即假设第4步输出为 outputs o u t p u t s ,那么
    ypredict=outputs/(outputs) y p r e d i c t = o u t p u t s / ∑ ( o u t p u t s )
    crossEntropy=(ytf.log(ypredict)) c r o s s E n t r o p y = − ∑ ( y ∗ t f . l o g ( y p r e d i c t ) )

    因为第3步计算attention_res已经是softmax过的,其内所有值都属于 [0,1) [ 0 , 1 ) ,document长度为700左右,每个值大约都是千分之几到百分之几,这些数再softmax之后,基本成了平均数,比如 e0.0051.004 e 0.005 ≈ 1.004

实现代码

Theano版本
tensorflow版本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值