深度学习的一些概念理解(共享权重,最大池化,激活函数,残差网络):
深度学习中有一个概念,叫共享权重,就是一个层中是共享权重的,这样做的好处有两个:
a 能够减少参数的数量,加速训练
b 由于共享权重,使得整幅图对应的这个权重下求的的特征具有平移不变性
个人对于共享权重的理解:其实所谓的共享权重,比如对于一个5X5的卷积,不管图像多大,全部使用这样的5X5的卷积核去做卷积,由于卷积大小的5X5,共有25个参数,而对图像全部使用这25个参数去做卷积,那么就形成了所谓的共享权重,即对整个图像求的是相同的特征,这样就考虑的整个图像的空间结构,对于图像的平移等具有鲁棒性,因为一个单独的特征是对整幅图来求,即使平移了,在一个地方找不到,在另一个地方也找得到。而不同的5X5的卷积核,会得到不同的特征,因此,多个不同的5X5的卷积核去做卷积,就会得到多个不同的特征。而对于同一个图,如何训练出不同的核参数?这个问题还没弄明白。最大池化(个人的理解是有一部分是降采样,常用的有最大池化,平均值池化,比如对于一个图,使用2X2的核,对图像流动处理,将这2X2的核中的四个点,如果只取其最大值,就叫最大池化,如果取四个点的均值就叫平均池化)
激活函数:激活函数是用来引入非线性因素的。网络中仅有线性模型的话,表达能力不够。比如一个多层的线性网络,其表达能力和单层的线性网络是相同的(可以化简一个3层的线性网络试试)。我们前边提到的卷积层、池化层和全连接层都是线性的,所以,我们要在网络中加入非线性的激活函数层。一般一个网络中只设置一个激活层。
激活函数一般具有以下性质:
非线性: 线性模型的不足我们前边已经提到。
处处可导:反向传播时需要计算激活函数的偏导数,所以要求激活函数除个别点外,处处可导。
单调性:当激活函数是单调的时候,单层网络能够保证是凸函数。
输出值的范围: 当激活函数输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更显著;当激活函数的输出是无限的时候,模型的训练会更加高效,不过在这种情况小,一般需要更小的learning rate.残差网络:待续。。。
对深度学习网络的一个例子的理解(http://www.cnblogs.com/zhizhan/p/4077966.html):
1 输入是一个32X32的图像,记为input
2 C1层对input进行卷积,使用核大小是5X5,卷积后得到一个28X28的图像,每一个像素对应一个特征,因此也可以说得带一个特征映射(因为这个特征图都是使用的一个卷积核),而我们可以人为设定特征映射的个数,比如要得到6个特征映射,那么就是要得到6个不同的5X5的核,每个不同的5X5的核还需要加上一个偏置,那么总的参数是(5*5+1)*6=156,连接的个数是156*28*28=122304
3 S2层对得到的6个不同的特征映射进行下采样,得到6个14X14的图像,每个特征图进行下采样的时候有一个可训练的相乘的系数,和一个可训练的偏置。那么总的参数就是6*2=12,总的连接个数是14*14*6*5=5880个连接(这个参数的计算有点不懂,主要是为何是5)
4 C3层再次进行卷积,卷积核的大小还是5X5,由于上一层的大小是14X14,因此,这里卷积后的大小是10X10,这里人为设定有16个不同的卷积核,需要注意的是,由于上一层的特征图个数是6,那么这里要映射到16,是通过将上一层的6个不同的特征进行组合,来得到的,比如这一层16个特征中的第一个,可以将上一层中的1,2,3共享相同的5X5的核,对于16个特征中的第二个,可以将上一层中的2,3,4共享相同的5X5的核,通过这种组合的方式,就可以得到16个特征映射了。使用这种不完全连接的机制,原因有2:一是将连接的数量保持在合理的范围,而是破坏了网络的对称性,迫使其抽取不同的特征:例如,存在的一个方式是:C3的前6个特征图以S2中3个相邻的特征图子集为输入。接下来6个特征图以S2中4个相邻特征图子集为输入。然后的3个以不相邻的4个特征图子集为输入。最后一个将S2中所有特征图为输入。这样C3层有1516个可训练参数和151600个连接。可训练参数计算方式:6*25*3+6*25*4+3*25*4+16=1516,最后的16应该指的是每个特征图都有的一个偏置
5 S4层,是一个降采样,将16个10X10的特征图变成16个5X5的特征图,每个降采样有一个相乘的系数和一个偏置系数,那么总的参数是16*2=32个,总的连接是2000个
6 C5层,是一个卷积层,卷积大小是5X5,设定的特征图的个数120个,每一个都是全连接,那么总的参数是120*25*16+120=48120个参数,注意,对于120个特征图中第一个a,其与16个特征图是全连接,是不共享权重的,也就是说,这a对应有16*25+1=401个参数
7 F6层有84个参数(之所以选择这个数字的原因是来自于输出层的设计),与C5层全连接,有84*120+84=10164个参数