机器学习-梯度下降算法
梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。
概念
梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。
流程
1 | graph LR |
描述
1 | 0.5 5.0 |
单样本误差:
根据预测函数求出输入为x时的预测值:$y’ = w_0 + w_1x$
总样本误差:
把所有单样本误差相加即是总样本误差:$\frac{1}{2}\sum(y-y’)^2$
损失函数:反映总样本误差因模型参数的变化而变化的规律
$loss = \frac{1}{2}\sum(y-(w_0+w_1x))^2$
所以损失函数就是总样本误差关于模型参数的函数,该函数属于三维数学模型,即需要找到一组 $w_0$, $w_1$ 使得 $loss$ 取极小值。
案例:画图模拟梯度下降的过程
整理训练集数据,自定义梯度下降算法规则,求出w0 , w1 ,绘制回归线。
1 | import numpy as np |
2. 绘制随着每次梯度下降,w0,w1,loss的变化曲线。
1 | w0 = w0[:-1] |
3. 基于三维曲面绘制梯度下降过程中的每一个点。
1 | import mpl_toolkits.mplot3d as axes3d |
4. 以等高线的方式绘制梯度下降的过程。
1 | mp.figure('Batch Gradient Descent', facecolor='lightgray') |