序列建模之循环和递归网络 - 引言篇
序言
在探索复杂数据结构与动态系统的奥秘时,序列建模成为了连接过去与未来、解析时间序列数据的关键桥梁。其中,循环神经网络( RNN \text{RNN} RNN)与递归神经网络( Recursive Neural Networks, RNNs \text{Recursive Neural Networks, RNNs} Recursive Neural Networks, RNNs)的一种特殊形式,但常在此语境下区分讨论以强调其树状结构)作为两大核心工具,展现了非凡的潜力与灵活性。它们通过捕捉序列数据中的时间依赖性和层次结构,为自然语言处理、语音识别、时间序列预测等领域带来了革命性的突破。RNN通过其内部的循环结构,使得信息能够沿着序列流动,理论上能够学习到任意长度的依赖关系;而递归网络则更进一步,通过模拟树状或图状的数据结构,深入解析具有层次或嵌套特性的复杂序列,如句法分析、情感分析等任务中展现出独特优势。
序列建模之循环和递归网络
- 循环神经网络 ( recurrent neural network \text{recurrent neural network} recurrent neural network) 或 RNN \text{RNN} RNN( Rumelhart et al., 1986c \text{Rumelhart et al., 1986c} Rumelhart et al., 1986c) 是一类用于处理序列数据的神经网络。
- 就像卷积网络是专门用于处理网格化数据 X \bold{X} X(如一个图像)的神经网络,循环神经网络是专门用于处理序列 x ( 1 ) , … , x ( τ ) \boldsymbol{x}^{(1)},\dots,\boldsymbol{x}^{(\tau)} x(1),…,x(τ) 的神经网络。
- 正如卷积网络可以很容易地扩展到具有很大宽度和高度的图像,以及处理大小可变的图像,循环网络可以扩展到更长的序列(比不基于序列的特化网络长得多)。
- 大多数循环网络也能处理可变长度的序列。
- 从多层网络出发到循环网络,我们需要利用上世纪 80 80 80 年代机器学习和统计模型早期思想的优点:在模型的不同部分共享参数。
- 参数共享使得模型能够扩展到不同形式的样本(如不同的长度)并进行泛化。
- 如果我们在每个时间点都有一个单独的参数,我们不但不能泛化到训练时没有见过序列长度,也不能在时间上共享不同序列长度和不同位置的统计强度。
- 当信息的特定部分会在序列内多个位置出现时,这样的共享尤为重要。
- 例如,考虑这两句话: “ I went to Nepal in 2009 \text{I went to Nepal in 2009} I went to Nepal in 2009“ 和 “ In 2009,I went to Nepal. \text{In 2009,I went to Nepal.} In 2009,I went to Nepal.” 如果我们让一个机器学习模型读取这两个句子,并提取叙述者去 Nepal \text{Nepal} Nepal的年份,无论 “ 2009 2009 2009 年” 出现在句子的第六个单词或第二个单词,我们都希望它能认出 “ 2009 2009 2009 年’’ 作为相关资料片段。
- 假设我们训练一个处理固定长度句子的前馈网络。传统的全连接前馈网络会给每个输入特征分配一个单独的参数,所以需要分别学习句子每个位置的所有语言规则。
- 相比之下, 循环神经网络在几个时间步内共享相同的权重,不需要分别学习句子每个位置的所有语言规则。
- 一个相关的想法是使用跨越 1 1 1维时间序列的卷积。
- 这种卷积方法是时延神经网络的基础 ( Lang and Hinton, 1988; Waibel et al., 1989; Lang et al., 1990 \text{Lang and Hinton, 1988; Waibel et al., 1989; Lang et al., 1990} Lang and Hinton, 1988; Waibel et al., 1989; Lang et al., 1990)。
- 卷积操作允许网络跨越时间共享参数,但是浅层的。
- 卷积的输出是一个序列,其中输出中的每一项是相邻几项的函数。
- 参数共享的概念体现在每个时间步中使用的相同卷积核。
- 循环神经网络以不同的方式共享参数。
- 输出的每一项是输出前一项的函数。
- 输出的每一项对先前的输出应用相同的更新规则而产生。
- 这种循环导致参数通过很深的计算图共享。
- 为简单起见,我们说的RNN是指在序列上的操作,并且该序列在时刻 t t t(从 1 1 1到 τ \tau τ)包含向量 x ( τ ) x^{(\tau)} x(τ)。
- 在实践中,循环网络通常在序列的 minibatch \text{minibatch} minibatch上操作,并且 minibatch \text{minibatch} minibatch的每项具有不同序列长度 τ \tau τ。
- 我们省略了 minibatch \text{minibatch} minibatch索引来简化记号。
- 此外,时间步索引不必是字面上现实世界中流逝的时间,也可以是序列中的位置。
- RNN \text{RNN} RNN也可以应用于跨越两个维度的空间数据(如图像),并且当应用于涉及时间的数据时,该网络可具有在时间上向后的连接,前提是将整个序列提供给网络之前能观察到整个序列。
- 本篇章将计算图的想法扩展到包括周期。这些周期代表变量自身的值在未来某一时间步对自身值的影响。这样的计算图允许我们定义循环神经网络。然后,我们描述许多构建、训练和使用循环神经网络的不同方式。
- 本篇章将简要介绍循环神经网络,为获取更多详细信息,我们建议读者参考 Graves (2012) \text{Graves (2012)} Graves (2012) 的著作。
总结
循环与递归网络作为序列建模的两大支柱,不仅拓宽了人工智能处理复杂序列数据的能力边界,也深刻影响了我们对数据内在规律的理解与利用方式。它们通过精巧的网络架构设计,有效捕捉了序列中的时序依赖与结构信息,为众多领域带来了前所未有的性能提升。随着研究的深入与技术的演进,循环与递归网络正不断融合创新,如结合注意力机制、长短期记忆单元( LSTM \text{LSTM} LSTM)、门控循环单元( GRU \text{GRU} GRU)等先进技术,进一步增强了其处理长序列、复杂结构数据的能力。未来,我们有理由相信,这些网络将在更多领域发挥重要作用,推动人工智能技术的持续进步与发展。