Advertisement

《神经网络与深度学习》-循环神经网络

阅读量:

循环神经网络

  • 给网络赋予增强记忆的能力

    • 延时神经元构成的结构体系
    • 包含外源信号信息的非线性动态模型
    • 具有循环连接特征的人工神经元组织
  • 2. 简单循环网络

      • 2.1 循环神经网络的计算潜力
          • 2.1.1 循环神经网络的普遍近似特性
    • 2.1.2 图灵全集性
  • 3. 应用于机器学习领域

      • 3.1 从序列表现为类别型特征
      • 3.2 同步过程中的序列表现为序列表述
      • 3.3 异步过程中的序列表现为序列表述
    • 4. 参数学习

      • 4.1 随时间反向传播算法
      • 4.2 实时循环学习算法
    • 5. 长程依赖问题

      • 5.1 改进方案
  • 6. 以门控机制为基础的循环神经网络

      • 6.1 长短期记忆网络(LSTM)
      • 6.2 LSTM模型的各种衍生形式
      • 6.3 受控循环单元网络
    • 7. 深层循环神经网络

      • 7.1 堆叠循环神经网络
      • 7.2 双向循环神经网络
    • 8. 拓展到图结构

      • 8.1 递归神经网络
      • 8.2 图神经网络

全前馈神经网络,信息单向传递,网络易学习,但能力被减弱。网络输出只依赖于当前的输入。输入输出维数固定。
循环神经网络,具有 短期记忆 能力。其中的神经元可接收 其他神经元 的信息和 本身 的信息。输入输出可不固定。参数学习可通过 随时间反向传播算法 学习。输入序列较长时,错误信息向前传递过长,存在 梯度爆炸梯度消失 问题,即 长程依赖问题 ,一种有效的改进方式: 门控机制
循环神经网络易拓展到更广义的记忆网络模型: 递归神经网络图网络

1. 给网络增加记忆能力

时序数据处理依赖于历史信息的积累。前馈网络不具备长期记忆能力。本文将阐述三种方法以增强网络的记忆能力。

1.1 延时神经网络

在前馈网络的所有非输出层中均增加了延时器装置以记录神经元活动状态的时间序列数据从而增强了对时间序列信息处理的能力

\pmb{h}_t^{(l)} = f(\pmb{h}_t^{(l-1)},\pmb{h}_{t-1}^{(l-1)},\cdot\cdot\cdot,\pmb{h}_{t-K}^{(l-1)})

其中 \pmb{h}_t^{(l)}\in\mathbb{R}^{\pmb{M}_l} 代表了第l层时间序列单元在时间t时的状态水平;各层的时间序列单元激活状态构成了一个完整的前馈网络架构

\pmb{a}^{(l)} = f_l(\pmb{W}^{(l)}\pmb{a}^{(l-1)} + \pmb{b}^{(l)})

1.2 有外部输入的非线性自回归模型

Autoregressive model (AR),即Autoregressive Model(AR),是一种用于表示统计学中时间序列数据的数学方法。它基于其历史数据生成当前值。

\pmb{y}_t = w_0 + \sum_{k=1}^K w_k \pmb{y}_{t-k} + \epsilon_t

其中 K 被视为超参数,在模型中扮演着重要角色。而 w_0, w_1, \dots, w_K 则被视为可学习参数,在网络权重初始化过程中被系统优化以适应特定任务需求。此外,在每个时间步长上引入的噪声项 \epsilon_t, 假设服从均值为零、方差为 \sigma^2 的正态分布,并且其方差值在不同时间步保持恒定。

该系统在离散时间点t接收一个外生变量向量\pmb{x}_t并生成相应的目标向量\pmb{y}_t。该模型利用延迟组件捕获前K_x个外生变量观测值以及前K_y个目标序列的历史信息。在第t时刻的目标向量\pmb{y}_t由下式给出:

\pmb{y}_t = f(\pmb{x}_{t}, \pmb{x}_{t-1}, \dots, \pmb{x}_{t-K_x+1}, \pmb{y}_{t-1}, \dots, \pmb{y}_{t-K_y+1})

其数学表达式如下所示:

\pmb{y}_t = f(\{\pmb{x}_{i}\}_{i=t-K_x+1}^{i=t}, \{\pmb{y}_{i}\}_{i=t-K_y+1}^{i=t})

输出内容

其中 f(\cdot) 表示非线性函数,可以前馈网络,K_xK_y 为超参数。

1.3 循环神经网络

