深度学习-7.循环神经网络RNN

逐渐偏重于科普而非技术

展开计算图

对于一个动态系统 s ( t ) = f ( s ( t − 1 ) ; θ ) s^{(t)}=f(s^{(t-1)};\theta) s(t)=f(s(t1);θ) s ( t ) s^{(t)} s(t)是系统的状态
展开图如下所示

f
f
f
s . . .
s _ t
s_t+1
s . . .

RNN

基于上面所说到的计算展开图和参数共享的思想,我们可以设计各种循环神经网络。

  1. 每个时间步都有输出,且隐藏单元之间有循环连接的循环网络
graph LR
x--U-->B((h))--W-->B((h))--V-->C((o))-->D((L))-->E((y))

展开图如下(mermaid流程图画得有点奇怪)

W
U
V
U
V
U
V
W
W
W
...
h2
x2
o2
L2
y2
x3
h3
o3
L3
y3
x4
h4
o4
L4
y4
...
  1. 每个时间步都有输出,只有当前时刻的输出到下一时刻的隐藏单元之间有循环连接
U
V
W
x
h
o
L
y

展开图如下(mermaid流程图画得更奇怪了)

W
U
V
U
V
U
V
W
W
W
...
h2
x2
o2
L2
y2
x3
h3
o3
L3
y3
x4
h4
o4
L4
y4
...

这种循环神经网络不能模拟通用图灵机,因为它缺少隐藏到隐藏的循环连接
3. 隐藏单元之间有循环连接,但只有到整个序列最后才产生单个输出

W
W
W
V
U
U
U
...
h1
h2
h3
o
y
x1
x2
x3

导师驱动过程和输出循环网络

由输出反馈到模型而产生循环连接的模型可用导师驱动过程进行训练。
可以在缺乏隐藏到隐藏连接的模型中避免通过时间反向传播。
它不再使用极大似然准则,而是将下一个时刻的真实值作为输入。

计算循环神经网络的梯度

使用BPTT算法可以计算RNN的梯度

双向RNN

如下图所示,典型的双向循环神经网络意图将输入序列 x x x映射到目标序列 y y y,在每个步骤 t t t上具有损失 L ( t ) L^{(t)} L(t)。循环性 h h h在时间上向前传播信息(向右),而循环性 g g g在时间上向后传播信息(向左)。因此在每个点 t t t,输出单元 o ( t ) o^{(t)} o(t)可以受益于关于过去和将来的两重相关概要。
请添加图片描述

深度循环网络

循环神经网络可以通过许多方式变得更深,例如隐藏循环状态可以被分为具有层次的组;可以向输入到隐藏、隐藏到隐藏以及隐藏到输出的部分引入更深的计算(如MLP);可以引入跳跃连接来缓解路径延长的效应。

递归神经网络

递归神经网络是一种树形结构,是RNN的一种扩展,现已成功应用在了自然语言处理和计算机视觉等领域,其潜在用途是能够学习推论。
递归神经网络有一个明显的优势,对于同样长度的序列,网络深度可以急剧地减小到log级别,这样有可能解决长期依赖的问题。但其面临的一个难点是如何以一个最佳的方式构造树。现有的解决办法是使用不依赖数据的树结构,如平衡二叉树。

长期依赖的挑战

循环神经网络会产生一些数学上的挑战,根本问题是经过许多阶段传播后的梯度趋向于消失(大多数情况)或趋向于爆炸(很少出现,但影响很大)。

回声状态网络

h ( t ) h^{(t)} h(t) h ( t + 1 ) h^{(t + 1)} h(t+1)的权重映射以及从 x ( t ) x^{(t)} x(t) h ( t ) h^{(t)} h(t)的输入权重映射是循环神经网络种最难学习的参数。研究者提出的避免这种困难的方法是设定隐藏单元,使其能很好地捕捉过去输入历史,并且只学习输出权重。
回声状态网络ESN以及流体状态机LSM分别独立地提出了这种想法。两者其实是类似的,只不过后者使用脉冲神经元而不是ESN中的连续隐藏单元。这两种方式头被称为储层计算,因为隐藏单元形成了可能不获输入历史不同方面的临时特征池。

渗漏单元和其他多时间尺度的策略

时间维度的跳跃连接

增加从遥远过去的变量到目前变量的连接直接连接是得到粗时间尺度的一种办法。

渗漏单元和一系列不同时间尺度

设置线性自连接单元可以使导数乘积接近1,连接权重设置为 α \alpha α,当 α \alpha α接近1时,欢动平均值能记住过去很长一段时间的信息,而当 α \alpha α接近0时,关于过去的信息被迅速丢弃。
渗漏单元在回声状态网络中也很有用。

删除连接

