3 Gradient Descent - 梯度下降
1 为什么要用 Gradient Descent
首先让我们回顾一下机器学习的三部曲,
在 step 2 中,我们要定义一个 Loss Function,用来判断我们找出的函数的好坏。
在 step 3 中,我们要挑出一个可以使得 Loss 函数值最小的一个函数,当做最好的函数。
想一想我们以前是怎么求一个函数的最小值的,或许看一下就出来了,或者简单求个导。但是在神经网络中,我们面临的是一个参数可能上万个,百万个甚至更多的函数,显然我们需要更好的方法。
而这个方法就是 Gradient Descent。
2 Gradient Descent 怎么做
首先我们要知道 梯度(Grad) 这个概念,梯度就是 一个函数增长最快的方向。而 Gradient Descent 就是沿着梯度的反方向,也就是下降得最快的方向前进,直至找到一个最小值(理论上来说可能只能找到极小值,但是经过一些变种,好像可以增大找到最小值的概率)。
举个例子:
稍微解释一下就是:
- 先随机(或者其他更有效的方法)设置一个初始值 θ0 θ 0 ;
- 算出 θ0 θ 0 上的梯度值 ∇L(θ) ∇ L ( θ ) ;
- 令 θ1=θ0−η∇L(θ) θ 1 = θ 0 − η ∇ L ( θ ) 。其中 η η 叫做 learning rate ,决定步长。
- 算出 θ1