大家都喜爱的神经网络系列之LSTM

Neil Zhu,简书ID Not_GOD,University AI 创始人 & Chief Scientist,致力于推进世界人工智能化进程。制定并实施 UAI 中长期增长战略和目标,带领团队快速成长为人工智能领域最专业的力量。
作为行业领导者,他和UAI一起在2014年创建了TASA(中国最早的人工智能社团), DL Center(深度学习知识中心全球价值网络),AI growth(行业智库培训)等,为中国的人工智能人才建设输送了大量的血液和养分。此外,他还参与或者举办过各类国际性的人工智能峰会和活动,产生了巨大的影响力,书写了60万字的人工智能精品技术内容,生产翻译了全球第一本深度学习入门书《神经网络与深度学习》,生产的内容被大量的专业垂直公众号和媒体转载与连载。曾经受邀为国内顶尖大学制定人工智能学习规划和教授人工智能前沿课程,均受学生和老师好评。

本文介绍 LSTM 基本原理,和在 torch 以及 Theano 下给出两个例子。
LSTM 本质上是一种 RNN。人们发现 RNN 在训练中会遇到较为严重的梯度消失问题(误差梯度随重要事件的时间差的大小指数级下降)。使用 LSTM 模块后,当误差从输出层反向传播回来时,可以使用模块的记忆元记下来。所以 LSTM 可以记住比较长时间内的信息。

LSTM 现在应用非常广泛:

  1. Robot control[8]
  2. Time series prediction[9]
  3. Speech recognition[10][11][12]
  4. Rhythm learning[13]
  5. Music composition[14]
  6. Grammar learning[15][16][17]
  7. Handwriting recognition[18][19]
  8. Human action recognition[20]
  9. Protein Homology Detection[21]

我们的例子是训练一个基于字符的 LSTM 语言模型,使用中文的古诗词数据来训练。

在语言建模中,我们的任务是对词的序列的出现概率进行建模,通常是使用词,但这里使用的字符(为了看看实验的情况)。更加准确地说,就是对一个 T 长的词列表 $$w_1,w_2,...,w_T$$,我们定义概率如下:
$$P(w_1,w_2,...,w_T) = \prod_{t=1}^T P(w_t | w_{1:(t-1)})$$
其中 $$1 : (t - 1)$$ 表示从 $$1$$ 到 $$t-1$$。因此我们希望模型能够给高的概率给更加合理的字符序列,而非乱序的组合。

在我之前几篇译文里面介绍了很多神经网络的知识,其中也包含了 LSTM 网络。比如说梯度的消失和爆炸的情况。这里我再顺手贴上几个公式,显得很专业一下。
其实这两种关于梯度的问题,本质上很简单。梯度消失就是将一个导数的序列相乘,由于其中的某些导数变的很小 $$< 1$$,这样最终的乘积就变成接近 $$0$$ 的值了。反过来,若是梯度非常大,那乘积就是变得无比的大,也就爆炸了。
这样会导致梯度下降的快于在输入的两个相关事件的距离。

LSTM 通过在传播导数的时候,保证其能够传播得尽可能远而不会明显的改变。下面会解释。所以 LSTM 就能够学得更长的依赖关系。

仔细看看,其实 LSTM 就是下面几个方程:

  • 输入门:控制当前输入 $$x_t$$ 和前一步输出 $$h_{t-1}$$ 进入新的 cell 的信息量:
  • 忘记门:决定是否清楚或者保持单一部分的状态
  • cell 更新变换:变换输出和前一状态到最新状态
  • cell 状态更新步骤:计算下一个时间戳的状态使用经过门处理的前一状态和输入:


  • 输出门:计算 cell 的输出

  • 最终 LSTM 的输出:使用一个对当前状态的 tanh 变换进行重变换:

现在可以看看为何这样的设计能够解决梯度消失问题,对于 $$k<t$$,因为:


这里我们可以看到一条清晰的路径,让梯度无阻碍地进行流动(也就是说,不会下降到 $$0$$),除非对来自忘记门的常量(wrt $$c_{t-1}$$)乘法因子这会总在 $$1$$ 的附近,所以不会导致太大的下降,除了忘记门清除了 cell 的状态,这样的话梯度也不会回流了。

对比 RNN 的梯度流动的路径,就可以看到不少 sigmoid 函数和权重矩阵的导数,这两类都更加可能远离 $$1$$。

前向传播

我们现在描述前向传播如何进行。
模型有 3 个组成部分

  1. LSTM 模块
  2. 映射词(这里是字符)到连续值向量的嵌入模块
  3. 线性模型加上一个 softmax,将 LSTM 的输出 $$h_t$$ 映射到概率分布

准备动作:我们将 LSTM 展开到 T 个时间步,每次都有 LSTM 共享权重的副本($W_{xi}$、$W_{xo}$、$X_{xf}$ 等等)。我们按照同样的操作完成 T 步的共享权重。

前向传播

  1. 将输入通过嵌入层,来获得 T 个嵌入
  2. 对每一步:
  3. 运行 LSTM 的一个时间步,使用时间 t 的嵌入作为输入
  4. 获得时间 t 处的输出,这个就是在时间 t 的预测结果

反向传播

现在反向传播就是很简单了:我们首先进行前向传播,然后完全反序执行,调用 backward 而非 forward,保持每步 backward() 返回的 gradInput 的记录
,将其传递给下一个 backward 调用。细节请参考 train.lua

LSMT 中采样

在每个时间步,LSTM 都使用了 softmax 输出了一个在字符集上的概率分布。

给定每个时间步的分布,有几种方法来获得单个的字符,每个字符获得其相应的嵌入然后传递给 LSTM 作为下一步的输入:

  1. 获得当前时间步最大的值(试试运行不加 -samplesample.lua看看)
  2. 从分布中使用 softmax 采样
  3. 获取前 k 个结果,使用 beam 搜索(这里并没有实现)

评价采样的质量

最简单的方法:可视化数据!诸如“the”或者“and”这样的词出现得非常频繁,即使就是训练很多的时间。随着训练的继续,样本会越来越像真的英语。

而更加形式化的性能评估就是测量 perplexity 在一个新的测试集合上。Perplexity 是测试集的逆概率,使用词的数目正规化。最小化 perplexity 和最大化概率是一样的,所以一个更低的 perplexity 模型能够更好地描述数据。Perplexity 是一种常用的度量语言模型的测度,其定义如下:


其中的 $$w_1, ..., w_N$$ 是训练数据的整个序列;我们将整个这些看成是一个序列。在 bigram 模型中,条件是截断的,

在实践中,我们没有测试集,所以就不会测量 perplexity,我们训练的字符层的模型。perplexity 通常用在词层的语言模型上。

参考牛津大学机器学习课程

[待续]

“忽如寄,壽無金酒固枝思, 歲上泰隨鳴餘娥, 采良隔逝閣附悲, 蟀箕袍德舉指鳥, 花有疏生佳柱蟀, 下佳能度”

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

推荐阅读更多精彩内容