组织多个时间尺度上的RNN状态也是一个不错的方法,能使信息在较慢的时间尺度上更容易地长距离流动。

长短期记忆和其他门控RNN

LSTM

LSTM即长短时记忆神经网络,它除了外部的RNN循环之外,还具有内部的LSTM细胞循环,因此它不是简单地向输入和循环单元的仿射变换之后施加一个逐元素的非线性。与普通的循环网络类似,每个单元有相同的输入和输出,但也有更多的参数和控制信息流动的门控单元系统。最重要的组成部分是状态单元 s i ( t ) s^{(t)}_i si(t),与渗漏单元有类似的线性自环。然而此处自环的权重由遗忘门 f i ( t ) f^{(t)}_i fi(t)控制,由sigmoid单元将权重设置为0和1之间的值。
请添加图片描述
元胞框图如上所示。

GRU(门控循环单元)

与LSTM不同,GRU的每个门控单元同时控制以往银子和更新状态单元的决定。复位门和更新门能独立地忽略状态向量的一部分。更新门像条件渗漏累计器一样可以线性门控任意维度,从而选择将它复制或完全由新的目标状态值替换并完全忽略它。复位门控制当前状态中哪些部分用于计算下一个目标状态,在过去状态和未来状态之间引入了附加的非线性效应。

优化长期依赖

截断梯度

强非线性函数往往倾向于非常大或非常小的梯度,他们的目标函数往往存在着一个“悬崖”,函数值在比较小的区间内会急剧变化。如果使用常规的优化函数或不变的学习率,优化函数的损失大小会急剧增大或减小,呈现为Inf或Nan。
一种有效的解决方式是设置一个范数上界,当梯度高于阈值时将其截断。

引导流信息正则化

梯度截断能够处理梯度爆炸问题,但不能解决梯度消失,为此又产生了一些新的想法。
例如在展开循环架构的计算图中,沿着弧边相关联的梯度乘积接近1的部分创建路径。实现这一点的方式是使用LSTM以及其他门控机制。
另一个想法就是使用正则化和约束参数来引导信息流。特别是即使损失函数只对序列尾部的输出做出惩罚,我们也希望梯度向量 ∇ h ( t ) L \nabla_{h^{(t)}}L h(t)L ∇ h ( t ) L ∂ h ( t ) ∂ h ( t − 1 ) \nabla_{h^{(t)}}L\frac{\partial h^{(t)}}{\partial h^{(t-1)}} h(t)Lh(t1)h(t)一样大。在此目标下,提出了正则项:
Ω = ∑ t ( ∣ ∣ ( ∇ h ( t ) L ) ∂ h ( t ) ∂ h ( t − 1 ) ∣ ∣ ∣ ∣ ∇ h ( t ) L ∣ ∣ − 1 ) 2 \Omega=\sum_t(\frac{||(\nabla_{h^{(t)}}L)\frac{\partial h^{(t)}}{\partial h^{(t-1)}}||}{||\nabla_{h^{(t)}}L||} - 1)^2 Ω=t(h(t)L(h(t)L)h(t1)h(t)1)2
计算这一梯度的正则项可能有些困难,但后向传播向量 ∇ h ( t ) L \nabla_{h^{(t)}}L h(t)L也可以考虑为恒值作为近似。
这种方法的一个主要弱点是在处理数据冗余的任务时如语言模型,它并不像LSTM一样有效。

外显记忆

