LSTM正在消亡,谁在取代它?

关注“机器学习与生成对抗网络”,一起学习一起冲鸭!

设为星标,第一时间获取更多干货

作者:Andre Ye(critiq.tech 联合创始人)

Long Short-Term Memory Networks Are Dying: What’s Replacing It?[1]

原文:青苹果  编辑:王萌深度学习冲鸭   文仅分享,侵删

长久以来,长短期记忆网络(LSTMs, The Long Short-Term Memory Networks)已发展为深度学习的核心之一,作为循环神经网络(RNNs,The Recurrent Neural Networks)的改良变体而不断推广开来。

但现在,机器学习研究的加速发展,带动各种方法的更新替代也越来越快,LSTM似乎已经有了退出舞台的征兆。

LSTM的兴起

我们首先回溯并探索一下语言建模的进化历程,涵盖其初生阶段到当前解决复杂问题的发展阶段。

从根本上说,就像其他监督机器学习问题一样,语言建模的目标是预测给定文档d的输出y。其中,文档d必须以某种数字形式表示,可以通过机器学习算法进行处理。

将文档表示为数字形式的最初解决方案是使用词袋模型(BoW, bag of words)。每个单词在向量中占据一个维度,每个值表示该单词在文档中出现的次数。然而,这种方法并没有考虑到单词在句中顺序的重要性,可能会影响语义的理解,比如说,句子“I live to work, I work to live” 同样的词,不一样的顺序,传达的含义也就随之改变。

为了解决词序的问题,N元模型(n-grams)出现了。 这是由n个单词组成的序列,其中每个元素都由一个单词组合来进行表示。假设我们的数据集中有10,000个词,而想要存储bi-grams特征,我们将需要存储10,000²个唯一的组合。对于一个相当理想的模型,可能需要存储tri-grams甚至是quad-grams特征,它们中的每一种都可以将词汇量扩大到新的程度。

显然,n-grams和BoW不能处理复杂的语言任务。这些解决方案中涉及的向量化过程过于稀疏、庞大,而且无法捕捉语言本身的精髓。

有什么好的解决方案吗? ——RNN。

循环神经网络利用的是文本的顺序特征,区别于试图一次性将整个文档馈入模型的高维的、稀疏的向量化的解决方案。RNNs可以表示为递归函数,其中,A表示每个时间步长应用的转换函数,h为隐藏层的状态,而x表示数据集。

h_t = A(h_{t-1}, x_{t-1})

每个时间步都是在前一个时间步的知识基础上创建的,通过对前一个输出应用相同的函数来创建新的输出。当RNN处于“展开状态”时,我们可以看到不同时间步的输入是如何通过模型之前输出的知识输入到模型中的。

“展开” RNN单元。图片出处:“Understanding LSTM Networks” 

因为RNN对每个输入都应用相同的函数,所以它还有一个额外的优势,就是能够处理可变长度的输入。使用相同函数的基本原理可以认为是将“通用语言/序列规则”应用到每个时间步中。

