梯度算法
首先定义一些符号:
- m :训练样本大小
x :输入变量- y :输出变量
(x,y) :一个样本- (X i ,X i ) :表示第i个样本
以房价预测为例,
x 0 =size,x 1 =bedrooms
这里size和bedrooms是两个特征量,我们可以用一条直线去拟合:
于是,当我们有n个特征的时候:
房价 y=h θ (x) 是一个依赖于 θ 的函数,我们的目的就是确定合适的 θ 使得,当给定 x 的时候,我们输出的y更准确。
基于样本有目标函数:
J(θ) 表示m个样本基于预测值和真实值之间的误差的平方,使得这个误差最小的 θ ,就是我们要求的参数值。那么问题转换为 min θ J(θ) 。
搜索算法
- 初始化 θ=0 ⃗
- 更新 θ 的值使得 J(θ) 最小
- 判断是否收敛,不收敛执返回行步骤2
对于2中的更新办法:
梯度下降算法
更新 θ 公式:
θ i :=θ i −ααα θ i J(θ)
其中, α 表示下降速度。
实际上梯度表的是某一参数的变化率,当 αα θ i J(θ)=1 表示局部 最大,当 αα θ i J(θ)=0 局部最小,梯度为0。okay求这个偏导数,先来看只有一组样本的时候:
αα θ i J(θ)=αα θ i 12 (h θ (x)−y) 2 =(h θ (x)−y)x i
当只有一组样本时,
J(θ) 中 h θ (X i )−Y i =h θ (x)−y=∑ n i=0 (θ i x i −y i ) ,对 θ i ( 确定某一个参数时)求偏导数等于 x i 于是得到上面的倒数
那么当有m个样本的时候更新公式变为:
θ i :=θ i −α∑ j=1 m (h θ (X j )−Y j )X j i
收敛 条件是 ΔJ≈0
注意到,更新公式中每次更新一个参数都需要进行求和运算,因此并不适合大量样本。下面提出一个新的算法解决这个问题。随机梯度下降算法
repeat{
for i to m{
θ i :=θ i −α(h θ (x j )−y j )x j i
}
}
当i = 1时,用第一个样本求得 θ 1 ,当i = 2的时候用 θ 1 更新 θ 2 ,此时不需要求和,只是当做只有一个样本来处理
这样做,使得求解快了不少,但是每次求得的路径不是局部最小,而是不断的靠近局部最小解。如果取回归函数的等高线则其表现如下图:
正规方程推导
一些标记和结论:
标记
∇ θ J(θ)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ αJαθ 0 ⋮αJαθ n ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ n∗1J(θ) 的梯度是一个雅可比矩阵, 于是之前我们得到更行公式可以表示为:θ:=θ−α∇ θ J(θ)
如果记A是一个m*n的矩阵, f(A)−>R,f 是 A 到实数集的映射函数那么:
∇ A f(A)=⎡ ⎣ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ αfαA 11 ⋮αfαA m1 …⋮… αfαA 1n ⋮αfαA mn ⎤ ⎦ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ m∗n
结论
- 如果 A∈R n∗n ,那么 trA=∑ n i=1 A ii
- trAB=trBA
- trABC=trCAB=trBCA
- 如果 f(A)=trAB , 那么 ∇ A trAB=B T
- ∇ A trABA T C=CAB+C T AB T
下面是使用以上结论,推导出正规方程的过程:
X=⎡ ⎣ ⎢ ⎢ ⎢ (X 1 ) T ⋮(X m ) T ⎤ ⎦ ⎥ ⎥ ⎥ m∗n ,X i =⎡ ⎣ ⎢ ⎢ x 1 ⋮x n ⎤ ⎦ ⎥ ⎥ 1∗n
Xθ=⎡ ⎣ ⎢ ⎢ ⎢ (X 1 ) T θ 1 ⋮(X m ) T θ m ⎤ ⎦ ⎥ ⎥ ⎥ 1∗m =⎡ ⎣ ⎢ ⎢ ⎢ (X 1 ) T θ 1 ⋮(X m ) T θ m ⎤ ⎦ ⎥ ⎥ ⎥ 1∗m =⎡ ⎣ ⎢ ⎢ h θ (X 1 )⋮h θ (X m ) ⎤ ⎦ ⎥ ⎥ 1∗m
这里由于第1个样本 h θ (X 1 )=θ 0 +θ 1 x 1 +⋯+θ n x n =(X 1 ) T θ ,一共有m个样本于是得出以上 Xθ 。
Y ⃗ =⎡ ⎣ ⎢ ⎢ Y (1) ⋮Y (m) ⎤ ⎦ ⎥ ⎥ m∗1 Xθ−Y=⎡ ⎣ ⎢ ⎢ h θ (X 1 )−Y 1 ⋮h θ (X m )−Y m ⎤ ⎦ ⎥ ⎥
那么 J(θ) = 12 (Xθ−Y) T (Xθ−Y)=12 ∑ m i=1 (h(X i )−Y i ) ,还记得我们的问题是求满足 min θ J(θ) 的 θ , 于是令:
则, ∇ θ 12 (Xθ−Y) T (Xθ−Y)=12 ∇ θ tr(θ T X T Xθ−θ T X T Y−Y T Xθ−Y T Y) 实数的迹为其本身
我们一项一项拆开看:
注意到其 X m∗n ,Y m∗1 ,θ 1∗n 那么所有项都是实数
∇ θ tr(θ T X T Xθ)=∇ θ tr(θ A E B θ T A T X T X C 结论2,5 )=X T Xθ+X T Xθ
∇ θ tr(θ T X T Y)=∇ θ tr(Y T Xθ 实数的转置迹相同 )=∇ θ tr(θ A Y T X B 结论3,4 )=X T Y
∇ θ tr(Y T Xθ)=X T Y
Y T Y 与 θ 无关所以梯度为0
于是
得到正规方程:
那么,