seq2seq模型

一、什么是seq2seq模型

seq2seq全称为:sequence to sequence ,是2014年被提出来的一种Encoder-Decoder结构。其中Encoder是一个RNN结构(LSTM、GRU、RNN等)。

主要思想是输入一个序列,通过encoder编码成一个语义向量c(context),然后decoder成输出序列。这个结构重要的地方在于输入序列和输出序列的长度是可变的。

应用场景:机器翻译、聊天机器人、文档摘要、图片描述等

二、Encoder-Decoder结构

最初Encoder-Decoder模型由两个RNN组成

这个结构可以看到,输入一个句子后,生成语义向量c,编码过程比较简单;

解码时,每个c、上一时刻的yi-1,以及上一时刻的隐藏层状态si-1都会作用到cell,然后生成解码向量。

三、常用的四种seq2seq结构

对于上面模型中的编码模型,是一种比较常用的方式,将编码模型最后一个时刻的隐层状态做为整个序列的编码表示,但是实际应用中这种效果并不太好。

因此,对于常用的模型中,通常直接采用了整个序列隐层编码进行求和平均的方式得到序列的编码向量。因此通常有四种模式:

对于解码模式:

  普通作弊模式

如上,编码时,RNN的每个时刻除了上一时刻的隐层状态,还有输入字符,而解码器没有这种字符输入,用context作为输入,即为一种比较简单的模式。

  学霸模式

如上是一种带输出回馈的方式。输入即为上一时刻的输出。

  学弱模式

  学渣作弊模式

学渣作弊模式就是在学弱的基础上在引入Attention机制,加强对于编码输入的特征的影响。

下面主要梳理带attention机制的seq2seq模型:

四、带attention的seq2seq

编码器如上,公式不再赘述。

注意:对于使用双向的GRU编码时,得到的两个方向上的hi,通常进行contact作为输入。

对于解码的过程,可以看到,在语义向量C的求解的过程中,添加了attention。

如上,当计算Y4时,上一时刻解码的隐层状态会作用于编码器的输入,这样会从新计算context,过程就是这样的,公式不在赘述。

原文地址:https://www.cnblogs.com/pinking/p/9092594.html

时间: 2024-08-30 18:21:45

seq2seq模型的相关文章

学习笔记CB014:TensorFlow seq2seq模型步步进阶

神经网络.<Make Your Own Neural Network>,用非常通俗易懂描述讲解人工神经网络原理用代码实现,试验效果非常好. 循环神经网络和LSTM.Christopher Olah http://colah.github.io/posts/2015-08-Understanding-LSTMs/ . seq2seq模型基于循环神经网络序列到序列模型,语言翻译.自动问答等序列到序列场景,都可用seq2seq模型,用seq2seq实现聊天机器人的原理 http://suriyade

PyTorch 1.0 中文官方教程:混合前端的 seq2seq 模型部署

译者:cangyunye 作者: Matthew Inkawhich 本教程将介绍如何是seq2seq模型转换为PyTorch可用的前端混合Torch脚本. 我们要转换的模型是来自于聊天机器人教程 Chatbot tutorial. 你可以把这个教程当做Chatbot tutorial的第二篇章,并且部署你的预训练模型,或者你也可以依据本文使用我们采取的预训练模型.就后者而言,你可以从原始的Chatbot tutorial参考更详细的数据预处理,模型理论和定义以及模型训练. 什么是混合前端(Hy

pytorch seq2seq模型示例

以下代码可以让你更加熟悉seq2seq模型机制 """ test """ import numpy as np import torch import torch.nn as nn import torch.optim as optim from torch.autograd import Variable # 创建字典 seq_data = [['man', 'women'], ['black', 'white'], ['king', 'que

Seq2Seq模型与注意力机制

Seq2Seq模型 基本原理 核心思想:将一个作为输入的序列映射为一个作为输出的序列 编码输入 解码输出 解码第一步,解码器进入编码器的最终状态,生成第一个输出 以后解码器读入上一步的输出,生成当前步输出 组成部件: Encoder Decoder 连接两者的固定大小的State Vector 解码方法 最核心部分,大部分的改进 贪心法 选取一种度量标准后,在当前状态下选择最佳的一个结果,直到结束 计算代价低 局部最优解 集束搜索(Beam Search) 启发式算法 保存beam size个当

吴裕雄--天生自然 pythonTensorFlow自然语言处理:Seq2Seq模型--训练

import tensorflow as tf # 1.参数设置. # 假设输入数据已经用9.2.1小节中的方法转换成了单词编号的格式. SRC_TRAIN_DATA = "F:\\TensorFlowGoogle\\201806-github\\TensorFlowGoogleCode\\Chapter09\\train.en" # 源语言输入文件. TRG_TRAIN_DATA = "F:\\TensorFlowGoogle\\201806-github\\TensorF

动手学pytorch-注意力机制和Seq2Seq模型

注意力机制和Seq2Seq模型 1.基本概念 2.两种常用的attention层 3.带注意力机制的Seq2Seq模型 4.实验 动手学pytorch-注意力机制和Seq2Seq模型 原文地址:https://www.cnblogs.com/54hys/p/12317068.html

pytorch seq2seq模型中加入teacher_forcing机制

在循环内加的teacher forcing机制,这种为目标确定的时候,可以这样加. 目标不确定,需要在循环外加. decoder.py 中的修改 """ 实现解码器 """ import torch.nn as nn import config import torch import torch.nn.functional as F import numpy as np import random class Decoder(nn.Module)

简单的seq2seq 模型

1. 首先看看两个滤波器的差分方程,FIR,IIR:编码器有点类似FIR编码,而解码器类似IIR. 2. 解码器就是常规的时间序列的多部预测方式,用一个A预测产生B,用B产生C, 在解码器中输入和输出具有固定的错位对应关系,所有解码器是一个典型的 同步的序列的多对多模式!!奇妙的是最终还是付诸于同步多对多,那是不是就是告诉我们只要能转换成同步多对多就可以解决问题了?! 原文地址:https://www.cnblogs.com/wdmx/p/10140799.html

seq2seq聊天模型(一)

最近完成了sqe2seq聊天模型,磕磕碰碰的遇到不少问题,最终总算是做出来了,并符合自己的预期结果. 本文目的 利用流程图,从理论方面,回顾,总结seq2seq模型, seq2seq概念 你给模型一段输入,它返回一段输出! 可以用在这些情景,聊天模型.翻译.看图说话.主旨提取等等涉及自然语言的层面,用途较广泛 例如: 输入"今天中午吃什么", 输出"吃兰州拉面". seq2seq是通过encoder编译器将一段输入,编译,汇聚成一个状态.再通过decoder解析器,