本页面概述了 labml_nn 仓库中的循环神经网络实现。循环网络是一系列神经网络架构,旨在通过维护隐藏状态来处理序列数据,这些隐藏状态捕获序列中先前元素的信息。
该仓库实现了多种循环神经网络架构,每种架构都有其独特的优势
每个实现都遵循一个通用模式
来源: labml_nn/lstm/__init__.py labml_nn/recurrent_highway_networks/__init__.py labml_nn/hypernetworks/hyper_lstm.py
该模块为不同的循环网络提供了具有一致接口的基础实现
来源: labml_nn/lstm/__init__.py20-101 labml_nn/lstm/__init__.py103-158
LSTM 网络旨在克服标准 RNN 中的梯度消失问题,使其能够学习长期依赖关系。
LSTM 单元维护两种类型的状态
它使用四个门来控制信息流
LSTM 单元的更新方程为
i_t = σ(W_xi * x_t + W_hi * h_{t-1} + b_i)
f_t = σ(W_xf * x_t + W_hf * h_{t-1} + b_f)
g_t = tanh(W_xg * x_t + W_hg * h_{t-1} + b_g)
o_t = σ(W_xo * x_t + W_ho * h_{t-1} + b_o)
c_t = f_t ⊙ c_{t-1} + i_t ⊙ g_t
h_t = o_t ⊙ tanh(c_t)
其中 ⊙ 表示元素级乘法。
来源: labml_nn/lstm/__init__.py20-101
LSTMCell 类通过以下方式高效实现该单元格:
LSTM 类通过以下方式创建多层 LSTM:
LSTMCell 实例来源: labml_nn/lstm/__init__.py20-101 labml_nn/lstm/__init__.py103-158
循环高速网络通过高速连接扩展了循环架构,从而实现了在单个时间步内的深度处理。
RHN 单元依赖于状态向量和高速层,允许信息流经多个变换
RHN 单元的更新方程为
h_d^t = tanh(W_h^d * s_{d-1}^t)
g_d^t = σ(W_g^d * s_{d-1}^t)
c_d^t = 1 - g_d^t # Coupled gate
s_d^t = h_d^t ⊙ g_d^t + s_{d-1}^t ⊙ c_d^t
其中 d 表示从 0 到 D 的深度层索引。
来源: labml_nn/recurrent_highway_networks/__init__.py19-107
RHNCell 类实现了一个单独的 RHN 单元,具有
RHN 类通过以下方式实现多层 RHN:
RHNCell 实例来源: labml_nn/recurrent_highway_networks/__init__.py19-107 labml_nn/recurrent_highway_networks/__init__.py110-164
HyperLSTM 是一种创新方法,其中一个较小的网络(超网络)动态地为较大的 LSTM 网络生成参数。
HyperLSTM 由以下部分组成:
关键创新:超网络不直接计算权重,而是生成缩放因子,动态修改主 LSTM 的基础权重矩阵。
来源: labml_nn/hypernetworks/hyper_lstm.py81-199
HyperLSTMCell 类
HyperLSTM 类
HyperLSTMCell 实例来源: labml_nn/hypernetworks/hyper_lstm.py81-199 labml_nn/hypernetworks/hyper_lstm.py202-273
这些循环网络实现可用于语言建模和文本生成等序列建模任务。该仓库包含了用于实验的训练代码
hypernetworks 模块中的 experiment.py 文件演示了如何在莎士比亚数据集上配置和训练这些网络以进行文本生成。
来源: labml_nn/hypernetworks/experiment.py13-31 labml_nn/hypernetworks/experiment.py33-46
该仓库中的循环网络实现提供了一个统一的框架,用于处理不同的架构:
| 架构 | 主要功能 | 最佳用例 |
|---|---|---|
| LSTM | 门控机制,稳定梯度 | 通用序列建模 |
| RHN | 高速连接,深度单步处理 | 复杂时间依赖 |
| HyperLSTM | 通过超网络实现动态参数 | 自适应序列建模 |
所有实现都遵循一致的模式,使得理解不同架构之间的差异以及尝试各种配置变得容易。
来源: labml_nn/lstm/__init__.py labml_nn/recurrent_highway_networks/__init__.py labml_nn/hypernetworks/hyper_lstm.py
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(90e21b)