机器学习笔记:监督学习应用.梯度下降

本文深入探讨了机器学习中的线性回归概念及其应用,详细讲解了梯度下降法作为求解最小化问题的有效算法,并对比了批梯度下降与随机梯度下降的优缺点。此外,文章还介绍了正规方程这一解析解法。

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


前言
第一课是机器学习的动机与应用观看后不再进行记录,多为介绍吴恩达老师和研究生的研究领域,以及一些机器学习的背景常识,博主已经读过周志华老师的《机器学习》书籍,已有对机器学习内容的基本了解,因此不再针对背景和太基本内容进行总结,直接记录干货,所以想要了解更为全面的相关领域知识可以学习下周志华老师的《机器学习》、图灵出版的《机器学习实战》以及《Deep Learning》。


监督学习应用.梯度下降

  • 线性回归 Linear regression
  • 梯度下降 Gradient descent
  • 正规方程组 Normal equations

线性回归

首先我们假设预测结果函数h(x)h(x)h(x)如下
h(x)=hθ(x)=θ0+θ1x1+θ2x2h(x)=h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2h(x)=hθ(x)=θ0+θ1x1+θ2x2
xxx为当前样本,xix_ixi分别代表了样本的某个属性值,为简明表示,这里x0=1x_0=1x0=1,这样θ0\theta_0θ0则代表了线性模型中的偏移量。
h(x)=∑i=0nθixi=θTxh(x)=\sum_{i=0}^n\theta_ix_i=\theta^Txh(x)=i=0nθixi=θTx
n表示了特征的数量
"θ\thetaθ are called parameters"(文中带引号的为吴恩达教授的课堂笔记)也就是说θ\thetaθ代表了模型中的参数,是得出最终模型的目标。

那么我们如何去求得这个θ\thetaθ值呢。我们可在不断地最小化误差的过程中,取得θ\thetaθ的值(当然这里还要考虑过拟合、欠拟合、样本噪声,提取特征等一系列问题,先做初步了解)。
min⁡θJ(θ)=min⁡θ12∑i=0m(hθ(x(i))−y(i))2\min_\theta\mathtt{J}(\theta)=\min_\theta\frac{1}{2}\sum_{i=0}^m\left(\mathtt{h}_\theta(x^{(i)})-\mathtt{y}^{(i)}\right)^2θminJ(θ)=θmin21i=0m(hθ(x(i))y(i))2

求解算法

下面来讲述如何去求解这个最小化问题

搜索算法

“start with some θ\thetaθ.(Say θ=0⃗\theta=\vec0θ=0).Keep changing θ\thetaθ to reduce J(θ)J(\theta)J(θ)
其实这一过程就是穷举法,通俗地讲就是逐个尝试,从0(或随机一个值)带入参数,得到的结果最小,那么就是参数的选取值。

批梯度下降法(batch gradient descent)

最为代表的一句“如果我想下山,那么我往哪个方向走最快”,即三维空间中(只有两个参数的情况下)梯度下降就像在这个不规则曲面上找最小一点,也就是误差最小点(这里要考虑梯度消失、梯度爆炸的情况,涉及权值共享等方法,这些内容读者可自行查阅,或者在之后的笔记中会有详解)
θ\thetaθ初始化为0⃗\vec00或堆积产生的θ\thetaθ。更新θ\thetaθ的方法如下:
θi:=θi−α∂∂θiJ(θ)\theta_i:=\theta_i-\alpha\frac{\partial}{\partial\theta_i}\mathtt{J}(\theta)θi:=θiαθiJ(θ)
:=:=:=”为赋值号,即将右边的值赋值给左边的变量
对于这个式子的求导过程不再详述,非常简单的过程,请读者一定要亲自计算一遍,对后面的学习有很大帮助。
结果为(只有一个训练样本的计算结果):
θi:=θi−α(hθ(x)−y)⋅x\theta_i:=\theta_i-\alpha(\mathtt{h}_{\theta}(x)-\mathtt{y})\cdot xθi:=θiα(hθ(x)y)x
α\alphaα控制了“迈出步子”的大小(通常α\alphaα的值是手动设置的,值过大则会越过最小值,值过小则影响效率)
一般化到多个样本中公式为:
θi=θi−α∑j=1m(hθ(x(j))−y(j))⋅xi(j)\theta_i=\theta_i-\alpha\sum_{j=1}^m(\mathtt{h}_{\theta}(x^{(j)})-\mathtt{y}^{(j)})\cdot x_i^{(j)}θi=θiαj=1m(hθ(x(j))y(j))xi(j)
∑j=1m(hθ(x(j))−y(j))⋅xi(j)\sum_{j=1}^m(\mathtt{h}_{\theta}(x^{(j)})-\mathtt{y}^{(j)})\cdot x_i^{(j)}j=1m(hθ(x(j))y(j))xi(j)即为∂∂θiJ(θ)\frac{\partial}{\partial\theta_i}\mathtt{J}(\theta)θiJ(θ)的结果

