学习笔记
- 典型的深度学习模型就是很深层的神经网络,包含很多隐藏层。隐藏层多的神经网络很难使用BP算法进行直接训练,因为反向传播时容易发散,很难收敛
- CNN节省训练开支的方式是权共享(Weight Sharing),让一组神经元使用相同的权值
- 主要用于图像的识别领域
1.卷积神经网络的和以往的全连接神经网络有所区别。
图一:全连接神经网络
上图的全连接神经网络主要有输入层(input layer)、隐藏层(hidden layer)、输出层(output layer)组成。
图二:卷积神经网络
- Convolution 卷积层
- Subsampling 池化层
- Full connection 全连接层
对比:
- 卷积神经网络和全连接神经网络的结构基本相似。以图像分类为例,卷积神经网络的输入层是原始图像的像素,而输出层的每一个节点代表了不同类别的可信度。
- 之间的区别主要在于每一层之间的连接方式。在卷积神经网络的前几层中,每一层的节点被组织为一个三维矩阵。
2.卷积神经网络主要由以下几部分组成。
- 1.输入层
一般指代一个图像的像素矩阵 - 2.卷积层-特征提取
卷积层中每一个节点的输入只是上一层神经网络的一小块,这个小块的大小通常为3*3或者5*5.卷积层试图把神经网络中的每一小块进行更加深入地分析从而达到抽取程度更高的特征。一般来说,通过卷积层处理过的节点矩阵会变得更深,因此从图中可以看到节点矩阵的深度会增加。 - 3.池化层
池化层神经网络不会改变三维矩阵的深度,但是它可以缩小矩阵的大小。池化操作可以认为是将一个分辨率高的图片转化为分辨率较低的图片。通过池化层,可以进一步缩小最后全连接层中节点的个数,从而达到减少整个神经网络中参数的目的。 - 4.全连接层
经过多伦卷积层和池化层的处理以后,在卷积神经网络的最后一般是1到2个全连接层来给出最后分类结果。经过几轮的处理以后,可以认为图像中的信息已经被抽象为信息含量更高的特征。可以将卷积层和池化层看做自动图像特征提取的过程。在特征提取以后,还是需要全连接层来完成分类任务。 - 5.Softmax层
Softmax层主要是用于分类问题。通过Softmax层,可以得到当前样例属于不同种类的概率分布情况。
2.1卷积层介绍
- 卷积核(Convolution Kernel),也叫过滤器filter,由对应的权值W和偏置b体现
- 下图是3x3的卷积核在5x5的图像上做卷积的过程,就是矩阵做点乘之后的和
- 卷积特征提取的原理:
- 卷积特征提取利用了自然图像的统计平稳性,这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。
- 当有多个filter时,我们就可以学到多个特征,例如:轮廓、颜色等
多个过滤器filter(卷积核)
- 一张图片有RGB三个颜色通道,则对应的filter过滤器也是三维的,图像经过每个filter做卷积运算后都会得到对应提取特征的图像途中两个filter:W0和W1,输出的就是两个图像
这里的步长stride为2(一般就取2,3)
在原图上添加zero-padding,它是超参数,主要用于控制输出的大小
同样也是做卷积操作,以下图的一步卷积操作为例:
与w0[:,:,0]卷积:0x(-1)+0x0+0x1+0x1+0x0+1x(-1)+1x0+1x(-1)+2x0=-2
与w0[:,:,1]卷积:2x1+1x(-1)+1x1=2
与w0[:,:,2]卷积:1x(-1)+1x(-1)=-2
最终结果:-2+2+(-2)+1=-1 (1为偏置)
2.2池化层介绍
- 也叫做下采样
- Pooling过程
- 把提取之后的特征看做一个矩阵,并在这个矩阵上划分出几个不重合的区域,
- 然后在每个区域上计算该区域内特征的均值或最大值,然后用这些均值或最大值参与后续的训练
- 下图是使用最大Pooling的方法之后的结果
- Pooling的好处
- 很明显就是减少参数
- Pooling就有平移不变性((translation invariant)
- 如图feature map是12x12大小的图片,Pooling区域为6x6,所以池化后得到的feature map为2x2
- Pooling中的average方法对背景保留更好,max对纹理提取更好
- 深度学习可以进行多次卷积、池化操作
2.3激活层
- 在每次卷积操作之后一般都会经过一个非线性层,也是激活层
现在一般选择是ReLu,层次越深,相对于其他的函数效果较好,还有Sigmod,tanh函数等
- sigmod和tanh都存在饱和的问题,如上图所示,当x轴上的值较大时,对应的梯度几乎为0,若是利用BP反向传播算法, 可能造成梯度消失的情况,也就学不到东西了
2.4全连接层
- 意思就是输出层的神经元和输入层的每个神经元都连接
- 在卷积神经网络的最后,往往会出现一两层全连接层,全连接一般会把卷积输出的二维特征图转化成一维的一个向量,这是怎么来的呢?目的何在呢?
- 最后的两列小圆球就是两个全连接层,在最后一层卷积结束后,进行了最后一次池化,输出了20个12*12的图像,然后通过了一个全连接层变成了1*100的向量。
- 这是怎么做到的呢,其实就是有20*100个12*12的卷积核卷积出来的,对于输入的每一张图,用了一个和图像一样大小的核卷积,这样整幅图就变成了一个数了,如果厚度是20就是那20个核卷积完了之后相加求和。这样就能把一张图高度浓缩成一个数了。
- 全连接的目的是什么呢?因为传统的网络我们的输出都是分类,也就是几个类别的概率甚至就是一个数–类别号,那么全连接层就是高度提纯的特征了,方便交给最后的分类器或者回归。
- 但是全连接的参数实在是太多了,你想这张图里就有20*12*12*100个参数,前面随便一层卷积,假设卷积核是7*7的,厚度是64,那也才7*7*64,所以现在的趋势是尽量避免全连接,目前主流的一个方法是全局平均值。也就是最后那一层的feature map(最后一层卷积的输出结果),直接求平均值。有多少种分类就训练多少层,这十个数字就是对应的概率或者叫置信度