参考资料:[UFLDL教(http://ufldl.stanford.edu/wiki/index.php/UFLDL教程)及tornadomeet的博客
个人代码:github地址
卷积与池化
卷积
当输入数据的特征数很大时,若特征层每个神经元都和所有特征相连,则需要非常多的参数。例如96*96的图像,学习100个特征,则有近1,000,000个参数需要学习,对资源的消耗非常巨大。
解决这一问题的方法是部分连通,即每个特征层的神经元一次只和上一层的部分特征相连。这是因为图像具有统计特性,图像一部分的特征很可能也适用于其它部分。例如,在图像上截取一个8 \(\times\) 8的小区域,并从中学习到了一个8 \(\times\) 8大小的权值网络,我们可以将这个权值应用到图像所有区域,来获得任一位置的激活值。
对卷积的理解可以结合图像卷积来进行,可以参考这篇博客。不同的是,在对图像做卷积运算的时候,一般要拓展图像以保证运算前后图像大小不变;而学习特征则不用,直接卷积即可,卷积后的图像大小为imageDim-convolvedDim+1,imageDim是图像在某一方向上的维度,convolvedDim是卷积算子在对应方向上的维度。
池化
卷积关注的是图像的局部特征,但是,在描述大图像的时候,需要关注更大范围内的特征,因此使用了池化。池化求的是卷积后图像的某个区域的统计特征(比如最大值最小值或平均值,取决于应用场合)。池化的特征维度更低,而且可以改善结果,减小过拟合。例如,一个96 * 96的卷积后的图像,对48 * 48大小的区域进行池化,那么最终会得到一个2*2大小的池化层(也称作下采样层)。
池化由于关于的是统计特征,因此具有一定的平移不变性。例如手写数字,左侧或右侧平移一点并不影响最终的结果。
关于池化和卷积
本次的练习中,采用的是卷积——池化——softmax结构,实际上,有时候往往会采用卷积——池化——卷积——池化……这样交织的结构来一步步提取图像的特征。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:UFLDL之卷积与池化 - Python技术站