赛博空间7号

The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.--Stephen William Hawking

从零开始实现梯度下降算法

机器学习最终归结为最优化问题,即最优化损失函数。而求解最优化问题最常用的方法就是梯度下降算法。梯度下降算法有三种:全批量梯度下降(Batch gradient decent)、随机梯度下降(SGD)、小批量梯度下降(mini-batch gradient decent)。下面首先简要介绍以下这三种算法,然后根据预测房价问题从零实现这三种梯度下降算法。

一、三种梯度下降算法

全批量梯度下降

从零开始实现梯度下降算法

全批量梯度下降使用所有样本计算梯度,更新参数时使用所有样本来进行更新。

=====================================================

随机梯度下降

从零开始实现梯度下降算法

随机梯度下降随机选择一个点计算梯度,更新参数时只使用了一个样本

===================================================

小批量梯度下降

从零开始实现梯度下降算法

小批量梯度下降随机选择一部分点计算梯度,更新参数时使用一部分样本

--J为代价函数,η为学习率


二、从零实现梯度下降算法

我们首先来看一下实际一元线性回归与多元线性回归的梯度。

1.一元线性回归

从零开始实现梯度下降算法

2.多元线性回归

从零开始实现梯度下降算法

3.算法流程图

梯度下降的算法步骤如下:

(1)初始化i=0,θ0,设置学习率α,设置阈值t。

(2)计算目标函数L(θ)在θi点的梯度▽L(θi)。

(3)计算θ(i+1),θ(i+1)=θi-α▽L(θi

(4)计算▽L(θ(i+1)),如果|| ▽L(θ(i+1))||<t,则迭代停止,最优参数为θ(i+1);否则返回步骤(3)。


在机器学习中,常用|| L(θ(i+1))- L(θi||<t代替|| ▽L(θ(i+1))||<t来判断是否满足迭代条件。算法流程图如下图所示。

从零开始实现梯度下降算法


完整的代码实现见github


参考链接:http://sofasofa.io/tutorials/python_gradient_descent/3.php



发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

© 版权所有:沈阳市和平区赛博空间咨询部|辽ICP备18005891号
Powered by Z-BlogPHP & Yiwuku.com