深度学习笔记-CNN(三)
1.1 输入层:均值化,归一化,PCA|白化
1.2 卷积计算层:局部关联,窗口滑动;参数共享机制,卷积的计算
1.3 激励层:激励层的实践经验,Relu(rectified the linear unit),leaky relu,maxout,tanh,
1.4 池化层:max pooling、average pooling;池化的作用;
1.5全连接
1.6 CNN一般结构
1.7 CNN之训练算法:随机梯度下降算法
1.8 CNN优缺点
优点
• 共享卷积核,对高维数据处理无压力
• 无需手动选取特征,训练好权重,即得特征分类效果好
缺点
• 需要调参,需要大样本量,训练最好要GPU
• 物理含义不明确(也就说,我们并不知道没个卷积层到底提取到的是什么特征,而且神经网络本身就是一种难以解释的“黑箱模型”)
1.9 卷积神经网络之fine-tuning:
何谓fine-tuning?
fine-tuning就是使用已用于其他目标、预训练好模型的权重或者部分权重,作为初始值开始训练。
那为什么我们不用随机选取选几个数作为权重初始值?原因很简单,第一,自己从头训练卷积神经网络容易出现问题;第二,fine-tuning能很快收敛到一个较理想的状态,省时又省心。
那fine-tuning的具体做法是?
• 复用相同层的权重,新定义层取随机权重初始值
• 调大新定义层的的学习率,调小复用层学习率
1.10 CNN的常用框架:caffe、torch、tensorflow
1.11 卷积神经网络之典型的CNN
1.12 总结
卷积网络在本质上是一种输入到输出的映射,它能够学习大量的输入与输出之间的映射关系,而不需要任何输入和输出之间的精确的数学表达式,只要用已知的模式对卷积网络加以训练,网络就具有输入输出对之间的映射能力。
CNN一个非常重要的特点就是头重脚轻(越往输入权值越小,越往输出权值越多),呈现出一个倒三角的形态,这就很好地避免了BP神经网络中反向传播的时候梯度损失得太快。
卷积神经网络CNN主要用来识别位移、缩放及其他形式扭曲不变性的二维图形。由于CNN的特征检测层通过训练数据进行学习,所以在使用CNN时,避免了显式的特征抽取,而隐式地从训练数据中进行学习;再者由于同一特征映射面上的神经元权值相同,所以网络可以并行学习,这也是卷积网络相对于神经元彼此相连网络的一大优势。卷积神经网络以其局部权值共享的特殊结构在语音识别和图像处理方面有着独特的优越性,其布局更接近于实际的生物神经网络,权值共享降低了网络的复杂性,特别是多维输入向量的图像可以直接输入网络这一特点避免了特征提取和分类过程中数据重建的复杂度。
以下是我自己在学习CNN的时候遇到的一些困惑,以及查阅一些资料后得到的一些答案。
1.13 第一个问题:为什么不用BP神经网络去做呢?
1.全连接,权值太多,需要很多样本去训练,计算困难
• 应对之道:减少权值的尝试,局部连接,权值共享
卷积神经网络有两种神器可以降低参数数目。
第一种神器叫做局部感知野,一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素联系较为紧密,而距离较远的像素相关性则较弱。因而,每个神经元其实没有必要对全局图像进行感知,只需要对局部进行感知,然后在更高层将局部的信息综合起来就得到了全局的信息。
第二种神器,即权值共享。在卷积层中每个神经元连接数据窗的权重是固定的,每个神经元只关注一个特性。神经元就是图像处理中的滤波器,比如边缘检测专用的Sobel滤波器,即卷积层的每个滤波器都会有自己所关注一个图像特征,比如垂直边缘,水平边缘,颜色,纹理等等,这些所有神经元加起来就好比就是整张图像的特征提取器集合。
2.边缘过渡不平滑
• 应对之道:采样窗口彼此重叠
第二个问题:LeNet里的隐层的神经元个数怎么确定呢?
它和原图像,也就是输入的大小(神经元个数)、滤波器的大小和滤波器在图像中的滑动步长都有关!
LeNet-5共有7层,不包含输入,每层都包含可训练参数(连接权重)。输入图像为32*32大小。
例如,我的图像是1000x1000像素,而滤波器大小是10x10,假设滤波器没有重叠,也就是步长为10,这样隐层的神经元个数就是(1000x1000 )/ (10x10)=100x100个神经元了。
那重叠了怎么算?比如上面图的C2中28*28是如何得来的?这里的步长就是1,窗口大小是5*5,所以窗口滑动肯定发生了重叠。下图解释了28的由来。
第三个问题:S2层是一个下采样层是干嘛用的?为什么是下采样?
也就是上面所说的池化层,只是叫法不同而已。这层利用图像局部相关性的原理,对图像进行子抽样,可以减少数据处理量同时保留有用信息,相当于图像压缩。
RNN循环神经网络