62 序列到序列学习(seq2seq)【动手学深度学习v2】

62 序列到序列学习(seq2seq)【动手学深度学习v2】

深度学习学习笔记
学习视频:https://www.bilibili.com/video/BV16g411L7FG/?spm_id_from=autoNext&vd_source=75dce036dc8244310435eaf03de4e330

一个句子翻译到另一个句子。
seq2seq 最早是用来做机器翻译(给定个源句子,自动翻译成目标语言)。
在这里插入图片描述
Seq2Seq 是一个encoder和decoder的架构。
encoder给你一个句子,解码器翻译输出。编码器用的是一个RNN,每次不断的给到一个Seq,最后的隐藏状态传给解码器。可以是双向的,encoder可以双向,而decoder不能,双向RNN经常用在encoder里面。
解码器用一个RNN输出:隐藏状态过来给一个< bos > 表示开始翻译,然后上一次翻译作为下一个时刻的输入,隐藏状态也过去,不断这样过去得到输出。
在这里插入图片描述
RNN 不需要规定句子的长度,按照时刻时刻往前走,最后返回最后时刻的隐藏层。Seq2Seq可以处理任意长度的句子。

隐藏状态如何传的?最后一层的RNN在最后的时刻的隐藏状态,跟句子的输入embedding结合起来作为Recurrent Layer的输入。所以编码器不需要输出的(不需要全连接层)只有拿到RNN的输入状态就可以了,结合初始状态作为下一层的输入。(编码器的RNN的隐藏层输出结果 和 输入的embedding结合起来给到解码器的recurrent 层)
在这里插入图片描述

训练: 在训练时知道真的翻译(目标句子),decoder每个输入实际上是用的真正的翻译,就是即使上一个时刻的翻译是错误的,给到下一个时刻的输入依旧传入的是正确的真实的翻译结果,这样时序序列就可以预测长的序列,在训练的时候给的是真正的词。
推理:推理时没有真正的翻译,于是只能用上一时刻的输出作为下一时刻的输入,然后预测下去。
在这里插入图片描述
衡量生成序列的好坏的BLEU
之前是预测一个词,现在预测一个句子。预测的句子和真实的句子长度可能不一样,那么如何去判断预测的句子的好坏?
BLEU(机器学习最常用的衡量状态)。
算所有n-gram的精度,pn就是预测所有n-gram的精度,unique-gram就是单个词对应的预测精度,by-gram就是两个词对应的预测精度,那么n-gram就n个长度的词组成的句子的预测精度。

然后 min(1-预测长度/真实长度) 叫做惩罚过短预测 ,用来防止预测过短;pn<=1 n 越大 (2^n)/1就越小,乘起来长匹配有高权重 就越大。
在这里插入图片描述
seq2seq就是从一个句子生成另一个句子(机器翻译只是其中一个),使用的编码器解码器的架构,将编码器最后时刻的隐状态来初始化解码器的隐状态,也会作为一个输入穿进去。然后这种方式也经常用BLEU来作为衡量结果。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值