CNN基本问题

基本理解

CNN降低训练参数的2大法宝?

局部感受野、权值共享
局部感受野:就是输出图像某个节点(像素点)的响应所对应的最初的输入图像的区域就是感受野。
权值共享:比如步长为1,如果每移动一个像素就有一个新的权值对应,那么太夸张了,需要训练的参数爆炸似增长,比如从32x32的原图到28x28经过convolve的图,如果后者的每一个像素对应前面的一个参数,那参数实在是多。权值共享就是这些权值都是一样的,可以看成都是1.

啥叫feature map啊?

同一种滤波器卷积得到的向量组合。一种滤波器提取一种特征,下图使用了6种滤波器,进行卷积操作,故有6层feature map.

C1层用了6个5x5的卷积核,这里的步长为1,因此每个feature map是(32-5+1)x(32-5+1)=28x28.

CNN训练的参数是啥啊?

其实就是卷积核!!!当然还有偏置。
比如上面的6个5x5的卷积核的训练参数是6x(5x5+1),当然咯,每个卷积核对应的偏置自然是不同的。
某篇论文的卷积网络表示:
Fw(I)=WnFn1(I)+bn , n = 3
Fn(I)=σ(WnFn1(I)+bn) , n = 1,2
F0(I)=I , n = 0

可以看出啊,总共三层卷积网络,然后第一层第二层都是直接将输入的进行卷积,这里的 Wn 就是权值参数,也就是卷积核。外加一个偏置 bn .当然每传入下一层要一个激活函数,这里选用的是双曲正切。

如何计算训练的参数和连接?

CNN基本问题_第1张图片
参数:从图可以看出,这个是用了6个filter,每个filter是5x5,所以这一层的参数是6x(5*5+1),其实在大部分的代码实现中,都是直接去掉bias的,因为这个对结果没啥影响。但是本文还是加上了bias。
连接:经过convolve的图变成了(32-5+1)x(32-5+1)=28*28,有:(5*5+1)*(28*28)*6=122,304个连接。因为6个feature map,每个map有28*28个像素,而每个像素是通过5*5大小的filter经过卷积再加上偏置得到的。因此有这么多连接。

Pooling

就是将一块区域直接变成一个像素,不经过卷积核。一般有2种,max pooling和average pooling.主要是为了防止过拟合,减少训练参数。通过卷积后得到图像的特征,这是因为图像具有一种“静态性”的属性,这也意味着一个图像区域有用的特征极有可能在另一个区域同样适用。因此对于大图像,可以用聚合统计,通过average或是max pooling,可以得到低得多的维度,同事不容易过拟合。这种聚合操作就是pooling(池化)

如何计算感受野大小

  1. 无padding情况:
    如果输入是 aa ,filter是 bb ,那么不加padding情况下,就会卷积后图像变小,变成 (ab+1)(ab+1) ,当计算感受野,就是计算这一层的输出的图像的像素点所对应的原图的像素点的个数。因此,如果我们走极端思想,我们假设经过 N 层的卷积,然后只输出一个像素点。那么就计算这个像素点的感受野。
    假设感受野是 X2 大小,然后根据公式,第一层是 (Xf1+1)(Xf1+1) ,因此有:
    X(f1+f2++fN)+N=1 , 解出 X 即可。
    如:Image Super-Resolution Using Deep Convolution Networks, 就是SRCNN,SRCNN没有加入padding,它使用了三层,分别是9x9,1x1和5x5, X(9+5+1)+3=1 ,得出 X=13 ,因此原文说
    On the whole, the estimation of a high resolution pixel utilizes the information of (9+51)2=169 pixels.

  2. 有padding:
    额,其实有没有padding都是一样的,不会影响感受野大小。。着不用想也知道啊,用的方法同上。因为padding只是增加了边缘区域的像素点,可是filter利用的点的个数还是一样的,只不过经过padding后,利用了一些特殊的像素点(比如zeros padding)罢了。
    比如在Accurate Image Super-Resolution Using Very Deep Convolution Networks,也就是VDSR中,它有20层的weight layers,每层都是用3x3的filters,并且有padding的。第一层的感受野就是3x3,第二层就是5x5,第D层就是 (2D+1)×(2D+1) 。从下面可以推出:
    X(3+3++3)D+D=1

stride的含义

这个就是下采样参数,当然了conv层,则stride=1;如果是pooling层,该pooling层的大小是2x2,那么就stride=2了。

其他一些东西

μ 的权值更新方式

一般来说,标准的BP更新是:

W(t)=W(t1)ηEW

但是有一种Momentum的更新方式:
Δw(t+1)=ηEt+1w+μΔw(t)

这里的 μ 就是momentum参数。
η 就是学习率。

这里的 λ 就是正规化项regularization term,也称为权重衰减项(weight decay),这个主要是防止过拟合的,就是很多权重变成0,增加稀疏性。

你可能感兴趣的:(图像处理,cnn,pooling,感受野)