Sequence to Sequence学习简述

Sequence to Sequence学习最早由Bengio在2014年的论文中提出。
这篇文章主要是提供了一种崭新的RNN Encoder-Decoder算法,并且将其应用于机器翻译中。
这种算法也是现在谷歌已经应用于线上机器翻译的算法,翻译质量基本达到、甚至超越人类水平。

所谓的RNN Encoder-Decoder结构,简单的来说就是算法包含两部分,一个负责对输入的信息进行Encoding,将输入转换为向量形式。
然后由Decoder对这个向量进行解码,还原为输出序列。
而RNN Encoder-Decoder结构就是编码器与解码器都是使用RNN算法,一般为LSTM。
LSTM的优势在于处理序列,它可以将上文包含的信息保存在隐藏状态中,这样就提高了算法对于上下文的理解能力。

Encoder与Decoder各自可以算是单独的模型,一般是一层或多层的LSTM。

LSTM

LSTM是Long-short Term Memory的缩写,是RNN算法中的一种。
它很好的抑制了原始RNN算法中的梯度消失弥散(Vanishing Gradient)问题。

一个LSTM神经元(Cell)可以接收两个信息,其中一个是序列的某一位输入,另一个是上一轮的隐藏状态。
而一个LSTM神经元也会产生两个信息,一个是当前轮的输出,另一个是当前轮的隐藏状态。

假设我们输入序列长度为2,输出序列长度也为2,流程如下:

LSTM.png

图中画了两个LSTM神经元,不过实际上只有一个,只是它要处理不同时序(t)的信息。

从序列,到序列

以机器翻译为例,假设我们要将How are you翻译为你好吗,模型要做的事情如下图:

S2S翻译.png

上图中,LSTM Encoder是一个LSTM神经元,Decoder是另一个,Encoder自身运行了3次,Decoder运行了4次。

可以看出,Encoder的输出会被抛弃,我们只需要保留隐藏状态(即图中EN状态)作为下一次ENCODER的状态输入。
Encoder的最后一轮输出状态会与Decoder的输入组合在一起,共同作为Decoder的输入。

而Decoder的输出会被保留,当做下一次的的输入。注意,这是在说预测时时的情况,一般在训练时一般会用真正正确的输出序列内容,而预测时会用上一轮Decoder的输出。

给Decoder的第一个输入是<S>,这是我们指定的一个特殊字符,它用来告诉Decoder,你该开始输出信息了。
而最末尾的<E>也是我们指定的特殊字符,它告诉我们,句子已经要结束了,不用再运行了。

伪数学

从更高层的角度来看算法,整个模型也无非是一种从输入到输出的函数映射。
我们已知的输入数据是How are you,我们希望的输出是你好啊
模型学习了下面这些函数映射,组成了一个单射函数:

{ How, are, you, < S > } ---> {你}
{ How, are, you, < S >, 你 } ---> {好}
{ How, are, you, < S >, 你, 好 } ---> {吗}
{ How, are, you, < S >, 你, 好, 吗 } ---> {< E >}

为什么这么麻烦?

我们说,本质上RNN Encoder Decoder模型也是一种函数映射的学习,
那么我们能不能用其他模型学习这样的映射关系?

理论上是可以的,但是实际上传统机器学习模型很难学习这样多的映射信息,算法所需要的VC维度太高,
而且很难如RNN模型一样,很好的保留序列的上下文信息(例如语序),使得模型的训练非常困难。

应用

Sequence to Sequence模型已经被谷歌成功应用于机器翻译上。
而理论上任意的序列到序列的有监督问题都可以用这种模型。

  • 古诗生成,输入上一句,输出下一句
  • 对联生成,输入上联,输出下联
  • 有标注的分词训练,输入一句话,输出分词序列
  • 有标注的命名实体识别训练
  • 输入前10天的股价,输出后10天的股价
  • 对话机器人,输入用户对话,输出机器人的回答

当然对于这些问题,实践中能否有效,模型的具体结构与参数,都是有待研究的。

Trick

虽然LSTM能避免梯度弥散问题,但是不能对抗梯度爆炸问题(Exploding Gradient)。
为了对抗梯度爆炸,一般会对梯度进行裁剪。
梯度剪裁的方法一般有两种,一种是当梯度的某个维度绝对值大于某个上限的时候,就剪裁为上限。
另一种是梯度的L2范数大于上限后,让梯度除以范数,避免过大。

Bengio的原文中用的另一个trick是他们的输入序列是反向输入的,也就是说实际输入模型的顺序并不是
How are you而是you are How。至于为什么这样效果更好,还是一个迷。

参考

Bengio 2014 https://arxiv.org/pdf/1406.1078.pdf

Tensorflow seq2seq tutorial https://www.tensorflow.org/tutorials/seq2seq/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容

  • 激活函数(Activation Function) 为了让神经网络能够学习复杂的决策边界(decision bou...
    御风之星阅读 5,116评论 0 8
  • 最近人工智能随着AlphaGo战胜李世乭这一事件的高关注度,重新掀起了一波新的关注高潮,有的说人工智能将会如何超越...
    MiracleJQ阅读 2,818评论 2 1
  • 前面的文章主要从理论的角度介绍了自然语言人机对话系统所可能涉及到的多个领域的经典模型和基础知识。这篇文章,甚至之后...
    我偏笑_NSNirvana阅读 13,883评论 2 64
  • 作者 | 武维AI前线出品| ID:ai-front 前言 自然语言处理(简称NLP),是研究计算机处理人类语言的...
    AI前线阅读 2,564评论 0 8
  • 1、上学的时候,有一天我在宿舍准备换裤子,刚抽掉裤带,不料进来几个女学生,没办法,我只好提着裤子来到隔壁宿舍。我解...
    小杰_327a阅读 984评论 0 0