做者|Renu Khandelwal
编译|VK
来源|Towards Data Science算法
在本文中,你将了解:网络
让咱们考虑两个场景,场景一,你正在阅读与当前新闻相关的文章。第二个场景是你正在阅读准备考试。两种状况下的注意力水平是相同仍是不一样?架构
与新闻文章相比,你在准备考试时会至关注意阅读。在准备测试的时候,你会更加关注关键词来帮助你记住一个简单或复杂的概念。这也意味着咱们要专一于某一特定领域的任何深度学习任务。机器学习
序列到序列(Seq2Seq)模型使用编码器-解码器架构。函数
seq2seq的几个场景学习
Seq2Seq模型将源序列映射到目标序列。在神经机器翻译的状况下,源序列能够是英语,目标序列能够是印地语。测试
咱们将英语源语句传递给编码器;编码器将源序列的完整信息编码为单个实值向量,也称为上下文向量。而后,这个上下文向量被传递到解码器上,以生成目标语言(如印地语)中的输出序列。上下文向量负责将整个输入序列汇总为单个向量。编码
若是输入的句子很长,那么编码器中的一个向量能够保存全部要提供给解码器的相关信息吗?spa
在预测目标词时,是否能够将注意力集中在句子中的几个相关词上,而不是集中在包含整个句子信息的单个向量上?.net
注意力机制有助于解决问题。
注意力机制的基本思想是避免试图为每一个句子学习单一的向量表示,而是根据注意力权值来关注输入序列的特定输入向量。
在每一解码步骤中,解码器将被告知须要使用一组注意力权重对每一个输入单词给予多少“注意”。这些注意力权重为解码器翻译提供上下文信息
Bahdanau等人。提出了一种学习结合对齐和翻译的注意力机制,它会执行编码器状态和解码器状态的线性组合。
让咱们学习Bahdanau提出的注意力机制
带有注意力机制的Seq2Seq模型由编码器、解码器和注意力层组成。
注意力层包括
对齐分数映射位置“j”周围的输入与位置“i”处的输出匹配的程度。分数是基于前一个解码器的隐状态\(s_{(i-1)}\),就在预测目标单词和输入句子的隐状态hⱼ以前
解码器决定它须要关注源语句的哪一个部分,而不是让编码器将源语句的全部信息编码成一个固定长度的向量。
对齐向量与源序列具备相同长度并在解码器的每一个时间步被计算
咱们将softmax激活函数应用于对齐分数,以得到注意力权重。
Softmax激活函数将获得和等于1的几率,这将有助于表示每一个输入序列的影响权重。输入序列的注意力权重越高,对目标词预测的影响越大。
在咱们的例子中,咱们看到一个更高的输入词的注意力权重值能够快速地预测目标词,तेज़ी
上下文向量用于计算解码器的最终输出。上下文向量\(c_i\)是注意力权重和编码器隐状态(\(h_1\),\(h_2\),…,\(h_{tx}\))的加权和,它映射到输入语句。
为了预测目标词,解码器使用
Luong的注意力模型也被称为乘法注意力。它经过简单的矩阵乘法将编码状态和解码状态降为注意力得分。简单的矩阵乘法使它更快,更节省空间。
根据注意力在源序列中的位置,Luong提出了两种类型的注意力机制
全局和局部注意模型的不一样之处在于上下文向量是如何导出的
在讨论全局和局部注意以前,让咱们先了解一下在给定的时间t内,Luong的注意力机制所使用的约定
当源序列是一个大段落或一个大文档时会发生什么?
因为全局注意模型考虑了源序列中的全部单词来预测目标单词,所以在计算上变得很是昂贵,而且很难翻译出较长的句子
利用局部注意力能够解决全局注意模型的缺点
Bahdanau等人,在双向编码器中使用前向和后向隐状态的串联,在其非堆叠单向解码器中使用前一个目标的隐状态
Loung等人,注意力使用编码器和解码器的顶层LSTM层的隐状态
Luong注意力机制使用当前解码器的隐状态来计算对齐向量,而Bahdanau使用上一个时间步的输出
Bahdanau只使用concat分数对齐模型,而Luong使用dot、general和concat对齐分数模型
有了注意力机制的知识,你如今能够构建强大的深层NLP算法。
原文连接:https://towardsdatascience.com/sequence-2-sequence-model-with-attention-mechanism-9e9ca2a613a
欢迎关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官方文档:
http://sklearn123.com/
欢迎关注磐创博客资源汇总站:
http://docs.panchuang.net/