梯度下降算法的做法是通过改变权重w的值,从而使代价函数最小。那么问题是,为什么改变w的值能够使代价函数最小呢?最直接的方式应该是求取代价函数C对于w的导数,当∂C⁄∂w = 0时,代价函数C才具有最小值,此时通过∂C⁄∂w = 0计算出来的值才是最优权重。但是,由于计算复杂度的原因,我们采取的是一种间接的思路:梯度下降算法。
实际上,由于最终的目的是让C值变小。既然通过求导的方式达不到目的,那就看有没有方式能够让C逐步变小。而梯度下降的方式,就是沿着C值下降最快的方向来减小C的值。
C值下降最快的方向即为C值的梯度方向∇C。梯度可以理解为某点的斜率:
∇C= ∂C⁄∂w
沿着梯度方向下降一定的距离∆w,这就是下降的梯度值∆C:
∆C=∇C×∆w
最后,更新梯度值
C = C-∆C=C- ∂C/∂w×∆w
通过以上步骤也能实现梯度的下降。重要的是,通过操纵∆w能够控制C下降的幅度。这就是我们能够通知C的值进行调参的关键。
但是又如何能保证∆C一定是正数呢?否者就不能保证每一步都是朝着减小C的方向。∆C= ∂C/∂w×∆w,∂C/∂w无法控制,但∆w能控制,那么?是否可以通过控制∆w使两者乘积一定为正值呢?答案是可以的,某个数的平方就一定为正。
因此,∆w= η× ∂C/∂w,其中的η是学习率,用于控制下降的速度。
即w = w - η× ∂C/∂w,这就通过改变权重w的值,实现了C值的下降。
梯度下降算法的实质
最新推荐文章于 2022-02-27 11:39:48 发布