本文参考吴恩达机器学习课程第2章

线性回归公式:

f(x)=θ0+θ1xf(x)=\theta_0 + \theta_1x
代价公式(误差均值中的2用来抵消求导得来的2):
J(θ0,θ1)=12mi=1m(fθ(x)iyi)2J(\theta_0,\theta_1)=\frac{1}{2m}\sum_{i=1}^m(f_{\theta}(x)^i - y^i)^2

目标:代价最小化

这里演示单变量线性回归时:
θ0=0\theta_0=0, f(x)=θ1xf(x)=\theta_1x
可对J(θ1)J(\theta_1)求导,
J(θ1)=1mi=1m(θ1xiyi)J^{'}(\theta_1)=\frac{1}{m}\sum_{i=1}^m(\theta_1x^i - y^i)
此时J(θ1)=0J^{'}(\theta_1)=0方可求出θ1\theta_1

实际上,由于代价函数经常含有2个及以上参数,目前函数处于三维空间x, y, z分别为θ0,θ1,J(θ0,θ1)\theta_0,\theta_1,J(\theta_0,\theta_1),无法直接求导获得最佳参数组合
所以我们实际上,是不断尝试θ0,θ1\theta_0,\theta_1不同的值,找到损失结果最小的那组(θ0,θ1)(\theta_0,\theta_1)
我们如何找到合适的尝试方法来找到这组参数呢,目前使用

梯度下降法

机器学习-线性回归
算法特点:从不同的起始值开始,获得的局部最优解是不一样
为了方便,设 θ0=0,θ1=0\theta_0=0,\theta_1=0
α\alpha为学习率(不变),ddθiJ(θi)\frac{d}{d\theta_i}J(\theta_i)为偏导数,参数更新公式:
θi:=θiαddθiJ(θ0,θ1)\theta_i:= \theta_i - \alpha\frac{d}{d\theta_i}J(\theta_0,\theta_1)(i=0,1i=0,1)

具体展开:
θ0:=θ0αddθ0J(θ0,θ1)=θ01mi=1m(θ0+θ1xiyi)\theta_0:=\theta_0-\alpha\frac{d}{d\theta_0}J(\theta_0,\theta_1)=\theta_0-\frac{1}{m}\sum_{i=1}^m(\theta_0 + \theta_1x^i-y^i)
θ1:=θ1αddθ1J(θ0,θ1)=θ01mi=1m(θ0+θ1xiyi)xi\theta_1:=\theta_1-\alpha\frac{d}{d\theta_1}J(\theta_0,\theta_1)=\theta_0-\frac{1}{m}\sum_{i=1}^m(\theta_0 + \theta_1x^i-y^i)*x^i

  1. 导数项: 达到局部最优解时(图中某一处局部最低点时),此时导数项为0,θi:=θiα0\theta_i:= \theta_i - \alpha*0,参数不再更新,且随着J(θ)J(\theta)接近最低点,导数项也会越来越小,所以暂时学习率可不变。
  2. 梯度下降可以用于更新任何可微(因为需要求导)的代价函数J,目前使用的梯度下降用到了i=1m\sum_{i=1}{m},意味着每下降一次遍历一整个数据集,也称batch梯度下降算法。

相关文章: