高级神经网络模型:循环网络与LSTM的深入解析
立即解锁
发布时间: 2025-08-30 00:50:08 阅读量: 3 订阅数: 12 AIGC 

# 高级神经网络模型:循环网络与LSTM的深入解析
## 1. 循环网络简介
在传统的模型中,训练完成后权重就会固定下来,输出仅依赖于输入样本。然而,在很多场景下,预测需要考虑输入值的历史信息,例如时间序列预测。以预测下周的温度为例,如果仅使用最后已知的温度值和一个训练好的多层感知器(MLP)来预测未来温度,就无法考虑季节、多年的季节历史、季节中的位置等时间条件。
为了解决这个问题,需要为人工神经元设计一种新的架构,赋予其记忆功能。此时,神经元不再是纯粹的前馈计算单元,反馈连接使其能够记住过去的信息并用于预测新值。新的动态规则是将前一个预测值反馈回来并与新的线性输出相加,然后通过激活函数转换得到实际的新输出(通常第一个输出为零,但这不是强制要求)。
### 1.1 激活函数的选择
在选择激活函数时,需要考虑系统的稳定性。动态系统很容易变得不稳定,为了防止这种现象,应使用饱和函数,如Sigmoid或双曲正切函数。因为无论输入如何,这些函数的输出都不会趋向于正无穷或负无穷。而如果使用ReLU激活函数,在某些条件下,输出会无限增长,导致溢出。线性激活函数的情况更糟,使用Leaky ReLU或ELU时也可能类似。
然而,即使使用双曲正切或Sigmoid函数,它们有两个稳定点(-1和+1),也不足以确保稳定性。例如,当输出受到噪声影响并在0附近振荡时,单元无法收敛到一个值,会陷入极限循环。不过,学习权重的能力可以增加对噪声的鲁棒性,避免输入的微小变化反转神经元的动态。但实现稳定性的代价非常高。
## 2. 基于时间的反向传播(BPTT)
训练循环神经网络(RNN)的最简单方法是基于一种表示技巧。由于输入序列是有限的且长度可以固定,因此可以将具有反馈连接的简单神经元重构为展开的前馈网络。
### 2.1 BPTT算法步骤
1. **计算输出**:计算所有时间步的输出。
2. **计算代价函数**:确定每个网络的代价函数值。
3. **计算梯度**:从最后一个时间步开始,计算并存储梯度,重复此过程直到初始时间步。
4. **更新权重**:将所有梯度相加并应用到网络中。
这种方法将动态条件视为逐点预测来学习如何管理,但实际网络并未展开,过去的依赖理论上会被传播和记忆。不过,实际实验表明其行为与理论不同。
### 2.2 BPTT的局限性
BPTT算法在数学上是正确的,学习短期依赖并不困难,但学习长期依赖却极其困难甚至几乎不可能。这是因为当时间趋于无穷大时,网络会受到梯度消失问题的影响。具体来说,BPTT的乘法效应使梯度与$W^t$成正比,如果$W$的最大绝对特征值(也称为谱半径)小于1,梯度的大小会与序列长度成比例,即使在序列不是极长的情况下,数值计算的有限精度和后续乘法的指数衰减也会导致梯度消失。
### 2.3 截断的基于时间的反向传播(TBPTT)
为了解决BPTT在训练深度网络时计算成本高的问题,提出了截断的基于时间的反向传播(TBPTT)方法。该方法使用两个序列长度$t_1$和$t_2$($t_1 >> t_2$),较长的$t_1$用于前馈阶段,较短的$t_2$用于训练网络。其核心思想是让网络用更多信息更新隐藏状态,然后根据较长序列的结果计算修正值,即使更新只传播到有限数量的先前时间步。这是一种近似方法,可以加快训练过程,并且在依赖关系可以拆分为较短时间块的情况下,最终结果通常与处理长序列的结果相当。
下面是BPTT和TBPTT的对比表格:
| 算法 | 优点 | 缺点 |
| ---- | ---- | ---- |
| BPTT | 理论上可以学习长期依赖 | 计算成本高,难以学习长期依赖 |
| TBPTT | 计算速度快 | 近似方法,可能存在一定误差 |
mermaid流程图如下:
```mermaid
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(输入序列):::process
B --> C{选择算法}:::decision
C -->|BPTT| D(展开网络):::process
C -->|TBPTT| E(设置t1和t2):::process
D --> F(计算输出):::process
E --> F
F --> G(计算代价函数):::process
G --> H(计算梯度):::process
H --> I(更新权重):::process
I --> J([结束]):::startend
```
## 3. 长短期记忆网络(LSTM
0
0
复制全文
相关推荐









