Tensorflow:实战Google深度学习框架第八章

TensorFlow publisher01 21℃

一介绍

该部分主要讲述的是循环神经网络, 主要分为三部分来介绍, 循环神经网络的介绍、长短时记忆网络(LSTM)结构,对应的一些变种。

二循环神经网络

先前的章节讲述的全连接神经网络,卷积神经网络,这些网络都无法利用数据中时间序列信息等问题。因此循环神经网络被提出, 循环神经网络挖掘数据中的时序信息以及语义信息的深度表达能力被充分利用。


循环神经网络经典结构示意图

从上图可以看出, 循环神经网络的主体结构A的输入除了来自输入层xt,还有一个循环的边来提供上一时刻的隐藏状态h(t-1)。在每一时刻,循环神经网络的模块A在读取了Xt和h(t-1)之后会产生新的隐藏状态h(t), 并产生本时刻的输出O(t)。由于模块A中的运算和变量在不同时刻是相同的,因此循环神经网络理论上是可以被看作是同一神经网络结构被无限复制的结果。正如卷积神经网络在不同的空间位置共享参数,循环神经网络是在不同时间位置共享参数, 从而能够使用有限的参数处理任意长度的序列。


循环神经网络前向传播的计算过程示意图

三 长短时记忆网络(LSTM)结构

循环神经网络通过保存历史信息来帮助当前的决策, 但同时也带来更大的技术挑战—长期依赖问题。因此引进了LSTM的概念,LSTM主要由三部分组成,输入门,遗忘门,输出门。


LSTM单元结构示意图

遗忘门:作用是让循环神经网络忘记之前没有用的信息,比如某地原来是绿水蓝天,但后来被污染。在看到被污染后,应该忘记之前绿水蓝天的状态。遗忘门会根据当前的输入xt和上一时刻h(t-1)计算一个维度为n的向量:f=sigmoid(w_1x +w_2h),它在每一维度上的值都在(0,1)范围内,再将上一时刻的状态c_{t-1}与f向量按位相乘,那么f取值接近0的维度上的信息就会被忘记,而f取值接近1的维度上的信息会保留。

输入门:在循环神经网络忘记了部分之前的状态后,它还需要从当前的输入补充最新的记忆。比如当看到文章中提到环境被污染后,模型需要将这个信息写到新的状态中。

输出门:LSTM结构在计算得到新的状态c_t后需要产生当前时刻的输出,这个过程是通过输出门完成的。

\begin{align} z &= tanh(W_z[h_{t-1}, x_t])        \tag{输入值} \\ i  &= sigmoid(W_i[h_{t-1}, x_t])   \tag{输入门} \\ f  &= sigmoid(W_f[h_{t-1},x_t])    \tag{遗忘门} \\o &= sigmoid(W_o[h_{t-1},x_t])    \tag{输出门} \\c_t &= f * c_{t-1} + i * z     \tag{新状态} \\h_t &= o * tanhc_t \tag{输出} \end{align}

其中W_z,W_i,W_f,W_o是4个维度为[2n,n]的参数矩阵。


LSTM

四 循环神经网络的变种

4.1 双向循环神经网络

经典的神经网络中,状态的传输是从前往后单向的。然而在有些问题中,当前时刻的输出不仅和之前的状态有关系,也和之后的状态有关系。比如预测一个语句中缺失的单词不仅需要根据前文来判断,也需要根据后面的内容。双向神经网络是由俩个独立的循环神经网络叠加在一起组成的。输出由这俩个循环神经网络的输出拼接而成。


双向循环神经网络结构示意图

4.2 深层循环神经网络

为了增强模型的表达能力,可以在网络设置多个循环层,将每层循环网络的输出传给下一层进行处理。和卷积神经网络相似,每一层循环体中参数是一致的,而不同层中的参数可以不同。


深层循环神经网络

4.3 循环神经网络的dropout

在卷积神经网络上使用dropout的方法。通过dropout可以让卷积神经网络更加健壮。在循环神经网络中使用dropout也有相同的功能。卷积神经网络中只在最后的全连接层中使用dropout,循环神经网络一般只在不同层使用dropout,而不在同一层的循环体间使用。


dropout


循环神经网络样例应用

转载请注明:Python量化投资 » Tensorflow:实战Google深度学习框架第八章

喜欢 (0)or分享 (0)