知识的种类繁多,有些知识是隐含的、潜意识的并且难以用语言表达,而神经网络擅长存储隐性知识,但难以记住事实。被存储在神经网络的参数中之前,随机梯度下降需要多次提供相同的输入数据进行训练,但即便如此,这些输入也不会被特别精确地存储,为了解决这一问题,记忆网络便出现了。
例如神经网络图灵机,不需要明确地监督指示采取哪些行动而能学习从记忆单元读写任意内容,并通过使用基于内容的软注意机制等进行端到端的训练。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. ARIMA 2. SARIMA 3. VAR 4. Auto-ARIMA 5. Auto-SARIMA 6. LSTM 7. GRU 8. RNN 9. CNN 10. MLP 11. DNN 12. MLP-LSTM 13. MLP-GRU 14. MLP-RNN 15. MLP-CNN 16. LSTM-ARIMA 17. LSTM-MLP 18. LSTM-CNN 19. GRU-ARIMA 20. GRU-MLP 21. GRU-CNN 22. RNN-ARIMA 23. RNN-MLP 24. RNN-CNN 25. CNN-ARIMA 26. CNN-MLP 27. CNN-LSTM 28. CNN-GRU 29. ARIMA-SVM 30. SARIMA-SVM 31. VAR-SVM 32. Auto-ARIMA-SVM 33. Auto-SARIMA-SVM 34. LSTM-SVM 35. GRU-SVM 36. RNN-SVM 37. CNN-SVM 38. MLP-SVM 39. LSTM-ARIMA-SVM 40. LSTM-MLP-SVM 41. LSTM-CNN-SVM 42. GRU-ARIMA-SVM 43. GRU-MLP-SVM 44. GRU-CNN-SVM 45. RNN-ARIMA-SVM 46. RNN-MLP-SVM 47. RNN-CNN-SVM 48. CNN-ARIMA-SVM 49. CNN-MLP-SVM 50. CNN-LSTM-SVM 51. CNN-GRU-SVM 52. ARIMA-RF 53. SARIMA-RF 54. VAR-RF 55. Auto-ARIMA-RF 56. Auto-SARIMA-RF 57. LSTM-RF 58. GRU-RF 59. RNN-RF 60. CNN-RF 61. MLP-RF 62. LSTM-ARIMA-RF 63. LSTM-MLP-RF 64. LSTM-CNN-RF 65. GRU-ARIMA-RF 66. GRU-MLP-RF 67. GRU-CNN-RF 68. RNN-ARIMA-RF 69. RNN-MLP-RF 70. RNN-CNN-RF 71. CNN-ARIMA-RF 72. CNN-MLP-RF 73. CNN-LSTM-RF 74. CNN-GRU-RF 75. ARIMA-XGBoost 76. SARIMA-XGBoost 77. VAR-XGBoost 78. Auto-ARIMA-XGBoost 79. Auto-SARIMA-XGBoost 80. LSTM-XGBoost 81. GRU-XGBoost 82. RNN-XGBoost 83. CNN-XGBoost 84. MLP-XGBoost 85. LSTM-ARIMA-XGBoost 86. LSTM-MLP-XGBoost 87. LSTM-CNN-XGBoost 88. GRU-ARIMA-XGBoost 89. GRU-MLP-XGBoost 90. GRU-CNN-XGBoost 91. RNN-ARIMA-XGBoost 92. RNN-MLP-XGBoost 93. RNN-CNN-XGBoost 94. CNN-ARIMA-XGBoost 95. CNN-MLP-XGBoost 96. CNN-LSTM-XGBoost 97. CNN-GRU-XGBoost 98. ARIMA-ANN 99. SARIMA-ANN 100. VAR-ANN 上面这些缩写模型的全称及相关用途功能详细解释
07-15
以下是对缩写模型的全称及相关用途功能的详细解释: 1. ARIMA (AutoRegressive Integrated Moving Average): 适用于平稳时间序列数据的预测,结合了自回归 (AR) 和移动平均 (MA) 的模型。 2. SARIMA (Seasonal ARIMA): 在ARIMA模型基础上添加了对季节性因素的建模,适用于带有季节性的时间序列数据的预测。 3. VAR (Vector Autoregression): 用于多变量时间序列数据的预测,基于自回归模型,能够捕捉变量之间的相互依赖关系。 4. Auto-ARIMA: 自动选择ARIMA模型的参数,通过对多个模型进行评估和选择来实现自动化。 5. Auto-SARIMA: 自动选择SARIMA模型的参数,通过对多个模型进行评估和选择来实现自动化。 6. LSTM (Long Short-Term Memory): 长短期记忆网络,一种适用于处理长期依赖关系的循环神经网络,用于时间序列数据的建模和预测。 7. GRU (Gated Recurrent Unit): 一种类似于LSTM的循环神经网络,具有更简化的结构,适用于时间序列数据的建模和预测。 8. RNN (Recurrent Neural Network): 适用于处理序列数据的神经网络模型,能够捕捉时间序列的动态特性。 9. CNN (Convolutional Neural Network): 卷积神经网络,主要用于图像处理,但也可以用于时间序列数据的预测,特别擅长局部模式的识别。 10. MLP (Multi-Layer Perceptron): 多层感知机,一种前馈神经网络模型,适用于处理非线性关系的时间序列数据。 11. DNN (Deep Neural Network): 深度神经网络,具有多个隐藏层的神经网络模型,能够学习更复杂的特征表示。 12. MLP-LSTM: 结合了多层感知机和长短期记忆网络的模型,用于时间序列数据的建模和预测。 13. MLP-GRU: 结合了多层感知机和门控循环单元网络的模型,用于时间序列数据的建模和预测。 14. MLP-RNN: 结合了多层感知机和循环神经网络的模型,用于时间序列数据的建模和预测。 15. MLP-CNN: 结合了多层感知机和卷积神经网络的模型,用于时间序列数据的建模和预测。 这些模型可以根据具体问题和数据的特性来选择和使用,以获得最佳的时间序列预测性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值