循环神经网络(Recurrent Neural Network, RNN)基于具有自我反馈机制的神经元单元能够处理长短各异的时间序列数据。对于输入序列\pmb{x}_{1:T} = (\pmb{x_1}, \pmb{x_2}, ... ,\pmb{x_t}, ..., \pbbm{x_T})来说,RNN依次更新其带有反馈边的隐藏层活性值\bpm{h}_t

\pmb{h}_t = f(\pmb{h}_{t-1}, \pmb{x}_t)

设初始状态\pmb{h}_0为零向量,并且非线性变换函数f(\cdot)被采用。此公式可被视为前馈网络模型,在数学领域中描述了系统的动态行为。其中隐藏层的激活值\pmb{h}_t被称为状态或隐状态。

在这里插入图片描述

2. 简单循环网络

在仅包含一个隐含层的情况下,
在两层数值型人工神经网络中,
在各相邻层级间存在链接,
而隐含节点间无直接链接;
通过引入反馈链接,
将隐含层级间的信号传递回来,
从而实现了简单的循环架构。

假设输入向量\bm{x}_{t}\in\mathbb{R}^{M}在时间t点处提供给网络,在此时刻网络接收来自外部环境的信息并进行处理;其对应的状态向量\bm{h}_{t}\in\mathbb{D}^{M}不仅与当前输入信号\bm{x}_{t}相关联,并且也受前一个时间步隐藏层状态的影响;递归神经元(SRN)在时间t处的更新方程如下所示:

\bm{s}_{i,t}=f_{i}\left(\sum_{j=1}^{n}\omega_{ij}\sigma(\bm{s}_{j,t-1})+\sum_{k=1}^{m}\alpha_{ik}\sigma(\bm{x}_{k,t})+b_{i}\right)

在这里插入图片描述
在这里插入图片描述

其中\pmb{z}_t 为隐藏层的净输入,\pmb{U} \in \mathbb{R}^{D \times D}状态-状态 权重矩阵,\pmb{W} \in \mathbb{R}^{D \times D}状态-输入 权重矩阵,\pmb{b} \in \mathbb{R}^{D}偏移向量 , 其中 f(\cdot) 表示非线性函数,常为Logistic函数或Tanh函数。
若把每个时刻的状态都看做前馈神经网络的一层,循环神经网络可看做在时间维度上权值共享的神经网络。按时间展开的循环神经网络:

在这里插入图片描述

2.1 循环神经网络的计算能力

前馈神经网络具有模拟任何连续函数的能力,在处理序列数据时表现尤为出色;另一方面,在处理动态系统建模方面展现了独特优势。我们定义一个每个状态节点都与所有其他状态节点之间存在双向连接的完全连接 循环神经网络。其中\pmb{x}_t表示输入向量,在时间步t上的输入信号;输出向量由\pmb{y}_t表示,并且其隐状态由向量\pmb{h}_t表示。该模型中的网络参数包括权重矩阵\pmb{U}\pmb{W}和偏置项\pmb{b}以及输出权重矩阵\pmb{V}等关键组件。

在这里插入图片描述
2.1.1 循环神经网络的通用近似定理

循环神经网络具有逼近能力和强大的表现力。全连接循环网络是任何非线性动力系统 的模型或工具。基于通用逼近定理可进行说明:

在这里插入图片描述
2.1.2 图灵完备

该系统被称为图灵完备(Turing Completeness),它是一种数据操作规则。例如一种编程语言能够执行所有与图灵机(Turing Machine)相同功能的操作,并解答所有可计算的问题。

在这里插入图片描述

故一个完全连接循环神经网络 可以近似解决所有的可计算问题。

3. 应用到机器学习

循环神经网络适用于三类机器学习任务:序列表达分类模式、同步序列间的映射关系以及异步序列间的映射关系。

3.1 序列到类别模式

序列映射至类别模式专门用于处理序列数据进行分类的任务。例如,在文本分类问题中,输入是一个单词的序列,在经过特定处理后会对应于该文本所属的某个类别。

\hat{y} = g(\pmb{h}_T)

也可以将整个序列的所有状态进行平均,做为整个序列的表示:

\hat{y} = g(\frac{1}{T}\sum_{t=1}^{T}\pmb{h}_t)

两种图示:

在这里插入图片描述

3.2 同步的序列到序列模式

