循环神经网络的训练(1)

循环神经网络的训练

循环神经网络的训练算法:BPTT

BPTT算法是针对循环层的训练算法,它的基本原理和BP算法是一样的,也包含同样的三个步骤:

  1. 前向计算每个神经元的输出值;
  2. 反向计算每个神经元的误差项 δj 值,它是误差函数E对神经元j的加权输入 netj 的偏导数;
  3. 计算每个权重的梯度。

最后再用随机梯度下降算法更新权重。

循环层如下图所示:

前向计算

使用前面的式2对循环层进行前向计算:

st=f(Uxt+Wst1)

注意,上面的 st xt st1 都是向量,用黑体字母表示;而U、V是矩阵,用大写字母表示。向量的下标表示时刻,例如, st 表示在t时刻向量s的值。

我们假设输入向量x的维度是m,输出向量s的维度是n,则矩阵U的维度是 n×m ,矩阵W的维度是 n×n 。下面是上式展开成矩阵的样子,看起来更直观一些:

st1st2..stn=f(u11u12...u1mu21u22...u2m..un1un2...unmx1x2..xm+w11w12...w1nw21w22...w2n..wn1wn2...wnnst11st12..st1n)(19)

在这里我们用手写体字母表示向量的一个元素,它的下标表示它是这个向量的第几个元素,它的上标表示第几个时刻。例如, stj 表示向量s的第j个元素在t时刻的值。 uji 表示输入层第i个神经元到循环层第j个神经元的权重。 wji 表示循环层第t-1时刻的第i个神经元到循环层第t个时刻的第j个神经元的权重。

误差项的计算

BTPP算法将第l层t时刻的误差项 δlt 值沿两个方向传播,一个方向是其传递到上一层网络,得到 δl1t ,这部分只和权重矩阵U有关;另一个是方向是将其沿时间线传递到初始 t1 时刻,得到 δl1 ,这部分只和权重矩阵W有关。

我们用向量 nett 表示神经元在t时刻的加权输入,因为:

nettst1=Uxt+Wst1=f(net
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值