梯度下降算法在机器学习与神经网络中有广泛的应用,主要用来求最优参数,下面我们通过一个最简单的例子来演示梯度下降算法过程
示例:
举例:y = x ^ 2 ,通过梯度下降算法求y取最小值(极小值)时候的最优解x
求解过程主要通过迭代完成
迭代的方程为:
x = x - y'(x) * α
其中x为要求的解,y'(x)为梯度(也就是导数或偏导,我们在这里用最简单的一元函数演示,所以直接写成导数)
α为学习率(或称步长,是一个重要的参数,α的选择直接影响这着算法的效率)
算法过程:
1.首先任取一点,我们取x = 3,计算其导数y'(x) = 6
2.我们设定学习率为α = 0.4
3.开始算法的迭代:
(1)x = 3,y'(x) = 6,x = x - y'(x) * α = 0.6
(2)x = 0.6,y'(x) = 1.2,x = x - y'(x) * α = 0.12
(3)x = 0.12,y'(x) = 0.24,x = x - y'(x) * α = 0.024
(4)x = 0.024,y'(x) = 0.048,x = x - y'(x) * α = 0.0048
。。。
4.当梯度(导数)下降到很小或为0时,则求得的解x趋向最优解,比如本例中迭代到第四步时y'(x) = 0.048已经非常小了,x = 0.0048基本趋向于本例的真正解x = 0
算法图像演示:
图片是吴恩达视频里的图,但是和本例也差不多