本系列笔记是斯坦福大学公开课 CS229 的学习记录,主要的参考资源为课堂视频与讲义,以及网络上一些已有的学习笔记,欢迎批评指正~
相关定义
x(i) : 输入特征
y(i) : 输出(目标)变量
(x(i),y(i)) : 训练样例
{(x(i),y(i));i=1,…,m} : 训练集
注意: (i) 仅表示索引,与指数无关
监督学习:给定一个训练集(已标注),去学习一个假设函数h,用以尽量精确地预测每个x对应的y
根据目标变量是否连续,可以将监督学习分为两类:
回归:目标变量连续
分类:目标变量离散
线性回归(Linear Regression)
假设函数:
将
θ
和
x
看作向量,取
代价函数(cost function):
注:也可以用上式除以 1m 来表示代价函数
线性回归的目的:通过训练集找出使代价函数最小的一组参数 θ (最小二乘法)
对 J(θ) 的直观理解:对训练集中所有的样本点,其真实值和预测值之间的误差的平方和,其中 12 是为了计算方便,求导时会消掉。(之后会给出基于概率最大似然的解释)
梯度下降(Gradient Descent)
定义
梯度下降是一种求解最优化问题的迭代方法,具体步骤为:先随机选取初始的
θ
,再不断地以梯度的方向修正
θ
,最终使
J(θ)
收敛至局部最优(在最小二乘中,局部最优即全局最优)
α 称为学习速率,太小会导致收敛缓慢,太大会导致错过最优点,需要谨慎选择。
进一步推导(假设只有一个样本点):
代入 (1) 式得:
注意:这里减号变成了加号,只是数学上的变换,方便之后与逻辑回归的结果作比较。
分类
梯度下降主要可以分为两类:批量梯度下降和随机梯度下降。
批量梯度下降(batch):每次计算梯度都需要遍历所有的样本点,当样本量很大时,计算速度会十分缓慢。
Repeat until convergence {
}
注:上式中的 α 包含了 1m ,即
需注意不同公式下 α 的数量级的不同。
随机梯度下降(stochastic):每次只考虑一个样本点,而不是所有样本点,计算速度会提高,但是收敛过程会比较曲折,可能无法精确收敛至最优值。
Loop {
for i=1 to m, {
}
}
随机梯度下降的优化:小批量梯度下降(mini-batch),利用矩阵并行运算,一次处理小批量的样本点,有时可以比随机梯度下降速度更快。
Say b=10, m=1000.
Repeat {
for i=1,11,21,31,..., 991 {
}
}
注意:每一次迭代都同时更新所有的 θ
为什么选择梯度方向?
因为梯度方向是使代价函数减小(下降)最大的方向。
证明(利用柯西不等式):
当 θ 改变一个很小的量时,利用泰勒公式,忽略一阶导数之后的项,得:
定义:
代入 (3) 式,得:
由柯西不等式,有:
等号当且仅当 Δθ 与 ∇J 线性相关时成立
所以,要使
ΔJ
最小,即
∣ΔJ∣
最大且
ΔJ<0
,而当且仅当:
时满足条件,即沿着梯度方向调整 θ
标准方程(Normal Equations)
对于线性回归问题,可以通过标准方程直接求出
θ
的解析解。
推导过程:
1. 矩阵导数(matrix derivatives)
对一个将
m×n
的矩阵映射至实数的函数,定义其导数为:
引入矩阵的迹(trace),对一 n×n 方阵,其迹定义为对角线元素之和
易证明迹操作具有如下性质(需满足进行tr操作时为方阵):
同样易证明如下性质(A,B为方阵且a为实数):
基于以上定义,下面列出一些关于矩阵导数的性质(等式 (4) 只针对非奇异矩阵, ∣A∣ 表示A的行列式):
- 最小二乘重现(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⃗ )=12∑i=1m(hθ(x(i))−y(i))2=J(θ)
所以为了使 J(θ) 最小,即只需找出其导数为0时 θ 的值。下面给出详细的求解过程:
首先,将 (5) 式与 (6) 式结合,得:
∇ATf(A)∇AtrABATC∇ATtrABATC=====(∇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∇θ(θTXT−y⃗ T)(Xθ−y⃗ )=12∇θ(θTXTXθ−θTXTy⃗ −y⃗ TXθ+y⃗ Ty⃗ )a=tra,a∈R=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=I−2∇θtry⃗ TXθtrABC=trCAB,then use (4))=12(XTXθ+XTXθ−2XTy⃗ )=XTXθ−XTy⃗
当J(θ)最小时,其导数一定为0,即可以推出标准方程:
XTXθ=XTy⃗ θ=(XTX)−1XTy⃗
注: XTX 是否可逆并不是一个大问题,可以通过伪逆计算或正则化处理解决。