当前位置: 首页 > 科技观察

RNN和LSTM很弱!注意力模型为王!

时间:2023-03-16 00:43:35 科技观察

循环神经网络(RNN)、长短期记忆(LSTM),这些炙手可热的神经网络——是时候抛弃它们了!LSTM和RNN发明于1980年代和1990年代,并于2014年消亡并复活。在接下来的几年里,它们成为解决序列学习、序列转换(seq2seq)的方法,这也使语音到文本的识别和Siri、Cortana、谷歌语音助手、Alexa的惊人能力成为可能。另外,不要忘记机器翻译,它包括将文档翻译成不同的语言,或者神经机器翻译,它还可以将图像翻译成文本,将文本翻译成图像和字幕视频等。在接下来的几年里,ResNet出现了。ResNet是残差网络,意味着要训练更深的模型。2016年,微软亚洲研究院一组研究人员以惊人的152层深度残差网络(deepresidualnetworks)夺得ImageNet图像识别挑战赛冠军,在图像分类、图像定位和图像三大项目中均占据绝对优势检测冠军。之后,Attention(注意力)模型出现了。才过去两年,但今天我们可以肯定地说:“停止使用RNN和LSTM,它们已经死了!”用事实说话吧。谷歌、Facebook和Salesforce等公司越来越多地使用基于注意力的网络。所有这些企业都已经用基于注意力的模型取代了RNN及其变体,而这仅仅是个开始。与基于注意力的模型相比,RNN需要更多的资源来训练和运行。RNN的寿命不长。为什么要记住RNN和LSTM以及它们的衍生物大多是随着时间的推移进行顺序处理。见下图横向箭头:▲RNN中的顺序处理横向箭头表示长期信息在进入当前处理单元之前需要依次遍历所有单元。这意味着它很容易通过多次乘以<0的分数而被破坏。这就是导致梯度消失问题的原因。为此,今天被视为救星的LSTM模型出现了,有点像ResNet模型,可以绕过单元,记住更长的时间步长。因此,LSTM可以消除一些梯度消失的问题。▲LSTM中的顺序处理从上图可以看出,这并不能解决所有问题。我们仍然有从过去的单元到当前单元的顺序路径。事实上,路径现在更复杂了,因为它有追加和忽略附加到它的分支。毫无疑问,LSTM和GRU(GatedRecurrentUni,LSTM的一个衍生物)及其衍生物可以记住很多更长期的信息!但是他们只能记住100个数量级的序列,不能记住1000个数量级,或者更长的序列。RNN的另一个问题是训练它们对硬件要求很高。另外,在我们不需要快速训练这些网络的情况下,它仍然是资源密集型的。在云端运行这些模型也需要大量资源。考虑到语音转文本的需求正在快速增长,云是不可扩展的。我们需要在边缘处理数据,比如AmazonEcho。该怎么办?如果要避免顺序处理,那么我们可以找到“前向”或更好的“后向”单元,因为大多数时候我们处理实时因果数据,我们“回头看”并想知道它对未来决策的影响(“影响未来”)。在翻译句子或分析录制的视频时,情况并非如此,例如,我们有完整的数据和足够的处理时间。这样的回溯/转发单元就是NeuralAttention模型组。为此,通过组合多个神经网络注意力模型,出现了“分层神经网络注意力编码器”,如下图所示:▲分层神经网络注意力编码器一种更好的“回头看”方式是使用注意力模型将过去的编码向量聚合到上下文向量CT中。请注意,上面有一个注意力模型层次结构,它与神经网络层次结构非常相似。这也类似于下面备注3中的时间卷积网络(TCN)。在分层神经网络注意力编码器中,多个注意力层可以查看最近过去的一小部分,比如100个向量,上面的层可以查看这100个注意力模块,有效地整合100个向量的100x信息。这将分层神经网络注意力编码器的能力扩展到10,000个过去的向量。这才是“追溯过去”,才能“影响未来”的正道!但更重要的是查看表示向量传播到网络输出所需的路径长度:在分层网络中,它与log(N)成正比,其中N是层级数。这与RNN需要执行的T个步骤形成对比,其中T是要记住的序列的最大长度,并且T>>N。跳过3-4个步骤来追踪信息比跳过100个步骤要容易得多!这种架构与神经网络图灵机非常相似,但允许神经网络通过注意力决定从内存中读取什么。这意味着实际的神经网络将决定哪些过去的向量对未来的决策很重要。但是存储到内存中呢?与神经网络图灵机(NTM)不同,上述架构将所有先前的表示存储在内存中。这可能是非常低效的:考虑存储视频中每一帧的表示——大多数时候,表示向量不会在帧与帧之间改变,所以我们实际上存储了太多相同的东西!我们可以做的是添加另一个单元格以防止存储相关数据。例如,不存储与先前存储的向量过于相似的向量。但这实际上只是一个hack,最好的方法是让应用程序指示哪些向量应该或不应该保存。这是当前研究的重点,我真的很惊讶看到这么多公司仍在使用RNN/LSTM进行语音到文本的转换。许多人不知道这些网络是多么低效和不可扩展。训练RNN和LSTM的噩梦训练RNN和LSTM很困难,因为它们需要内存带宽限制计算,这是硬件设计师最糟糕的噩梦,并最终限制了神经网络解决方案的适用性。简而言之,LSTM每个单元需要4个线性层(MLP层)才能在每个序列时间步进行操作。线性层需要大量的内存带宽来计算,事实上,它们不能使用很多计算单元,通常是因为系统没有足够的内存带宽来满足计算单元。并且添加更多的计算单元很容易,但是很难添加更多的内存带宽(注意芯片上的电线足够多,从处理器到存储器的电线很长,等等)。因此,RNN/LSTM及其变体不太适合硬件加速,我们之前和这里都讨论过这一点。正如我们在FWDNXT上所做的那样,将在存储中计算一个解决方案。总而言之,放弃RNN。一个注意力模型真的是你所需要的!