先来回忆一下神经网络的结构,如下图,由输入层,输出层,隐藏层组成。每一个节点之间都是全连接,即上一层的节点会链接到下一层的每一个节点。
卷积神经网在神经网络的基础上有所变化。下图中,每一列都表示一个层级,这些层级的类型不同,有CONV,RELU,POOL,FC等。这些层的结构与功能下面会详细说。
那么为什么我们要用卷积神经网去代替神经网络呢?
卷积神经网之所以这些年如此如火如荼,原因在于它在图像处理上的优秀变现。当然深度神经网络(DNN)也可以做图像识别。但是,我们知道图像的维度是非常大的,几千维的像素加上3维的颜色,假设DNN有两隐层,因为DNN是全链接,所以为产生几千维*几千维的权重需要被估计,这样的计算不是不可以,但是非常的消耗资源。而卷积神经网恰巧可以规避掉这个缺陷。
2.卷积神经网络的层级结构卷积神经网有如下层级结构,每一个层级下面都会详述。
2.1输入层输入层我们可以看做是对数据做的预处理,数据的预处理使得输入数据的质量增高,从而也能配合模型做最优的结果。预处理的方式有如下几种:
1.去均值去均值就是将输入数据的各个维度都中心化到0。求出原始数据的均值,然后将每个数据减去均值,计算后的新数据均值就变成0了。下图中直观可见,就是将数据的分布平移到以0为中心(每个特征的均值都是0)。
2.归一化归一化是将特征的幅度变换到统一范围(不一定是0-1之间),这个在图像识别中不使用,这里只是拿出来说一下,因为图像的RGB本来就是在0-之间,幅度是一样的,故不需要做调整。由下图是归一化后的数据。
这里有一点要注意,我们在读外文文献或翻译文献的时候,有点时候,normalized意思是正则化,大家学习的时候注意分辨就行。
3.PCAPCA是主成分分析,一种降维的方法,经常被使用,可以解决共线性(特征之间彼此相关),同时也降低了维度,简化了模型,提高了模型的性价比。效果如下图
4.白化白化其实是指将特征转换成正态分布。但是这个我们一般不做,尤其是使用随机梯度法计算损失函数最小值的时候。效果如右下图
2.2卷积计算层我们已经提过在图像处理上,之所以卷积神经网优于普通的深度神经网是因为它可以避免巨多维度的计算,那到底是如何避免的呢,卷积计算层绝对功不可没。
局部关联:首先假设图像上的某个像素点与和它向邻近的点是相似的,也就是对于图像上的某块小区域,区域内的点因为相近,所以相似。
基于这个假设,某个神经元就可以只对这一块小区域做连线,但不是对整个小区域做一根连线,而是,对整个区域中的每个点做连接。这个小区域会移动的,它从左到右移动,然后向下一行再从左到右移动,将这个图片都遍历一遍,每一次移动都只是对新的小区域内的点做连接
看下图,蓝色框框内是一个层,这个层里有5个神经元,这5个神经元都是独立的个体,他们会各自对输入层(也就是粉红色区域)中的每个小区域都做一次遍历。
这个窗口的滑动会涉及到下面几个参数:1.深度depth:对应的是上图中蓝色区域内的神经元个数。2.步长stride:是小窗口移动的步数,也就是移动的格子数,如果步长为2,那就是每次向右移动2个格子。3.填充值zero-padding:小窗口根据给定的步长向有移动,最后一次移动可能会超出原有的区域,这个时候我们去认为地在外增加若干圈为0的小格子作为补全。
来看下面几个图的变化,可能会有助于理解:左边紫色区域为输入层,有三个输入节点(分别是RGB),并在外围补了一圈为0的小格子。中间粉色的为两个神经元,每个神经元分别要去对应三个输入节点,所有相应地有3个权重居中,格子里的数即为权重参数。右边绿色的是卷基层的输出,上下两个分别对应粉色的两个神经元。
第一步,第一个神经元对输入层的三个节点的第一个窗口做内积计算,得到最终结果为绿色输出矩阵中第一列第一行的-3
接着,小窗口右移两个步长,再做一次对应的内积,得到输出矩阵中第一行第二列的-3.
接下去,以此类推:
在卷积层,假设每个神经元连接数据窗口的权重是一致的的,即权重共享机制。因为对于每个神经元它们的分工是独立相异的。比如,第一个神经元负责记录图像的颜色特征,第二个神经元负责治疗白癜风那家医院白癜风患者的饮食