在上一节当中,我们讲到了RNN的其中一个特点是参数共享,在这一节当中,我们用具体代码来展示RNN的前向传播。
首先是给出每一个参数具体的值:
W指的是相邻时刻隐藏单元间的权重矩阵,U指的是从X(t)计算得到的对应隐藏单元时用到的权重矩阵;V是由h(t)计算得到o(t)时用到的权重矩阵;b_o是由h(t)计算得到o(t)时用到的偏置值。
这就是一个简单循环神经网络的前向传播计算过程,输出的O(t)就是网络在时刻t的前向传播结果,这个计算过程可能会因为不同的循环体而出现差异,视实际的网络情况而定。使用t(1)时刻的状态也可以通过上述的过程去推导出t(2)的状态。优化循环神经网络时也需要对其进行损失函数的计算 。定义循环神经 网络的损失函数也可以从其他类型的神经网络中借鉴思路,但是要注意的是,由于循环神经网络的输出和时刻有关,其损失是所有时刻(或者部分时刻)上损失函数的总和,接下来就是介绍循环神经网络的反向传播知识。
有了RNN前向传播算法的基础,就容易推导出RNN反向传播算法的流程了。RNN反向传播算法的思路和DNN是一样的,即通过梯度下降法每一轮的迭代,得到合适的RNN模型参数U,W,V 由于我们是基于时间反向传播,所以RNN的反向传播有时也叫做BPTT(back-propagation throughtime)。当然这里的BPTT和DNN也有很大的不同点,即这里所有的U,W,V在序列