深度学习的seq2seq模型

从rnn结构说起

根据输出和输入序列不同数量rnn可以有多种不同的结构,不同结构自然就有不同的引用场合。如下图,

  • one to one 结构,仅仅只是简单的给一个输入得到一个输出,此处并未体现序列的特征,例如图像分类场景。
  • one to many 结构,给一个输入得到一系列输出,这种结构可用于生产图片描述的场景。
  • many to one 结构,给一系列输入得到一个输出,这种结构可用于文本情感分析,对一些列的文本输入进行分类,看是消极还是积极情感。
  • many to many 结构,给一些列输入得到一系列输出,这种结构可用于翻译或聊天对话场景,对输入的文本转换成另外一些列文本。
  • 同步 many to many 结构,它是经典的rnn结构,前一输入的状态会带到下一个状态中,而且每个输入都会对应一个输出,我们最熟悉的就是用于字符预测了,同样也可以用于视频分类,对视频的帧打标签。

这里写图片描述

seq2seq

在 many to many 的两种模型中,上图可以看到第四和第五种是有差异的,经典的rnn结构的输入和输出序列必须要是等长,它的应用场景也比较有限。而第四种它可以是输入和输出序列不等长,这种模型便是seq2seq模型,即Sequence to Sequence。它实现了从一个序列到另外一个序列的转换,比如google曾用seq2seq模型加attention模型来实现了翻译功能,类似的还可以实现聊天机器人对话模型。经典的rnn模型固定了输入序列和输出序列的大小,而seq2seq模型则突破了该限制。

这里写图片描述

这里写图片描述

其实对于seq2seq的decoder,它在训练阶段和预测阶段对rnn的输出的处理可能是不一样的,比如在训练阶段可能对rnn的输出不处理,直接用target的序列作为下时刻的输入,如上图一。而预测阶段会将rnn的输出当成是下一时刻的输入,因为此时已经没有target序列可以作为输入了,如上图二。

encoder-decoder结构

seq2seq属于encoder-decoder结构的一种,这里看看常见的encoder-decoder结构,基本思想就是利用两个RNN,一个RNN作为encoder,另一个RNN作为decoder。encoder负责将输入序列压缩成指定长度的向量,这个向量就可以看成是这个序列的语义,这个过程称为编码,如下图,获取语义向量最简单的方式就是直接将最后一个输入的隐状态作为语义向量C。也可以对最后一个隐含状态做一个变换得到语义向量,还可以将输入序列的所有隐含状态做一个变换得到语义变量。

这里写图片描述

而decoder则负责根据语义向量生成指定的序列,这个过程也称为解码,如下图,最简单的方式是将encoder得到的语义变量作为初始状态输入到decoder的rnn中,得到输出序列。可以看到上一时刻的输出会作为当前时刻的输入,而且其中语义向量C只作为初始状态参与运算,后面的运算都与语义向量C无关。

这里写图片描述

decoder处理方式还有另外一种,就是语义向量C参与了序列所有时刻的运算,如下图,上一时刻的输出仍然作为当前时刻的输入,但语义向量C会参与所有时刻的运算。

这里写图片描述

encoder-decoder模型对输入和输出序列的长度没有要求,应用场景也更加广泛。

如何训练

前面有介绍了encoder-decoder模型的简单模型,但这里以下图稍微复杂一点的模型说明训练的思路,不同的encoder-decoder模型结构有差异,但训练的核心思想都大同小异。

这里写图片描述

我们知道RNN是可以学习概率分布然后进行预测的,比如我们输入t个时刻的数据后预测t+1时刻的数据,最经典的就是字符预测的例子,可在前面的《循环神经网络》《TensorFlow构建循环神经网络》了解到更加详细的说明。为了得到概率分布一般会在RNN的输出层使用softmax激活函数,就可以得到每个分类的概率。

对于RNN,对于某个序列,对于时刻t,它的输出概率为$p(x_t|x1,...,x{t-1})$,则softmax层每个神经元的计算如下:

