深度学习优化方法与目标检测中的评价指标

我的知乎主页
在学习深度学习,目标检测等相关知识时,需要了解一些基础的优化方法与评价指标(这里只是简单叙述方便理解,想真正弄明白还得撸论文)。

优化算法

批量梯度下降(Batch gradient descent)
每次使用全量的训练集样本来更新模型参数,即: θ=θ−η⋅∇θJ(θ)
其代码如下:
在这里插入图片描述
批量梯度下降每次学习都使用整个训练集,因此其优点在于每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点(凸函数收敛于全局极值点,非凸函数可能会收敛于局部极值点),但是其缺点在于每次学习时间过长,并且如果训练集很大以至于需要消耗大量的内存,并且全量梯度下降不能进行在线模型参数更新。

随机梯度下降(Stochastic gradient descent)
随机梯度下降算法每次从训练集中随机选择一个样本来进行学习,即: θ=θ−η⋅∇θJ(θ;xi;yi)
随机梯度下降算法每次只随机选择一个样本来更新模型参数,因此每次的学习是非常快速的,并且可以进行在线更新。
其代码如下:在这里插入图片描述
随机梯度下降最大的缺点在于每次更新可能并不会按照正确的方向进行,因此可以带来优化波动(扰动),不过从另一个方面来看,随机梯度下降所带来的波动有个好处就是,对于类似盆地区域(即很多局部极小值点)那么这个波动的特点可能会使得优化的方向从当前的局部极小值点跳到另一个更好的局部极小值点,这样便可能对于非凸函数,最终收敛于一个较好的局部极值点,甚至全局极值点。

小批量梯度下降(Mini-batch gradient descent)
Mini-batch 梯度下降综合了 batch 梯度下降与 stochastic 梯度下降,在每次更新速度与更新次数中间取得一个平衡,其每次更新从训练集中随机选择 m,m<n 个样本进行学习,即:θ=θ−η⋅∇θJ(θ;xi:i+m;yi:i+m)
其代码如下:在这里插入图片描述
相对于随机梯度下降,Mini-batch梯度下降降低了收敛波动性,即降低了参数更新的方差,使得更新更加稳定。相对于全量梯度下降,其提高了每次学习的速度。并且其不用担心内存瓶颈从而可以利用矩阵运算进行高效计算。一般而言每次更新随机选择[50,256]个样本进行学习,但是也要根据具体问题而选择,实践中可以进行多次试验,选择一个更新速度与更次次数都较适合的样本数。mini-batch梯度下降可以保证收敛性,常用于神经网络中。

Momentum
momentum是模拟物理里动量的概念,积累之前的动量来替代真正的梯度。公式如下:
在这里插入图片描述
下降初期时,使用上一次参数更新,下降方向一致,乘上较大的\mu能够进行很好的加速。
下降中后期时,在局部最小值来回震荡的时候,gradient\to0,\mu使得更新幅度增大,跳出陷阱。
在梯度改变方向的时候,\mu能够减少更新 总而言之,momentum项能够在相关方向加速SGD,抑制振荡,从而加快收敛。

Nesterov
nesterov项在梯度更新时做一个校正,避免前进太快,同时提高灵敏度。 将上一节中的公式展开可得:
在这里插入图片描述
可以看出,m{t-1}并没有直接改变当前梯度gt,所以Nesterov的改进就是让之前的动量直接影响当前的动量。即:在这里插入图片描述

RMSprop
RMSProp算法的全称叫 Root Mean Square Prop,为了进一步优化损失函数在更新中存在摆动幅度过大的问题,并且进一步加快函数的收敛速度,RMSProp算法对权重 W 和偏置 b的梯度使用了微分平方加权平均数。在这里插入图片描述
其中,假设在第 t 轮迭代过程中,各个公式如下所示: 在这里插入图片描述
在上面的公式中sdw和sdb分别是损失函数在前t−1轮迭代过程中累积的梯度梯度动量,β 是梯度累积的一个指数。所不同的是,RMSProp算法对梯度计算了微分平方加权平均数。这种做法有利于消除了摆动幅度大的方向,用来修正摆动幅度,使得各个维度的摆动幅度都较小。另一方面也使得网络函数收敛更快。(比如当 dW 或者 db 中有一个值比较大的时候,那么我们在更新权重或者偏置的时候除以它之前累积的梯度的平方根,这样就可以使得更新幅度变小)。为了防止分母为零,使用了一个很小的数值 ϵϵ来进行平滑,一般取值为10的-8次方。

Adam
Adam(Adaptive Moment Estimation)算法是将Momentum算法和RMSProp算法结合起来使用的一种算法,我们所使用的参数基本和上面讲的一致,在训练的最开始我们需要初始化梯度的累积量和平方累积量。
在这里插入图片描述
假设在训练的第 t轮训练中,我们首先可以计算得到Momentum和RMSProp的参数更新:
在这里插入图片描述
由于移动指数平均在迭代开始的初期会导致和开始的值有较大的差异,所以我们需要对上面求得的几个值做偏差修正。
在这里插入图片描述
通过上面的公式,我们就可以求得在第 t 轮迭代过程中,参数梯度累积量的修正值,从而接下来就可以根据Momentum和RMSProp算法的结合来对权重和偏置进行更新。
在这里插入图片描述
上面的所有步骤就是Momentum算法和RMSProp算法结合起来从而形成Adam算法。

评价指标

分类目标只有两类,计为正例(positive)和负(negtive):
1) True positives(TP): 被正确地划分为正例的个数,即实际 为正例且被分类器划分为正例的实例数(样本数);
2)False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;
3)False negatives(FN):被错误地划分为负例的个数,即实际为正例但被分类器划分为负例的实例数;
4)True negatives(TN): 被正确地划分为负例的个数,即实际为负例且被分类器划分为负例的实例数。

召回率(recall):
又被称为查全率,预测为正例(positive)的样本中正确的数量除以真正的Positive的数量,即:Recall=TP/(TP+FN)=TP/P

精确率(Precision):
又被称为查准率,被分为正例的示例中实际为正例的比例,
即Precision=TP/(TP+FP)

P-R曲线:
选取不同阈值时对应的精度和召回画出来在这里插入图片描述
总体趋势,精度越高,召回越低,当召回达到1时,对应概率分数最低的正样本,这个时候正样本数量除以所有大于等于该阈值的样本数量就是最低的精度值。

平均精度(Average-Precision,AP):
P-R曲线围起来的面积,通常来说一个越好的分类器,AP值越高。

Receiver Operating Characteristic,ROC
1) True Positive Rate ( TPR ) = TP / [ TP + FN] ,TPR代表能将正例分对的概率
2)False Positive Rate( FPR ) = FP / [ FP + TN] ,FPR代表将负例错分为正例的概率
在这里插入图片描述
曲线左下和右上代表一个完全没有效果的分类器,如果曲线在对角线左上,说明分类器有效果,在右下说明是负效果。
ROC曲线围住的面积,越大,分类器效果越好。

平均精度均值(Mean Average Precision,mAP):
mAP即是把每个类别的AP都单独拿出来,然后计算所有类别AP的平均值,代表着对检测到的目标平均精度的一个综合度量。
在这里插入图片描述
参考文章:
https://blog.csdn.net/willduan1/article/details/78070086
https://www.cnblogs.com/bonelee/p/8392370.html
https://zhuanlan.zhihu.com/p/33273532

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值