(notice:粗体以示向量)
一、引出算法
在学习 Linear Regression 算法时,经典案例就是房价预测。在通过一系列预处理操作后,得到一个带有特征变量 x x x和可学习参数 θ \theta θ的假设函数:
h θ ( x ) = θ 0 + θ 1 x 1 + θ 2 x 2 h_\theta(\textbf{x}) = \theta_0 + \theta_1{x_1} +\theta_2 {x_2} hθ(x)=θ0+θ1x1+θ2x2
一般式:
h θ ( x ) = ∑ i = 0 n θ i x i = θ T ⋅ x ( n 为 特 征 数 ) h_\theta(\textbf{x})=\sum_{i=0}^{n}\theta_{i}x_{i}=\boldsymbol{\theta}^{T}·\textbf{x} (n 为特征数) hθ(x)=i=0∑nθixi=θT⋅x(n为特征数)
下一步要做的就是,构造一个均方损失函数:
J ( θ ) = 1 2 ∑ k = 1 m ( h θ ( x k ) − y k ) 2 ( m 为 训 练 集 样 本 数 量 ) J(\boldsymbol\theta) = \frac{1}{2}\sum_{k=1}^{m} (h_\theta(\textbf{x}^k) - y^k)^2 (m 为训练集样本数量) J(θ)=21k=1∑m(hθ(xk)−yk)2(m为训练集样本数量)
h θ ( x k ) − y k h_\theta(\textbf{x}^{k}) - y^k hθ(xk)−yk
表示第 k 个样本的实际预测值和其真实值的差异,即“训练误差”。所有样本的训练误差之和为损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ) 。 J ( θ ) J(\boldsymbol{\theta}) J(θ) 越小,则说明可学习参数 θ \boldsymbol{\theta} θ调整的越好,算法泛化能力有可能也越好。
想让损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ) 变小,就只能迭代优化可学习参数 θ \boldsymbol{\theta} θ
而想要优化参数 θ \boldsymbol{\theta} θ,就可以使用梯度下降算法
二、梯度下降算法直观理解
直观看,假如损失函数的起始位置在上图 “1”的位置。由坐标轴刻度可知,此时的损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ)的位置很高,数值很大。需要调整可学习参数 θ \boldsymbol{\theta} θ以减小在训练集上 J ( θ ) J(\boldsymbol{\theta}) J(θ)的数值。
如图所示,损失函数 J ( θ ) J(\boldsymbol{\theta}) J(θ)不断的寻找比当前位置更低的地方作为下一步驻留地,最后在位置“2”处停止寻找。此时便得到一个局部最优解 θ \boldsymbol\theta θ.
这使用的就是下面这个更新公式:
θ i : = θ i − α ∂ ∂ θ i J ( θ ) \theta_i := \theta_i - \alpha \frac{\partial}{\partial \theta_i} J(\boldsymbol{\theta}) θi:=θi−α∂θi∂J(θ)
其中:(注意区分粗体)
∂ ∂ θ i J ( θ ) = ∂ ∂ θ i 1 2 ∑ k = 1 m ( h θ ( x k ) − y k ) 2 {\frac{\partial}{\partial \theta_i} J(\boldsymbol{\theta}) = \frac{\partial}{\partial \theta_i} \frac{1}{2}\sum_{k=1}^m(h_\theta(\textbf{x}^k) - y^k)^2} ∂