最优化

我们上一篇文章中得到了损失函数值,我们要根据这个损失值来调参数,那么怎么将参数调成一个最优的?,这就是最优化问题。
我们知道损失函数值越大表明分类效果越差,损失函数值越小表明分类效果越好,所以这里我们就需要将损失函数值减小到一个最小的范围。
首先介绍一下梯度的概率:
梯度(一阶导数)
考虑一座在 (x1, x2) 点高度是 f(x1, x2) 的山。那么,某一点的梯度方向是在该点坡度最陡的方向,而梯度的大小告诉我们坡度到底有多陡。
梯度下降,梯度下降就是指沿着梯度的反方向往下,(因为梯度方向是使得LOSS值增加幅度最大的方向,所以为了LOSS能减少就要朝着梯度下降的方向去寻找最小点)
最优化
这里我们需要考虑两个问题,意识梯度下降的方向,二是步长。
最优化
在这个图中我们可以看到,如果步长太大,第一步从A点跨到了B点,第二步从B点跨到了D点,从图中可以看出D点是一个极小点,但是这时错过了全局最小点B,步长太大可能错过全局最小点,也就是错过了最优解。所以我们要选择较小的步长,多从进行迭代,最终到达最小点。
当输入一张图像之后,我们需要用这个图像对参数进行一个更新,但是当我们的图像本身就是有问题的,比如说含有一些噪音,或者图像的标注有问题,这样的话只拿一张图像来更新参数的话,可能不是朝着正确的梯度方向去更新的,
我们要使每一次迭代都朝着最好的方向去进行,这里我们就引入了Bachsize,Bachsize通常是2的整数倍(32,64,128),就是我们在更新参数的时候不是使用一张图像,而是使用一批图像,通过一批图像去计算更新的平均方向,再朝着这个方向去更新参数。
最优化
训练网络时LOSS值变化不是一条线直接下去,而是在中间发生很多的起伏,有些的迭代可能效果比较好,有的慢一下,整体趋势应该朝着一个收敛的方向去进行的。
之后介绍一下学习率:
最优化
学习率就是指一次沿着这个梯度下降的方向走多远,这个学习率可以说是整个最优化问题起着决定性的作用,因为如果学习率太大我们有可能有跳过最低点而学习率太小又会使得咱们整个网络收敛的太慢。
对于5万个数据,一次100个bachsize训练,一个epoch里迭代500次,Epoch值指的就是五万个数据跑完一次 epoch/bachsize=迭代次数