循环神经网络(RNN):原理、应用与实践
1. 循环神经网络基础
循环神经网络(RNN)是一种特殊的神经网络,其当前输出不仅依赖于当前输入,还依赖于之前观察到的输入历史。在RNN的训练过程中,梯度计算是一个关键问题。例如,在计算 $\frac{\partial E}{\partial w_3}$ 时,会出现递归项 $\frac{\partial w_3h_3}{\partial w_3}$,由于 $h$ 是递归的且依赖于 $w_3$,这会导致出现无限多个导数项。为了解决这个问题,我们可以将输入序列 $x$ 按时间展开,为每个输入 $x_t$ 创建一个RNN副本,分别计算每个副本的导数,然后通过求和梯度来计算权重更新。
2. 时间反向传播(BPTT)与截断时间反向传播(TBPTT)
- 时间反向传播(BPTT) :计算RNN的反向传播的技巧是考虑整个输入序列,而不是单个输入。在时间步4计算 $\frac{\partial E}{\partial w_3}$ 时,需要计算到第四个时间步的所有时间步的梯度之和。具体公式为 $\frac{\partial E}{\partial w_3}=\sum_{j = 1}^{4}\frac{\partial L}{\partial y_j}\frac{\partial y_j}{\partial h_j}\frac{\partial h_j}{\partial h_4}\frac{\partial h_4}{\partial w_3}$。这意味着我们需要展开序列,为每个时间步 $j$ 计算 $\frac{\partial h_4}{\partial h_j}$ 和 $\frac{\partial
超级会员免费看
订阅专栏 解锁全文
1326

被折叠的 条评论
为什么被折叠?



