本文将从线性回归入手引出梯度下降算法。

线性回归概念

概念
线性回归(Linear Regression)是一种用于建模和分析变量之间线性关系的统计方法, 通过拟合一条直线(或超平面)来描述自变量(X)与因变量(Y)之间的线性关系,从而预测或解释数据。

在这里插入图片描述

分类

一元线性回归:
y = w x + b y = wx +b y=wx+b
目标值只与一个因变量有关系

多元线性回归: y = 𝑤 1 𝑥 1 + 𝑤 2 𝑥 2 + 𝑤 3 𝑥 3 + … + 𝑏 y= 𝑤_1 𝑥_1+ 𝑤_2 𝑥_2 + 𝑤_3 𝑥_3 + … + 𝑏 y=w1x1+w2x2+w3x3++b
目标值只与多个因变量有关系

线性回归的求解方法

线性回归是如何找到数据分布的规律和最优解?
我们是通过让损失函数值最小,来求得线性回归中的系数。

损失函数 loss function(cost function,target function)

衡量预测值和真实值效果的函数,也叫代价函数,目标函数,成本函数
我们用线性回归建模,就是在找各个自变量和因变量的关系,这些关系就是自变量前面的系数 ω i \omega_i ωi,我们最小化损失函数的过程,就是求解这些系数。

线性回归常用的损失函数有:最小二乘、均方误差、平均绝对误差

数学表达

最小二乘法 (LS Least square)

所有样本(真实值-预测值)的平方和
在这里插入图片描述
其中 h ( x ( i ) ) h(x^{(i)}) h(x(i)) 是预测值, y ( i ) y^{(i)} y(i)是真实值

平方损失函数(均方误差)(MSE Mean Square Error)

最小二乘/样本个数
在这里插入图片描述

平均绝对损失函数(平均绝对误差)(MAE Mean absolute Error)

所有样本|真实值-预测值|平均值
在这里插入图片描述

补充: 范数 Norm

范数(norm)是数学中的一种基本概念,用于度量向量或者矩阵的大小或者长度
1范数(L1范数)-向量中各个元素绝对值之和。 表示为: ∣ ∣ x ∣ ∣ 1 ||x||_1 ∣∣x1
𝑥 𝑇 = ( 1 , 2 , − 3 ) ‖ x ‖ 1 = ∣ 1 ∣ + ∣ 2 ∣ + ∣ − 3 ∣ = 6 𝑥^𝑇 = (1, 2, −3) \quad ‖x‖_1 = |1| + |2| + |−3| = 6 xT=(1,2,3)x1=∣1∣+∣2∣+3∣=6
2范数(L2范数)-向量的模长,每个元素平方求和,再开平方根。 表示为: ∣ ∣ x ∣ ∣ 2 ||x||_2 ∣∣x2
𝑥 𝑇 = ( 1 , 2 , − 3 ) ‖ x ‖ 2 = ( 1 2 + 2 2 + ( − 3 ) 2 ) = √ 14 𝑥^𝑇 = (1, 2, −3) \quad ‖x‖_2 = \sqrt{(1^2+2^2+(−3)^2 )}= √14 xT=(1,2,3)x2=(12+22+(3)2) =√14
p-范数:向量中每一个元素p幂求和,在开p次根。表示为: ∣ ∣ x ∣ ∣ p ||x||_p ∣∣xp
在这里插入图片描述

我们拿到了损失函数,接下来就是让损失函数最小。在线性回归中,我们有两种方式来求解,分别是正规方程和梯度下降法。

线性回归中的正规方程

一元解析解

