利用神经网络进行序列到序列的学习

Sequence to Sequence Learning with Neural Networks

普通的部分本文将不再赘述,文中作者明确说到了自己模型的三大亮点:

(1)将输入编码成一个固定维度的向量:encoder LSTM来将一个可变长度的输入语句映射成一个固定维向量表示, 然后将这个向量输入另一个解码器LSTM进行预测。

(2)处理长句子的性能

(3)逆序输入:采用了reverse input(反转输入语句)的方法,效果很好。

1 介绍

深度神经网络(DNNs)是一种功能极其强大的机器学习模型,能够在语音识别和视觉对象识别等困难问题上取得优异的性能。DNNs只适用于输入和目标可以用固定维数向量编码的问题

 

在本文中,我们证明了长短时记忆(LSTM)结构可以解决一般序列到序列的问题。seq2seq的模型的总体架构如下图所示,首先将整个输入语句映射到vector,前面的的LSTM没有输出,是只是起到了map的作用,之后encoder的hidden layer直接输入到后面的decoder,再进行输出翻译。

我们的模型读取输入语句“ABC”并生成“WXYZ”作为输出语句。在输出语句结束标记之后,模型停止进行预测。注意,LSTM以相反的顺序读取输入语句,因为这样做会在数据中引入许多短期依赖性,从而使优化问题变得容易得多。

 

LSTM的一个有用特性是,它学会将一个可变长度的输入语句映射成一个固定维向量表示。考虑到翻译往往是对原句的转述,翻译目标鼓励LSTM找到能够捕捉其含义的句子表示形式,因为具有相似含义的句子彼此接近,而不同的句子含义将相差很远。定性评价支持这一说法,表明我们的模型知道词序,并且相对于主动语态和被动语态是不变的

2 模型

标准的RNN,在给定输入序列下,计算输出序列的方法:

只要预先知道输入和输出之间的对应,RNN就可以轻松地将序列映射到序列。然而,如何将RNN应用于输入序列和输出序列长度不同、关系复杂且非单调的问题,目前尚不清楚。

一般序列学习最简单的策略是使用一个RNN将输入序列映射到一个固定大小的向量,然后使用另一个RNN将向量映射到目标序列。虽然这在原则上是可行的,因为RNN提供了所有相关的信息,但由于由此产生的长期依赖关系,很难训练rns。然而,LSTM会学习具有长期时间依赖性的问题,可解决此问题。

 

LSTM通过首先获得输入序列的固定维表示v(由LSTM最后的隐态给出),然后用标准LSTM- lm公式计算的概率,该公式的初始隐态设置为的表示v:

本文所介绍模型的几个显著优点:

  • 使用一个多层长短时记忆(LSTM)将输入序列映射到一个固定维数的向量上,然后用另一个深度LSTM从向量上解码目标序列
  • LSTM长句子上没有困难。
  • LSTM还学习了对词序敏感、对主动语态和被动语态相对不变的有意义的短语和句子表示。
  • 我们发现,倒排所有源句(但不包括目标句)中的单词顺序可以显著提高LSTM的性能,

因为这样做会在源语句和目标语句之间引入许多短期依赖关系,从而使优化问题变得更容易。

3 实验

训练目标:在给定源语句S的情况下,最大化一个正确翻译T的对数概率:

其中S:训练集,一旦训练完成,我们会根据LSTM找到最可能的翻译:

LSTM能够解决具有长期依赖关系的问题,我们发现,当源语句被反转(目标语句没有反转)时,LSTM学习得更好

 

我们认为这是由于对数据集引入了许多短期依赖关系造成的。通常,当我们把源句和目标句连接起来时,源句中的每个单词都与目标句中的对应单词相差很远。通过倒装源句中的单词,保持源语言中对应单词与目标语言的平均距离不变。然而,源语言中的前几个单词现在与目标语言中的前几个单词非常接近,因此问题的最小时间延迟大大减少。因此,反向传播更容易在源句和目标句之间“建立通信”,从而大大提高了整体性能。

 

实验设置:

  • 4层LSTM,每层1000个单元
  • 词向量维度是1000维
  • 输入词典大小是160,000,输出词典大小是80,000
  • LSTM的初始参数服从[-0.08,0.08]的均匀分布
  • 用随机梯度下降算法,没有momentum,开始学习率为0.7,5 epochs之后,每个epoch之后学习率降低一半。
  • batch是128
  • 每次training batch 之后,计算, g 是梯度除以128,如果s > 5, 令 g = 5g/s。
  • 不同的句子长度不同,为了降低计算量,一个batch中的句子的长度差不多相同。
  • 用8个GPU同时进行处理

 

这种方法对主动语态和被动语态的包容性很好,也就是说,同一个句子的主被动语态通过encoder得到的向量是欧氏距离很近的,通过PCA降维到2维空间进行可视化如下图所示:

 

LSTM模型在长句子上表现很好,通过下面两幅图可以看出来,左图x轴代笔句子长度,从图中可以看出对于句子长度小于35的句子,LSTM模型的分数都比baseline要高。右图x轴代笔词频度排名,排名越高说明越不常用,从图中可以看出对于词频排名在2500之前的词,LSTM模型要比baseline好。

 

--------------------------------------------------------------------------------------------------------------------------

1、【论文笔记】Sequence to sequence Learning with Neural Networks:

         https://blog.csdn.net/qq_35647180/article/details/53576809

2、TensorFlow中Sequence-to-Sequence样例代码详解:

https://blog.csdn.net/diligent_321/article/details/53590289

3、论文复现Sequence to sequence learning with neural networks:

https://blog.csdn.net/as472780551/article/details/82289944

4、tensorflow中seq2seq模块的应用:

https://blog.csdn.net/zmx1996/article/details/83932407

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值