从零开始机器学习-19 RNN:循环神经网络

本文由 沈庆阳 所有,转载请与作者取得联系!

前言

相比于适合单个对象的卷积网络(Convolutional Neural Network,CNN),循环网络(Recurrent Neural Network,RNN)更加适合序列类型的数据。循环网络应用最多的领域有:机器翻译、语音识别、文章/音乐创作等。这是因为卷积网络的设计理念是在空间上共享参数,而循环网络的设计理念是在实践上共享参数。卷积网络和循环网络的目的都是为了提取、寻找模式(Pattern)。

什么是循环神经网络

人工神经网络(Artificial Neural Network,ANN)在一定程度上模拟了大脑中神经元之间运作的方式。在卷积神经网络中,其输入是单张的图像(或音频、三维的模型等),对于图像分类的场景十分有效。但事实上,生物神经网络的感知并非是静止的单张图像的,其对世界的感知是建立在一连串图像组成的序列之上、一连串文字组成句子之上、一连串动作组成的行为之上。图像与图像之间存在联系、一句话中的字与字之间也存在关系...人类的大脑可以处理这些连续的输入,是因为神经网络的连接是存在环的,而非像是卷积网络这种前馈网络中的输入和输出(上一层的输出是下一层的输入)这般存在(有向无环图)。循环神经网络正是建立在这种模拟生物神经网络中环的存在的基础上的。
假设有一个序列由事件组成(随时间推进),我们的目标是对这个序列中的事件在每个时间点上进行预测。


一个由事件构成的序列

在上面的这个情景之下,如果序列随时间推移的变化很小,那么我们则可以在每个时间点使用相同的分类器。这是最基本、也是最简单的情景,实际情况并非如此。实际上,在对某个时间点的事件进行预测的时候,我们需要将已经发生过的事件也考虑在内,这就包括了在预测点之前发生的所有事件。
一种方法是将分类器的状态循环(递归)地使用,作为对之前发生的所有事件的总结。因为一个序列的长度可以很长,对于上百个、上千个长度的序列,也就意味着网络的深度也需要成百上千层,这显然是不明智的做法。
另一种思想是捆绑,使用单个模型来总结过去的信息,并将其提供给分类器,在每个时间点(步)中,将分类器的一部分连接到输入层,另一部分连接到过去的事件,这一部分也就叫做递归连接层。
在对上文进行了阅读之后,我们会更好地理解循环网络的结构。循环神经网络只有一个自连接的隐藏层,这个隐藏层的输出就是它下一个时间点的输入。


RNN网络模型的展开结构

后向传播时间

RNN的训练算法有诸如实时循环学习(Real Time Recurrent Learning,RTRL)和后向传播时间(BackPropagation Through Time,BPTT)等。因BPTT更加高效,因此常被使用。
为了更新循环网络中的参数的数值,我们需要反向计算网络中从输入层一直到输出层的参数随时间的导数。就像普通的后向传播算法一样,BPTT也是一直使用链式法则。但在循环网络中,损失函数依赖于当前时刻的输出,也依赖于下一时刻的输出。
在循环网络中更新值是互相关的。这一特性对随机梯度下降算法十分不利,因为随机梯度下降算法更加倾向于无关联的参数更新来保证训练的稳定性,而相关联的更新使训练过程变得不稳定。这种不稳定指的是梯度以指数形式增长到无穷大(梯度爆炸),或梯度迅速减小为0(梯度消失)。无论上述哪种结果都会导致最后无法完成训练。

梯度爆炸与梯度消失

上文提到的梯度爆炸与消失这两个问题都会造成我们的网络模型无法完成训练,对于梯度爆炸与消失问题有相应地解决方法。
首先是梯度爆炸,解决梯度爆炸的方法有很多种。我们可以重新设计网络模型;使用ReLU作为激活函数;使用权重正则化;使用梯度裁剪。其中,梯度裁剪是最简单、最常用的方法。梯度裁剪具体在梯度的模增长地过大的时候减少学习的步长。
而解决梯度消失的问题则会更麻烦一些。梯度消失的后果是循环网络模型仅仅会记住近期的事件,而忘记过去较远的时间发生的事件,从而造成循环网络在几个时刻之后便失去作用。
为了解决梯度消失的问题,我们需要借助长短期记忆(Long Short-Term Memory)网络。

长短期记忆 LSTM

一个循环网络的定义上由很多个神经元构成,每个神经元包括一个基于过去的输入、一个新的输入、一个输出和一个连接到未来的输入(相对于下一时刻的输入)。


一个RNN网络的部分

此时中间的神经元是典型的神经元,其拥有一些权重、一些线性激活函数等。LSTM单元的功能和普通的神经元的功能一样,如果我们使用LSTM单元来替换这个典型神经元则不需要修改网络中的其他内容。使用LSTM网络可以有效地解决梯度消失的问题。
那么先不谈RNN网络,让我们来了解记忆系统是如何工作的。一个具有记忆功能的系统应该具有如下三种功能:将数据写入记忆中、从记忆中读取数据和删除记忆中的数据。而记忆系统的核心则是一个记忆单元。通过在记忆单元上添加输入门(Input Gate)、输出门(Output Gate)与遗忘门(Forge Gate)则组成了一个LSTM单元。


LSTM单元

首先是输入门,输入门的功能是判断这个输入是否要被写入“记忆”当中。
然后是输出门,输出门决定是否从记忆中读取相关内容。

最后是遗忘门,遗忘门可以判断是否从记忆中删除这个数据。
在一个LSTM内核中,如果一个门的值是0,则这个门关闭;若一个门的值是1,则这个门打开。在每个指令门处,控制门开关的值并不是非0即1的,而是介于0和1之间的连续决策。也就是说当这个数处在0和1之间时,部分的数据会被存储到记忆中。
既然控制LSTM内核的门的数值是一个连续函数,那么我们便可以对这个函数求导。既然可以求导,那么使用后向传播算法也变顺理成章了。


LSTM结构

LSTM中控制每个门的值是由一个基于输入参数的逻辑回归控制。每个值都有一套共享参数,在门与输入值之间嵌入一个反曲函数tanh来将值映射到-1到1之间。由于这些函数是连续可导的,因此优化这些函数也很方便。LSTM可以使得模型对需要的数据记忆地更久,对需要忘记的记忆立刻忘记,此外,LSTM也使得对模型的优化过程更加简单,从而解决了梯度消失的问题。

结语

RNN是一种通用的、易于训练的模型。RNN模型可以将可变长度的序列输入转换为固定长度的向量,Beam搜索、序列生成也可以将固定长度的向量转换为序列。
从一个向量开始,从预测结果中取样,然后再次输入到RNN模型中进行预测。这样就可以将一个任意长度的序列,转换成另一个任意长度的序列。这就是机器翻译的基础。
同样,我们可以将CNN和RNN结合起来。输入一个图像,通过CNN对图像进行检测,通过RNN对图像内容进行预测。于是,我可以得到一个自动为图像添加标题的机器学习程序。

参考文献:
[A Gentle Introduction to Exploding Gradients in Neural Networks] by Jason Brownlee
Long Short-Term Memory (LSTM) by Klaus Greff

觉得写的不错的朋友可以点一个 喜欢♥ ~
谢谢你的支持!

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

推荐阅读更多精彩内容