Attention模型

简介: 1、注意力模型的直观理解我们以前用过这种Seq2Seq的编码解码架构(a Encoder-Decoder architecture)来完成机器翻译的任务。

1、注意力模型的直观理解

我们以前用过这种Seq2Seq的编码解码架构(a Encoder-Decoder architecture)来完成机器翻译的任务。当使用RNN读入一个句子时候,另一个就会输出一个句子。这种模型对于短句子有用,但是长句子却效果不好。如图:


可以看到随着句子长度增长,Bleu Score在下降。因为上面的模型要记住一整个很长的法语句子,然后在Decoder中输出。而人工翻译可以先翻译出句子的部分,再看下一部分,并翻译一部分,就这样一直下去,因为记忆整个句子是很难的。所以,我们引入了注意力模型(the attention model),如图所示:


注意力模型来自于Dimitri, Bahdanau, Camcrun Cho, Yoshe Bengio。(Bahdanau D, Cho K, Bengio Y. Neural Machine Translation by Jointly Learning to Align and Translate[J]. Computer Science, 2014.)。
让我们来举例说明一下。假如我们有一个法语句子:(法语)Jane visite l'Afrique en Septembre。假定我们使用RNN,在这种情况下,我们可以使用一个双向RNN(a bidirectional RNN),为了计算每个输入单词的特征集(set of features),你必须要理解输出\hat{y}^{<1>}\hat{y}^{<3>}一直到\hat{y}^{<5>}的双向RNN。但是我们并不是只翻译一个单词,让我们先去掉上面的Y,就用双向的RNN。我们将使用另一个RNN生成英文翻译。我们用S表示RNN(也就是解码器Decoder)的隐层状态(the hidden state in this RNN)。我们希望在这个模型里第一个生成的单词是Jane。于是等式就是,当你尝试生成第一个词时候,我们应该看输入的法语句子的哪个部分。所以,注意力模型就会计算注意力权重。我们用\alpha^{<1,1>}来表示当你生成第一个词时你应该放多少注意力在输入的第一个词上。然后我们算第二个,\alpha^{<1,2>}表示我们计算第一个词Jane时,我们将会放多少注意力在输入的第二个词上面,后面同理。这些将会告诉我们,我们应该花多少注意力在记号为C的内容上。这是最上面RNN(也就是解码器Decoder)的一个单元,如何尝试生成第一个此。对于RNN的第二步,我们将有一个新的隐藏状态S^{<2>},我们也会用一个新的注意力权值集,我们将用\alpha^{<2,1>}告诉我们生成第二个词visits时,我们将会放多少注意力在输入的第一个词上面,后面同理。最后直到结束。

2、注意力模型(Attention Model)

