深度学习算法综述
背景介绍:
由于卷积神经网在视觉识别,语音识别和自然语言处理等多个领域的出色表现,对其进行深入研究有极大的重要性,当今对卷积在各个方面的落地应用成为研究热点。
研究理论:
现在的深度学习模型已经形成固定的模式,一般会包含输入层,卷积层,池化层,激活层,全连接层或者全卷积层,在加上分类器或者softmax层。下图是经典的LeNet-5网络,其包含多个卷积层和多个池化层,在图像特征高度被抽象化后进行全连接操作,在模型最后加上分类其进行分类。
上图的结构是模型进行前向计算的图结构。在使用模型进行图片分类之前需要对模型进行训练。现在的深度学习框架均采用梯度反向传播算法进行参数的训练,算法原理是对模型输出与真实之间的误差进行优化,求在误差取值最小时参数的值。
通过损失函数评估误差,有两种损失函数。
- 交叉熵损失(Cross Entropy Loss):
其中yi 是取值为{0,1},y 是预测值取值在(0,1)之间,表示预测的概率。在分类问题构造损失函数时会用到交叉熵损失。
- 均方损失(Mean Square Loss):
其中yi 是取值为连续的取值,y是预测值。在回归问题中构造损失函数时会用到均方损失函数。
深度学习在图像分类上的应用:
图像分类时计算机视觉的主要研究领域之一,在2012-2017年的ImageNet Large Scale Visual Recognition Challenge(ILSVRC)上深度卷积神经网络大放异彩。
1.AlexNet
AlexNet是第一个在ILSVRC取得重大突破的深度学习模型,其在LeNet上采用进行多种先进的手段避免LeNet模型的过拟合与梯度消失问题。其包含了八个学习层—5个卷积层和3个全梁接层。
AlexNet采用的先进手段:
-
使用ReLu函数:
f(x) = max(0,x)
采用Relu函数作为卷积层的激活函数比使用tanh函数和sigmoid函数的网络训练快几倍,比tanh快大概6倍。
2.多GUP进行训练:利用GPU可以相互读写内存的特点,在每个GPU上放置一半的神经元,并且只在特定的GPU上进行通信,这极大减少的训练时间。同时top-1 1.7%,top-5 1.2%的错误率。
3.局部响应归一化:
其中常量k,n,α,β是超参数,它们的值通过验证集确定;我们设k=2,n=5,α=0.0001,β=0.75。没有归一化的四层CNN取得了13%的错误率,而使用归一化取得了11%的错误率。
4.重叠池化:采用的池化步长s比池化窗口z小的s值,这样两个池化窗口会有重叠。这样设计会使模型更加难以拟合。
5.数据增强:通过采用图像变换和水平翻转,图像同的RGB同值的增强,减少过拟合。
6.Dropout:以一定比例的概率使神经元失活,减少过拟合。
下图是AlexNet:
2.VGGNet
由于AlexNet的卷积核过大,训练参数过多。牛津大学研究发现一个7x7卷积核可以由3个3x3的卷积核代替,它们的感受视野相同。这种方法不仅可以减少需要学习的参数,而且可以提供更高层次的卷积特征。VGG网络的结构优雅简单,通过VGG结构可以知道通过增加网络深度可以提高模型的分类准确度。
3.GoogLeNet
Google的研究人员研究深度学习模型的广度上进行探索,设计出GoogLeNet也称为InceptionNet。研究人员发现在同层中采用不同大小的卷积核可以增加网络的特征,利用更多的图片特征可以提高模型的准确度,并参数的数量也大大减少。下图是某一层的插入层。
从图中可以看出在3x3和5x5卷积之前均加入1x1的卷积,这是因为3x3与5x5的卷积操作会产生巨量的数据,在此之前的1x1的卷积操作可以进行降维,会减少总体的数据计算量。直觉是在尺寸较大的块进行昂贵的卷积之前通过普遍使用降维实现的。此外,设计遵循了实践直觉,即视觉信息应该在不同的尺度上处理然后聚合,为的是下一阶段可以从不同尺度同时抽象特征。
3.BatchNormalization
每个输入mini-batch的数据分布不一样,会使模型重新学习新的数据。为了减少内部协变量转变,使mini-batch中的所有样本都被关联在采用BN可以减少这方面的变化。BN层会加在每层的输入之前。公式:
4.ResNet
ResNet实在VGG网络研究出来的是新型网络,VGG网络结构表明深度学习模型的深度不能无限加深,在较深的网络中梯度弥散非常严重,会影响网络收敛的速度,最终导致网络的退化。何凯明团队提出的深度残差网络通过残差单元连接直接将离输出较近的层映射输出层附近。残差单元结构如下。
深度学习在目标检测上的应用:
目标检测是对图片进行目标定位并对目标进行分类,这一过程包含两个任务,一个是目标定位,一个是目标识别。图片上通常会包含多个物体,目标检测模型的任务是尽可能多的检测出图片的物体并且识别出目标的类别。
1.R-CNN
R-CNN是基于目标候选区域的模型,R-CNN模型对输入的模型图片抽取2k个候选区域,把2k个候选区域剪切下来之后,把图片缩小到固定大小再输入CNN网络中进行图片的高层特征抽取在对物体进行分类。下图是R-CNN的流程图。
image.png
2.SPPNet
利用卷积神经网络对图片进行高层特征抽取之后加上全连接进行分类,其中全连接的参数是固定的,所以输入层的大小必须固定,也就是说每个输入网络的图片大小是固定的。R-CNN所提出的2k个候选区域必须缩放到固定大小,这样会消耗大量时间。何凯明在R-CNN基础上提出在CNN模型的最后一层上使用金字塔池化层设计了SPPNet,通过金字塔池化层,将特征图固定到要求的尺寸。这样的设计只需做一次卷积操作,极大地节约了时间。
3.Fast-R-CNN
为解决R-CNN的空间开销,Fast-R-CNN设计了多任务损失函数,把原本的分类损失再加上边框回归不需要SVM做边框会回归,这极大提升训练速度和检测速度。
4.Faster-R-CNN
在Fast-R-CNN使用还选择2k个候选区域,Faster-R-CNN设计了候选区域的生成网络,由候选区域网络生成候选区域,再对候选区域进行分类。这解决R-CNN的空间和时间的开销问题,完全实现端对端的训练。
5.YOLO
YOLO模型是对输入的图片划分为若干区域,如下图左边所示,下把图片划分为SxS的区域并且每个区域只检测一个物体,物体位置采用回归方法进行预测。因为YOLO只采用了一个CNN网络,其目标检测的速度极快,但也牺牲了检测的准确性。
image.png6.SSDNet
SSDNet在VGG上不同尺度进行进行区域回归,提高了目标检测的速度和精度。
网友评论