作者: KK4SBB 来源:CSDN
卷积神经网络是一种主流的深度学习模型,它可以用神经网络模型来处理序列化的数据,比如文本、音频和视频数据。它能把一个序列浓缩为抽象的理解,以此来表示这个序列,乃至新产生一个序列。
基本的RNN网络设计对长序列串往往束手无策,但是它的特殊变种 —— “ 长短期记忆模型(LSTM) ” —— 则能处理这些数据。这类模型被认为非常强大,在许多类别的任务上取得了显著的成绩,包括机器翻译、语音识别、和看图写话等。因此,卷积神经网络在过去几年内变得非常流行。
随着卷积神经网络的流行,我们看到人们试图用各种方法来提升RNN模型的效果。其中,有四个方向的改进效果比较显著:
这些技术都是RNN模型可能的扩展方向,但真正让我们兴奋的是可以将这些技术都合并起来,就像是更广阔空间中的一些点聚合。而且,这些技术所基于的底层技术都相同 —— 被称作聚焦机制(attention)。
我们猜测这些“增强神经网络”在今后几年内对于拓展深度学习的能力将会扮演重要的角色。
神经图灵机器
神经图灵机器( Graves, et al., 2014 )将RNN模型与一个外部记忆模块结合。由于向量表达是神经网络界的自然语言,所以记忆的是一组向量值:
但是,读和写的过程又是怎样的呢?这里的挑战在于我们想区分这两个过程。具体说来,我们想区分读和写的区域,那么我们就能学会从哪儿去读取,写入到什么位置。由于存储地址本质上是离散化的,因此这个问题比较棘手。神经图灵机器采用了一种非常聪明的解决方案:它们在每一步以不同的程度来读和写各个位置。
以读取为例,不同于指定一个位置读取,RNN模型给出了“聚焦分布(attention distribution)”,描述了我们对不同记忆位置的关注程度。因此,读取操作是带权重的累加。
同样的,我们每次以不同的程度写入内容。聚焦分布描述了我们在每个位置的写入量。记忆单元中某个位置的新值是旧的记忆内容与新写入内容的组合,它们之间的位置由聚焦权重所决定。
但是,神经图灵机器是如何决定需要聚焦在哪一块记忆区域呢?事实上,它们结合了两种不同的方法:基于内容的聚焦和基于位置的聚焦。基于内容的方法让神经图灵机器搜索遍历它们的记忆库,然后关注在与内容相符合的区域,而基于位置的方法则允许在记忆区域的相对运动,使得神经图灵机器可以循环。
这种读写能力使得神经图灵机器可以进行很多种简单的运算,超越了普通神经网络的能力。比如,它们可以学习记忆一段长序列,然后不断地循环重复。随着它们不断地循环,我们能观测到它读写的位置,能够更全面地理解其工作原理:
它们还能学习模仿查询表,甚至学习对数字排序!然而,它们却无法完成许多基本任务,比如加法或者乘法运算。
Graves, et al. , 2014 文中介绍了大量的实验。这张图片展现了“重复复制”的实验。
自最初的神经图灵机器论文发表之后,在这一领域方向又涌现出了大量优质论文。神经GPU( Kaiser & Sutskever, 2015 ) 克服了神经图灵机器无法计算加法和乘法的缺陷。 Zaremba & Sutskever, 2016 采用强化学习的方法训练NTM。神经随机访问机器(Neural Random Access Machines Kurach et al., 2015 )基于指针运行。一些论文尝试了不同的数据结构,比如堆栈和队列( Grefenstette et al. 2015 ; Joulin & Mikolov, 2015 )。记忆网络( Weston et al., 2014 ; Kumar et al., 2015 )是解决类似问题的另一种方式。