基于同步序列到序列的模型专门用于处理具有相同长度输入与输出的序列标注问题,在自然语言处理领域具有重要应用价值。例如,在词性标注任务中(Part-of-Speech Tagging),每个词都需要标记其词性类别。假设输入序列为\pmb{x}_{1:T} = (\pmb{x_1}, \pmb{x_2}, ... ,\pmb{x_t}, ..., \pmb{x_T}) ,输出序列为一个类别 y_{1:T} = (y_1, ... , y_T) 。将输入序列依次输入至循环神经网络模型中会得到不同时刻对应的隐含状态\pmb{h}_1, …, \pmb{h}_T 。每个时间点的隐含状态\pmb{h}_t反映了当前时刻及其之前的历史信息,并作为后续时间点计算的基础参与后续推导过程。

\hat{y}_t = g(\pmb{h}_t), \forall t \in [1, T]

在这里插入图片描述

3.3 异步的序列到序列模式

异步的序列到序列模式 又称编码器-解码器 (Encoder-Decoder)模型,即输入序列和输出序列不需具有严格的对应关系,也不需相同长度。比如机器翻译任务中,输入为源语言单词序列,输出为目标语言单词序列。
假设输入为 \pmb{x}_{1:T} = (\pmb{x_1}, \pmb{x_2}, ..., \pmb{x_T}),输出为 \pmb{y}_{1:M} = (\pmb{y_1}, \pmb{y_2}, ... ,\pmb{x_M}) 异步的序列到序列模式 一般通过先编码后解码的方式来实现。先将样本 x 按不同时刻输入到一个RNN(编码器)中,得到其编码 \pmb{h}_T 。然后再使用另外一个RNN(解码器),得到输出序列 \hat{y}_{1:M} ,为建立输出序列之间的依赖关系,在解码器中通常使用非线性的自回归模型:

在这里插入图片描述

在本研究中,在编码器和解码器之间建立了一种关联关系,在分类模型的基础上实现了对时间序列数据的有效分析。非同步序列到序列模式示例如图所示,在输入数据流中以特定标记(如⟨𝐸𝑂𝑆⟩)标识输入序列的结束位置,并通过虚线将当前时刻的输出结果与下一时刻的数据进行动态交互。

在这里插入图片描述

4. 参数学习

可以采用随机梯度下降算法来训练RNN模型的参数。针对一个样本 (\mathbf{x}, \mathbf{y}) ,其中输入序列 \mathbf{x}_{1:T} 包含 T 个时间步的信息,并包含 T 个特征向量 \mathbf{x}_t (t=1,2,...,T) 。输出序列 \mathbf{y}_{1:T} 包含对应的时间序列数据 \{\mathbf{y}_t | t=1,2,...,T\} 。在每个时间步t处,系统都提供相应的监督信号\mathbf{y}_t ,并在此基础上构建对应的损失函数。

L_t = L(y_t, g(\pmb{h}_t))

其中 g(\pmb{h}_t) 表示t时刻的状态输出,并且L被视为可微分化的损失函数,在交叉熵作为例子的情况下应用广泛。对于整个序列而言,其总损失函数定义为:

L_t = \sum_{t=1}^{T}{L_t}

整个序列的损失函数L基于参数U的变化而变化,并由所有时间点t上损失L_t相对于参数U的变化率总和决定。

\frac{\partial{L}}{\partial{\pmb{U}}} = \sum_{t=1}^{T}\frac{\partial{L}_t}{\partial{\pmb{U}}}

在RNN中涉及递归调用的 f(\cdot) ,因此其参数梯度的计算方式与前馈网络不同,主要有两种主要的方法:基于时序的反向传播(BPTT)算法和**实时循环学习(RTRL)算法.

4.1 随时间反向传播算法

基于时间逆向传播的方法

在这里插入图片描述

通过反向传播算法,在前馈网络架构中进行操作的RNN能够计算出相应的参数梯度。当处理展开展开层时,在这些展开展开层中所共享的所有权重参数的真实导数等于各个展开展开层权重变化率之总和。

计算偏导数 \frac{\partial{L}}{\partial{\pmb{U}}} 先计算时刻t损失函数对参数U的梯度 \frac{\partial{L}}{\partial{\pmb{U}}}
由于参数U与当前时刻t的净输入\pmb{z}_k = \pmb{Uh}_{k-1} + \pmb{Wx_k} + b之间存在关联关系,则时刻t损失函数L_t对于参数u_{ij}的变化率即为:

在这里插入图片描述

