卷积神经网络中的反向传播算法学习
在常规神经网络的基础上,CNN的正向传播原理比较容易理解,而反向传播算法的学习比较难以掌握,根据网上的一些教学,以批量梯度下降法为例来描述反向传播算法。对算法的主要公式和解释整理如下:
输入:m个图片样本.
CNN模型的层数L和所有隐藏层的类型,对于卷积层,要定义卷积核的大小K,卷积核子矩阵的维度F,填充大小P,步幅S。对于池化层,要定义池化区域大小k和池化标准(MAX或Average),对于全连接层,要定义全连接层的激活函数(输出层除外)和各层的神经元个数。梯度迭代参数迭代步长α,最大迭代次数MAX与停止迭代阈值ϵ.
输出:CNN模型各隐藏层与输出层的
.
1) 初始化各隐藏层与输出层的各
的值为一个随机值;
2)for iter to 1 to MAX:
2_1) for i =1 to m:
a) 将CNN输入a1设置为xi对应的张量
b) for l=2 to L-1,根据下面3种情况进行前向传播算法计算:
b_1) 如果当前是全连接层,则有
b_2) 如果当前是卷积层,则有
b_3) 如果当前是池化层,则有
,
这里的pool指按照池化区域大小k和池化标准将输入张量缩小的过程。
c) 对于输出层第L层:
c_1) 通过损失函数计算输出层的:
d) for l= L-1 to 2, 根据下面3种情况进行进行反向传播算法计算:
d_1) 如果当前是全连接层:
d_2) 如果当前是卷积层:
d_3) 如果当前是池化层:
2_2) for l = 2 to L,根据下面2种情况更新第l层的
:
2_2-1) 如果当前是全连接层:
,
2_2-2) 如果当前是卷积层,对于每一个卷积核有:
,
2_3) 如果所有W,b的变化值都小于停止迭代阈值ϵ,则跳出迭代循环到步骤3。
3) 输出各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b。
参考资源:
1.刘建平Pinard
2.Neural Networks and Deep Learning by By Michael Nielsen
3.CS231n Convolutional Neural Networks for Visual Recognition, Stanford