线性回归与梯度下降、正规方程

前提

m行数据,n列特征

数学模型

h θ ( x ) = Σ j = 0 n θ j X j ( X 0 = 1 ) h_θ(x) = Σ_{j=0}^{n}θ_jX_j(X_0=1) hθ(x)=Σj=0nθjXjX0=1

目标函数

J ( θ ) = 1 2 Σ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ) = \frac12Σ_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)})^2 J(θ)=21Σi=1m(hθ(x(i))y(i))2

任务

寻找 θ θ θ使 J ( θ ) J(θ) J(θ)最小

方法

方法一、梯度下降(Gradient Descent,GD)

1.批量梯度下降(Batch Gradient Descent,BGD)

批量梯度下降法是最原始的形式,它是指在每一次迭代时使用所有样本来进行梯度的更新。
梯度下降更新规则:
θ j : = θ j − α ∂ J ( θ ) ∂ θ j ( 0 ⩽ j ⩽ n ) \theta_j := \theta_j - \alpha \frac{\partial^{}J(θ)}{\partialθ_j} (0\leqslant j \leqslant n) θj:=θjαθjJ(θ)(0jn)
方便起见,假设只有一个样本的情况下(m=1),将 J ( θ ) = 1 2 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ) = \frac12\sum_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)})^2 J(θ)=21i=1m(hθ(x(i))y(i))2代入

∂ J ( θ ) ∂ θ j = ∂ ∂ θ j 1 2 ( h θ ( x ) − y ) 2 = ( h θ ( x ) − y ) ∗ ∂ ∂ θ j ( θ 0 x 0 + θ 1 x 1 + . . . + θ n x n − y ) = ( h θ ( x ) − y ) ∗ x j \begin{aligned} \frac{\partial^{}J(θ)}{\partialθ_j} &= \frac{\partial^{}}{\partialθ_j}\frac12(h_θ(x)-y)^2\\ &= (h_θ(x)-y) * \frac{\partial^{}}{\partialθ_j}(θ_0x_0+θ_1x_1+...+θ_nx_n-y)\\ &= (h_θ(x)-y) * x_j \end{aligned} θjJ(θ)=θj21(hθ(x)y)2=(hθ(x)y)θj(θ0x0+θ1x1+...+θnxny)=(hθ(x)y)xj

再将上式代入梯度下降更新规则:
(1个样本)
θ j : = θ j − α ( h θ ( x ) − y ) ∗ x j ( 0 ⩽ j ⩽ n ) \theta_j := \theta_j - \alpha(h_θ(x)-y) * x_j (0\leqslant j \leqslant n) θj:=θjα(hθ(x)y)xj(0jn)
映射到m个样本,只需要在相应的地方加上上标i:
(m个样本)
θ j : = θ j − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x j ( i ) ( 0 ⩽ j ⩽ n ) \theta_j := \theta_j - \alpha\sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)}) * x_j^{(i)} (0\leqslant j \leqslant n) θj:=θjαi=1m(hθ(x(i))y(i))xj(i)(0jn)

于是得到梯度下降更新伪代码:
repeat{
θ j : = θ j − α ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) ∗ x j ( i ) \theta_j := \theta_j - \alpha\sum_{i=1}^{m}(h_θ(x^{(i)})-y^{(i)}) * x_j^{(i)} θj:=θjαi=1m(hθ(x(i))y(i))xj(i)       for j = 0, 1, 2…, n

}

