CS229学习笔记之线性回归与梯度下降

本系列笔记是斯坦福大学公开课 CS229 的学习记录,主要的参考资源为课堂视频与讲义,以及网络上一些已有的学习笔记,欢迎批评指正~

相关定义

x(i) : 输入特征

y(i) : 输出(目标)变量

(x(i),y(i)) : 训练样例

{(x(i),y(i));i=1,,m} : 训练集

注意 (i) 仅表示索引,与指数无关

监督学习:给定一个训练集(已标注),去学习一个假设函数h,用以尽量精确地预测每个x对应的y

根据目标变量是否连续,可以将监督学习分为两类:

回归:目标变量连续

分类:目标变量离散

线性回归(Linear Regression)

假设函数

hθ(x)=θ0+θ1x1+θ2x2

θ x 看作向量,取x0=1,上式可以表示为:

hθ(x)=i=0nθixi=θTx

代价函数(cost function):

J(θ)=12i=1m(hθ(x(i))y(i))2

注:也可以用上式除以 1m 来表示代价函数

线性回归的目的:通过训练集找出使代价函数最小的一组参数 θ (最小二乘法)

J(θ) 的直观理解:对训练集中所有的样本点,其真实值和预测值之间的误差的平方和,其中 12 是为了计算方便,求导时会消掉。(之后会给出基于概率最大似然的解释)

梯度下降(Gradient Descent)

定义

梯度下降是一种求解最优化问题的迭代方法,具体步骤为:先随机选取初始的 θ ,再不断地以梯度的方向修正 θ ,最终使 J(θ) 收敛至局部最优(在最小二乘中,局部最优即全局最优)

θj:=θjαθjJ(θ)(1)

α 称为学习速率,太小会导致收敛缓慢,太大会导致错过最优点,需要谨慎选择。

进一步推导(假设只有一个样本点):

θjJ(θ)=θj12(hθ(x)y)2=212(hθ(x)y)θj(hθ(x)y)=(hθ(x)y)θj(i=0nθixiy)=(hθ(x)y)xj

代入 (1) 式得:
θj:=θj+α(y(i)hθ(x(i)))x(i)j(2)

注意:这里减号变成了加号,只是数学上的变换,方便之后与逻辑回归的结果作比较。

分类

梯度下降主要可以分为两类:批量梯度下降随机梯度下降

批量梯度下降(batch):每次计算梯度都需要遍历所有的样本点,当样本量很大时,计算速度会十分缓慢。
Repeat until convergence {

θj:=θj+αi=1m(y(i)hθ(x(i)))x(i)j(for every j)

}
注:上式中的 α 包含了 1m ,即
α=α1m

需注意不同公式下 α 的数量级的不同。

随机梯度下降(stochastic):每次只考虑一个样本点,而不是所有样本点,计算速度会提高,但是收敛过程会比较曲折,可能无法精确收敛至最优值。
Loop {
for i=1 to m, {

θj:=θj+α(y(i)hθ(x(i)))x(i)j(for every j)

}
}

随机梯度下降的优化:小批量梯度下降(mini-batch),利用矩阵并行运算,一次处理小批量的样本点,有时可以比随机梯度下降速度更快。
Say b=10, m=1000.
Repeat {
for i=1,11,21,31,..., 991 {

θj:=θj+α110k=ii+9(y(k)hθ(x(k)))x(k)j(for every j)

}
}

注意:每一次迭代都同时更新所有的 θ

为什么选择梯度方向?

因为梯度方向是使代价函数减小(下降)最大的方向。

证明(利用柯西不等式):

θ 改变一个很小的量时,利用泰勒公式,忽略一阶导数之后的项,得:

ΔJJθ0Δθ0+Jθ1Δθ1++JθnΔθn(3)

定义:
ΔθJ(Δθ0,Δθ1,,Δθn)T(Jθ0,Jθ1,,Jθn)T

代入 (3) 式,得:
ΔJJΔθ

由柯西不等式,有:
ΔJJΔθJΔθ

等号当且仅当 Δθ J 线性相关时成立

所以,要使 ΔJ 最小,即 ΔJ 最大且 ΔJ<0 ,而当且仅当:

Δθ=αJ(α>0)

时满足条件,即沿着梯度方向调整 θ

标准方程(Normal Equations)

对于线性回归问题,可以通过标准方程直接求出 θ 的解析解。
推导过程:
1. 矩阵导数(matrix derivatives)
对一个将 m×n 的矩阵映射至实数的函数,定义其导数为:

Af(A)=fA11fAm1fA1nfAmn

引入矩阵的迹(trace),对一 n×n 方阵,其迹定义为对角线元素之和
trA=i=1nAii

易证明迹操作具有如下性质(需满足进行tr操作时为方阵):
trAB=trBA,trABC=trCAB=trBCA,trABCD=trDABC=trCDAB=trBCDA

同样易证明如下性质(A,B为方阵且a为实数):
trA=trATtr(A+B)=trA+trBtraA=atrA

基于以上定义,下面列出一些关于矩阵导数的性质(等式 (4) 只针对非奇异矩阵, A 表示A的行列式):
AtrABATf(A)AtrABATCAA====BT(Af(A))TCAB+CTABTA(A1)T(4)(5)(6)(7)

  1. 最小二乘重现(Least squares revisited)
    对于训练集,可以写成如下的形式:
    X=(x(1))T(x(2))T(x(m))T,y⃗ =y(1)y(2)y(m)

    因为 hθ(x(i))=(x(i))Tθ ,我们可以得出:
    Xθy⃗ =(x(1))Tθ(x(2))Tθ(x(m))Tθy(1)y(2)y(m)=hθ(x(1))y(1)hθ(x(2))y(2)hθ(x(m))y(m)

    此外,对于一个向量z,我们有 zTz=iz2i ,因此综上可以得出:
    12(Xθy⃗ )T(Xθy⃗ )=12i=1m(hθ(x(i))y(i))2=J(θ)

    所以为了使 J(θ) 最小,即只需找出其导数为0时 θ 的值。下面给出详细的求解过程:
    首先,将 (5) 式与 (6) 式结合,得:
    ATf(A)AtrABATCATtrABATC=====(Af(A))TCAB+CTABT(CAB+CTABT)T(CAB)T+(CTABT)TBTATCT+BATC(5)(6)(8)

    注:最后两步的推导基于矩阵转置的下列性质:
    (A+B)T=AT+BT(AB)T=BTAT

    基于以上所述,有:
    θJ(θ)=12(Xθy⃗ )T(Xθy⃗ )=12θ(θTXTy⃗ T)(Xθy⃗ )=12θ(θTXTXθθTXTy⃗ y⃗ TXθ+y⃗ Ty⃗ )a=tra,aR=12θtr(θTXTXθθTXTy⃗ y⃗ TXθ+y⃗ Ty⃗ )tr(A+B)=trA+trB=12θ(trθTXTXθtrθTXTy⃗ try⃗ TXθ+try⃗ Ty⃗ )trA=trAT=12θ(trθTXTXθ2try⃗ TXθ+try⃗ Ty⃗ don't depend on θ)=12θ(trθTXTXθ2try⃗ TXθ)=12(θtrθTXTXθuse (8),AT=θ,B=BT=XTX,C=I2θtry⃗ TXθtrABC=trCAB,then use (4))=12(XTXθ+XTXθ2XTy⃗ )=XTXθXTy⃗ 

    当J(θ)最小时,其导数一定为0,即可以推出标准方程:
    XTXθ=XTy⃗ θ=(XTX)1XTy⃗ 

    注: XTX 是否可逆并不是一个大问题,可以通过伪逆计算或正则化处理解决。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值