前面两期,我们了解了前馈神经网络、循环神经网络。
《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(1)》
《股票预测,自动翻译,你想要的它都能做——RNN算法探索之旅(2)》
这一期,我们来学习循环神经网络的一种变体:长短期记忆,简称LSTM。
在正式学习之前,我们先来回忆下“什么是循环神经网络”?
所谓“循环”,是指数据本身带有时间先后顺序,即“每一条数据,都受到来自前面数据的影响”。
比如,股票价格:
聊天对话:
新闻内容:
故事发展情节:
这些数据,都带有时间先后顺序。
如果我们想处理这类数据,就需要使用到循环神经网络。
上节课我们讲到,循环神经网络的形态,类似于下图的样子:
如果,我们想预测一句话,比如:
我们想预测下面这句话中,每一个文字,其后面最有可能出现的第一个汉字是什么?
这样的问题,可以简单地描述为:
具体细节,请戳上期内容。
从上图中我们能够看到,在中间的灰色链条上,被塞入了各式各样的“记忆”。事实上,在这根灰色链条上,存储了大量的信息。
这根“灰色”链条,我们可以视它为一根“记忆链条”。
如果将这根记忆链条,比喻成一条公路;将每一次的记忆,比作一辆车。
那么,在这条公路上,已经塞满了汽车:
如果,这根记忆链条很长、很长……
那么可以想象,在这条长长的公路上,会积压无数等待通行的车辆。
你或许能看清离你最近的,但却无法回望到整个队伍的尽头。
RNN算法也是一样,
在这根记忆链条上,存储了太多、太多“有用的”和“无用的”信息。
或许,它仍保留有最近一段时间的记忆,
但是,太过久远的记忆,已经记不清了。
所以,当你的数据比较有限时,使用RNN是一个不错的选择。
但如果你的数据时间周期很长,
例如:
你有100天的股票收盘数据,
你希望基于这100天的数据,
预测出第101天的收盘价格。
此时,如果你仍选用RNN算法,那么很有可能,
它并不能带来令你满意的结果。
因为,它实在记不住那么久远的信息了。
而此时能解决问题的,是LSTM。
什么是LSTM?
LSTM是RNN的一种变体。
既然是变体,说明它的基本原理与RNN大体相同。
唯一的区别在于,
它比RNN多出了一条公路:
在这条多出的“公路”上,LSTM存储了更加简洁的信息。
就像你在图中看到的,左边的道路,忙忙碌碌;
右边的道路,清清净净。
对应LSTM算法,
忙忙碌碌的道路,即“第1根灰色链条”,依然是“隐藏层”,它用于做各种各样的记忆运算。
比如:
哪些记忆“有用”,我要留下;
哪些记忆“没用”,我要丢弃;
哪些输入带有新的信息,我要更新;
等等这些,都是在第1根灰色链条上来处理的,所以你看到它,一直在忙忙碌碌地工作。
而第2根灰色链条,学术上称为“细胞状态”,它用于存储“有用的”记忆。
那些“无用的”记忆,是不会出现在这根链条上的,所以你看到它,是干干净净、十分简洁的。
正因为有了这样一条“干净、简洁”的信息通道,LSTM能够记住更加久远的信息,即“在处理长期记忆的问题上,LSTM相较于RNN更胜一筹”。
下面,我们来看一看,LSTM是如何“开通这样一条快速通道”的?
还是这张图,我们将其中一个隐藏层单元,放大来看:
将隐藏层单元放大后的效果为:
和RNN一样,这个单元依然受 Xt 和 ht-1 的影响。
其原因,请查阅上节课的学习内容,这里不再赘述。(传送到上节课)
与RNN不同的是,在这个单元上,多出了3个“阀门”:
刚刚我们已经讲了,整个单元受 [Xt,ht-1] 的影响。因而,这3个阀门同样也受 [Xt,ht-1] 的影响。
因而,在很多教材上,你会看到这样的公式:
其实,它们均在说明,3个阀门被 [Xt,ht-1] 影响着:
回过头来,我们仍然看这张图:
这3个阀门,分别代表:
忘记门: 忘记过去没用的记忆 输入门: 输入新的记忆 输出门: 输出当前时刻用得上的信息
耐心看完下面这张动图,LSTM的运行原理,你或许就清楚了。
我们将动图锁定在最后一时刻:
从上图我们能够看到,
右侧的灰色链条上,仅包含了有价值的信息,因而更加简洁。
也正因为多加了这根链条,使得LSTM比起RNN来,能够记住更加久远的信息。
到目前为止,我们没有涉及复杂的数学公式,但是LSTM的运行原理,你应该已经非常清晰了,就是上面这张动图,希望你能理解并记住它。
温馨提示:
为了方便理解,在本文“输入门”的位置上,只画出了一条线:
更多的时候,你会看到2条,一条决定添加哪些信息,一条决定添加多少。
这2条线的运算目的,就是为了向旧记忆中,添加有用的新记忆。
作为初学者,你只要了解输入门的功能,就可以了。
结语
LSTM很难,希望这一期的内容,能够为你打开一扇大门。或许为了说清问题,文中所做的某些简化并不完美,但我仍希望它们能更好地帮助仍在学习LSTM原理的人们。
之前,为了搭建聊天机器人,我们已经将前期工作准备就绪
下一期,我们就使用刚刚学到的LSTM,来搭建这台机器人的“语言中枢”,让它成为能和我们聊天的伴侣。
我们下期见~~