深度学习之CNN一 卷积与池化
2016-06-05 10:34
302 查看
1 卷积
连续:一维卷积:s(t)=(x∗w)(t)=∫x(a)w(t−a)dt
二维卷积:S(t)=(K∗I)(i,j)=∫∫I(i,j)K(i−m,j−n)dmdn
离散:
一维卷积:s(t)=(x∗w)(t)=∑ax(a)w(t−a)
二维卷积:S(i,j)=(K∗I)(i,j)=∑m∑nI(i,j)K(i−m,j−n)
卷积具有交换性,即
(K∗I)(i,j)=(I∗K)(i,j)
∑m∑nI(i,j)K(i−m,j−n)=∑m∑nI(i−m,j−n)K(i,j)
编程实现中:
二维卷积:S(t)=(K∗I)(i,j)=∑m∑nI(i+m,j+n)K(i,j)
这个定义就不具有交换性
上面的w,K称为核,s(t),S(i,j)有时候称为特征映射。
2 卷积神经网络
卷积神经网络主要利用3个思想:稀疏连接、参数共享、平移不变性。稀疏连接
一个神经元的感知视野是指能够影响该神经元的其他神经元。如上图中x3的感知视野是s2,s3,s4。深度卷经网络中,深层单元的感知视野比浅层单元的大。
参数共享
稀疏连接和参数共享都能显著减少参数。
平移不变性
参数共享会导致平移不变性。称f(x)对g(x)是不变的,如果f(g(x))=g(f(x))。例如I(x,y)是一张图像,g(I)=I(x−1,y),则(g(I)∗K)=g((I∗K))。
池化(pooling)
池化输出的是邻近区域的概括统计量,一般是矩形区域。池化有最大池化、平均池化、滑动平均池化、L2范数池化等。
池化能使特征获得平移不变性。如果我们只关心某些特征是否存在而不是在哪里时,平移不变性就很有用了。卷积也会产生平移不变性,注意区分,卷积对输入平移是不变的,池化对特征平移是不变的。
池化能显著地减少参数,若滑动距离stride大小为k,则参数量减少k倍
池化能解决不同规格的输入的问题。如下图池化时,将图片区域四等分,不管图片的大小。
完整的CNN结构:
由上面的两幅图可以看到,为了提取不同的特征,每个卷积层都有多种卷积(通道, channel)。
一般来说,输入并不只是一张灰度图,更多的是彩图,这样输入就是一个三维张量(tensor)Vi,j,k,表示第i个通道的j行k列的值。则通过卷积得到的特征S可表示为:Si,j,k=∑l,m,nVl,j+m−1,k+n−1Ki,l,m,n
其中K是一个四维张量,Ki,l,m,n表示卷积层的第i个通道与输入的第l个通道在行偏m、列偏n时的权重系数。式子中-1是因为C和Python中 下标是从0开始的。
滑动长度为s的卷积Si,j,k=∑l,m,nVl,(j−1)s+m,(k−1)+nKi,l,m,n
神经网络在实现中还要注意输入的补零方式。如果不补零的话,由于卷积核的关系,特征的大小(size)总是小于输入的大小,致使整个网络的深度是有限的。
如上图所示,补零的方式有两种:
valid:也就是不补零。
same:在图像边缘补零,使得输入和输出大小相同。
相关文章推荐
- CUDA搭建
- 稀疏自动编码器 (Sparse Autoencoder)
- 白化(Whitening):PCA vs. ZCA
- softmax回归
- 卷积神经网络初探
- 深入理解CNN的细节
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)
- TensorFlow人工智能引擎入门教程所有目录
- 如何用70行代码实现深度神经网络算法
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 安装caffe过程记录
- DIGITS的安装与使用记录
- 图像识别和图像搜索
- 卷积神经网络
- 深度学习札记
- convolutional neural network
- 51CTO学院优质新课抢先体验-5折好课帮你技能提升、升职加薪