拿一元线性回归举例,假设我们使用MSE均方误差作为线性回归的损失函数,那么:
J ( k , b ) = ∑ 𝑖 = 1 𝑚 ( h ( 𝑥 ( 𝑖 ) ) − 𝑦 ( 𝑖 ) ) 2 = ∑ 𝑖 = 1 𝑚 ( 𝑘 𝑥 ( 𝑖 ) + 𝑏 − 𝑦 ( 𝑖 ) ) 2 J(k, b) = ∑_{𝑖=1}^𝑚(ℎ(𝑥^{(𝑖) }) − 𝑦^{(𝑖) })^2 = ∑_{𝑖=1}^𝑚(𝑘𝑥^{(𝑖) }+𝑏− 𝑦^{(𝑖) })^2 J(k,b)=i=1m(h(x(i))y(i))2=i=1m(kx(i)+by(i))2
其中k,b是两个待求解的变量,我们分别对它们求偏导:
𝜕 𝐽 ( 𝑘 , 𝑏 ) 𝜕 𝑘 = ∑ 𝑖 = 1 𝑚 2 ( k 𝑥 ( 𝑖 ) + 𝑏 − 𝑦 ( 𝑖 ) ) ( 2 − 1 ) ( k 𝑥 ( 𝑖 ) + 𝑏 − 𝑦 ( 𝑖 ) ) ′ = ∑ 𝑖 = 1 𝑚 ( 2 𝑘 𝑥 ( 𝑖 ) 2 + 2 𝑏 𝑥 ( 𝑖 ) − 2 𝑥 ( 𝑖 ) 𝑦 ( 𝑖 ) ) = 0 \frac{𝜕𝐽(𝑘, 𝑏)}{𝜕𝑘} = ∑_{𝑖=1}^𝑚 2(k𝑥^{(𝑖) }+𝑏− 𝑦^{(𝑖) })^{(2-1)} (k𝑥^{(𝑖) }+𝑏− 𝑦^{(𝑖) })^′ = ∑_{𝑖=1}^𝑚(2𝑘𝑥^{(𝑖) ^2}+2𝑏𝑥^{(𝑖) }−2𝑥^{(𝑖) } 𝑦^{(𝑖) }) = 0 𝜕k𝜕J(k,b)=i=1m2(kx(i)+by(i))(21)(kx(i)+by(i))=i=1m(2kx(i)2+2bx(i)2x(i)y(i))=0 ------1式

𝜕 𝐽 ( 𝑘 , 𝑏 ) 𝜕 𝑘 = ∑ 𝑖 = 1 𝑚 2 ( k 𝑥 ( 𝑖 ) + 𝑏 − 𝑦 ( 𝑖 ) ) ( 2 − 1 ) ( k 𝑥 ( 𝑖 ) + 𝑏 − 𝑦 ( 𝑖 ) ) ′ = ∑ 𝑖 = 1 𝑚 ( 2 k 𝑥 ( 𝑖 ) + 2 𝑏 − 2 𝑦 ( 𝑖 ) ) \frac{𝜕𝐽(𝑘, 𝑏)}{𝜕𝑘} = ∑_{𝑖=1}^𝑚 2(k𝑥^{(𝑖) }+𝑏− 𝑦^{(𝑖) })^{(2-1)} (k𝑥^{(𝑖) }+𝑏− 𝑦^{(𝑖) })^′= ∑_{𝑖=1}^𝑚 (2k𝑥^{(𝑖) }+2𝑏− 2𝑦^{(𝑖) }) 𝜕k𝜕J(k,b)=i=1m2(kx(i)+by(i))(21)(kx(i)+by(i))=i=1m(2kx(i)+2b2y(i)) ------- 2式

对1式、2式化简, 𝑦 ( i ) 𝑦^{(i)} y(i)代表第i个样本的预测值
k ∑ 𝑖 = 1 𝑚 𝑥 ( 𝑖 ) 2 + 𝑏 ∑ 𝑖 = 1 m 𝑥 ( 𝑖 ) − ∑ 𝑖 = 1 𝑚 𝑥 ( 𝑖 ) 𝑦 ( 𝑖 ) = 0 k ∑_{𝑖=1}^𝑚 𝑥^{(𝑖)^2 }+𝑏∑_{𝑖=1}^m𝑥^{(𝑖) } −∑_{𝑖=1}^𝑚𝑥^{(𝑖) } 𝑦^{(𝑖) } = 0 ki=1mx(i)2+bi=1mx(i)i=1mx(i)y(i)=0 ------- 3式
k ∑ 𝑖 = 1 𝑚 𝑥 ( 𝑖 ) + 𝑏 𝑚 − ∑ 𝑖 = 1 𝑚 𝑦 ( i ) = 0 k∑_{𝑖=1}^𝑚𝑥^{(𝑖) }+𝑏𝑚−∑_{𝑖=1}^𝑚𝑦^{(i)} = 0 ki=1mx(i)+bmi=1my(i)=0 ------- 4式

