https://note.youdao.com/oldweb/list?notebook=%2FWEB0c4130fd1857aced7169fbdbd8a05271&sortMode=0¬e=%2FWEB0c4130fd1857aced7169fbdbd8a05271%2FWEB2a9dea691d8ea3331b193c2bc9eece38
机器学习包含深度学习,深度学习包含卷积神经网络
最简单的卷积神经网络,终究是起到一个分类器的作用
一:基本概念:
1.padding 填白:防止边缘信息丢失(每次卷积后,图像变小)
“same”:把(8,8)的图片给补成(10,10),那么经过(3,3)的filter之后,就是(8,8),没有变。
“Valid”: 不经过任何填白
在使用一些框架的时候,需要设置的超参数。
2.stride 步长
3.pooling 池化:提取一定区域的主要特征,并减少参数数量,防止模型过拟合
MaxPoolin,/AveragePooling
4.对多通道(channels)图使用多了filters同时卷积
套用我们前面学过的神经网络的符号来看待CNN的话
我们的输入图片就是X,shape=(8,8,3);
4个filters其实就是第一层神经网络的参数W1,,shape=(3,3,3,4),这个4是指有4个filters;
我们的输出,就是Z0,shape=(6,6,4);
Z0后面有一个激活函数,比如relu,经过激活后,Z0变为A1,shape=(6,6,4);
二:结构组成
卷积层( Convolutional layer):提取特征
滤波器filters和激活函数构成
参数设置:filters的数量、大小、步长;padding是“valid”还是“same”;激活函数类型。
池化层(Pooling layer )/下采样(subsampling):保留特征的同时压缩数据量
参数设置:包括Maxpooling(常用)/average,窗口大小(2,2),步长(2)。
这样,经过pooling之后,输入的长宽都会缩小2倍,channels不变。
全连接层( Fully Connected layer):分类
参数设置:神经元的数量,以及激活函数
输出的每个神经元都和上一层每一个神经元连接
卷积核的数量、大小、移动步长、补0的圈数,全连接层隐藏层的层数、神经元个数人为根据经验指定的(这叫做超参数),但其内部的参数是训练出来的。
最后会先将多维的数据进行“扁平化”,也就是把 (height,width,channel)的数据压缩成长度为 height × width × channel 的一维数组,然后再与 FC层连接,这之后就跟普通的神经网络无异了。
级联分类器(cascade of classifiers):
一个卷积层+采样层,卷积层提取特征数量有限,采样层选出来的特征不一定最重要
用弱分类器把不想要的数据剔除,保留想要的数据,通过不断串联几个弱分类器,进过数据层层筛选,
最后得到我们想要的数据
训练:找到可以理清数据间关系的神经网络,或者拟合数据分布的神经网络
三:特点
1.参数共享机制(parameters sharing):一个卷积核遍历整张图片,参数不变
参数数量大大地减少,避免过拟合
平移不变性
2.连接的稀疏性(sparsity of connections)
由卷积的操作可知,输出图像中的任何一个单元,只跟输入图像的一部分有关系
四:模型训练过程
损失函数
结果与图片真实标签的差距,构造损失函数,训练的目标就是将找到损失函数的最小值。
梯度下降
将损失函数对各种权重、卷积核参数求导,慢慢优化参数,找到损失函数的最小值。
随机梯度下降
在减小损失函数的过程中,采用步步为营的方法,单个样本单个样本输入进行优化,而不是将全部样本计算之后再统一优化。虽然个别样本会出偏差,但随着样本数量增加,仍旧能够逐渐逼近损失函数最小值。
五:经典的卷积神经网络模型
LeNet-5:(1998)识别手写字体的经典卷积神经网络
AlexNet:2012年ImageNet竞赛冠军
GoogLeNet:2014年ImageNet冠军
VGGNet:2014年ImageNet亚军
优点: 在多个迁移学习任务中的表现要优于googLeNet
从图像中提取CNN特征的首选方法
缺点:参数太多
ResNet:2015年ImageNet比赛分类任务中获得第一名,深度残差卷积神经网络
通过“跨层抄近道”的方法减少参数数量,简单而实用。
资料参考:
【1】https://zhuanlan.zhihu.com/p/42559190
【2】https://zhuanlan.zhihu.com/p/49184702