机器学习(二)梯度下降

本文介绍了梯度下降的基本概念,包括其在微积分中的定义及如何应用于机器学习中的参数优化过程。详细阐述了梯度的几何意义及其在寻找函数极值中的作用,并对比了批量梯度下降、随机梯度下降及小批量梯度下降的特点。

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

在上一节(线性回归)中介绍,在线性回归中参数值θ\thetaθ是不一定可以求出的,但是可以通过梯度下降的方式可求。

在微积分里面,对多元函数的参数求偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。比如函数f(x,y)f(x,y)f(x,y), 分别对x,y求偏导数,求得的梯度向量就是(∂f∂x,∂f∂y)T(\frac {\partial f}{\partial x},\frac {\partial f}{\partial y})^T(xf,yf)T,简称grad f(x,y)或者∇f(x,y)\nabla f(x,y)f(x,y)。对于在点(x0,y0)(x_0,y_0)(x0,y0)的具体梯度向量就是(∂f∂x0,∂f∂y0)T(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T(x0f,y0f)T.或者∇f(x0,y0)\nabla f(x_0,y_0)f(x0,y0),如果是3个参数的向量梯度,就是(∂f∂x,∂f∂y,∂f∂z)T(\frac {\partial f}{\partial x}, \frac {\partial f}{\partial y},\frac{\partial f}{\partial z})^T(xf,yf,zf)T,以此类推。

那么这个梯度向量求出来有什么意义呢?他的意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y)f(x,y)f(x,y),在点(x0,y0)(x_0,y_0)(x0,y0),沿着梯度向量的方向就是(∂f∂x0,∂f∂y0)T(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T(x0f,y0f)T的方向是f(x,y)f(x,y)f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是 −(∂f∂x0,∂f∂y0)T-(\frac {\partial f}{\partial x_0},\frac {\partial f}{\partial y_0})^T(x0f,y0f)T的方向,梯度减少最快,也就是更加容易找到函数的最小值。

假设目标函数J(θ0,θ1)=12m∑i=1m(hθ(x(i)−y(i))2)J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(h_\theta(x^{(i)} - y^{(i)})^2)J(θ0,θ1)=2m1i=1m(hθ(x(i)y(i))2)

为什么要除以样本个数mmm?
假如有1万个样本,那么会得到一个目标函数J(θ)1J(\theta)_1J(θ)1,10万个样本,得到一个目标函数J(θ)2J(\theta)_2J(θ)2,那么10万个样本的损失值一定比1万个样本的损失值大,但不能说10万个样本的模型不好,因此需要算一个平均值1m\frac{1}{m}m1

我们的目标就是要寻找最低点,什么样的参数能使得目标函数达到最低点?

在这里插入图片描述
当开始的时候,是一个随机点:

  1. 找到当前最合适的方向
  2. 走一小步,如果走快了就“跌倒”了
  3. 按照方向与步伐去更新参数

批量梯度下降GD

在上面的说法中,要综合考虑所有的样本,每个样本都需要参与计算,这个计算量是非常大的,很难进行迭代,虽然很容易得到最优解。
∂f∂θi=−1m∑i=1m(yi−hθ(xi))xji \frac {\partial f}{\partial \theta_i}=-\frac{1}{m}\sum_{i=1}^m(y^i-h_\theta(x^i))x_j^i θif=m1i=1m(yihθ(xi))xji

θj′=θj+1m∑i=1m(yi−hθ(xi)xji) \theta_j^\prime=\theta_j+\frac{1}{m}\sum_{i=1}^m(y^i-h_\theta(x^i)x^i_j) θj=θj+m1i=1m(yihθ(xi)xji)

随机梯度下降SGD

每次找一个样本,迭代速度快,但不一定每次都朝着收敛的方向,无法判断好坏。
θj′=θj+(yi−hθ(xi))xji \theta_j^\prime=\theta_j+(y^i-h_\theta(x^i))x_j^i θj=θj+(yihθ(xi))xji

小批量梯度下降

每次更新选择一小部分数据来算,比较实用。首先打乱顺序,然后每次拿10个数据
θj:=θj−α110∑k=ii+9(hθ(x(k)−y(k)))xj(k) \theta_j :=\theta_j-\alpha\frac{1}{10}\sum_{k=i}^{i+9}(h_\theta(x^{(k)}-y^{(k)}))x_j^{(k)} θj:=θjα101k=ii+9(hθ(x(k)y(k)))xj(k)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值