1.线性回归
我们都知道,一般线性回归的假设函数为:
h θ = ∑ j = 1 n θ j x j h_{\theta} = \sum_{j=1}^{n}\theta_{j}x_{j} hθ=j=1∑nθjxj
即:
h
θ
(
X
)
=
θ
T
X
h_{\theta}(\mathbf{X}) = \boldsymbol{\theta}^{T}\mathbf{X}
hθ(X)=θTX
其中:
θ
=
(
θ
1
,
θ
2
,
.
.
.
,
θ
n
)
T
X
=
(
x
1
,
x
2
,
.
.
.
,
x
n
)
T
\boldsymbol{\theta} = (\theta_{1}, \theta_{2},...,\theta{n})^{T}\\ \mathbf{X} = (x_{1}, x_{2}, ..., x_{n})^{T}
θ=(θ1,θ2,...,θn)TX=(x1,x2,...,xn)T
2.MSE均方误差损失函数
设: x ( i ) x^{(i)} x(i)和 y ( i ) y^{(i)} y(i)为一个数据对,共有 m m m个数据对, h θ ( x ( i ) ) h_{\theta}(x^{(i)}) hθ(x(i))为线性回归的预测值
使用均方误差损失函数:
J t r a i n ( θ ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 注:此处的1/2是为了之后求导方便 J_{train}(\boldsymbol{\theta}) = \frac{1}{2m}\sum_{i=1}^{m}\left (h_{\theta}(x^{(i)})-y^{(i)}\right )^{2} \qquad \text{注:此处的1/2是为了之后求导方便} Jtrain(θ)=2m1i=1∑m(hθ(x(i))−y(i))2注:此处的1/2是为了之后求导方便
3.梯度公式推导
我们的目的是不断的迭代,使得均方误差(MSE)最小,根据梯度下降法,
θ
\boldsymbol{\theta}
θ的更新策略为:
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
J
(
θ
)
(
1
≤
j
≤
n
)
\\\\ \theta_{j}:=\theta_{j}-\alpha \frac{\partial}{\partial \theta_{j}}J(\boldsymbol{\theta}) \qquad (1\leq j\leq n)
θj:=θj−α∂θj∂J(θ)(1≤j≤n)
我们现在假设之有一个数据 ( X 1 T , y ) (\mathbf{X_{1}^{T}}, y) (X1T,y):
(即数据为: ( x 1 , x 2 , x 3 , . . . , x n , y ) (x_{1}, x_{2}, x_{3},..., x_{n}, y ) (x1,x2,x3,...,xn,y))
∂ ∂ θ j J ( θ ) = ∂ ∂ θ j ( 1 2 ( h θ ( X ) − y ) 2 ) ( 1 ≤ j ≤ n ) = ( h θ ( X ) − y ) ⋅ ∂ ∂ θ j ( h θ ( X ) − y ) = ( h θ ( X ) − y ) ⋅ ∂ ∂ θ j ( ∑ i = 1 n θ i x i − y ) = ( h θ ( X ) − y ) x j \begin{aligned} \frac{\partial}{\partial \theta_{j}}J(\boldsymbol{\theta}) =& \frac{\partial}{\partial \theta_{j}} \left ( \frac{1}{2}\left (h_{\theta}(\mathbf{X})-y\right )^{2} \right ) \qquad (1\leq j\leq n)\\ =& \left (h_{\theta}(\mathbf{X}) - y \right ) \cdot \frac{\partial}{\partial\theta_{j}}\left (h_{\theta}(\mathbf{X})-y \right )\\ =& \left (h_{\theta}(\mathbf{X}) - y \right ) \cdot \frac{\partial}{\partial\theta_{j}}\left (\sum_{i=1}^{n}\theta_{i}x_{i} -y \right ) \\ =& \left (h_{\theta}(\mathbf{X}) - y \right )x_{j} \end{aligned} ∂θj∂J(θ)====∂θj∂(21(hθ(X)−y)2)(1≤j≤n)(hθ(X)−y)⋅∂θj∂(hθ(X)−y)(hθ(X)−y)⋅∂θj∂(i=1∑nθixi−y)(hθ(X)−y)xj
现在我们考虑m个数据 (只需要将
m
m
m个值求平均即可):
∂
∂
θ
j
J
(
θ
)
=
−
1
m
∑
i
=
1
m
(
y
i
−
h
θ
(
X
i
)
)
x
j
i
\frac{\partial}{\partial \theta_{j}}J(\boldsymbol{\theta}) = -\frac{1}{m}\sum_{i=1}^{m}\left (y^{i}-h_{\theta}(\mathbf{X^{i}})\right )x_{j}^{i}
∂θj∂J(θ)=−m1i=1∑m(yi−hθ(Xi))xji
其中:
y
i
、
x
j
i
和
的
上
标
i
表
示
第
几
个
数
据
,
下
标
j
表
示
哪
一
个
维
度
,
X
i
表
示
第
i
个
数
据
y^{i}、x_{j}^{i}和的上标i表示第几个数据,下标j表示哪一个维度,\mathbf{X^{i}}表示第i个数据
yi、xji和的上标i表示第几个数据,下标j表示哪一个维度,Xi表示第i个数据
4.梯度下降法更新策略
(1).批梯度下降法(MGD
)
在最小化损失函数的过程中,需要不断反复的更新权重
θ
\theta
θ使得误差函数减小,更新过程如下:
θ
j
′
=
θ
j
+
α
1
m
∑
i
=
1
m
(
y
i
−
h
θ
(
X
i
)
)
x
j
i
{\theta_{j}}'=\theta_{j}+\alpha\frac{1}{m}\sum_{i=1}^{m}\left (y^{i}-h_{\theta}(\mathbf{X^{i}})\right )x_{j}^{i}
θj′=θj+αm1i=1∑m(yi−hθ(Xi))xji
(2).随机梯度下降法(SGD
)
由于MGD每更新一个参数时,都要用到所有的样本数,所以训练速度会随着样本数量的增加而变得很慢。而SGD
每更新一个参数,仅会随机取一个样本:
θ
j
′
=
θ
j
+
α
(
y
i
−
h
θ
(
X
i
)
)
x
j
i
{\theta_{j}}'=\theta_{j}+\alpha\left (y^{i}-h_{\theta}(\mathbf{X^{i}})\right )x_{j}^{i}
θj′=θj+α(yi−hθ(Xi))xji
(3).小批量梯度下降(MBGD
)
MBGD
小批量梯度下降法,假设每次更新参数时用到的样本数为
k
k
k :
θ
j
′
=
θ
j
+
α
1
k
∑
i
i
+
k
(
y
i
−
h
θ
(
X
i
)
)
x
j
i
(
i
=
1
,
1
+
k
,
1
+
2
k
,
.
.
.
)
{\theta_{j}}'=\theta_{j}+\alpha\frac{1}{k}\sum_{i}^{i+k}\left (y^{i}-h_{\theta}(\mathbf{X^{i}})\right )x_{j}^{i} \qquad (i=1,1+k,1+2k,...)
θj′=θj+αk1i∑i+k(yi−hθ(Xi))xji(i=1,1+k,1+2k,...)
5.三种算法比较结论
1.BGD
(批梯度下降)
每次更新会使用所有的训练数据来最小化损失函数。 如果只有一个极小值,那么BGD是考虑了所有训练集数据,朝着最小值迭代运动。缺点是如果样本值很大的话,更新速度会很慢。
2.SGD
(随机梯度下降)
在每次更新的时候,由于只考虑了一个样本点,大大加快了训练数据的速度,但是由于训练数据的噪声点较多,那么每一次利用噪声点进行更新,就不一定是朝着极小值方向更新,但是由于更新多次,所以整体方向上还是朝着极小值方向更新。
3.MBGD
(小批量梯度下降)
MBGD为了综合BGD的训练速度慢以及SGD的准确性综合而来。但是这里要注意,不同问题的batch是不一样的。
我们在下一篇博客中,用numpy
实现算法。
https://blog.csdn.net/HaoZiHuang/article/details/104817087