[NLP/Attention]关于attention机制在nlp中的应用总结

本文深入探讨了注意力机制在自然语言处理(NLP)中的应用,从传统encoder-decoder模型的局限性出发,介绍了如何通过加入attention解决长序列信息丢失问题。论文一介绍了encoder-decoder模型与attention的结合,论文二提出global和local attention,论文三(ABCNN)展示了注意力在CNN中的应用。最后,论文四提出了仅依赖注意力机制的Transformer模型,取得了优秀的翻译性能并提高了训练速度。
摘要由CSDN通过智能技术生成

[NLP/Attention]关于attention机制在nlp中的应用总结

原文链接: https://blog.csdn.net/qq_41058526/article/details/80578932




attention 总结

参考:注意力机制(Attention Mechanism)在自然语言处理中的应用

Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,如下图。
这里写图片描述
在计算attention时主要分为三步:

  • 第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;
  • 第二步一般是使用一个softmax函数对这些权重进行归一化
  • 最后将权重和相应的键值value进行加权求和得到最后的attention
  • 目前在NLP研究中,key和value常常都是同一个,即key=value。
  • 这里写图片描述

  • Attention在NLP中其实我觉得可以看成是一种自动加权,它可以把两个你想要联系起来的不同模块,通过加权的形式进行联系。目前主流的计算公式有以下几种:

    这里写图片描述

    通过设计一个函数将目标模块mt和源模块ms联系起来,然后通过一个soft函数将其归一化得到概率分布。

  • 目前Attention在NLP中已经有广泛的应用。它有一个很大的优点就是可以可视化attention矩阵来告诉大家神经网络在进行任务时关注了哪些部分。不过在NLP中的attention机制和人类的attention机制还是有所区别,它基本还是需要计算所有要处理的对象,并额外用一个矩阵去存储其权重,其实增加了开销。而不是像人类一样可以忽略不想关注的部分,只去处理关注的部分。


一、传统encoder-decoder模型

这里写图片描述
这里写图片描述

encoder-decoder模型

也就是编码-解码模型。所谓编码,就是将输入序列转化成一个固定长度的向量;解码,就是将之前生成的固定向量再转化成输出序列。
具体实现的时候,编码器和解码器都不是固定的,可选的有CNN/RNN/BiRNN/GRU/LSTM等等,你可以自由组合。比如说,你在编码时使用BiRNN,解码时使用RNN,或者在编码时使用RNN,解码时使用LSTM等等。

1.1 encoder
  • 对于输入序列x=(x1,...,xTx)x=(x1,...,xTx),其会将输入序列如图所示编码成一个context vector c ,encoder一般使用RNN,在RNN中,当前时间的隐藏状态是由上一时间的状态和当前时间输入决定的,也就是
    ht=f(xt,ht1)ht=f(xt,ht−1)
  • 获得了各个时间段的隐藏层以后,再将隐藏层的信息汇总,生成最后的语义向量 c,相当于把整个句子的信息都包含了,可以看成整个句子的一个语义表示。
    c=q(ht,...,hTx)c=q(ht,...,hTx)

    其中的f和q是非线性的函数
    例如,在论文中有使用
    q(ht,...,hTx)=hTxq(ht,...,hTx)=hTx

    来简化计算
1.2 decoder

这里写图片描述



一般其作用为在给定context vector c和所有已预测的词{ y1,...,yt1}{y1,...,yt−1}去预测ytyt,故t时刻翻译的结果y为以下的联合概率分布

p(y)=t=1Tp(yt|{ y1,...,yt},c)p(y)=∏t=1Tp(yt|{y1,...,yt},c)

  • 在RNN中(如上图所示),t时刻隐藏状态stst为:

    st=f(st1,yt1,c)st=f(st−1,yt−1,c)

  • 而联合条件分布为:

    p(y)=t=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值