本博客基于周志华老师《机器学习》、Ian Goodfellow《Deep Learning》以及网上部分资料,为自己的学习笔记、总结以及备忘录,由于本人刚入门,欢迎大家指出错误。如有侵权,望告知,谢谢。
卷积网络是什么?
为什么要用卷积网络?
卷积网络是什么?
卷积网络是一种专门用来处理具有类似网络结构的数据的神经网络。例如时间序列数据(可以认为是在时间轴上有规律地采样形成的一维网格)和图像数据(可以看做二维的像素网格)。卷积网络在诸多应用领域都表现优异。“卷积神经网络”一词表明该网络使用了卷积这种数学运算。卷积是一种特殊的线性运算。
卷积神经网络CNN是对BP神经网络的改进,与BP一样,都采用了前向传播计算输出值,反向传播调整权重和偏置,卷积神经网络与普通神经网络的区别在于,卷积神经网络包含了一个由卷积层和子采样层(池化层)构成的特征抽取器。
对于卷积的理解:卷积其实就是加权叠加。对于卷积神经网络而言,没有核翻转的情况下,卷积就是张量与核的乘积和。
为什么要用卷积网络?
卷积运算通过三个重要的思想来帮助改进机器学习系统:稀疏交互(sparse interactions)、参数共享(parameter sharing)、等变表示(equivariant representations)。另外卷积提供了一种处理大小可变的输入的方法。
稀疏交互:传统的神经网络使用矩阵乘法来建立输入与输出的连接关系。其中,参数矩阵中每一个单独的参数都描述了一个输入单元与一个输出单元间的交互。这意味着每一个输出单元与每一个输入单元都产生交互。然而,卷积网络具有稀疏交互(也叫稀疏连接、稀疏权重)的特征。这是使用核的大小远小于输入的大小来达到的。举个例子,当处理一张图像时,输入的图像可能包含成千上万个像素点,但是我们可以通过只占用几十到上百个像素点的核来检测一些小的有意义的特征,例如图像的边缘。这意味着我们需要的存储的参数更少,不仅减少了模型的存储需求,还提高了它的统计效率。
参数共享:是指在一个模型的多个函数中使用相同的参数。在传统的神经网络中,当计算一层的输出时,权重矩阵的每个元素只使用一次,当它乘以输入的元素后就再也不会用到了。在卷积神经网络中,核的每一个元素都作用在输入的每一个位置上,卷积运算中的参数共享保证了我们只需要学习一个参数集合,而不是对于每一个位置都需要学习一个单独的参数集合。这虽然没有改变前向传播的运行时间,但它显著地把模型的存储需求降低至k个参数,并且k通常比m小很多个数量级。
等变表示:参数共享的特殊形式使得神经网络具有对平移等变的性质。如果一个函数满足输入改变,输出也以同样的方式改变这一性质,我们就说它是等变的。
池化:卷积网络中一个典型层包含三级。在第一级中,这一层并行地计算多个卷积,产生一组线性激活响应。在第二级中,每一个线性激活响应会通过一个非线性激活函数,例如整流线性激活函数。这一级有时也被称为探测级。在第三级中,我们使用池化函数来进一步调整这一层的输出。池化函数使用某一位置的相邻输出的总体统计特征来代替网络在该位置的输出。例如:最大池化函数给出相邻矩形区域内的最大值。其他常用的池化函数包括相邻矩形区域内的平均值、范数以及基于距中心像素距离的加权平均函数。不管采用什么样的池化函数,当输入作出少量平移时,池化能够帮助输入的表示近似不变。平移的不变性是指当我们对输入进行少量平移时,经过池化函数后的大多数输出并不会发生改变。
未完待续……