梯度下降的介绍
在解决最优化的问题中
我们需要找到最小一组的θ,让损失函数越小越好。
首先任意选取w0和b0的值,对于w1和b1进行update:
η为学习率,人工设值。重复上面的步骤不停的更新wi和bi直到无变化。在update wi和bi的过程即为梯度下降。
偏微分部分为梯度部分
学习率η
学习率η的调整要适当刚好,过大容易卡在某一位置。过小则决定移动距离较小,结果出现的较慢。如图:
通常一开始的离距离最低点较大,可以选择η值较大,而随着移动距离最低点越来越近则可以适当的调低η的值。不同的参数需要不同的学习率。
Adagrad 算法
每个参数的学习率都把它除上之前微分的均方根,σ^t:之前参数的所有微分的均方根,对于每个参数都是不一样的。
g^ t 梯度越大。移动的距离越大,而σ^t 梯度越大,步子越小。二者之间有所矛盾。考虑跨参数的问题,所以最好的步伐应该是:一次微分/二次微分。和一次微分成正比,和二次微分成反比,二次微分较大,参数update比较大。考虑二次微分才能真实反映最低点的距离。
随机梯度下降
随机梯度下降法比之前的梯度下降更快,任意或按顺序选取一个X^n,计算损失函数后就update梯度。
一般的梯度下降一步可能包含多个例子,而随机梯度下降已经走了很多步。
特征缩放
将其输入特征范围缩放,使不同的特征范围相同。
当xi的输入值较大wi同样变化时,对输出值影响较大。从图中可以看出x2对损失函数的影响比较大,则w2处周围比较陡峭。
缩放方法
在第i个维度中计算器平均值mi,还有其标准差σi,然后用第r个例子中的第i个输入,减掉平均数 mi,然后除以标准差 σi,得到的结果是所有的维数都是 0,所有的方差都是1。
梯度下降数学理论基础
这里有一些地方还是不太明白,暂时备注
泰勒展开式
若 h(x)在x=x0点的某个领域内有无限阶导数(即无限可微分,infinitely differentiable),那么在此领域内有:
当x很接近x0时,有 h(x)≈h(x0)+h′(x0)(x−x0) 上式就是函数h(x)在x=x0点附近关于x的幂函数展开式,也叫泰勒展开式。
多元泰勒展开式
基于泰勒展开式,在(a,b)点的红色圆圈范围内,可以将损失函数用泰勒展开式进行简化:
从而得到
让损失函数最小 取(u,v)相反的方向
u和v带入:
泰勒展开式推到过程
梯度下降的限制
在梯度下降的过程中,由于偏微分等于0,容易停在非极小值的点。