卷积神经网络CNN公式推导走读
0有全连接网络,为什么还需要CNN
图像处理领域的特殊性,
全连接网络缺点: CNN解决办法:
1参数太多 | 局部连接
2没有利用图像之间位置的信息 | 权值共享
3网络层数限制 | 下采样:pooling,只保留重要参数,提高鲁棒性
1激活函数
Relu: 图像: sigmoid图像:
相比sigmoid优势:
1速度快,因为运算简单max ;
2 坚强梯度消失问题,梯度计算时每经过一层就累乘一个sigmoid的导数,图像可以看出最大是1/4,而relu导数是1,不会衰减;
3稀疏性:大脑5%的神经元是激活的,神经网络15%比较好,sigmoid有50%激活,relu小于0的都是不机会的,所以激活概率更低。
2网络架构: INPUT -> [[CONV]*N -> POOL?]*M -> [FC]*K
卷积层 池化层 全连接层
2.1卷积层(多维的,维度=卷积核的个数)
局部连接:只有上一层部分神经元相连;
权值共享:对所有像素的权值都是一样的,个数为filter的个数:3*3的filter有3*3个权值。
注:深度大于1的输入,filter是深度比较与输入深度一致
2.2池化层
主要作用是下采样去掉不重要的样本,进一步减少参数个数。除了取max 还有mean等方法
2.3全连接层(同bp网络)
3训练
bp原理一样(三步):
不同:
局部连接和下采样影响第二步误差项计算;
权值共享影响第三步w的计算;
3.1卷积层训练
同bp借用netj,卷积conv(矩阵):
由于权重共享,a1,2 需要累加a1,1 和a1,2的影响:
eg1.a1,1与netj1,1有关:
所以,
eg2.a1,2与netj1,1 和netj1,2有关:
所以,
总结,
可以写成:
3.2池化层训练
由于没有需要学习的参数,只是梯度传递(max或mean) ,所以不需要梯度计算。
eg max
梯度等于l-1层值最大的
eg.mean 梯度等于1/n^2
参考:网络博客