反向传播中bptt数学公式详解
时间: 2023-12-20 10:03:58 浏览: 70
反向传播算法(Backpropagation Algorithm,简称BP算法)是深度学习中最常用的一种优化算法,它主要用于计算神经网络的梯度,进而更新网络的权重和偏置。BPTT(Back-propagation through time)是BP算法在循环神经网络中的应用,它可以对时间序列数据进行训练和预测。
BPTT算法的核心是反向传播公式。在循环神经网络中,每个时间步都有一个隐藏状态$h_t$,它的计算公式如下:
$$
h_t = f(W_{ih}x_t+W_{hh}h_{t-1}+b_h)
$$
其中,$W_{ih}$表示输入层到隐藏层的权重矩阵,$x_t$表示输入向量,$W_{hh}$表示隐藏层到隐藏层的权重矩阵,$h_{t-1}$表示上一时刻的隐藏状态,$b_h$表示隐藏层的偏置向量,$f$表示激活函数。
假设我们的目标是最小化网络在$t_n$时刻的损失$E_{t_n}$,那么可以使用链式法则将损失对权重和偏置的梯度计算出来。首先,我们需要计算对$h_{t_n}$的偏导数$\frac{\partial E_{t_n}}{\partial h_{t_n}}$,它的计算方式如下:
$$
\frac{\partial E_{t_n}}{\partial h_{t_n}} = \sum_{k=t_n}^{T}\frac{\partial E_k}{\partial h_{t_n}}
$$
其中,$T$表示时间序列的长度。这个公式的意义是,$h_{t_n}$的误差会受到后面所有时刻的误差影响,因此需要将它们加起来。
接下来,我们可以根据$h_t$的计算公式,将$\frac{\partial E_{t_n}}{\partial h_{t_n}}$继续向前传播,计算出对$W_{hh}$和$b_h$的偏导数$\frac{\partial E_{t_n}}{\partial W_{hh}}$和$\frac{\partial E_{t_n}}{\partial b_h}$:
$$
\frac{\partial E_{t_n}}{\partial W_{hh}} = \sum_{k=t_n}^{T}\frac{\partial E_k}{\partial h_k}\frac{\partial h_k}{\partial W_{hh}}
$$
$$
\frac{\partial E_{t_n}}{\partial b_h} = \sum_{k=t_n}^{T}\frac{\partial E_k}{\partial h_k}\frac{\partial h_k}{\partial b_h}
$$
其中,$\frac{\partial h_k}{\partial W_{hh}}$和$\frac{\partial h_k}{\partial b_h}$可以根据$h_k$的计算公式进行求解。具体来说,$\frac{\partial h_k}{\partial W_{hh}}=h_{k-1}$,$\frac{\partial h_k}{\partial b_h}=1$。
最后,我们还需要计算对$x_t$和$W_{ih}$的偏导数$\frac{\partial E_{t_n}}{\partial x_t}$和$\frac{\partial E_{t_n}}{\partial W_{ih}}$,它们的计算方式如下:
$$
\frac{\partial E_{t_n}}{\partial x_t} = \sum_{k=t_n}^{T}\frac{\partial E_k}{\partial h_k}\frac{\partial h_k}{\partial x_t}
$$
$$
\frac{\partial E_{t_n}}{\partial W_{ih}} = \sum_{k=t_n}^{T}\frac{\partial E_k}{\partial h_k}\frac{\partial h_k}{\partial W_{ih}}
$$
其中,$\frac{\partial h_k}{\partial x_t}$和$\frac{\partial h_k}{\partial W_{ih}}$可以根据$h_k$的计算公式和$x_t$的输入方式进行求解。具体来说,如果$x_t$是一个向量,则$\frac{\partial h_k}{\partial x_t}=W_{ih}$,$\frac{\partial h_k}{\partial W_{ih}}=x_t$;如果$x_t$是一个标量,则$\frac{\partial h_k}{\partial x_t}=W_{ih}[:,t]$,$\frac{\partial h_k}{\partial W_{ih}}=x_t$。
通过反向传播公式,我们可以计算出对网络中所有权重和偏置的梯度,进而使用梯度下降等方法来更新它们,最终达到训练网络的目的。
阅读全文