CNN
卷积神经网络用处在哪?
卷积神经网络是用于特征提取的。
传统的神经网络权重参数矩阵大、训练时间多、过拟合风险高。
可用于检测追踪任务、分类和检索、超分辨率重构、无人驾驶、人脸识别等
卷积神经网络(CNN)与传统网络(NN)的区别:
- NN输入的是像素点,而CNN输入的是一张原始图像(h×w×c),一个是一维,一个是三维。
卷积神经网络的整体架构:
- 输入层:输入一个图像数据
- 卷积层:尽可能多的提取特征
- 池化层:压缩、下采样特征
- 全连接层:通过一组权重参数,把输入层和输出层连在一起
卷积:卷积做了一件什么事?
对不同的区域提取出不同的特征,将一张图像分成不同的部分,区别处理,进行图像分割。
图像颜色通道:
R,G,B:要对三个颜色通道分别做计算,把三个通道卷积完的结果加在一起。对于每一个区域都要进行特征提取,得到最终的特征值。
输入的图像维度c是多少,那么卷积核的维度c也应该是多少。
卷积层
卷积核就是:每多大区域选出一个特征,一个区域对应出一个特征值。 相当于权重,刚开始是随机初始化的,然后学习更新。即下图W0
所有的卷积网络都是用内积做计算,对应位置相乘,所有结果加一起就可以了。结果别忘了加一个偏置项。在每一个卷积层中的特征矩阵w,h应该是相同的。在不通的卷积层中w,h可以不同
卷积层涉及的参数:
滑动窗口步长:注意步长为2得到的最终结果才是3*3,步长小,提取特征比较细致,效率慢;步长大,提取特征比较粗糙,特征少。一般对于图像而言,我们选择步长为1就可以,但是对于文本数据和其他数据步长不确定。
卷积核尺寸:卷积核越小,特征提取越细致,一般来说选3*3
边缘填充:在边界外再加几圈0,能够弥补一些边界信息利用不充分问题。最外层只是扩充,因为是0,所以对最终结果不会产生影响。一般添一圈
卷积核个数:在算的过程当中要得到多少个特征图就有多少个卷积核。
特征图的个数:特征图的个数取决于你给了多少份的权重矩阵,选择不通的权重矩阵,得到的特征图个数结果不一样。
卷积神经网络不止可以做一次卷积,一次可以提取出粗略特征,再卷积一次可以提取出中间特征,最后再提取出高级特征,再拿出高级特征来做分类。做一次卷积是不够的,需要做多次。
卷积结果计算公式:
卷积参数共享:
对于图中的每个区域都选择同样的卷积核,卷积核这个权值矩阵是不变的
每次卷积完都要加一个RELU函数,即非线性变换
池化层
在原始得到的特征上进行一个筛选,并不会改变特征图的个数。不涉及矩阵计算,只涉及筛选。
最大池化:
选择不同区域,在每个区域中选择最大值,选择一个最大值说明这个特征比较重要。
平均池化:
选择不同区域,在每个区域中求平均值。
我们选择最大池化,因为神经网络是个优胜劣汰的过程,我们选择最好的特征,不平均来把不好的特征拷进去。
两次卷积后一次池化,RELU是激活函数
卷积和池化只是做特征提取的,到最后池化后会形成立体的特征图,对特征图进行分类,如何转化为分类的概率值?全连接层无法连三维的东西,我们需要将三维的特征图拉长形成特征向量,全连接层如果是五分类,池化层得到的特征图大小为32*32*10
,那么得到的全连接层是[10240,5],相当于将10240个特征转化为我们预测的五个类别的概率值。所以在Pooling层和FC层之间还有一个拉长的操作(转换操作)
什么才能称为一层?带参数计算的才能被称为一层。卷积层带,RELU层(激活层)不带参数计算,池化层不带参数计算,不更新参数之类的,全连接层也有权重参数矩阵,需要更新参数。
感受野:
我们希望感受野越大越好。