其中 \frac{\partial^{+}z_k}{\partial{\pmb{u}_{ij}}} 表示直接偏导数\pmb{z}_k = \pmb{Uh}_{k-1} + \pmb{Wx}_k + b 中保持 \pmb{h}_{k-1} 不变,对 u_{ij} 进行求偏导,得到:

在这里插入图片描述

其中 [\bm{h}_{k-1}]_j 表示第 k-1 时刻隐状态的第 j 维分量;\mathbb{I}_i(x) 则代表除第 i 行元素为 x 外其余元素均为零的一个行向量。

在这里插入图片描述

由以上可得到:

在这里插入图片描述

其矩阵形式:

在这里插入图片描述

参数梯度 得到整个序列的损失函数 L 关于参数 U、权重W、偏置b 的梯度:

在这里插入图片描述
在这里插入图片描述

The computational complexity refers to the amount of resources required to execute an algorithm, and in the context of BPTT (Bidirectional Propagation of Tradients) algorithm, the parameter gradients must be computed through a complete forward pass and a backward pass before being utilized to update the model parameters.

4.2 实时循环学习算法

与基于反向传播的BPTT不同,“实时循环学习”(Real-Time Recurrent earning, RTRL)是一种采用前向传播方式计算误差梯度的方法。假设RNN网络在t+1时刻的状态\pmb{h}_{t+1}由下式定义:

在这里插入图片描述

其中关于参数 u_{ij} 的偏导数为:

在这里插入图片描述

自第一个时间段起,采用RTRL算法演算RNN模型中各时间点的状态值以及相应的偏导数值\frac{\partial h_1}{\partial{\pmb{u}_{ij}}}\frac{\partial h_2}{\partial{\pmb{u}_{ij}}}\frac{\partial h_3}{\partial{\pmb{u}_{ij}}}等。在时间t时可实时求取损失函数L_t对参数矩阵\pmb{u}_{ij}的变化率结果...同样地,在处理权重矩阵\pmb{w}和偏差向量b时也可以实现其相关的梯度求取

RTRL与BPTT算法对比

5. 长程依赖问题

RNN在训练过程中面临的主要挑战是梯度消失或梯度爆炸问题。其难以捕捉时间跨度较大的状态间相互依赖关系。请展开关于BPTT中所涉及的误差项的具体表达式:

在这里插入图片描述

得到:

在这里插入图片描述

再定义:

在这里插入图片描述

得到:

在这里插入图片描述

若 γ > 1,则当时间间隔 t−k 趋近于无穷大时,在指数项 \gamma^{t−k} 中对应的系数值会显著增大,并导致系统出现不稳定现象(即出现所谓的梯度爆炸问题)。另一方面,在时间间隔 t−k 比较大时,在指数项 \gamma^{t−k} 中对应的系数值会显著减小,并这与深度前馈网络中出现的类似问题相吻合(即出现所谓的梯度消失问题)。

在这里插入图片描述

在RNN中通常采用Logistic或Tanh函数作为非线性激活函数,在这些模型中其导数值普遍小于1;因此,在这种情况下对应的权重矩阵范数 ||\pmb{U}|| 值不会过大;当时间差值t - k变得较大时,则会导致\delta_{t,k}趋向于零;从而导致梯度消失现象发生

理论上能够构建跨越较长时间间隔的状态间依存关系;然而由于梯度爆炸或者梯度消失的问题限制;实际学习到的是局部范围内的依存关系;其中时刻 t 的输出变量 y_t 受到时刻 k 的输入变量 \pmb{x}_k 的影响;当两者之间的时间差t - k增大时;普通的RNN架构将难以有效地建模这种长期依存的关系模式;因此这便形成了所谓的长程依赖问题 或者是长期依存网络面临的核心挑战

5.1 改进方案

