卷积神经网络与普通机器学习的区别
CNN中新出现了卷积层和池化层
全连接层存在的问题
在全连接层中,传入的图像的形状信息被破坏了;由于在全连接层中,数据是以一维的形式传入的,故忽略了图像中诸如相邻像素之间的关系
特征图
卷积层的输入输出数据。根据输入和输出分为输入特征图和输出特征图
卷积运算
卷积运算是以一定的间隔滑动滤波器的窗口并对输入数据应用滤波器,应用的方式有乘积累加,偏置和求和等
填充
向输入数据的周围填入固定的数值;“幅度为1的填充”指的是向输入数据周围1个单位的范围内填充0
作用:调整输出的大小,由于在卷积运算中空间不断缩小,为了在保持输出大小不变的前提下进行卷积运算甚至深度卷积,就需要填充来调整数据空间大小
步幅
应用滤波器的位置间隔
3维数据的卷积运算
与2维数据的卷积运算不同的是,3维数据的卷积运算同时进行多通道的卷积并将结果相加
池化层
池化是缩小高、长方向上的空间的运算;包含Max池化和Average池化等
特征
- 没有要学习的参数
- 通道数不发生变化
- 对微小的位置变化具有鲁棒性(健壮)
具有代表性的CNN
LeNet
是进行手写数字识别的网络,具有连续的卷积层和池化层,最后经全连接层输出结果
不同点
激活函数不同
LeNet使用sigmoid函数,而现在的CNN主要使用ReLU函数
在缩小中间数据的大小时采用的方法不同
原始的LeNet中使用子采样(subsampling),而现在的CNN大多使用Max池化
AlexNet
在结构上与LeNet基本没有什么不同
与LeNet的差异
- 激活函数使用ReLU
- 使用进行局部正规化的LRN(Local Response Normalization)层
- 使用Dropout
Data Augmentation(数据扩充)
基于算法“人为地”扩充输入图像(训练图像),如施加旋转、垂直或水平方向上的移动等微小变化,以此增加图像的数量
加深层的好处
减少网络的参数数量
与没有加深层的网络相比,加深了层的网络可以用更少的参数达到同等水平(或者更强)的表现力
使学习更加高效
随着层的加深,神经元会对更复杂的东西有响应
可以分层次地分解需要学习的问题
可以分层次地传递信息
感受野(receptive field)
给神经元施加变化的某个局部空间区域
ImageNet
一个拥有超过100万张图像的数据集
在深度学习中比较知名的网络
- VGG
- GoogLeNet
- ResNet
深度学习中高速化的问题
在深度学习中大部分时间都耗费在卷积层上
基于GPU的高速化
深度学习中需要进行大量的乘积累加计算,而这正是GPU所擅长的,故可使用GPU来进行深度学习的运算以提高学习速度
分布式学习
为了进一步提高深度学习所需的计算的速度,可以考虑在多个GPU或者多台机器上进行分布式计算