机器学习-梯度下降

本文介绍了机器学习中的梯度下降方法,包括梯度的概念、Adagrad、Stochastic Gradient Descent (SGD) 和特征缩放的重要性。讨论了梯度下降的局限性,如可能陷入局部最优解,以及如何通过调整步长、初始化参数和归一化数据进行算法优化。还对比了批量梯度下降、随机梯度下降和小批量梯度下降的差异与应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下内容学习来自台湾大学李弘毅的机器学习讲解,以及其他博客的理解。

1.梯度
梯度就是函数变化增加最快的地方,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。

沿着梯度向量相反的方向,也就是 -(∂f/∂x0, ∂f/∂y0)T的方向,梯度减少最快,也就是更加容易找到函数的最小值
一个比较简单的梯度下降的理解,来自博客https://blog.youkuaiyun.com/honghu110/article/details/55211228

2.梯度下降之adagrad
在机器学习算法中,在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。
在这里插入图片描述
上面是gradient descent的推导,
下面是梯度下降的时候我们的学习率,我们需要改变学习率,下面是adagrad学习率梯度下降。
在这里插入图片描述
在这里插入图片描述
3.梯度下降之stochastic gradient descent
make the training faster.这种方法可以使得训练速度变快
在这里插入图片描述

4.梯度下降之feature scaling(特征缩放)
在这里插入图片描述
为什么要特征缩放?特征缩放是用来标准化数据特征的范围。
特征缩放是针对多特征情况的。当有多个特征向量的时候,如果其中一个变化范围比较大,根据上次所说的多特征梯度下降法算法可以知道,该特征向量的参数可能会变化范围很大,从而主导整个梯度下降的过程,使得整个收敛轨迹变得复杂,让收敛的时间更长。

所以特征缩放是为了加快梯度下降的收敛速度!!!
像下面这种x1的变化范围就远大于x2,需要特征缩放。
在这里插入图片描述
5.梯度下降之局限性limitation
在这里插入图片描述
可能得到局部最小值local minima,也可能直接在导数为0 的地方就停止了,更甚至在导数接近0 的地方就停止了。

6.梯度下降算法调优
(1)算法的步长选择。
步长太大,会导致迭代过快,甚至有可能错过最优解。步长太小,迭代速度太慢,很长时间算法都不能结束。
(2)算法参数的初始值选择。
由于有局部最优解的风险,需要多次用不同初始值运行算法。
(3)归一化数据(特征缩放)
由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以归一化。

7.梯度下降算法有哪些?(BGD,SGD,MBGD)
(1) 批量梯度下降法(Batch Gradient Descent)
批量梯度下降法,是梯度下降法最常用的形式。
具体做法也就是在更新参数时使用所有的样本来进行更新,这里求梯度的时候就用了所有m个样本的梯度数据。

缺点是速度慢。

(2) 随机梯度下降法(Stochastic Gradient Descent)
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的样本的数据,而是仅仅选取一个样本来求梯度。

优点是training速度一个样本,以此很快;缺点是可能不是最优解。而且收敛速度不是很快。

4.3 小批量梯度下降法(Mini-batch Gradient Descent
  小批量梯度下降法是批量梯度下降法和随机梯度下降法的折中,也就是对于m个样本,我们采用x个样子来迭代。
在这里插入图片描述
例如:我们把一个10000个样本的数据拿来,把它分为10份(也就是10个batch),每一份1000个样本(batch-size),每一个样本有一个loss,每个Li(一个batch的loss)=1000个loss之和。而每一个batch之后对Li求偏导数,然后update一次参数。直到所有batch都用到之后就完成一次epoch了。最后update了epoch次参数
这就是实例
再来做一个对比:
在这里插入图片描述
上图,如果batch=1,那么50000个数据,一个batch更新一次参数,用了所有数据之后更新了50000次参数,完成一个epoch;花费166S
如果batch=10,那么5000个数据,10个数据更新一次参数,用了所有数据之后更新了5000次参数,完成一个epoch;花费17S
也就是说batch=10的时候,每次用到所有数据完成一次epoch只会更新5000个参数,但是花费17S,当我们完成10个epoch的时候,更新了50000次参数,花费170S,但是这种方法明显比较稳定!因为它对整体数据处理了10次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值