Seq2Seq模型讲解

本文详细介绍了Seq2Seq模型,包括其Encoder-Decoder结构、数值下溢问题及改进方法,如Attention机制、beam search和memory network。重点讨论了最早模型和改进模型的流程,并对比了不同模型的Decoder部分,阐述了Attention机制如何帮助解决长期依赖关系问题。
摘要由CSDN通过智能技术生成

概述

Seq2Seq是一个Encoder-Deocder结构的模型,输入是一个序列,输出也是一个序列。

Encoder将一个可变长度的输入序列变为固定长度的向量,Decoder将这个固定长度的向量解码成可变长度的输出序列。

使用 x={ x1,x2,...,xn} x = { x 1 , x 2 , . . . , x n } 表示输入语句, y={ y1,y2,...,yn} y = { y 1 , y 2 , . . . , y n } 代表输出语句, yt y t 代表当前输出词。

所有的Seq2Seq模型都是以下目标函数,都是为了优化这个函数:

p(y|x)=t=1nyp(yt|y1,y2,...,yt1,x) p ( y | x ) = ∏ t = 1 n y p ( y t | y 1 , y 2 , . . . , y t − 1 , x )

即输出的 yt y t 不仅依赖之前的输出 { y1,y2,...,yn} { y 1 , y 2 , . . . , y n } ,还依赖输入语句 { x1,x2,...,xn} { x 1 , x 2 , . . . , x n } ,模型无论怎么变化都是在该公式的约束下。

【注】

该条件概率模型存在问题:数值下溢问题。

原因:该式中每一项 p(yt|y1,y2,...,yt1,x) p ( y t | y 1 , y 2 , . . . , y t − 1 , x ) 都小于1甚至于远远小于1,很多1乘起来,会得到很小很小的数字,造成数值下溢(numerical underflow)。

因此,在实际中一般是将其取log值,求其概率的对数和而不是概率的乘积,因此实际中一般用如下目标函数,目标是最大化该目标函数:

P(y|x)=t=1nylogP(yt<
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值