在金融股票预测、工业设备故障预警、生物DNA序列比对、城市交通流量监控及语音识别等诸多领域,像按顺序排列的数据(比如一串按时间先后记录的股票价格)随处可见。这类有先后顺序的数据,分析和预测时往往需要参考之前的数据,可普通的神经网络处理这类数据时却不太在行。
时序数据处理
我们之前提到过的BP神经网络,大概是这样的:有3个输入数据、3个输出结果,中间还有一层“转换层”。数据从输入到转换层、再从转换层到输出,都会经过一些“调节系数”和“修正值”来计算。但这种网络是“一次性”的,没有“记忆”功能,没法用前面的数据来推断后面的结果,自然处理不好有先后顺序的数据。
BP神经网络结构
为了解决这个问题,循环神经网络(咱们暂时叫它“循环网”)就出现了。它的关键改进是加了个“记忆模块”,能把中间转换层的结果存起来,这个“记忆模块”和新的输入数据一起参与计算,也有自己的“调节系数”。这种能“记住之前结果”的循环结构,让它处理有顺序的数据时能力强了很多。
循环神经网络工作原理
从工作方式来看,循环网的核心就是“记住过去、指导现在”。比如处理第10秒的数据时,它会把第9秒计算时的中间结果存到“记忆模块”里,然后用这个“9秒前的记忆”和“10秒时的新数据”一起计算,得出10秒时的结果。这样一来,每个时刻的结果不仅和当下的输入有关,还带着之前所有数据的积累信息。
循环神经网络的“记住过去、指导现在”

循环网调整“调节系数”的方式和BP神经网络差不多,都是通过计算预测结果和实际结果的误差,反过来修正系数。但如果要处理的序列很长(比如要分析一整年的股票数据),就容易出两个问题:一个是“记忆失效”——前面数据的影响传到后面越来越弱,修正系数时几乎没反应,模型没法进步;另一个是“反应过激”——前面数据的影响被放大,修正系数时波动太大,一直稳定不下来。这两个问题让普通循环网处理长序列时很吃力。
循环神经网络长序列数据处理的挑战
长短期记忆网络(咱们叫它“长短记忆网”)通过“开关控制”和“专门记忆库”的创新设计,解决了上面的问题,成了处理长序列数据的常用模型。如果说普通循环网的“记忆模块”只能记一会儿,那长短记忆网里有一条贯穿全程的“信息传送带”,就是专门存长期记忆的“记忆库”,至于哪些信息要留、哪些要丢,全靠“开关”精准控制。
长短期记忆网络(LSTM)的创新设计
长短期记忆网有三个关键“开关”:遗忘开关、输入开关和输出开关。遗忘开关会算一个0到1之间的数,接近1就保留之前的记忆,接近0就删掉没用的信息;输入开关先决定哪些新信息要存,再生成候选的记忆内容,一起更新到“记忆库”里;输出开关先筛选要输出的内容,再把“记忆库”里的信息整理后输出。有了这一套控制,长短记忆网能清楚地记住很久之前的关键信息。
长短期记忆网络(LSTM)的三个关键开关
门控循环单元(叫它“门控单元网”)是另一种改进模型,同样能处理长序列,而且结构更简单。它去掉了长短记忆网单独的“长期记忆库”,只留了一个贯穿全程的“记忆状态”。计算时先做两件事:一是通过当前数据和之前的记忆,算一个“重置开关”,决定要保留多少之前的记忆;二是算一个“更新开关”,决定新信息和旧记忆各占多少比例。最后把筛选后的旧记忆和新生成的信息结合起来,就得到了当前的结果。
门控循环单元
和长短期记忆网比,门控单元网的“调节系数”更少,通过重置开关和更新开关配合控制信息的流动,既能保证处理效果,又能让训练速度更快,成了处理序列数据的好选择。从普通循环网到长短记忆网,再到门控单元网,这些“开关”的设计和结构的优化,一直在让处理有序数据的能力变得更强。