随机梯度下降算法(stochastic gradient descent)

mmm的值过大,每走一步就要遍历一遍训练集时,可想而知其运行效率,尤其数据集高达亿级时,处理一亿个数据求和还未能完成第一步,这时我们就要考虑随机梯度下降算法(增量梯度下降法)了。

repeat{for j=1 to m{
θi=θi−α(hθ(x(j))−y(j))⋅xi(j)\theta_i=\theta_i-\alpha(\mathtt{h}_{\theta}(x^{(j)})-\mathtt{y}^{(j)})\cdot x_i^{(j)}θi=θiα(hθ(x(j))y(j))xi(j)

(for all i)
} }

这样做和批梯度下降算法的区别是,更新θ\thetaθ前不需要遍历整个训练集,只需要将当前第j个样本用来更新(用一个样本更新了所有的“方向”的梯度),这样的结果会使得“下坡”的路径变得曲折,但是最终会徘徊在低谷(即极小值)位置。

m = 训练样本集
x = 输入变量/特征
y = 输出变量/标签
(x,y)训练样本

正规方程

定义一个梯度关于函数,他是一个n+1维的向量
∇θJ=[αJαθ0⋮αJαθn]∈Rn+1\nabla_\theta\mathtt{J}=\begin{bmatrix} \frac{\alpha J}{\alpha\theta_0}\\ \vdots\\ \frac{\alpha J}{\alpha\theta_n}\\ \end{bmatrix} \in \mathbb{R}^{n+1}θJ=αθ0αJαθnαJRn+1

some fact
trAB=trBAtrAB = trBAtrAB=trBA
trABC=trCAB=trBCA(依次将最后一位向前提)trABC = trCAB = trBCA(依次将最后一位向前提)trABC=trCAB=trBCA()
设f(A)=trAB,∇AtrAB=BT设f(A) = trAB,\quad \nabla_AtrAB = B^Tf(A)=trAB,AtrAB=BT
trA=trATtrA = trA^TtrA=trAT
If a∈R,tr a=aIf\ a\in\mathbb{R},tr\ a=aIf aR,tr a=a
∇AtrABATC=CAB+CTABT\nabla_A trABA^TC=CAB+C^TAB^TAtrABATC=CAB+CTABT
下面进行分析:
XXX为样本矩阵
Xθ=[—(x(1))T——(x(2))T—⋮—(x(m))T—]θX\theta= \begin{bmatrix} —(x^{(1)})^T—\\ —(x^{(2)})^T—\\ \vdots\\ —(x^{(m)})^T—\\ \end{bmatrix} \thetaXθ=(x(1))T(x(2))T(x(m))Tθ
由预测结果h(x)=hθ(x)=θ0+θ1x1+θ2x2h(x)=h_\theta(x)=\theta_0+\theta_1x_1+\theta_2x_2h(x)=hθ(x)=θ0+θ1x1+θ2x2可得
Xθ=[x(1)Tθ⋮x(m)Tθ]=[hθ(x(1))⋮hθ(x(m))]X_\theta = \begin{bmatrix} x^{(1)T}\theta\\ \vdots\\ x^{(m)T}\theta\\ \end{bmatrix}= \begin{bmatrix} h_\theta(x^{(1)})\\ \vdots\\ h_\theta(x^{(m)})\\ \end{bmatrix}Xθ=x(1)Tθx(m)Tθ=hθ(x(1))hθ(x(m))
y⃗\vec yy为样本标记
y⃗=[y(1)⋮y(m)] \vec y= \begin{bmatrix} y^{(1)}\\ \vdots\\ y^{(m)}\\ \end{bmatrix} y=y(1)y(m)
Xθ−y⃗X\theta -\vec yXθy
Xθ−y⃗=[h(x(1))−y(1)⋮h(x(m))−y(m)] X\theta -\vec y= \begin{bmatrix} h(x^{(1)})-y^{(1)}\\ \vdots\\ h(x^{(m)})-y^{(m)}\\ \end{bmatrix}Xθy=h(x(1))y(1)h(x(m))y(m)
Real:zTz=∑izi2 Real: z^Tz=\sum_iz_i^2 RealzTz=izi2

