我的CSDN博客:https://blog.csdn.net/litt1e
我的公众号:工科宅生活
在学习深度学习,目标检测等相关知识时,需要了解一些基础的优化方法与评价指标(这里只是简单叙述方便理解,想真正弄明白还得撸论文)。
优化算法
批量梯度下降(Batch gradient descent)
每次使用全量的训练集样本来更新模型参数,即: θ=θ−η⋅∇θJ(θ)。其代码如下:
![afa9c13351b95aaf36fa2d8a85712124.png](https://img-blog.csdnimg.cn/img_convert/afa9c13351b95aaf36fa2d8a85712124.png)
批量梯度下降每次学习都使用整个训练集,因此其优点在于每次更新都会朝着正确的方向进行,最后能够保证收敛于极值点(凸函数收敛于全局极值点,非凸函数可能会收敛于局部极值点),但是其缺点在于每次学习时间过长,并且如果训练集很大以至于需要消耗大量的内存,并且全量梯度下降不能进行在线模型参数更新。
随机梯度下降(Stochastic gradient descent)
随机梯度下降算法每次从训练集中随机选择一个样本来进行学习,即: θ=θ−η⋅∇θJ(θ;xi;yi)
随机梯度下降算法每次只随机选择一个样本来更新模型参数,因此每次的学习是非常快速的,并且可以进行在线更新。其代码如下:
![86f0c228512f70caa64ff63f16a2e217.png](https://img-blog.csdnimg.cn/img_convert/86f0c228512f70caa64ff63f16a2e217.png)
相对于随机梯度下降,Mini-batch梯度下降降低了收敛波动性,即降低了参数更新的方差,使得更新更加稳定。相对于全量梯度下降,其提高了每次学习的速度。并且其不用担心内存瓶颈从而可以利用矩阵运算进行高效计算。一般而言每次更新随机选择[50,256]个样本进行学习,但是也要根据具体问题而选择,实践中可以进行多次试验,选择一个更新速度与更次次数都较适合的样本数。mini-batch梯度下降可以保证收敛性,常用于神经网络中。
<