Seq2Seq与Attention

2024-06-10 16:58
文章标签 attention seq2seq

本文主要是介绍Seq2Seq与Attention,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、seq2seq

对于序列数据常用的深度学习结构是RNN,但是普通RNN的结构存在缺陷,比如梯度消失,输入序列与输出序列要求等长等问题。这在许多情况下,比如翻译、生成总结等,RNN没有很好的效果。为了解决RNN梯度消失问题,提出了lstn结构,但是仍没有解决输入序列与输出序列要求等长的问题。
Sequence-to-sequence(seq2seq)解除了输入和输出序列等长和长度固定的问题。一个seq2seq最简单的结构如下:
在这里插入图片描述
一个seq2seq模型包括三部分:Encoder,Context,Decoder。
Encoder负责将输入序列压缩成指定长度的向量,这个向量就是Context,可以看成是这个序列的语义,这个过程称为编码。
Decoder负责将Context解码,生成目标语句。
可以把Encoder和Decoder分别看成是RNN,在Encoder中根据输入数据生成一个语义编码C,C的获取方式有很多种,最简单的就是把Encoder中最后一个隐藏层赋值给C,也可以对最后一个隐藏状态做一个变换得到C,还可以对所有的隐藏状态做变换得到C。
拿到C之后,就可以用另一个RNN进行解码,这部分RNN被称为Decoder,具体做法就是将C当做之前的初始状态h0输入到Decoder中,C还有一种做法是将C当做每一步的输入。
对上面结构进行一定的细化和优化:1.Encoder和Decoder都采用RNN结构,2.将C当单做每一个Decoder的输入;3.将Decoder在t-1时刻的输出当做t时刻的输入,于是seq2seq可以变为如下结构:
在这里插入图片描述
下面是利用seq2seq进行翻译的例子:
在这里插入图片描述
seq2seq解决RNN出现的问题,但是仍然存在问题。由于seq2seq的Decoder的输入是Encoder产生的Context,这个Context是不变的,这意味着原句子中任意单词对生成某个目标单词来说影响力都是相同的,这使得当输入序列较长的时候模型效果不佳。这就是模型没有体现出注意力的表现。
在上边那个例子中在生成“machine”时,“机”,“器”,“学”,""习"的贡献是相同的,很明显,这是不太合理,显然,“机”,“器”,对于翻译成"machine"更为重要。所以我们希望在模型翻译"machine"的时候,“机”,"器"两个字的贡献(权重)更大,当在翻译成"learning"时,“学”,"习"两个字贡献(权重)更大。

二、Attention

The attention model用来帮助解决机器翻译在句子过长时效果不佳的问题。
这种新的构架替输入句的每个文字都创造一个context vector,而非仅仅替输入句创造一个从最终的hidden state得来的context vector,举例来说,如果一个输入句有N个文字,就会产生N个context vector,好处是,每个context vector能够被更有效的译码。
加入Attention机制的模型架构如下图:
在这里插入图片描述
其中:
在这里插入图片描述
h j h_j hj代表了Encoder中第 j j j个隐藏状态。 a t j a_{tj} atj h j h_j hj的权重,具体计算方式如下:
在这里插入图片描述
h t h_t ht代表了Encoder中第 t t t个隐藏状态, h s ‾ \overline{h_s} hs代表了Decoder中第 s s s个隐藏状态。 a t ( s ) a_t(s) at(s)具体可以解释为 h t h_t ht h s ‾ \overline{h_s} hs的关联性大小。对于函数 s c o r e ( h t , h s ‾ ) score(h_t,\overline{h_s}) score(ht,hs)的计算,常用的有如下几种方式:
在这里插入图片描述
对于上边用seq2seq进行翻译的例子,加入Attention后。模型可表示如下:
在这里插入图片描述
在这里插入图片描述

参考文献:
Seq2seq模型(一)——attention机制
从Seq2seq到Attention模型到Self Attention

这篇关于Seq2Seq与Attention的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1048739

相关文章

什么是 Flash Attention

