梯度下降

本文深入解析梯度下降算法,包括其定义、作用及在机器学习中的应用。详细介绍了三种梯度下降方法:批量梯度下降、随机梯度下降和小批量梯度下降,并探讨了学习率对结果的影响。

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

梯度下降

上文 中说了参数的计算,但是在实际的应用过程中,参数矩阵并不是可以直接计算的,是无解的,此时需要借助计算机的快速运算能力,不断优化参数,得到近似最优解。那么如何进行优化,优化的方向如何呢?这就涉及到了梯度下降和学习率(优化时每次采用的步长)。

首先来看一下梯度的定义。

梯度:在数学上,梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模),也就是说梯度是使得该函数取得最大值的方向即梯度的方向是函数值增大的方向

那么梯度下降指的就是梯度的反方向

梯度下降的常用算法有三种:批量梯度下降算法、随机梯度下降算法和小批量梯度下降算法

假设目标函数是:均方差损失函数

J ( θ ) = 1 2 m ∑ i = 1 i = m ( y ( i ) − h θ ( x ( i ) ) ) 2 \begin{aligned}J(\theta) =\frac{1}{2m}\sum_{i =1}^{i = m}(y^{(i)} -h_\theta(x^{(i)}))^2\end{aligned} J(θ)=2m1i=1i=m(y(i)hθ(x(i)))2

优化目标是使得损失最小。

使用批量梯度下降时候

θ \theta θ求导如下

∂ J ( θ ) ∂ θ i = − 1 m ∑ i = 1 i = m ( y i − h θ ( x i ) ) x j i \begin{aligned}\frac{\partial J(\theta)}{\partial\theta_i} = -\frac{1}{m}\sum_{i=1}^{i = m}(y^i - h_\theta(x^i))x_j^i\end{aligned} θiJ(θ)=m1i=1i=m(yihθ(xi))xji

那么

θ j ′ = θ j − ∂ J ( θ ) ∂ θ i = θ j + 1 m ∑ i = 1 i = m ( y i − h θ ( x i ) ) x j i \begin{aligned}\theta_j' = \theta_j - \frac{\partial J(\theta)}{\partial\theta_i} =\theta_j + \frac{1}{m}\sum_{i=1}^{i = m}(y^i - h_\theta(x^i))x_j^i\end{aligned} θj=θjθiJ(θ)=θj+m1i=1i=m(yihθ(xi))xji

批量梯度下降容易得到最优解,但是由于每次都是考虑所有的样本,收敛速度很慢

使用随机梯度下降的时候

每次随机取其中的一个样本

θ j ′ = θ j + ( y i − h θ ( x i ) ) x j i \theta'_j = \theta_j + (y^i - h_{\theta}(x^i))x_j^i θj=θj+(yihθ(xi))xji

随机梯度下降算法每次都找一个样本,迭代速度快,但是不一定每次都朝着收敛的方向,样本中的数据可能存在一些错误点,异常点等。

使用小批量随机梯度下降的时候

例如每次取10个作为小批量

θ j ′ = θ j + α 1 10 ∑ k = i i + 9 ( h θ ( ( x k ) − y k ) x j k \begin{aligned}\theta_{j}' = \theta_j + \alpha\frac{1}{10}\sum_{k = i}^{i+9}(h_\theta((x^k) - y^k)x_j^k\end{aligned} θj=θj+α101k=ii+9(hθ((xk)yk)xjk

α \alpha α就是学习率,也叫作每次优化更新的步长

每次更新选择一小部分数据计算,小批量随机梯度下降兼顾了迭代速度和收敛方向,也是最常用的。

一般设置小批量时取32,64,128,最常用的是32,64.

学习率(步长)

学习率的设定会对结果产生巨大的影响,一般设定小一些。如果学习率设置过大,很可能到达的收敛点是局部最小值也就是函数的一个极小值,而不是全局最优解,即全局最小值,甚至有可能使得结果不收敛。学习率设置过小,则收敛速度变慢,如何平衡收敛速度和避免结果不是全局最优解?例如,可以将训练过程分成几部分,0-10000次时采用大一点的学习率0.1,10000-30000次训练时候,学习率设置为0.005,30000次到100000次训练时候,将学习率设置为0.001。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值