为了避免出现梯度爆炸或梯度消失的情况,提出了一种直接的方法是选择适当的参数设置,并采用非饱和激活函数以确保 diag(f^{'}(\pmb{z})) \pmb{U}^T \approx1 的条件得到满足。然而这种方法主要依赖于人工经验来调节参数设置,并因此限制了其广泛应用。另外一种有效的方式是通过优化模型结构或改进优化算法来实现。

RNN模型中出现的梯度爆炸现象较难处理,通常采用的方法包括权重衰减梯度截断 等技术手段. 权重衰减 是一种通过在损失函数中加入正则化项来约束模型复杂性的常用方法. 具体而言,通过对参数施加l1l2范数的正则化处理,能够有效限制参数取值范围,从而使得\gamma \leq 1. 另一种常用的方法是将超出预设阈值范围的梯度数值截断为相对较小的数值.

梯度消失是RNN算法中一个显著的问题表现形式。针对这一挑战可采取以下解决方案:一是采用优化技巧;二是通过改进模型结构(使模型性能提升),例如设置\pmb{U} = \pmb{I}并确保\frac{\partial \pmb{h}_t}{\partial \pmb{h}_{t-1}} = \pmb{I}成为单位矩阵的方式进行优化

\pmb{h}_t = \pmb{h}_{t-1} + g(\pmb{x}_t; \theta)

其中 h_th_{t-1} 之间呈现的是一个严格的线性依存关系,在权重系数设定为1的情况下,并未出现任何梯度爆炸或消失的问题;然而这一设计也牺牲了神经元在其反馈回路中的非线性激活特性这一关键功能点;因此这必然会导致整体模型表达能力的降低。

\pmb{h}_t = \pmb{h}_{t-1} + g(\pmb{x}_t, \pmb{h}_{t-1}; \theta)

其中 h_th_{t-1} 包含线性关系与非线性关系,并且能够缓解梯度消失的问题。仍然存在一些问题:

梯度爆炸现象:我们定义 \pmb{z}_k = \pmb{Uh}_{k-1} + \pmb{Ux}_k + \pmb{b} 作为时刻 k 对应于函数 g(\cdot) 的输入参数,在误差项的计算过程中:

在这里插入图片描述

梯度可能过大,存在梯度爆炸问题。

  • 记忆容量:通过不断持续积累新的输入信息进行积聚后会达到一定程度并产生饱和现象。 考虑到g(⋅)被定义为Logistic函数,则随着时间t的增长过程会导致h_t持续增大进而使得整个隐状态空间出现饱和现象。 即表明隐状态h_t能承载的信息有限度随着记忆单元中所积累的内容数量逐步增加反而会导致其中残留的信息量逐渐减少。 利用门控机制改进模型能够有效解决上述两个问题。

6. 基于门控的循环神经网络

为改善RNN的长程依赖问题 ,在公式:

\pmb{h}_t = \pmb{h}_{t-1} + g(\pmb{x}_t, \pmb{h}_{t-1}; \theta)

本研究采用了门控机制 来调节信息积累的速度。具体而言,在这一过程中通过主动筛选来加入新数据并删除旧数据。这类网络则被称为 基于门控的循环神经网络 (Gated RNN)。

6.1 长短期记忆网络(LSTM)

长短期记忆网络(Long Short-Term Memory Network, LSTM)是RNN的一种发展型网络结构,在处理序列数据时表现出色。该网络通过创新的门控机制,在优化算法性能和提升模型训练效率方面取得了显著成效。在以下数学表达式中,分别对信息流和记忆单元的更新方式进行改进:

\pmb{h}_t = \pmb{h}_{t-1} + g(\pmb{x}_t, \pmb{h}_{t-1}; \theta)

新增的内部状态 LSTM模型设置了一个新增的中间态(internal state)\pmb{c}_t \in \mathbb{R}^D用于通过线性机制传递循环信息,并通过非线性变换将信息传递给隐藏层的外部状态\pmb{h}_t \in \mathbb{R}^D。其中内部的状态向量\pmb{c}_t ∈ ℝ^D通过特定机制计算得出:

在这里插入图片描述

其中 \bm f_t,\bm i_t,\bm o_t\subseteq[0,1]^D\subseteq\mathbb R^d\subseteq\mathbb R^m\subseteq\mathbb R^n\subseteq\mathbb R^q\subseteq\mathbb R^P\times\times\times\times\times\times\times\times\times\times\times×××××××××××××××⊆⊆⊆⊆⊆⊆⊆⊆⊆⊆⊆⊆⊆⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊕⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗⊗$表示...

在这里插入图片描述

对于任意时间步长 t ,在LSTM网络中存在一个内部状态向量 \pmb{c}_t ,该向量通过神经计算过程持续存储着一直到目前为止的历史信息。

数字电路中的门控网络用于实现基于二值变量{0, 1}的信息处理功能,在此体系下当取值为0时处于关闭状态且不参与信息传递过程。基于这一特点,LSTM网络通过引入其特有的Gating Mechanism(控制网络)来实现信息的有效流动与抑制管理能力的提升。

在这里插入图片描述

文中包含三个关键组件:遗忘机制(\pmb{f}_t \in [0,1]^D)、输入机制(\pmb{i}_t \in [0,1]^D)和输出机制(\pmb{o}_t \in [0,1]^D)。这三个核心环节各自承担的任务:

  • \pmb{f}_t \in [0,1]^D 为遗忘机制,在调节前一时刻的状态时负责决定遗弃多少信息。
    • \pmb{i}_t \in [0,1]^D 为输入机制,在生成新的候选信息时负责保留多少新数据。
    • \pmb{o}_t \in [0,1]^D 为输出机制,在更新当前状态时决定传递给外部状态的信息量。

\pmb{f}_t = 0,\pmb{i}_t = 1 时,记忆单元将历史信息清空,将候选状态写入,但此时记忆单元 \pmb{c}_t 依然和上一时刻的历史信息相关。
\pmb{f}_t = 1,\pmb{i}_t = 0 时,记忆单元将复制上一时刻的内容,不写入新的信息。
LSTM的“门”是“软门”,取值在 (0,1) 之间,并以一定的比例通过信息,三种门的计算如下,其中 \sigma(\cdot) 为 Logistic函数,其输出区间为 (0,1),\pmb{x}_t 为当前时刻的输入,\pmb{h}_{t-1} 为上一时刻的外部状态:

在这里插入图片描述

LSTM的循环单元结构如图:

在这里插入图片描述

其计算过程为:

  1. 基于上一时刻的外部状态\pmb{h}_{t-1}与当前时刻的输入\pmb{x}_t的信息融合后,在神经网络中求得三个控制参数(遗忘度\pmb{f}_t、更新度\pmb{i}_t和输出度\p_t^*)以及候选的状态细胞值\hat{\pmb{c}}_t
  2. 通过遗忘度\pmb{f}_t与输入度\pms{i}_t共同作用于记忆单元\hat{\bm c}^*_ t, 实现对当前记忆单元值的有效更新。
  3. 借助输出度将内部隐层的状态信息准确地传递至下一时间步的状态细胞值计算过程中。

基于LSTM循环单元设计的该网络系统能够有效构建长时距的序列依赖关系。为简洁起见,在此给出该LSTM循环单元的基本公式。

在这里插入图片描述

其中 \pmb{x}_t\in\mathbb{R}^M 代表当前时间步的输入,在线性变换矩阵中涉及到了权重矩阵 \pmb{W}\in\mathbb{R}^{4D\times(D+M)} 和偏置向量 \pmb{b}\in\mathbb{R}^{4D} 构成网络参数。

记忆 循环神经网络的隐状态 h 存储了历史信息,可以看做是一种 记忆
在简单RNN中,隐状态 h 每个时刻都会被重写,看做短期记忆 (Short-Term Memory)。
在神经网络中,长期记忆 (Long-Term Memory)可看做是网络参数,隐含从训练数据中学到的经验,更新周期远慢于短期记忆
而在LSTM中,记忆单元 c 可以在某个时刻捕捉到某个关键信息,并有能力将此关键信息保存一定的时间。记忆单元c 中保存信息的生命周期要长于短期记忆 h ,短于长期记忆 ,因此称为长短期记忆 (Long Short-Term Memory)。

在这里插入图片描述

6.2 LSTM网络的各种变体

主流的LSTM通过三个门来调节其内部状态、遗忘历史信息、影响输出信息以及处理输入信息的数量。调整门控机制后会衍生出一系列LSTM变体。

无遗忘门的LSTM 最早的LSTM是没有遗忘门的,内部状态的更新为:

在这里插入图片描述

记忆单元 c 继续持续增长。当输入序列过长时,在达到一定长度后将导致记忆单元容量达到饱和状态,并显著影响 LSTM 的性能表现。

该模型中的peephole 通道不仅受到输入 \pmb{x}_t 和前一时间步隐藏状态 \pmb{h}_{t-1} 的直接影响,并且还受到前一时间步记忆胞体 \pmb{c}_{t-1} 的影响,并加以处理。

在这里插入图片描述

其中 \pmb{V}_i、\pmb{V}_f、\pmb{V}_o 为对角矩阵。

结合输入端与遗忘端 LSTM模型中输入端与遗忘端之间存在一定程度的冗余性。为了降低LSTM的计算复杂度,在减少模型参数的同时优化其性能效果, 我们将输入端与输出端进行整合, 定义为\pmb{f}_t = 1 - \pmb{i}_t; 然后按照此定义的方式更新内部状态信息

在这里插入图片描述

6.3 门控循环单元网络

门控循环单元 (Gated Recurrent Unit, GRU)网络比 LSTM 更为简洁。
GRU 网络通过门控机制实现对信息更新的调控方式;相较于 LSTM, GRU 未添加额外的记忆细胞,在公式:

\pmb{h}_t = \pmb{h}_{t-1} + g(\pmb{x}_t, \pmb{h}_{t-1}; \theta)

在上文中,在介绍完门控机制之后,在介绍其工作原理时提到:引入一个控制机制(更新门),该机制负责决定当前状态如何从历史状态下继承信息以及如何从候选状态下吸收新信息:具体而言,在历史状态下继承的信息量和新信息的接受能力均受到该控制机制的调节。

由以下两部分组成的当前时刻的细胞状态 \boldsymbol h_t 由两部分组成:第一部分是遗忘门向量 \boldsymbol z_t 与前一个时刻细胞状态的按元素乘积;第二部分则通过激活函数作用于输入向量和前一个时刻细胞状态的线性组合,并通过乘以(1− \boldsymbol z_t)来决定其贡献。
当前时刻的遗忘门向量 \boldsymbol z_t 由两部分组成:第一部分是由输入向量和前一个时刻细胞状态的线性组合经过sigmoid函数激活得到的结果;第二部分类定了前一个时刻细胞状态对该时刻遗忘门的影响。

其中 \pmb{z}_t \in [0,1]^D 表示更新门。在LSTM模型中,输入与输出相互补充且存在冗余;而GRU通过更新门来平衡输入与遗忘之间的关系。

  • 当时间步t的状态指示变量\pmb{z}_t=0时,在当前状态与上一时刻的状态间存在非线性函数关系;
    • 当时间步t的状态指示变量\pmb{z}_t=1时,在当前状态与上一时刻的状态间存在线性函数关系。

在GRU中,函数 g(\pmb{x}_t, \pmb{h}_{t-1}; \theta)的定义为:

在这里插入图片描述

其中 \pmb{\hat{h}_t} 表示当前时刻的候选状态, \pmb{r}_t \in [0,1]^D 为重置门:

在这里插入图片描述

用来控制候选状态 \pmb{\hat{h}_t} 的计算是否依赖上一个时刻的状态 \pmb{h}_{t-1}

\bm r_t=0的情况下(即),预测的状态\hat{\bm h_t}仅由当前输入\bm x_t决定而不受历史信息的影响。\n\n在\bm r_t=1的情况下(即),预测的状态\hat{\bm h_t}不仅依赖于当前输入\bm x_t还结合了前一时刻的状态\bm h_{t-1}表现出与基本RNN相似的行为.

综上,GRU网络的状态更新方式为:

\pmb{h}_t = \pmb{z}_t \bigodot \pmb{h}_{t-1} + (1-\pmb{z}_t) \bigodot \pmb{\hat{h}}_t

  • \pmb{z}_t=0\pmb{r}=1时, GRU模型等价于简单RNN模型;
  • \pmb{z}_t=0\pmb{r}=0时, GRU的状态\pmb{h}_t取决于当前输入而不受历史信息\pmb{h}_{t-1}的影响;
  • \pmb{z}_t=1时, GRU的状态保持不变,即\pmb{h}_{t}=\pmb{h}_{t-1},完全不受当前输入\pmb{x}_t的影响。

GRU网络的循环单元结构:

在这里插入图片描述

7. 深层循环神经网络

如果将深度定义为网络中信息传递路径的长度,则可以从另一个角度看待该问题:在某些情况下RNN既可以被视为深层网络也可以被视为浅层网络。从另一个角度看,在某些情况下RNN既可以被视为深层网络也可以被视为浅层网络。
从另一个角度看,在某些情况下RNN既可以被视为深层网络也可以被视为浅层网络。
因为当我们将RNN在时间维度上进行展开时,则会发现不同时间点的状态之间存在较长的信息传递路径;而同一时刻输入与输出之间的信息传递则较为直接。
基于此观察结果,则可以推断出:为了增强模型的表现能力,则可以通过扩展同一时刻输入与输出之间的信息传递路径来实现。
例如,在现有结构基础上增加隐层节点的数量能够进一步提升模型性能。
具体而言,则可以通过扩展隐状态到输出层的信息传递路径\pmb{h}_t → \pmb{y}_t以及输入\pmb{x}_t → \pmb{h}_t到隐状态的信息传递深度来实现这一目标。

7.1 堆叠循环神经网络

常见且简单的做法是通过将多个RNN层叠加构建堆叠循环神经网络(Stacked Recurrent Neural Network, SRNN)。一种由单个简单的循环网络构成的叠加结构也可被称为循环多层感知器(Recurrent Multi-Layer Perceptron, RMLP)。其在时间维度上的展开形式如下所示:

在这里插入图片描述

l层网络的输入由前一层网络输出生成。定义为,在时刻t时第l层的隐状态被表示为\pmb{h}_t^{(l)}:

在这里插入图片描述

其中\pmb{U}^{(l)}\pmb{W}^{(l)}\pmb{b}^{(l)} 为权重矩阵和偏置向量,\pmb{h}_t^{(0)} = \pmb{x}_t

7.2 双向循环神经网络

在特定任务中,某一刻的输出不仅受过去时刻信息的影响,同时也受后续时刻信息的影响.例如,给定一个句子,其中某个词的词性由其周围的语境决定.因此,在这些任务中,可引入一个按时间逆序传递信息的网络层以增强模型能力.假设第一层按照时间顺序运行,第二层按照时间逆序运行,则时刻t处的状态定义为 \pmb{h}_t^{(1)}\pmb{h}_t^{(2)}.

在这里插入图片描述

其中\bigoplus 为向量拼接操作。

在这里插入图片描述

8. 拓展到图结构

假设我们将RNN在时间维度上进行展开,将其隐层的状态\pmb{h}_t分别视为一个个独立的节点,则这些节点构成了一个典型的链式结构。每一个特定时刻t所在的层接收上一层相应位置的前向信息(即Message),经过自身状态的更新后,并进而向下一个时间层传播这一信息。值得注意的是,这种链式结构在本质上属于一种特殊的图论模型,在此基础上我们可以较为方便地将基于消息传递的思想拓展至任意复杂的图状数据处理场景中去。

8.1 递归神经网络

Recurrent neural networks (RNNs) are an extension of the recurrent model within a directed acyclic graph (DAG). They are typically applied to hierarchical tree-like structures.

在这里插入图片描述

三个隐藏层分别为\pmb{h}_{1}\pmb{h}_{2}\pmb{h}_{3}。其中\pmb{h}_{1}是基于两个输入层单元体 \{\bm{x}_{1}, \bm{x}_{2}\} 的计算结果生成的。
对于任何一个单元体 \bm{h}_{i} 来说,在其父单元体集合 \pi_{i} 中的所有单元体会向该单元体发送消息,并促使该单元体更新自身的状态。

\pmb{h}_i = f(\pmb{h}_{\pi_i})

其中\pmb{h}_{\pi_i}由集合\pi_i中所有节点状态进行拼接组成,并且f是一个与节点位置无关、具有非线性特性的函数。其一般形式通常可表示为:

在这里插入图片描述

当递归神经网络的结构简化为线性序列结构(图b)时,在该架构下等价于标准简单RNN。 递归神经网络主要作为自然语言处理的核心工具,在句子层次上建模上下文关系具有重要意义。 同样地,一种有效的改进方法是采用门控机制来解决长距离依赖问题,在这种框架下可构建树状长短期记忆架构(Tree-Structured LSTM)。 该模型通过将LSTM思想应用于树状网络以增强处理能力,并实现更为灵活的数据结合方式。

8.2 图神经网络

在现实场景中,大量数据呈现出图结构特征。这些领域包括知识库建模、社交互动分析以及分子间作用关系等多个实例。相比之下,传统的前馈和反馈神经网络架构在处理这类数据时面临挑战。该方法通过模拟消息传递机制,在图数据上实现了有效的特征学习。对于任意给定的图结构 G(V,\epsilon) ,其中 V 表示顶点集合而 \epsilon 代表边集合。每个顶点 v 的状态由神经元向量 \pmb{h}^{(v)} 表示。初始化时,节点 v 的状态通常取其输入特征向量 \pmb{x}^{(v)} 。在此框架下,节点通过接收来自邻居节点的消息来触发自身状态的更新过程:

在这里插入图片描述

其中 N(v) 表示节点 v 的邻居,\pmb{m}_t^{(v)}表示在第 t 时刻节点 v 收到的信息,\pmb{e}^{(u,v)} 为边e^{(u,v)}上的特征。
该公式是同步的更新方式,所有结构同时接受信息并更新自己的状态。对有向图,异步更新更有效,如RNN或递归神经网络。整个图更新后T此后,可通过一个读出函数 g 来得到整个网络的表示:

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~