其中$h_t$是隐含状态,它与上一时刻的状态及当前输入有关,即$ht = f(h{t-1},x_t)$。

那么整个序列的概率就为

而对于encoder-decoder模型,设有输入序列


,输出序列


,输入序列和输出序列的长度可能不同。那么其实就是要根据输入序列去得到输出序列的可能,于是有下面的条件概率,


发生的情况下

发生的概率等于


连乘。其中v表示

对应的隐含状态向量,它其实可以等同表示输入序列。

此时,


,decoder的隐含状态与上一时刻状态、上一时刻输出和状态向量v都有关,这里不同于RNN,RNN是与当前时刻输入相关,而decoder是将上一时刻的输出输入到RNN中。于是decoder的某一时刻的概率分布可用下式表示,

所以对于训练样本,我们要做的就是在整个训练样本下,所有样本的


概率之和最大,对应的对数似然条件概率函数为,


,使之最大化,$\theta$则是待确定的模型参数。对于rnn、lstm和gru的结构可以看这几篇文章 《循环神经网络》 《LSTM神经网络》 《GRU神经网络》

========广告时间========

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以到 item.jd.com/12185360.ht… 进行预定。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:

这里写图片描述
Seq2seq模型详解(attention mechanism+evaluation methods +Curriculum +Machine Translation) 引言 Seq2seq Framework attention mechanism BLEU ROUGE evaluation methods training mechanism Machine Translation 阅读详情

相关推荐

动手学深度学习——seq2seq模型

李沐大神 动手学深度学习 笔记

2301_78829965的博客 1689

Seq2Seq 模型详解

在NLP任务中,我们通常会遇到不定长的语言序列,比如机器翻译任务中,输入可能是一段不定长的英文文本,输出可能是不定长的中文或者法语序列。当遇到输入和输出都是不定长的序列时,可以使用编码器-解码器(encoder-decoder)模型或者seq2seq模型。其基本思想是编码器用来分析输入序列,解码器用来生成输出序列。 首先,来简单介绍下RNN(循环神经网络)结构: 1. RNN 结构 RNN结构 RNN中,每个单元接受两个输入,一个是当前时间步输入的信息 XtX_tXt​,另一个是上一个单元的隐藏层状态 H

Angus的学习笔记 2万+

基于深度学习的合成生物学 - 使用Seq2Seq模型在GenBank数据集上进行DNA序列预测任务

近年来,深度学习在合成生物学领域中的应用越来越受到关注。在这个领域中,预测DNA序列是一个重要的任务。在本文中,我们将介绍如何使用Seq2Seq模型在GenBank数据集上进行DNA序列预测任务。

斌擎科技 806

