1、数据集
2、前向传播
前向传播核心是介绍如何通过输入的X得到输出的Y,前向传播相对于反向传播比较容易理解。
前向传播公式如下:
3、损失函数
损失函数是主要是用来衡量神经网络输出的值Y’和真实值Y之间的差距,常用的损失函数主要有交叉熵和均方误差损失函数。:
l o s s = − [ y l o g y ′ + ( 1 − y ) l o g ( 1 − y ′ ) ] loss = -[ylogy' + (1-y)log(1-y')] loss=−[ylogy′+(1−y)log(1−y′)]
l o s s = 1 2 m ∑ i = 1 m ( Y ′ − Y ) 2 loss = \frac{1}{2m}\sum_{i=1}^m(Y' - Y)^2 loss=2m1∑i=1m(Y′−Y)2
4、优化方法
优化方法是一种能够帮我们最小化或者最大化目标函数(损失函数)的一类算法,通过神经网络输出的值Y’和真实值Y之间存在差距,优化方法的主要目的是让该差距如何尽可能的达到最小。例如一个线性模型 f ( x ) = W x + b f(x) = Wx + b f(x)=Wx+b,根据输入 x x x我们能够得到输出 f ( x ) f(x) f(x),并且可以计算出输出值和实际值之间的差距 ( f ( x ) − Y ) 2 (f(x) - Y){2} (f(x)−Y)2,优化方法的最终目的是找出合适 W W W和 b b b,以使得上述的损失函数达到最小,损失函数的值越小,说明我们的模型越接近实际情形。
目前优化方法的核心思想是对损失函数进行一阶优化或者二阶优化。一阶优化是采用参数的梯度值来最大化或者最小化目标函数,二阶优化是采用二阶导数来进行优化,在实际应用中二阶导数计算量较大,一般很少使用。
常用的优化方法主要有:
批量梯度下降是最原始的方式,它在每次迭代时使用了所有的样本来进行梯度的更新,训练速度较慢,但是参数更新的时候考虑了所有的样本,从而能够更准确的朝向极值所在的方向,易于实现并行计算。
随机梯度下降是每次迭代使用一个样本来对参数进行更新,使得参数更新速度大大加快,但是准确度有所下降,可能会收敛到局部最优,并且不易于并行实现。
小批量梯度下降综合了上面两种方法的特点,每次迭代使用batch_size个样本进行来对参数进行更新,兼具了上面两种方法的优点,但是batch_size的选择不当能够带来一些问题。
动量法的主要思想是让早期的梯度对当前梯度的影响越来越小,参数更新公式为:
将该公式展开为如下:
可以看出离当前梯度越远,其系数越小,相乘之后导致之前的梯度大大降低。
我们希望沿着收敛速度快的方向步长大一些,与其垂直方向步长小一点,即将梯度震荡小的方向,增大其步长,震荡大的方向降低其步长,所以RMSprop的迭代更新公式为:
5、反向传播
反向传播两大核心就是计算误差和运用链式法则更新参数。误差计算方法上面已经介绍,整个流程如下:
6、常用技巧
数据增强
数据预处理
Batch Normalization(BN)
激活函数
正则化
drop-out
early-stopping
超参数的合理设定
卷积神经网络算法在计算机视觉中得到了广泛的应用,目前主要用于检测、识别、分割、追踪,在无人驾驶、医疗图像、零售业等领域有广泛的使用。
随着卷积神经网络的不断发展,一大批基于卷积神经网络的算法应运而生,下面将分别胸检测、识别、分割、追踪四个方面介绍相应的成熟算法。
1、检测算法
在检测领域目前的算法主要分为两个思路,即one-stage和two-stage。one-stage速度较快,但精度略低;two-stage速度略慢,但精度较高。
one-stage的代表算法主要有YOLO V1、YOLO V2、YOLO V3、RetinaNet、SSD等。
two-stage的代表算法主要有Fast-RCNN、Faster-RCNN、FPN等。
anchor-free的代表算法主要有RefineNet、CornerNet、CenterNet等。
轻量级神经网络的代表算法主要有MobileNet 、ShuffleNet 、SqueezeNet等。
2、分类算法
分类算法的基本思路主要有两种,①通过卷积神经网络进行特征提取,然后通过sigmoid和softmax进行二分类和多分类。②通过卷积神经网络进行特征提取,提取出一维特征向量,然后通过计算特征向量之间的L1或者L2距离来判断是否属于一类。
常见的特征提取网络主要有 LeNet、GoogleNet、AlexNet、VGG、ResNet等。
3、分割算法
分割算法是对每一个像素进行二分类的算法,主要分为语义分割和实例分割。语义分割是像素级别的,对图像中的每个像素都划分出对应的类别,即实现像素级别的分类;实例分割不但要进行像素级别的分类,还需在具体的类别基础上区别开不同的实例。
常见的分割算法主要有FCN、Mask-RCNN等。
4、目标追踪算法
目前对该领域没有研究过,所以以后再补充。
神经网络算法相比于传统算法有较明显的优势,它能够自动学习图像特征来代替繁琐的手工提取特征,使得涉及到图像的领域都得到了很快的发展。