12(Xθ−y⃗)T(Xθ−y⃗)=12∑im(h(x(1))−y(1))2=J(θ) \frac{1}{2}(X\theta-\vec y)^T(X\theta-\vec y) = \frac{1}{2}\sum_i^m{(h(x^{(1)})-y^{(1)})}^2=\mathtt J(\theta) 21(Xθy)T(Xθy)=21im(h(x(1))y(1))2=J(θ)

∇θJ(θ)=sct0⃗ \nabla_{\theta}\mathtt J(\theta)=^{sct} \vec0 θJ(θ)=sct0
求解
∇θ12(Xθ−y)T(Xθ−y)=12∇θtr(θTXTXθ−θTXTy−yTXθ+yTy) \nabla_{\theta}\frac{1}{2}(X\theta-y)^T(X\theta-y)= \frac{1}{2}\nabla_{\theta}tr(\theta^TX^TX\theta-\theta^TX^Ty-y^TX\theta+y^Ty) θ21(Xθy)T(Xθy)=21θtr(θTXTXθθTXTyyTXθ+yTy)
实数的转至依然为其本身
=12[∇θtrθθTXTX−∇θtryTXθ−∇θyTXθ] =\frac{1}{2}[\nabla_\theta tr \theta \theta^TX^TX-\nabla_\theta tr y^TX\theta-\nabla_\theta y^TX\theta] =21[θtrθθTXTXθtryTXθθyTXθ]
基于前面的fact
∇θtrθIθTXTX=XTXθI+XTXθI⋅⋅⋅⋅⋅⋅⋅⋅⋅(6) \nabla_\theta tr \theta I\theta^TX^TX=X^TX\theta I+X^TX\theta I·········(6) θtrθIθTXTX=XTXθI+XTXθI(6)
∇θtryTXθ=XTy⋅⋅⋅⋅⋅⋅⋅⋅⋅(3) \nabla_\theta tr y ^TX\theta=X^Ty·········(3) θtryTXθ=XTy(3)
因此
∇θJ(θ)=12[XTXθ+XTXθ−XTy−XTy] \nabla_\theta \mathtt J(\theta)=\frac{1}{2}[X^TX\theta+X^TX\theta-X^Ty-X^Ty] θJ(θ)=21[XTXθ+XTXθXTyXTy]
=XTXθ−XTy =X^TX\theta-X^Ty =XTXθXTy
令其为0⃗\vec00
XTXθ=XTy X^TX\theta = X^T y XTXθ=XTy
称其为正规方程
最终结果为:
θ=(XTX)−1XTy \theta=(X^TX)^{-1}X^Ty θ=(XTX)1XTy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值