最后将数据带入3、4式 即可求解到k,b结果。

推广到多元,正规方程

多元线性回归的损失函数求解可以使用向量和矩阵相乘:
在这里插入图片描述
这里的 ∣ ∣ X ω − y ∣ ∣ 2 2 ||X\omega-y||_2^2 ∣∣Xωy22是所有样本真实值和估计值差值的 L2 范数的平方

进而可以直接求出系数向量( ω \omega ω
在这里插入图片描述
其中 ω = ( X T X ) − 1 ∗ X T y \omega=(X^TX)^{-1}*X^Ty ω=(XTX)1XTy就是正规方程。

正规方程的特性和问题:
不需要学习率
一次运算得出,一蹴而就
应用场景:小数据量场景、精准的数据场景
缺点:计算量大、容易收到噪声、特征强相关性的影响
注意: X T X X^T X XTX的逆矩阵不存在时,无法求解
注意:计算 X T X X^T X XTX的逆矩阵非常耗时
如果数据规律不是线性的,无法使用或效果不好

梯度下降法

概念

梯度下降是机器学习和深度学习中优化模型参数的核心算法,通过迭代调整参数,最小化损失函数
核心思想: 沿损失函数的负梯度方向逐步调整参数,使损失函数值最小化。

在这里插入图片描述

梯度下降过程就和下山场景类似
可微分的损失函数,代表着一座山
寻找的函数的最小值,也就是山底

相比于正规方程的“一步到位”,梯度下降是一步步逐渐收敛到最低点:
在这里插入图片描述

梯度 gradient

单变量函数中,梯度就是某一点切线斜率(某一点的导数);有方向为函数增长最快的方向
多变量函数中,梯度就是某一个点的偏导数;有方向:偏导数分量的向量方向

梯度下降公式:

循环迭代求当前点的梯度,更新当前的权重参数

θ i + 1 = θ i − α ∂ ∂ θ J ( θ ) \theta_{i+1}=\theta_i-\alpha\frac{\partial}{\partial\theta}J(\theta) θi+1=θiαθJ(θ)

α: 学习率(步长) 不能太大, 也不能太小. 机器学习中:0.001 ~ 0.01

梯度是上升最快的方向, 我们需要是下降最快的方向, 所以需要加负号

梯度下降的优化过程

1.给定初始位置、步长(学习率)
2.计算该点当前的梯度的负方向
3.向该负方向移动步长
4.重复 2-3 步 直至收敛
两次差距小于指定的阈值
达到指定的迭代次数

梯度下降公式中,为什么梯度要乘以一个负号

梯度的方向实际就是函数在此点上升最快的方向!
需要朝着下降最快的方向走,负梯度方向, 所以加上负号

有关学习率(步长)

步长决定了在梯度下降迭代的过程中,每一步沿梯度负方向前进的长度
学习率太小,下降的速度会慢
学习率太大:容易造成错过最低点、产生下降过程中的震荡、甚至梯度爆炸

梯度下降特点:

需要选择学习率
需要迭代求解
特征数量较大可以使用
应用场景:更加普适,迭代的计算方式,适合于嘈杂、大数据应用场景
注意:梯度下降在各种损失函数(目标函数)求解中大量使用。深度学习中更是如此,深度学习模型参数很轻松就上亿,只能通过迭代的方式求最优解。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