Advertisement

循环神经网络

阅读量:

循环神经网络(RNNs

1 RNN结构

Recurrent neural network (RNN) 为解决何种类型的问题而存在?通常情况下,事件本身的性质由其前后信息所决定。为了利用这类数据以获得有意义的结果,则需要一种能够访问数据先前知识的技术。因此,在此需求下产生了Recurrent neural network (RNN)

在最原始的情况下,RNN的网络结构如下图:

在这里插入图片描述

其中U代表输入层至隐含层的权值矩阵,o为输出层数值,V代表隐含层至输出层的权值矩阵,权值矩阵W则以上一次迭代结果作为当前迭代输入。每次迭代时都会更新权值W,如此反复循环,这或许就是循环神经网络建立的基础机制。

当然,我们为了方便理解RNN的话,可以将我们RNN网络展开:

在这里插入图片描述

在该网络体系中,在时刻t接收输入后,隐层变量设为S_t、输出变量设为O_t. 通过观察可以发现,在计算过程中隐层变量不仅由当前时刻的输入x_t决定、还受到前一个时间步隐层状态的影响、即s_{t-1}. 具体来说、循环神经网络的运算机制可以通过以下两个方程来描述:O_t = g(V \cdot S_t) S_t = f(U \cdot X_t + W \cdot S_{t-1})

2 双向RNN

鉴于我们之前对RNN模型的介绍,在这种情况下其信息传递方向仅限于单向。这确实让人感到不满。在传统的学习方式中,老师出的题目都是要结合上下文信息来进行解答。然而,在现代科技的发展下这种单一方向的信息处理显得不够合理。于是为了克服这一局限性便出现了双向RNN结构

从结构上看,在序列模型领域中,
基于双向的信息流设计是一种重要的研究方向。
与传统的单向递归神经网络相比,
双向递归神经网络(BiBRNN)能够充分挖掘序列数据中的多维度特征。
具体而言,
该模型由两个方向相反的递归神经网络组成,
它们共同连接到一个输出层,
从而实现了对前后文信息的有效融合。

3.RNN的梯度消失和梯度爆炸

从上面所述可知,在目前的研究中

该算法通过分析数据特征实现了对目标函数的精确逼近。
在现有框架下构建了高效的数据处理模型。
该系统设计充分考虑了各子模块间的协同工作模式。
基于此方法构建了多层递进式的网络架构。
研究者对算法进行了深入的理论推导与实验验证。
基于此模型实现了对复杂数据序列的有效预测能力。

您期待着已经完成了链接之后的内容学习。也可能会感到惊讶:原来RNN也会遇到这种问题呀!运用了BPTT算法来分析后发现,梯度消失和爆炸的问题同样不容忽视。

有问题那么就有了对策,接下来就是对策:LSTM闪亮登场。

###4. LSTM

针对梯度消失问题而言, LSTM(Long short-term memory)被提出. 我们将深入探讨其内部机制.

在这里插入图片描述

感觉有点耳目一新吗?LSTM 实际上是通过将 RNN 模型中的隐藏层神经元进行深入分析后得出的一种更为复杂的架构设计。

感觉有点耳目一新吗?LSTM 实际上是通过将 RNN 模型中的隐藏层神经元进行深入分析后得出的一种更为复杂的架构设计。

先对其中结构进行简要介绍:

这些门控单元(Input Gate, Output Gate, Forget Gate)本质上是权重参数的一种形式,在电路学中可类比为开关机制。当其数值达到1时,则表明该开关处于闭合状态(flow unblocked),而数值为0则表示完全开启(flow blocked)。如果数值处于(0,1)区间内,则表明有一定程度的流量能够流通(degree of flow allowed)。这种数值范围的具体实现依赖于Sigmoid函数这一非线性激活函数的作用机制。

Cell代表当前MemoryBlock的状态,相当于原始RNN中的隐藏层神经元

在图中可以看到多个 Activation Functions(以小圆圈加sigmoid曲线的形式呈现)。每个 Activation Function 的选择都遵循着统一的标准。通常情况下,在Input、Output和Forget门单元中采用sigmoid函数;而对于Input单元以及Cell状态,则采用tanh函数。

其具体记忆更新的方式如下:

在这里插入图片描述

5.GRU

Gated Recurrent Unit(GRU)属于Recurrent Neural Networks(RNN)的一种变体形式。相较于Long Short-Term Memory(LSTM),GRU采用了不同的机制来更新细胞状态。通过对具体内部架构的深入剖析与比较研究,我们可以更好地理解两者的异同点以及各自的适用场景。

GRU 的具体结构与对应的公式如下:

在这里插入图片描述

在其中,在时间序列建模中

复制代码
    区别
    1)对memory 的控制
    LSTM: 用output gate 控制,传输给下一个unit
    GRU:直接传递给下一个unit,不做任何控制
    2)input gate 和reset gate 作用位置不同
    LSTM: 计算new memory c^(t)时 不对上一时刻的信息做任何控制,而是用forget gate 独立的实现这一点
    GRU: 计算new memory h^(t)时利用reset gate 对上一时刻的信息 进行控制。
    
    相似
    最大的相似之处就是, 在从t 到 t-1 的更新时都引入了加法。
    这个加法的好处在于能防止梯度弥散,因此LSTM和GRU都比一般的RNN效果更好。

通过大量实验对比发现, GRU 相比 LSTM 来说, 参数量更为简洁, 在提升模型性能的同时显著减少了计算复杂度. 经过深入分析可以看出, GRU 在防止过拟合方面表现更为优异. 因此, 当面对训练数据较为有限的情况时, 可以考虑采用 GRU 模型以获得更好的训练效果.

6 Text-RNN原理

首先,我们来直接看作者提出的第三个模型:

在这里插入图片描述

Text-RNN的结构:降维—>BiLSTM—>concat输出—>平均—>softmax

从结构上面简单来讲,就是根据BiLSTM做文本分类工作。

7 Recurrent Convolutional Neural Networks(RCNN)原理

在这里插入图片描述

RCNN结构:input—>embedding—>RNN+CNN—>max pooling—>Dense+softmax

它用左侧文本和右侧文本学习句子或文档中的每个单词表示:

当前单词被用来表示为[left_side_context_vector, current_word_embedding, right_side_context_vector]

对于左侧段落中的内容,在编码过程中会采用循环结构。具体来说,在每一步中会将当前词经过非线性转换得到的结果与左侧上一词结合起来;同时,在右侧段落中也会有类似的上下文内容。

在左侧文本中,采用循环结构进行处理:前一词进行非线性转换,并结合左侧前一文本;这与右侧文本相仿。

全部评论 (0)

还没有任何评论哟~