读sequence to sequence 文章

      文章中首先提到DNN,不能解决sequence2sequence的问题,因为输入和输出固定的,但是对于翻译等问题,序列的长度是不固定的,这篇文章主要是用了多层的LSTM,把输入映射到一个固定的维度,然后再用另外一个LSTM,从这固定的向量去还原抽取目标序列。这里测试场景是采用了英文到法文的翻译,采用BLEU来度量效果。

 

1. 模型示意图

  • 输入是ABC, 输出是WXYZ
  • 当输出的序列产生之后,就不再进行预测了

 

 

2. 模型目标

  • x1,...,xT 表示输入 , y1,...,yt 表示输出, v是什么呢?v 就是 将输入通过LSTM得到的最后一个hidden state , 因为

最后一个hidden state 包含了整个sequence的信息.

  • 需要增加一个sequence的结束符号 <EOS>
  • 发现深度的LSTM 模型效果相比shallow的LSTM模型更好,所以用了4层的LSTM
  • LSTM是逆向读取输入序列,逆向读取的好处,试验板块有一些解释

 

3. 试验

  • 数据集
    • 英 译 法 的数据集,共计1200万句子,包含3.48亿个法文单词,和3.04亿个英文单词
    • 对于输入,除了最常用的16万个词之外,其他都定义为unk,对于输出,除了最常用的80000个词外,其他都定义为unk
  • 训练的目标函数
  • 逆向读取input 
    • 作者这么解释,当我们要把一个词翻译成另外一个词的时候,比如 a,b,c 翻译成 1,2,3的时候,对于目标1来说,a距离比较远,相关性也较低,但每个source 和目标词的平均距离是没有改变的
  • 训练的细节
    • 深度为4的LSTM,每层1000个单元
    • 1000维的embedding,输入是160000词库,输出是80000个词库
    • 发现深度的LSTM对perlexity减少近10%,可能是因为更多的隐层状态
    • LSTM参数的初始化是参数服从[-0.08,0.08]的均匀分布中抽取
    • 用SGD,学习率是0.7,在5个epoch之后,学习率减半,实际上训练只用了7.5个epoch
    • LSTM不会遇到梯度消失的问题,但是会遇到梯度爆炸的问题,会把梯度限制在[10,25]范围内
    • 设置句子长度是固定的

 

4.结论

  • 反向读取效果比较好
  • LSTM对于长句子准确率也高

 

refer:Sequence to Sequence Learning with Neural Networks   Google团队的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值