h_3 = (A(A(A(H_0, x_0), x_1), x_2)

然而,RNN出色的递归特性也引发了一些问题。将RNN的递归定义简单地扩展到第四个隐藏状态,可以看到A函数被应用了很多次。

•0.3¹⁰ = 0.000005

•0.5¹⁰ = 0.0009

•1.5¹⁰ = 57.7

•1.7¹⁰ = 201.6

A(x)实际上只是输入值x乘以权重矩阵然后加上了一个偏差矩阵。当然,进行一下简化,在十个时间步长之后,初始输入x₀本质上要乘以w¹⁰,其中w是权重矩阵。正如任何计算都会产生的结果一样,将数字化为幂运算会得到极端的结果,如下所示:

•0.3¹⁰ = 0.000005

•0.5¹⁰ = 0.0009

•1.5¹⁰ = 57.7

•1.7¹⁰ = 201.6

这会产生很多的问题。比如说,权值矩阵会导致值要么向零增长(减少),要么向无穷大或负无穷大增长(爆炸)。因此,RNNs存在梯度消失和梯度爆炸的问题。权重更新时,这不仅会导致计算上的问题,还意味着它们患有“痴呆症”:RNN的memory在每个时间点都会被更新掉,随之会遗忘几个时间步之前较远距离的信息,因为它们已经被递归乘法模糊或放大到无法理解的程度。

因此,使用RNNs生成文本时,可能会看到无限循环:

I walked on the street and walked on the street and walked on the street and walked on the street and walked on the street and…

当网络产生第二轮词组“worked on”时,它已经忘记了上一次说这句话是什么时候了。它认为,通过其朴素的机制,在先前输入的‘the street and…’的情况下,下一个输出应该是‘walked on’。因为关注的范围太小,所以循环会一直持续下去。

作为解决方法,LSTM网络于1997年由Hochreiter和Schmidhuber首次提出。直到近年来,计算资源日渐充裕让这种方法更具实操性,LSTM才得到了更大程度上的重视。

它仍然是一个循环网络,但对输入应用了复杂的转换。每个LSTM 的细胞单元的输入都通过复杂的操作进行,从而产生两个输出Ct和ht,可以将其视为是“长期记忆”( 贯穿细胞状态的水平线/顶行)和“短期记忆”(底部的输出)。

在不受任何干扰的情况下,通过长期记忆通道的向量可以穿过整个链(传送带)。LSTM 有通过精心设计的称作为“门”的结构来去除或者增加信息到细胞状态的能力。这是一种让信息选择式通过的方法,包含一个 sigmoid 神经网络层和一个 pointwise 乘法操作(粉色的圈)。因此,如果网络选择这样做的话,它可以保留从任意数量的细胞单元中发现有用的数据。

长期信息流的增加极大地扩展了网络的注意力范围。它不仅可以访问以前的细胞状态,也可以访问不久前状态中的有用学习信息,赋予它保持上下文记忆的能力——这是更人性化交流的一个关键属性。 

LSTM的式微

当然,LSTM在一段时间内相当奏效。它可以在较短的文本长度上很好地生成字符,并且没有被许多困扰早期自然语言处理开发的问题所阻碍,尤其是更全局化的深度和对单个词以及整体含义的理解。

然而,LSTM网络也有其缺点。它仍然是一个循环网络,所以如果输入序列有1000个字符,那么,LSTM细胞单元则会被调用1000次,这是一个很长的梯度路径。虽然增加一个长期记忆通道会有所帮助,但它的容量毕竟是有限的。

此外,由于LSTM本质上是递归的(要找到当前状态,你需要找到先前的状态),因此不能并行地训练它们。

可能更值得关注的缺点是,LSTMs(或RNNs)在迁移学习上并不能取得令人满意的效果。深度卷积神经网络的普及,部分原因是像Inception这样的预训练模型是易于下载和微调的。训练一个已经了解其任务通用规则的模型,更具有实际应用意义,也更容易理解。

有的时候,经过预训练的LSTMs也可以成功迁移,但仍不具普适性。    

原因很好理解,因为每一段文字都有自己独特的风格。区别于图像在阴影和边缘方面总是遵循某种严格的通用规则,文本的结构不那么明显,而且更加灵活。

虽然也有一些基本的语法规则来支撑文本框架,但是这些规则并不像图像那么严格。除此之外,语言还存在不同的语法规则——不同形式的诗歌,不同的方言(莎士比亚和古英语),不同的用例(Twitter上的短信语言,即兴演讲的书面版本)。比方说,从一个在Wikipedia上预训练的LSTM开始操作,可能并不比从头学习数据集容易多少。

除了预训练的词嵌入之外,LSTMs在面对更苛刻的现实问题(如跨语言的机器翻译,与人工书写的文本完全不可区分的文本生成)时也会受到限制。

而新的“颠覆者”——Transformer应运而生,并被愈发频繁地用于处理更具挑战性的任务。

 

Transformer 的架构。图片出处:jinglescode.github.io

Transformer 的架构非常复杂,最初发表于论文《Attention Is All Your Need》中,用来解决语言的翻译问题。那篇论文最具启发性的是关于注意力机制(Self-Attention)的基本思想。

上文中,我们讨论了注意力广度,也就是经过循环神经网络处理后可以记忆多少隐藏状态。但Transformers的注意力范围是无限的,这是它们相对于LSTMs的一个核心优势。

实现这一点的关键是,Transformer 避免了循环递归,完全依赖于注意力机制来建立输入和输出之间的全局依赖关系,因此该模型对并行化的适应能力更强。

Transformer的注意力机制会在句子序列中,直接对任意两个词进行比较,实现了注意力范围的无限性。它不是按顺序处理每个单词,而是一次性的处理整个输入序列,以创建“注意力矩阵”(attention matrix),其中每个输出都是输入序列单词的加权和。例如,我们可以用“‘The’(0)+‘agreement’(1)+…”表达法语单词“accord”,利用网络模型来学习注意力矩阵的权重。

图片出处:arxiv.org/pdf/1409.0473.pdf

我们可以看到上图红框内的区域很有趣:尽管英文“European Economic Area”翻译成了法语“européenne économique zone”,但实际上,在法语中,词序应该是“zone économique européenne”。注意力矩阵能够直接捕获到这些关系。

注意力允许直接在输出值间访问,而LSTMs必须通过记忆通道进行间接和顺序地访问此信息。

Transformer的计算成本比较高。因为自注意力机制每两个token之间就进行内积计算,所以其计算复杂度为 O(N2),这是难以避免的。不过,这一成本也不像一些人所认为的那么高。

首先,由于Transformer的非递归特性,可以对模型进行并行训练,而LSTMs或RNNs就无法做到这一点。

其次,GPUs以及其它计算硬件已经发展到了令人难以置信的程度——10×10的矩阵基本上和1000×1000的矩阵一样快。

对于当前的Transformers而言,大量的计算时间并不是因为使用了注意力机制。相反,在注意力机制的帮助下,递归语言建模的问题得以解决。

Transformer模型在迁移学习上进行应用也表现出了出色的结果,这对其后续的普及起到了巨大的推动作用。

那么,LSTM未来前景如何?

可以确定的是,在LSTMs真正“消亡”之前,它还有很长的路要走,尽管是下坡路。

举例来说,LSTMs的变体在序列建模应用方面总体上比较成功,比如说,在音乐生成或预测股票价格上,如果考虑到额外的计算成本,反向引用以及保留无限的注意力范围的能力就不那么重要了。

附:全文要点总结

•为了解决传统的n-grams和BoW方法中的稀疏性、低效率和信息匮乏等问题,研究者们创建了循环神经网络,通过将前一个输出传递到下一个输入来构建一种更加有序的建模方法。

•通过引入门控机制的长期和短期记忆通道来创建LSTMs,以解决RNNs无法解决的长距离依赖问题。

•LSTM也存在一些缺点,比如说,在迁移学习上的表现不够友好,无法用于并行运算,以及即使是在扩展之后,注意力广度的也受限制。

•Transformers摒弃了之前的固有思维,不再依赖于递归神经网络。取而代之的是使用一种更为简单的网络结构做序列变换,借助注意力矩阵,Transformers可以直接访问输出的元素,从而使它们具有无限的注意力广度。此外,它们可以进行并行计算。

•LSTMs在序列建模方面仍有应用,例如,音乐生成或股票预测。然而,随着Transformers变得更容易访问、更强大和更实用,LSTM用于语言建模相关任务的存在感估计会慢慢减弱。

 

Refrence:

[1]towardsdatascience.com/long-short-term-memory-networks-are-dying-whats-replacing-it-5ff3a99399fe

猜您喜欢:

附下载 | 《Python进阶》中文版

附下载 | 经典《Think Python》中文版

附下载 | 《Pytorch模型训练实用教程》

附下载 | 最新2020李沐《动手学深度学习》

附下载 | 《可解释的机器学习》中文版

附下载 |《TensorFlow 2.0 深度学习算法实战》

附下载 | 超100篇!CVPR 2020最全GAN论文梳理汇总!

附下载 |《计算机视觉中的数学方法》分享

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LSTM模型设计和优化步骤: 1. 确定问题:首先需要明确要解决的问题,并且确定输入和输出的格式和范围。 2. 数据收集和预处理:收集和处理训练数据集,并将其分为训练集、验证集和测试集。 3. 设计模型:选择合适的LSTM网络结构,包括网络层数、神经元数量、激活函数等。 4. 编译模型:确定损失函数、优化器和评估指标,并编译LSTM模型。 5. 训练模型:训练LSTM模型,使用训练集和验证集进行训练,并监控模型的性能。 6. 优化模型:根据模型表现,调整超参数,如学习率、批次大小等,优化模型。 7. 测试模型:最后,使用测试集评估模型的性能,并进行必要的调整。 CNN-LSTM模型设计和优化步骤: 1. 确定问题:首先需要明确要解决的问题,并且确定输入和输出的格式和范围。 2. 数据收集和预处理:收集和处理训练数据集,并将其分为训练集、验证集和测试集。 3. 设计模型:选择合适的CNN-LSTM网络结构,包括CNN层和LSTM层的数量、神经元数量、激活函数等。 4. 编译模型:确定损失函数、优化器和评估指标,并编译CNN-LSTM模型。 5. 训练模型:训练CNN-LSTM模型,使用训练集和验证集进行训练,并监控模型的性能。 6. 优化模型:根据模型表现,调整超参数,如学习率、批次大小等,优化模型。 7. 测试模型:最后,使用测试集评估模型的性能,并进行必要的调整。同时,可以使用一些技巧,如数据增强、Dropout等增加模型的泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值