在之前的专栏中,我和你分享了循环神经网络的原理,而今天要介绍的长短期记忆网络就是一类特殊的循环神经网络。这个词的断句方式是“长 - 短期记忆网络”,表达的含义是一类可以持续很长时间的短期记忆模型。对时隙长度的不敏感性是这种模型的优势,因而它适用于序列中信息之间的时滞不确定的情况。

循环神经网络通过在时间上共享参数引入了记忆特性,从而将先前的信息应用在当前的任务上,可这种记忆通常只有有限的深度。有追剧经历的都会知道,国外的电视剧通常是每周更新一集,可即使经历了一周的空窗期,我们依然能将前一集的内容和新一集的情节无缝衔接起来。但循环神经网络的记忆就没有这么强的延续性,别说是一个星期的断片儿,插播一段五分钟广告就足以让它的记忆脱节,造成理解上的混乱。

真实世界中的信息不是静止的,而是不断经历着流转与跃变,如果神经网络不能保存长期记忆的话,它处理信息的能力就会大打折扣。长短期记忆网络(long short-term memory)的作用就是实现长期记忆,更准确地说,是实现任意长度的记忆。精巧的设计使记住长期的信息成为了长短期记忆网络的默认行为,而不是需要付出很大代价才能获得的能力。

从机制上讲,要实现长期记忆,神经网络既要学会记忆,也要学会遗忘。长期记忆的基础是足够的存储,但宝贵的存储不能被滥用,它不是收集桶,有用的没用的都一股脑儿往里面扔。长期记忆要求模型具备对信息价值的判断能力,结合自身的状态确定哪些信息应该保留,而哪些信息应该舍弃。比方说电视剧里的一段支线情节结束了,模型就应当重置相关的信息,只需保留对应的结果。同理,当收到新的输入信息时,模型也要判断这些信息是否有用,以及是否需要保存。

除了添加遗忘机制之外,长短期记忆单元还要能够将长期记忆聚焦成工作记忆,也就是哪一部分记忆需要立刻使用。有用的信息也不会每时每刻都有用,因而记忆单元并不会始终使用所有的长期记忆,而是根据当前的相关性做出取舍,这就类似于人类注意力的工作方式。遗忘和选择使长短期记忆网络能够对记忆做出更细粒度的处理,它不同于循环神经网络一视同仁的方式,因而可以实现对信息进行长期而精确的跟踪。

长短期记忆网络是由相应的基本单元构成的。长短期记忆的基本单元的作用在需要时取出并聚焦记忆,通常包括四个功能不同的隐藏层:记忆模块(memory cell)、输入门(input gate)、输出门(output gate)和遗忘门(forget gate),这比只有一个激活函数的一般循环神经网络要复杂得多。

记忆模块的作用时存储数值或是状态,存储的时限既可以是长期也可以是短期。另外的“三重门”则用于控制信息的有选择通过,三者都使用对数几率函数作为传递函数。

在这“三重门”中,输入门决定哪些新信息被存放在记忆模块中,遗忘门决定哪些信息被从记忆模块中丢弃,输出门则决定记忆模块中的哪些信息被用于计算整个长短期记忆单元的输出。值得一提的是,长短期记忆网络的最初版本只有输入门和输出门,遗忘门是作为一项改进添加的。

下面来看看长短期记忆单元的工作流程:根据遗忘机制,记忆模块要根据时刻 tt