序列到序列(Seq2Seq模型概述

Seq2Seq模型,全称Sequence to Sequence模型,就如字面意思,输入一个序列,输出另一个序列。这种结构最重要的地方在于输入序列和输出序列的长度是可变的。

weixin_40280870的博客 5355

**深度学习序列到序列模型实践:DL-Seq2Seq**

深度学习序列到序列模型实践:DL-Seq2Seq 1. 项目介绍 DL-Seq2Seq 是一个使用PyTorch实现的深度学习序列到序列学习项目,旨在重现各种在学术界引起广泛关注的研究论文。此项目覆盖了从素描生成、手写合成到机器翻译等多种应用场景,其中融合了先进的技术如变分自编码器(VAE), 条件VAE, 混合密度网络(MDN), 和定时抽样等。它不仅提供了详细的模型实现,还包含了预训练模型,使...

gitblog_00034的博客 369

seq2seq 深度学习模型实战指南

seq2seq 深度学习模型实战指南 项目介绍 Seq2Seq, 短语于“Sequence to Sequence Learning”,是由Yanwii在GitHub上开源的一个实现序列到序列学习的深度学习框架。该框架主要基于TensorFlow,设计用于处理如机器翻译、文本摘要等任务,其中源序列和目标序列长度可以不同。它通过编码器-解码器架构来捕捉输入序列的复杂模式,并产生相应的输出序列,是自...

gitblog_00768的博客 956

seq2seq模型_深度学习第46讲:seq2seq模型

作者:louwill 个人公众号:机器学习实验室,致力于数据科学、机器学习和深度学习的应用与研究。有着多年的R语言和Python编程经验配套视频教程:Python机器学习全流程项目实战精https://edu.hellobi.com/course/284涵盖需求分析->数据采集->数据清洗与预处理->数据分析与可视化->特征工程->机器学习建模->模型调优-&g...

weixin_39969028的博客 289

使用Seq2Seq构建深度学习序列模型

在探索深度学习的广阔天地时,您可能已经遇到了一种称为“序列到序列”(Seq2Seq)的学习方法,它在机器翻译、聊天机器人和自然语言处理等领域发挥着重要作用。现在,我们很高兴向您推荐一个基于Keras的开源库——Seq2Seq,它为您提供了构建和训练Seq2Seq模型的强大工具。 ## 项目技术分析 Seq2Seq库的核心是其模块化和可复用的设计。它包括了编码器和解码器层,这两者是Seq2Seq...

gitblog_00093的博客 408

R语言深度学习:序列到序列Seq2Seq模型

序列到序列(Seq2Seq模型是一种端到端的深度学习模型,用于将一个序列映射到另一个序列。Seq2Seq模型的核心是一个编码器-解码器结构,其中编码器将输入序列编码为一个固定长度的向量,解码器将这个向量解码为输出序列。在自然语言处理领域,Seq2Seq模型可以用于机器翻译、对话生成等任务。在这些任务中,输入序列和输出序列的长度通常是不固定的。在这篇博客中,我们详细介绍了如何使用R语言和Keras实现序列到序列(Seq2Seq模型。我们从数据准备开始,然后构建和训练模型,最后使用模型进行预测。

斌擎科技 296

深度学习教程 | Seq2Seq序列模型和注意力机制

本系列为吴恩达老师《深度学习专项课程(Deep Learning Specialization)》学习与总结整理所得,对应的课程视频可以在查看。

weixin_42907150的博客 1652

[DL]Seq2Seq模型解读

Seq2Seq是一种重要的RNN模型,也称为 Encoder-Decoder 模型,可以理解为一种N×M的模型

sinat_41506268的博客 192

Seq2Seq模型

seq2seq(sequence to sequence)模型是NLP中的一个经典模型。最初由Google开发,并用于机器翻译。它基于RNN网络模型构建,能够支持且不限于的应用包括:语言翻译,人机对话,内容生成等。 seq2seq模型结构和特点 seq2seq指的是从序列A到序列B的一种转换。主要是一个由编码器(encoder)和一个解码器(decoder)组成的网络。编码器将输入项转换为包含其特征的相应隐藏向量。解码器反转该过程,将向量转换为输出项,解码器每次都会使用前...

IT狂人 6731

Seq2Seq(Sequence-to-Sequence)模型详解

Seq2Seq模型通过编码器-解码器结构,实现了序列到序列的映射。注意力机制显著提升了模型对长序列的处理能力。该模型在机器翻译、文本摘要等任务中表现出色,是自然语言处理领域的核心模型之一。

2401_86968005的博客 2786

seq2seq(序列到序列)模型

序列到序列

Michale_L的博客 4261

模型之-Seq2Seq介绍

Seq2Seq(Sequence to Sequence)模型在文本摘要任务中的应用与其在机器翻译中的应用有很多相似之处。文本摘要的目标是从一个长文本中生成一个简短的、语义上等价的摘要。与机器翻译类似,Seq2Seq模型通过编码器和解码器的组合来实现这个任务。编码器(Encoder)编码器将输入的长文本编码成一个固定长度的上下文向量(Context Vector)。通常使用递归神经网络(RNN)、长短期记忆网络(LSTM)或门控循环单元(GRU)来处理输入文本。

wt334502157的博客 2813
上一篇: 小微企业要从“互联网+”中读懂什么?
下一篇: WF4.0 Beta2:Switch<T>活动中使用复杂类型
weixin_33709364
博客等级 码龄11年 5240粉丝 1393原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值