1. 假设模型和损失函数
本文章是基于多元线形回归函数,最终目的是求出各个变量 x i x_i xi对目标值的影响,得到权重矩阵 Θ \varTheta Θ。
1.1假设模型
设一线形回归函数为:
h
θ
=
Θ
⋅
X
T
=
∑
j
=
0
n
θ
j
x
j
h_{\theta}=\varTheta \cdot X^T=\sum_{j=0}^n{\theta _jx_j}
hθ=Θ⋅XT=j=0∑nθjxj
其中
X
X
X,
Θ
\varTheta
Θ都是
1
×
n
1\times n
1×n的向量,
n
n
n表示变量空间
X
X
X的维度。
1.2思路
在训练集 D = { ( X ( i ) , y θ ( i ) ) } i = 1 m D=\left\{ \left( X^{\left( i \right)},y_{\theta}^{\left( i \right)} \right) \right\} _{i=1}^{m} D={(X(i),yθ(i))}i=1m中,随机选取(或者指定从某组训练集开始)一组训练值 ( X ( i ) , y θ ( i ) ) \left( X^{\left( i \right)},y_{\theta}^{\left( i \right)} \right) (X(i),yθ(i)),并初始化 Θ \varTheta Θ。之后通过不同的思想,带入相应的迭代关系更新 Θ \varTheta Θ,最终输出在损失函数取最小值时的 Θ \varTheta Θ。
2.各类梯度下降法
2.1批量梯度下降法BGD
2.1.1损失函数
为使得整体的经验风险最小,在这我把该方程带入平方损失函数得能量函数:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J\left( \theta \right) =\frac{1}{2m}\sum_{i=1}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) ^2}
J(θ)=2m1i=1∑m(hθ(x(i))−y(i))2
这儿的
m
m
m表示样本集的大小,注意与1.1的方程n的区别,并且损失函数是只与
Θ
\varTheta
Θ有关的函数,(
x
(
i
)
x^{\left( i \right)}
x(i),
y
(
i
)
y^{\left( i \right)}
y(i))是已知数据。
2.1.2求梯度以及迭代关系
对损失函数求导,有:
∂
J
(
θ
)
∂
θ
j
=
1
m
∑
i
=
0
m
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
,
j
=
1
,
2
,
.
.
.
,
n
\frac{\partial J\left( \theta \right)}{\partial \theta _j}=\frac{1}{m}\sum_{i=0}^m{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)}},j=1,2,...,n
∂θj∂J(θ)=m1i=0∑m(hθ(x(i))−y(i))xj(i),j=1,2,...,n
由此,得到不同的
θ
j
\theta _j
θj迭代公式:
θ
j
:
=
θ
j
−
α
∂
J
(
θ
)
∂
θ
j
,
j
=
1
,
2
,
.
.
.
,
n
\theta _j:=\theta _j-\alpha \frac{\partial J\left( \theta \right)}{\partial \theta _j},j=1,2,...,n
θj:=θj−α∂θj∂J(θ),j=1,2,...,n
'
:
=
:=
:='在这表示赋值过程。
对于权重矩阵
Θ
\varTheta
Θ,有:
Θ
:
=
Θ
−
∇
J
(
θ
)
\varTheta :=\varTheta -\nabla J\left( \theta \right)
Θ:=Θ−∇J(θ)
之后反复计算上面的过程,直至
∇
J
(
θ
)
\nabla J\left( \theta \right)
∇J(θ)无限接近0,在这可以设置一个阈值,当两次迭代结果只差小于这个阈值可认为达到精度要求,输出
Θ
\varTheta
Θ。
优缺点分析:
- 全局最优解,代码容易实现。
- 当样本 m m m比较大时,计算量会变得非常大。
2.2随机梯度下降法SGD
2.2.1损失函数
对于本问题,损失函数不考虑使得每次迭代在整体都取得最满意的下降路径(即实际梯度),而是考虑得到在所选数据上的梯度。其关系如下
J
(
θ
)
=
1
2
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(\theta)=\frac{1}{2}\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) ^2
J(θ)=21(hθ(x(i))−y(i))2
2.1.2求梯度以及迭代关系
求其梯度为:
∂
J
(
θ
)
∂
θ
j
=
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
,
j
=
1
,
2
,
.
.
.
,
n
\frac{\partial J\left( \theta \right)}{\partial \theta _j}=\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)},j=1,2,...,n
∂θj∂J(θ)=(hθ(x(i))−y(i))xj(i),j=1,2,...,n
因此得到
Θ
\varTheta
Θ迭代算法:
θ
j
:
=
θ
j
−
α
∂
J
(
θ
)
∂
θ
j
=
θ
j
−
α
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
,
j
=
1
,
2
,
.
.
.
,
n
\theta _j:=\theta _j-\alpha \frac{\partial J\left( \theta \right)}{\partial \theta _j}=\theta _j-\alpha \left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)},j=1,2,...,n
θj:=θj−α∂θj∂J(θ)=θj−α(hθ(x(i))−y(i))xj(i),j=1,2,...,n
即:
Θ
:
=
Θ
−
∇
J
(
θ
)
\varTheta :=\varTheta -\nabla J\left( \theta \right)
Θ:=Θ−∇J(θ)
之后反复计算上面的过程,直至
∇
J
(
θ
)
\nabla J\left( \theta \right)
∇J(θ)无限接近0,在这可以设置一个阈值,当两次迭代结果只差小于这个阈值可认为达到精度要求,输出
Θ
\varTheta
Θ。
SGD计算的速度会远大于BGD,尤其是训练集
D
D
D很大是时候。但是,容易陷于局部最小值,且精度是低于BGD的。。
因此,通过多次选取不同的初值,对比结果,会在一定程度上优化陷于局部最小值问题。
2.3随机梯度下降法MBGD
该算法是介于SGD和BGD的。在样本 D D D中通过选取 K K K个数据集,
2.3.1损失函数
对于本问题,损失函数不考虑使得每次迭代在整体都取得最满意的下降路径(即实际梯度),而是考虑得到在所选数据上的梯度。其关系如下
J
(
θ
)
=
1
2
K
∑
i
=
1
K
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J\left( \theta \right) =\frac{1}{2K}\sum_{i=1}^K{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) ^2}
J(θ)=2K1i=1∑K(hθ(x(i))−y(i))2
2.3.2求梯度以及迭代关系
求其梯度为:
∂
J
(
θ
)
∂
θ
j
=
1
K
∑
i
=
0
K
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
,
j
=
1
,
2
,
.
.
.
,
n
\frac{\partial J\left( \theta \right)}{\partial \theta _j}=\frac{1}{K}\sum_{i=0}^K{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)}},j=1,2,...,n
∂θj∂J(θ)=K1i=0∑K(hθ(x(i))−y(i))xj(i),j=1,2,...,n
由此,得到不同的
θ
j
\theta _j
θj迭代公式:
θ
j
:
=
θ
j
−
α
∂
J
(
θ
)
∂
θ
j
=
θ
j
−
α
1
K
∑
i
=
0
K
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
x
j
(
i
)
,
j
=
1
,
2
,
.
.
.
,
n
\theta _j:=\theta _j-\alpha \frac{\partial J\left( \theta \right)}{\partial \theta _j}=\theta _j-\alpha \frac{1}{K}\sum_{i=0}^K{\left( h_{\theta}\left( x^{\left( i \right)} \right) -y^{\left( i \right)} \right) x_{j}^{\left( i \right)}},j=1,2,...,n
θj:=θj−α∂θj∂J(θ)=θj−αK1i=0∑K(hθ(x(i))−y(i))xj(i),j=1,2,...,n
'
:
=
:=
:='在这表示赋值过程。
对于权重矩阵
Θ
\varTheta
Θ,有:
Θ
:
=
Θ
−
∇
J
(
θ
)
\varTheta :=\varTheta -\nabla J\left( \theta \right)
Θ:=Θ−∇J(θ)
同理,不断更新
Θ
\varTheta
Θ,从而使损失函数最小。
参考文献:
https://www.cnblogs.com/maybe2030/p/5089753.html#_label0