对于BP算法全矩阵传播及偏置项的一些理解

全矩阵传播的一些理解

        最初学BP,考虑的是每一个神经元之间的信息传递方式,包括反向传播过程中的链式法则也是针对每一个神经元与上一个神经元之间的偏导关系。

        完成上一步学习之后,考虑的是将每一层作为一个整体,即将第i层的N个神经元作为一个N*1的一维向量,而第i-1层的M个神经元与第i层之间的权重也同样当做一个N*M的矩阵,之所以将第一步的单神经元的计算转移为层与层之间的矩阵计算是因为对于计算机来说,更擅长并行计算,且我们由层次之间的每个神经元的信息传递,变为考虑层次之间的信息传递,在算法实现上,更宏观,更方便搭建,当然,将多数据同时进行计算这一思路也是矩阵被创造的原因。

        上述第二步中权重是作为矩阵参与运算的,但实际上神经元还是作为一维向量纳入计算,所以这里考虑的是,在输入阶段,并不输入单纯的一维数据作为样本,或者说不输入单样本,而是一次性输入多样本,这里提到一个概念batch,batch的作用这里不提及,可自行查阅。

        将多样本作为输入,则X由K*1, 变为了K*batch_size,其中,K为单样本的特征值数量,batch_size为一次输入的批数量,这里的改变也导致后续每层的神经元由原先的N*1变为了N*batch_size。

偏置项的一些理解

        先谈论一下在全矩阵传播中,偏置是否应该为矩阵的问题,先假设应该为偏置矩阵,令偏置矩阵初始值全为0,N*M维。

        每一次更新,即  B = B + lr * dB,即 N * M + N * 1

        B为偏置矩阵,lr为学习率,dB指损失函数对B的偏导,其等于损失函数E对突触神经元Z的偏导,实质上正确写法应该为:

\frac{\partial E}{\partial B} = \frac{\partial E}{\partial Z} * 1

这里要提及,在numpy中此运算方式是B的每一列加上 lr*dB,于是,可以发现偏置矩阵每一行中,各元素的值都相等,而如果初始值为随机值,虽每行不同元素不相等,但实质是每行各元素的变化趋势是一致的,故认为,偏置无需为矩阵,仅为一维列向量即可。

        再谈一下关于dB的问题,B 为N * M,dB等于dZ ,为N*batch_size,显然为了使dB信息能反馈给B,需要对dB进行左右压缩,这是以dB需要对接B来考虑dB为什么要压缩的原因。

        从另一个角度出发,先假设在输入一个样本的情况下,在这种情况中,dB的维度是N*1,也就说每个突出神经元对应一个dB的分量。

        多样本输入的情况中,若对dB列均值,即将B的偏导矩阵拍平(上下压缩),使其变为一个1*bacth的一维向量,也就是说对于任意一个样本,dB都只有一个分量与其对应,而这个分量是由该样本的所有特征值求均值得到的,这个操作映射会单样本输入,即把N个分量压缩成一个值,显然这个做法实质上会损失神经层各方向的空间特征信息,故有误。

        再结合batch大小影响损失函数收敛的概念,可以推断,网络实际上把batch作为了一个整体,所以,使用行均值,将dB压缩为一个N*1的向量,其每个元素包含整个batch每个样本在此层中该突触神经元的特征分量的均值,当然,需要注意的是dB等于dZ,或是dah,所以在求均值过程中,不同标签样本的特征分量之间相差较大,均值过程会发生拮抗,但这也防止了参数在某一类标签识别上走太远。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值