看了卷积神经网络时间也不短了,想写点东西总结一下~以后别忘了,大家可以共同探讨
卷积神经网络做图像分类主要包括3个步骤:
1:前向传播得到输出值
2:利用得到的输出值进行反向传播计算误差对卷积核(权重)的梯度,用计算出来的梯度更新旧的权值(梯度下降法),为什么要用梯度下降法,因为误差函数是一个离散函数,我们以前计算一个连续函数的极值的时候都是对这个函数求偏导,让偏导等于0即可,但是离散函数是不可导的,所以我们用一步一步的梯度下降的方法近似偏导等于0,当然,这里的梯度的计算也不是我们平常的按照求导公式计算得到,而是通过bp里的一些步骤得到。
3:用新得到的权值去测试样本,具体还是前向传播,用测试样本结合新的权值得到输出矩阵
CNN的网络执行的只是一个前向的输出过程,中间的每一层的特征map都可以认为是提取到的特征,而越往后,提取到的特征越抽象,带有某种规律性,更容易做分类,当然,分类使用的分类器是softmax分类器,softmax分类器说白了就是用一个特征向量去左乘一个矩阵(在CNN里面这个矩阵就是权重、卷积核或者滤波矩阵,一个意思),从而得到一个向量,取这个向量里面的最大值所对应的索引,即为该特征向量所对应的类别号,其实就是一种概率思想。CNN总的来说就分为2个部分,(卷积层+下采样层)特征提取层和分类层,刚开始的时候对输出层的前面一层的全连接层不太理解,下面简单介绍:
对n-1层和n层而言
n-1层的任意一个节点,都和第n层所有节点有连接。即第n层的每个节点在进行计算的时候,激活函数的输入是n-1层所有节点的加权。这就是全连接,附一个图片:
其中第二层和第四层都是全连接层的输出,全连接层和卷积层不同的是权值不共享,卷积层的权值共享