代价函数与梯度下降

代价函数公式示例:J(θ0,  θ1)=12mi=1m(hθ(x(i))y(i))2J\left(\theta _{0},\;\theta _{1}\right)=\dfrac{1}{2m}\sum ^{m}_{i=1}\left( h_{\theta }\left( x^{\left( i\right) }\right) -y^{\left( i\right) }\right) ^{2}

h函数表示假设函数,示例(线性函数):hθ(x)=θ0+θ1xh_{\theta}\left( x\right) =\theta _{0}+\theta _{1}x

梯度下降公式示例:θj:=θjαθjJ(θ0,  θ1)for  j=0  and  j=1\theta _{j}:=\theta _{j}-\alpha \dfrac{\partial}{\partial \theta _{j}}J\left(\theta _{0},\;\theta _{1}\right) (for\; j=0\;and\;j = 1)

将代价函数代入偏导即可得到:θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)\theta _{j}:=\theta _{j}-\alpha\dfrac{1}{m}\sum ^{m}_{i=1}\left( h_{\theta }\left( x^{\left( i\right) }\right) -y^{\left( i\right) }\right)x_{j}^{(i)}

α\alpha表示学习率

学习率越大则梯度下降的速度越快,但容易错过代价值最小的位置;

α\alpha后面跟着的是点(θ0,  θ1)(\theta_{0},\;\theta_{1})的梯度,用来确定代价函数的最小值的位置

更新梯度时需要 同步更新:

  1. temp0:=θ0αθ0J(θ0,θ1)temp_{0}:=\theta _{0}-\alpha \dfrac{\partial}{\partial \theta _{0}}J\left(\theta _{0},\theta _{1}\right)
  2. temp1:=θ1αθ1J(θ0,θ1)temp_{1}:=\theta _{1}-\alpha \dfrac{\partial}{\partial \theta _{1}}J\left(\theta _{0},\theta _{1}\right)
  3. θ0:=temp0\theta_{0}:=temp_{0}
  4. θ1:=temp1\theta_{1}:=temp_{1}

错误做法:

  1. temp0:=θ0αθ0J(θ0,θ1)temp_{0}:=\theta _{0}-\alpha \dfrac{\partial}{\partial \theta _{0}}J\left(\theta _{0},\theta _{1}\right)
  2. θ0:=temp0\theta_{0}:=temp_{0}
  3. temp1:=θ1αθ1J(θ0,θ1)temp_{1}:=\theta _{1}-\alpha \dfrac{\partial}{\partial \theta _{1}}J\left(\theta _{0},\theta _{1}\right)
  4. θ1:=temp1\theta_{1}:=temp_{1}

多元梯度下降

(多元线性回归)假设函数表示为:hθ(x)=θ0+θ1x1+θ2x2++θnxn=θTXh_{\theta}\left( x\right) =\theta_{0}+\theta _{1}x_{1}+\theta_{2}x_{2}+\ldots +\theta_{n}x_{n}=\theta^TX

代价函数表示为:J(θ0,  θ1,  ,  θn)=J(θ)=12mi=1m(hθ(x(i))y(i))2J\left(\theta _{0},\;\theta _{1},\;\ldots,\;\theta_{n}\right)=J(\theta)=\dfrac{1}{2m}\sum ^{m}_{i=1}\left( h_{\theta }\left( x^{\left( i\right) }\right) -y^{\left( i\right) }\right) ^{2}

梯度下降公式表示为:θj:=θjαθjJ(θ)\theta _{j}:=\theta _{j}-\alpha \dfrac{\partial}{\partial \theta _{j}}J(\theta)

代入代价函数求偏导:θj:=θjα1mi=1m(hθ(x(i))y(i))xj(i)\theta _{j}:=\theta _{j}-\alpha\dfrac{1}{m}\sum ^{m}_{i=1}\left( h_{\theta }\left( x^{\left( i\right) }\right) -y^{\left( i\right) }\right)x_{j}^{(i)}

特征缩放

通过确保所有特征都处在一个相近的范围,即确保不同特征的取值在相近的范围内,这样梯度下降法就能够更快地收敛

例如:

变量x1x_{1}的取值范围为0-2000;变量x2x_{2}的取值范围为0-5

若不经过处理,这两个变量表示出来的代价函数如下图1,收敛速度比较慢。

通过将这两个变量归一化,其取值都在 0-1 之间,表示出来的代价函数如下图2,收敛速度就会比较快

均值归一化:xi=xiμs(μ为均值,  s为特征值的范围)x_{i}=\dfrac{x_{i}-\mu}{s}(\mu为均值,\;s为特征值的范围)