我们先记住这些符号的意义:a^{<t^{'}>}表示是双向RNN已经计算了的前向和后向的特征值,S^{<t>}表示Decoder的第几个隐层状态,\alpha^{<t,t^{'}>}表示对于第t个输出我们关注第t^{'}个输入(注意力权重集),\hat{y^{<t>}}表示Decoder第几个输出。上面我们看到,注意力模型翻译句子时,只注意到一部分的输入句子,更像人类翻译。如下图所示的注意力模型:

我们假定有一个句子,并使用双向RNN,去计算每个词的特征。这里的这项(上图编号1所示)就是注意力权重,这里的这项(上图编号2)来自于这里(上图编号3)。于是,当你在t处生成输出词,你应该花多少注意力在第t^{'}个输入词上面,这是生成输出的其中一步,其他的类似。
底层是一个双向RNN,需要处理的序列作为它的输入。改该网络中每一个时间步的激活a^{<t^{'}>}中,都包含前向传播和后向传播的激活:
a^{<t^{'}>} = (\overrightarrow a^{<t^{'}>}, \overleftarrow a^{<t^{'}>})
顶层是一个“多对多”结构的RNN,第t步该网络前一个时间步的激活S^{<t-1>}、输出y^{<t-1>}以及底层的BRNN中多个时间步的激活C作为输入。对第t个时间步的输入C有:
C = \sum_{t^{'}}\alpha^{<t,t^{'}>}a^{<t^{'}>}
其中参数\alpha^{<t,t^{'}>}意味着顶层RNN中,第t个时间步输出y^{<t>}中,把多少注意力放在了底层BRNN的第t^{'}个时间步的激活a^{<t^{'}>}上。它总有:
\sum_{t^{'}}\alpha^{<t,t^{'}>} = 1
为了确保参数\alpha^{<t,t^{'}>}满足上式,常用Softmax单元来计算顶层RNN的第t个时间步对底层BRNN的第t^{'}个时间步的激活的注意力:
\alpha^{<t,t^{'}>} = \frac{\exp(e^{<t,t^{'}>})}{\sum_{t^{'} = 1}^{T_x}\exp(e^{<t,t^{'}>})}
其中的e^{<t,t^{'}>}由顶层RNN的激活s^{<t-1>}和底层BRNN的几乎a^{<t^{'}>}一起输入一个隐层中得到的。

在无法获知e^{<t,t^{'}>}s^{<t-1>}a^{<t^{'}>}之间的关系的时候,就用上图所示的神经网络进行学习。

目录
相关文章
|
6月前
|
机器学习/深度学习 自然语言处理 数据处理
论文《Attention is All You Need》
论文《Attention is All You Need》
296 1
|
机器学习/深度学习 自然语言处理 TensorFlow
Attention
Attention 网络,也称为注意力网络,是一种在神经网络中处理输入数据的方法。这种方法使模型能够自动学会关注输入序列中的重要部分,从而提高模型的性能。Attention 网络在自然语言处理(NLP)、计算机视觉和语音识别等领域得到了广泛应用。
138 3
|
17天前
|
机器学习/深度学习 存储 人工智能
白话文讲解大模型| Attention is all you need
本文档旨在详细阐述当前主流的大模型技术架构如Transformer架构。我们将从技术概述、架构介绍到具体模型实现等多个角度进行讲解。通过本文档,我们期望为读者提供一个全面的理解,帮助大家掌握大模型的工作原理,增强与客户沟通的技术基础。本文档适合对大模型感兴趣的人员阅读。
456 18
白话文讲解大模型| Attention is all you need
|
6月前
|
机器学习/深度学习 数据可视化 TensorFlow
[transformer]论文实现:Attention Is All You Need(上)
[transformer]论文实现:Attention Is All You Need(上)
53 2
|
6月前
|
机器学习/深度学习 并行计算 数据可视化
[transformer]论文实现:Attention Is All You Need(下)
[transformer]论文实现:Attention Is All You Need(下)
71 2
|
6月前
|
机器学习/深度学习 自然语言处理 数据处理
Transformer模型中的Attention机制是什么?
Google研究团队为解决机器翻译准确性问题,推出了Transformer模型,核心是Attention机制。Transformer摒弃RNN和CNN,利用Attention处理全局依赖,提高长文本处理效率。模型包含编码器-解码器与自Attention,多头Attention增强信息捕获,位置编码处理顺序信息。虽在翻译质量和速度上有显著提升,但面临泛化能力、长距离依赖处理和计算复杂度等问题,仍有优化空间。
69 0
Transformer模型中的Attention机制是什么?
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
Is attention all you need? 注意力可能并不是完美的!
Is attention all you need? 注意力可能并不是完美的!
114 1
|
机器学习/深度学习 人工智能 自然语言处理
【Deep Learning 8】Self-Attention自注意力神经网络
🍊本文主要介绍了Self-Attention产生的背景以及解析了具体的网络模型。
124 0
|
机器学习/深度学习 算法 语音技术
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型(2)
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型
233 0
|
机器学习/深度学习 自然语言处理 PyTorch
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型(1)
Attention-lvcsr、Residual LSTM…你都掌握了吗?一文总结语音识别必备经典模型
210 0

相关实验场景

更多