优点:
(1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。
(2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,BGD一定能够得到全局最优。

缺点:
(1)当样本数目 m 很大时,每迭代一步都需要对所有样本计算,训练过程会很

2.随机梯度下降(Stochastic Gradient Descent,SGD)

随机梯度下降是每次迭代使用一个样本来对参数进行更新。使得训练速度加快。

伪代码形式
repeat{
  for i=1,…,m{
     θ j : = θ j − α ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \theta_j := \theta_j -\alpha (h_{\theta}(x{(i)})-y{(i)})x_j^{(i)} θj:=θjα(hθ(x(i))y(i))xj(i)       for j = 0, 1, 2…, n
  }
}

优点:
(1)由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快

缺点:
(1)准确度下降。由于即使在目标函数为强凸函数的情况下,SGD仍旧无法做到线性收敛
(2)可能会收敛到局部最优,由于单个样本并不能代表全体样本的趋势。
(3)不易于并行实现。

3.小批量梯度下降(Mini-Batch Gradient Descent, MBGD)

小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。其思想是:每次迭代 使用 batch_size 个样本来对参数进行更新。
这里我们假设 batchsize=10 ,样本数 m=1000 。

伪代码形式:
repeat{
  for i=1,11,21,31,…,991{
     θ j : = θ j − α 1 10 ∑ k = i ( i + 9 ) ( h θ ( x ( k ) ) − y ( k ) ) x j ( k ) \theta_j := \theta_j - \alpha \frac{1}{10} \sum_{k=i}{(i+9)}(h_{\theta}(x{(k)})-y{(k)})x_j{(k)} θj:=θjα101k=i(i+9)(hθ(x(k))y(k))xj(k)
           for j = 0, 1, 2…, n
  }
}

优点:
(1)通过矩阵运算,每次在一个batch上优化神经网络参数并不会比单个数据慢太多。
(2)每次使用一个batch可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
(3)可实现并行化。

缺点:
(1)batch_size的不当选择可能会带来一些问题。

总结

下图显示了三种梯度下降算法的收敛过程
image.png
目前小批量最为常用,而由于现如今数据量较大,批量梯度下降几乎很少使用。

方法二、正规方程(Normal Equation)

此方法仅适用于线性回归。梯度下降是迭代解法,而正规方程是解析解法,只需一步即可计算得出θ。
公式为:
θ = ( X T X ) − 1 X T y θ=(X^TX)^{-1}X^Ty θ=(XTX)1XTy

推导:
h θ ( x ) = Σ j = 0 n θ j X j ( X 0 = 1 ) h_θ(x) = Σ_{j=0}^{n}θ_jX_j(X_0=1) hθ(x)=Σj=0nθjXjX0=1
J ( θ ) = 1 2 Σ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J(θ) = \frac12Σ_{i=1}^{m}(h_θ(x^{(i)}) - y^{(i)})^2 J(θ)=21Σi=1m(hθ(x(i))y(i))2
将x、θ、y都写成向量形式后
J ( θ ) = 1 2 ( X θ − y ) T ( X θ − y ) = 1 2 ( θ T X T − y T ) ( X θ − y ) = 1 2 ( θ T X T X θ − θ T X T y − y T X θ + y T y ) \begin{aligned} J(θ) &= \frac12(Xθ-y)^T(Xθ-y)\\ &=\frac12(θ^TX^T-y^T)(Xθ-y)\\ &=\frac12(θ^TX^TXθ-θ^TX^Ty-y^TXθ+y^Ty)\\ \end{aligned} J(θ)=21(Xθy)T(Xθy)=21(θTXTyT)(Xθy)=21(θTXTXθθTXTyyTXθ+yTy)
求一个函数的极值需要对其求导, J ( θ ) J(θ) J(θ) θ θ θ求导得:
∂ J ( θ ) ∂ θ j = 1 2 ( 2 X T X θ − 2 X T y ) = 0 X T X θ − X T y = 0 θ = ( X T X ) − 1 X T y \begin{aligned} \frac{\partial^{}J(θ)}{\partialθ_j} &= \frac12(2X^TXθ-2X^Ty)= 0\\ X^TXθ - X^Ty&=0\\ θ &= (X^TX)^{-1}X^Ty\\ \end{aligned} θjJ(θ)XTXθXTyθ=21(2XTXθ2XTy)=0=0=(XTX)1XTy

公式适用条件:
X可逆
若X不可逆,说明特征线性相关,可以观察数据集寻找多余特征并去除。

引用及参考:
梯度下降部分引用了他人的原创内容,以下是原链接
[1] https://www.cnblogs.com/lliuye/p/9451903.html
[2] https://www.cnblogs.com/maybe2030/p/5089753.html
[3] https://zhuanlan.zhihu.com/p/37714263
[4] https://zhuanlan.zhihu.com/p/30891055
[5] https://www.zhihu.com/question/40892922/answer/231600231

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值