特征学习之卷积神经网络

    今天介绍卷积神经网络(cnn)的训练方法,即:随机梯度下降和误差反向传播。

    先说下推导的思路:

    (1)说明CNN是一种局部连接和权值共享的网络,这种网络可以看做是特殊的全连接网络,即不连接部分的权值为0。

    (2)解释网上常见的pooling层向卷积层,以及卷积层向pooling层的残差反向传播的原理。

    在推导CNN反向传播之前,MLP的反向传播是推导基础。



    从随机梯度下降法训练网络的推导过程可见,残差的反向传播是计算的核心。残差的反向传播用一句话来概况就是“某一层第i个节点的残差等于与该节点有权值连接的后一层所有节点上的残差乘以连接权重的和,最后和乘以激活函数在该节点输入值上的导数”,所以残差在往前传播的时候,只和与该节点有连接的后一层上的残差有关系。


——————————————————————————————————

下面分析CNN其实是一种特殊的全连接网络

做卷积的本质是后一层的某一节点上的值之与前一层的9个节点有关(以3*3卷积核为例),如果把n*n的图像展开成列向量,长度就是n*n,那么后一层的节点个数就是(n-3+1)*(n-3+1),也可以排成只有一列的列向量。这样的网络和MLP的网络是一样的,唯一的区别是非全连接,后一层的输入值之和前一层的九个节点有关系。


我们只需要考虑CNN和MLP不同之处即可,相同的地方参考MLP的反向传播。显然不同之处在于CNN多了卷积计算和pooling。上图右边表示的是max pooling和mean pooling的反向传播示意图,以max pooling为例,其实是把残差直接给了前向传播pooling时值最大的节点。比如2*2的pooling,那么其实四个权重除了最大值的那个节点连接权重是1,其他三个都是0,那么再次参考残差传播的公式,权重为0,意味着反向残差为0,理解下面的公式,看看你就知道为啥是0了,w只有一个而且还是0,算出来当然是0。



其实pooling层的反向传播其实好理解。不好意理解的是卷积层。

    为啥卷积层的反向传播会是残差与卷积核的再卷积。要解释这个还得从残差的反向传播公式说起,某一层第i个节点的残差等于与该节点有权值连接的后一层所有节点上的残差乘以连接权重的和,最后和乘以激活函数在该节点输入值上的导数”,所以残差在往前传播的时候,只和与该节点有连接的后一层上的残差有关系。前一层的某一节点在卷积核计算过程中影响了后一层的谁,后一层的残差就要参与计算。那么我们通过下图分析下到底卷积核计算,使得一个节点影响了后一层的哪些节点,影响的权重是多少。


上图分析的是红色节点影响了下一层的A11,A12....A33中的哪些节点,权重是多少。中间的星星图,就是具体影响。具体怎么得出这个图的,就是把做左图的3*3卷积核,往左边,右边,上面,下面,左上,左下,右上,右下,不动,共九个位置。看看红色部分影响到了后面中的哪些节点。根据残差反向传播公式,残差应该如下图计算:




至此卷积神经网络的反向传播算法通过解释:局部连接和权值共享转为全连接网络,通过推导pooling层反向和卷积层反向传播与全连接网络具有一致性。两个方面分析将CNN的训练算法完整的归入了统一的公式体系。



个人资料
郭昱良
等级:6
文章:22篇
访问:1.0w
排名: 18
上一篇: 浅谈Python如何处理字符串
猜你感兴趣的圈子:
机器学习算法与Python学习
标签: 残差、卷积、传播、反向、pooling、面试题
隐藏