使用Tensorflow搭建一个简单的Seq2Seq翻译模型

本文详细介绍了如何使用Tensorflow搭建Seq2Seq翻译模型,包括模型原理、前期准备如变量理解,以及数据预处理。在训练时,Seq2Seq模型采用 teacher forcing 策略,而在预测时则使用上一时刻的输出作为输入。文章通过实例解释了编码器和解码器的构建,并指出理解关键参数的重要性。
摘要由CSDN通过智能技术生成

1.背景

首先,这篇博文整理自谷歌开源的神经机器翻译项目Neural Machine Translation (seq2seq) Tutorial。如果你直接克隆这个项目按照Tutorial中的说明操作即可,那么也就不用再往下看了。

而之所以写这篇博文的目的是,虽然Seq2Seq的原理并不太难,但是在用Tensorflow实现起来的时候却不那么容易。即使谷歌开源了源码,但是对于初学者来说面对复杂的工程结构文件,依旧是一头雾水(看来好几天,源码也没弄懂)。于是笔者就根据Tutorial中的说明以及各种摸索,终于搭建出了一个简单的翻译模型。下面就来大致介绍整个模型的搭建过程,数据的预处理,以及一些重要参数的说明等等。

由于笔者本身不搞自然语言这方面的内容,只是想学习这方面技术在Tensorflow中的使用,所以对于如何。

1.1 原理

在这里插入图片描述

Seq2Seq模型的主要原理如图p0105所示,先是一个Sequence通过RNN网络结构编码(左边蓝色部分)后得到 “thought vector"(图中白色矩形框,后称为中间向量),也就是说此时的中间向量包含了输入向量的所有信息,可以将其视为一个“加密”的过程。紧接着就是将中间向量再次喂给另外一个RNN网络对其进行解码(右边棕色部分),然后得到解码后的输出,可将其视为一个“解密”的过程。可能这个图太抽象了,我们再来进一步细化这个图:
在这里插入图片描述

如图p0106所示,输入部分以每个单词作为RNN对应每个时刻的输入,而输出部分呢则以RNN上一时刻的输出作为下一时刻的输入,直到输出为终止符"“为止。有没有发现,这同我们之间介绍的用LSTM来生成唐诗的原理一模一样? 但是呢请注意这个问题:在训练的时候我们并不能保证解码部分每个时刻的输出就是正确的。换句话说就是,假设第一个时刻的输出为“我”,然后接着将”我“喂给下一时刻,但此时预测的结果为”你好“,然后再把”你好“喂给下一时刻预测出”明天“,最后将”明天“喂给下一此时预测出”“结束。也就是最终预测的序列为 y ^ = \hat{y}= y^=" 我 你好 明天 " ,虽然这样也能同正确标签 y = y=

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值