梯度下降算法是机器学习领域常用的方法,用于求解无约束最优化问题。本文将用一个简单的例子来说明清楚。
假设我们要求一个函数的最小值,为了简单起见我们用:y=x2,我们都知道它的最小值为0,但我们现在要用算法来求解。
现在给x随便赋一个初始值:x=80,此时y=80*80=640,这个点如图所示。
从图中可以看出,要求y的最小值,x应该要往左边移动,但现在的问题是程序怎么知道应该往左还是往右(即加还是减)。
这就要借助一下数学知识了,数学上,梯度的方向是函数增长速度最快的方向,反过来梯度的反方向就是函数减少最快的方向。要想求y=x2的最小值,x应该要沿着梯度的反方向移动。我们先来计算一下导数:
y’=f’(x)= 2x
当x>0时,y’>0,此时y在x>0的任意一处,梯度都是向右,在x=80处,梯度为160,因此,负梯度方向为-160,向左。
x1=x0-a*f’(x0)
x1=x0-a*(2*x0)
a为学习率,初始化为a=0.4,则迭代过程为:
迭代到100次时,把x带入y=x2计算,y就非常趋向于0了。
如果觉得《梯度下降算法_五分钟读懂梯度下降算法》对你有帮助,请点赞、收藏,并留下你的观点哦!