Flash Attention 是 由 Tri Dao 和 Dan Fu 等人在2022年的论文 FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness 中 提出的, 论文可以从 https://arxiv.org/abs/2205.14135 页面下载,点击 View PDF 就可以下载。 下面我

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention

时序预测|变分模态分解-双向时域卷积-双向门控单元-注意力机制多变量时间序列预测VMD-BiTCN-BiGRU-Attention 文章目录 一、基本原理1. 变分模态分解(VMD)2. 双向时域卷积(BiTCN)3. 双向门控单元(BiGRU)4. 注意力机制(Attention)总结流程 二、实验结果三、核心代码四、代码获取五、总结 时序预测|变分模态分解-双向时域卷积

阅读笔记--Guiding Attention in End-to-End Driving Models

作者:Diego Porres1, Yi Xiao1, Gabriel Villalonga1, Alexandre Levy1, Antonio M. L ́ opez1,2 出版时间:arXiv:2405.00242v1 [cs.CV] 30 Apr 2024 这篇论文研究了如何引导基于视觉的端到端自动驾驶模型的注意力,以提高它们的驾驶质量和获得更直观的激活图。 摘 要   介绍

基于 BiLSTM+Attention 实现降雨预测多变量时序分类——明日是否降雨

前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记忆、自然语言处理、深度强化学习、大型语言模型和迁移学习。 降雨预测作为气象学和水文学领域的重要研究课题,‌对于农业、‌城市规划、

Show,Attend and Tell: Neural Image Caption Generation with Visual Attention

简单的翻译阅读了一下 Abstract 受机器翻译和对象检测领域最新工作的启发,我们引入了一种基于注意力的模型,该模型可以自动学习描述图像的内容。我们描述了如何使用标准的反向传播技术,以确定性的方式训练模型,并通过最大化变分下界随机地训练模型。我们还通过可视化展示了模型如何能够自动学习将注视固定在显着对象上,同时在输出序列中生成相应的单词。我们通过三个基准数据集(Flickr9k,Flickr

深入理解推荐系统:推荐系统中的attention机制

什么是attention机制、在推荐模型中的应用(会介绍相关模型,AFM/DIN/DIEN/DST)和参考文献  什么是attention机制  Attention函数的本质可以被描述为一个查询(query)到一系列(键key-值value)对的映射,在计算attention时主要分为三步 第一步是将query和每个key进行相似度计算得到权重,常用的相似度函数有点积,拼接,感知机等;

注意力机制(Attention mechanism)(中篇)

模型的输入是一组向量,它可以是文字,可以是语音,可以是图。而输出有三种可能性, 第一种可能性是每一个向量都有一个对应的标签。如图1所示,当模型看到输入是4个向 量的时候,它就要输出4个标签。如果是回归问题,每个标签是一个数值。如果是分类问题, 每个标签是一个类别。但是在类型1的问题里面,输入跟输出的长度是一样的。模型不需要 去烦恼要输出多少的标签,输出多少的标量。反正输入是4个向量,输出就是4个标

深度学习100问50:seq2seq的原理是什么

嘿,朋友!让我用超有趣的方式给你讲讲 seq2seq 的原理吧!   想象一下,seq2seq 就像是一个神奇的翻译官团队。这个团队有两个重要成员:编码器和解码器。   一、编码器——信息收集小能手   把输入的序列(比如一段话)想象成一本神秘的魔法书。编码器就像是一个勤奋的魔法师,他一页一页地翻阅这本魔法书。每翻一页,他就会根据书上的内容更新自己的魔法状态。等他把整本书都翻完了,他就把这本书里

NLP-生成模型-2014:Seq2Seq【缺点:①解码器无法对齐编码器(Attention机制);②编码器端信息过使用或欠使用(Coverage机制);③解码器无法解决OOV(Pointer机制)】

《原始论文:Sequence to Sequence Learning with Neural Networks》 Seq2Seq模型是将一个序列信号,通过“编码&解码”生成一个新的序列信号,通常用于机器翻译、语音识别、自动对话等任务。 Seq2Seq(多层LSTM-多层LSTM)+Attention架构是Transformer提出之前最好的序列生成模型。 我们之前遇到的较为熟悉的序列问题,