机器学习——梯度下降算法

梯度下降算法

最优化算法在机器学习中是一种求解最合适的权重参数的算法,梯度下降算法就是其中的一种。

概念

梯度下降算法是一个最优化的算法,它是沿梯度下降的方向求解极小值。

前提条件

目标函数

使用梯度下降算法的第一个前提条件就是目标函数,即告诉梯度下降要求哪个函数的解,例如在线性回归方程中求解最小二乘法的公式:

在这里插入图片描述

这个公式在线性回归中的最终目的,就是求偏导取驻点最后得到θ的一个极小值。而在这里则是利用梯度下降算法去求得最小值。

训练集

这个目标函数和线性回归方程相比在分母处多了一个m。这个m是一个总的数据量,意味着是求多个数据之后的平均值。

第二个前提条件就是数据集,有了目标函数,还必须有数据支撑。只有有了大量的数据,机器才能够真正的掌握规律。

最终的目的就是求得使这个目标函数最小(或局部最小)的参数θ。

训练步骤

在这里插入图片描述上图是一个梯度下降的模型。想要理解这个模型,可以假想一个人站在山的任意一点,想要以最快的速度下山。求解的步骤如下所示:

  1. 随机生成一个初始点:图中红色区域的点为初始点,对于不同的初始点,获得的最小值也不同,因此梯度下降求得的只是局部最小值;
  2. 确定学习率:学习率即下降的幅度,可以理解为下山时每一步迈的大小。学习率的选取还是有一定要求的,步子迈的太大有可能不收敛,步子迈的太小速度太慢。

学习率的选择可以通过下图来说明:

在这里插入图片描述
假设从左边最高点开始,如果学习率刚刚合适,例如图中红线,就能顺利找到最低点;如学习率调整的太小,比如蓝色的线就会走的太慢,虽然也可以顺利找出最低点,但实际情况中可能等不及出结果;如果学习率稍大,可能会在上面震荡永远到达不了最低点;若是选取的非常大,比如黄色的线可能直接无法收敛,update参数时可能会发现损失函数越更新越大。

还有一点值得注意,学习率并不是一成不变的,可能刚开始时候大一些,后边不断调小。

  1. 输入数据集,确定一个向下的方向,并更新θ。

数据集的输入一般有三种:批量梯度下降(每调整一小步,带入所有的数据,这样的训练应该是最精确的,但是往往速度奇慢无比)、随机梯度下降(每次随机获取数据集中的一个值,速度很快但是不够精确)、小批量随机梯度下降(前两者的中间产物,速度相对较快结果也相对精确)。

  1. 训练终止:当损失函数达到预设值的一个值,或者收敛不明显时,可以终止训练。得到的值就是梯度下降算法的最小值。

代码表示

梯度下降的算法用伪码表示为:

repeat until convergence{
	θj := θj - α * δ/δθj * J(θ0, θ1)
}

(simultaneously update j =0 and j = 1)

temp0 = θ0 - α * δ/δθ0 * J(θ0)
temp1 = θ1 - α * δ/δθ1 * J(θ1)

θ0 := temp0
θ1 := temp1

α代表了学习率,θj表示为有多个特征,这里是对每一个特征求偏导求出分别对应的参数。多个特征需要分别各自训练。

以上就是整个梯度下降算法的基本知识。

梯度下降的算法调优

  1. 算法的步长选择
  2. 算法参数的初始值选择
  3. 归一化

在前文描述的算法中,步长的实际取值取决于数据样本,可以多取一些分别运行比较迭代效果。

初始值不同,获得的最小值也有可能不同,当然如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次不同初始值运行算法,使关键损失函数取最小值、选择损失函数去最小值的初值。

由于样本不同特征的取值范围不一样,可能导致迭代速度很慢,为了减少特征取值的影响,可以对特征数据归一化求出期望和标准差,然后转化成期望和标准差的比值,可以加快迭代速度。

总结

梯度下降法的含义是通过当前的梯度方向寻找新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,直到找到最优解。在其算法过程中,只需要求解损失函数的一阶导数,计算成本很小。相比于最小二乘法,梯度下降需要选择步长,而最小二乘法不需要。同时,最小二乘法是计算解析解,如果样本量不算很大,且存在解析解,最小二乘法才会占有优势。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值