seq2seq详解

博客已迁至知乎,本文链接:https://zhuanlan.zhihu.com/p/70880679

前言

我们通常使用RNN来对序列到序列问题建模,但是使用RNN建模,输出序列的长度必须和输入序列的长度相等。seq2seq框架很好地解决了这个问题。本文介绍了两种最常见的seq2seq框架。若对RNN不熟悉,请参考我前两篇文章:RNN详解LSTM详解


seq2seq介绍

seq2seq模型,全称Sequence to sequence,由EncoderDecoder两个部分组成,每部分都是一个RNNCell(RNN、LSTM、GRU等)结构。Encoder将一个序列编码为一个固定长度的语义向量,Decoder将该语义向量解码为另一个序列。

特点:输入序列和输出序列的长度是可变的,输出序列长度可以不等于输入序列长度。
训练:对Encoder和Decoder进行联合训练,使给定输入序列的目标序列的条件概率最大化。
应用:seq2seq模型可以在给定输入序列的情况下生成目标序列,也可以对一对序列进行评分(以条件概率表示)。比如机器翻译、文本摘要生成、对话生成等。


框架1

该框架由这篇论文提出:Cho et al.(2014) Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation。结构图如下:

这篇论文另一大贡献是提出了GRU,论文中Encoder和Decoder都是GRU。为了表达方便,这里我们假设Encoder和Decoder都为RNN,来看一下seq2seq的公式,注意: c {\color{Red} c} c c c c 不是一个参数。

Encoder

h t = t a n h ( W [ h t − 1 , x t ] + b ) o t = s o f t m a x ( V h t + c ) \begin{aligned} h_t &=tanh(W[h_{t-1},x_t]+b)\\ o_t &=softmax(Vh_t+c) \\ \end{aligned} htot=tanh(W[ht1,xt]+b)=softmax(Vht+c)

其中 h t h_t ht是隐藏状态, o t o_t ot是输出。

Encoder输出的语义向量:
c = t a n h ( U h T ) {\color{Red} c}=tanh(Uh_T) c=tanh(UhT)

其中 U U U为权重矩阵, h T h_T hT

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值