返回目录
运用批量梯度下降法(BGD),每次迭代需要对所有训练集进行运算。
随机梯度下降法(SGD)则每次只对一次数据集进行运算。
小批量梯度下降法(MBGD)则每次对一组数据集进行运算。
1. 批量梯度下降法(BGD)
代价函数:
J
(
θ
⃗
)
=
1
2
m
∑
i
=
1
m
(
θ
⃗
T
x
⃗
(
i
)
−
y
(
i
)
)
2
J(\vec{\theta})=\frac{1}{2m}\sum_{i=1}^{m}( \vec{\theta}^T\vec{x}^{(i)}-y^{(i)})^2
J(θ)=2m1i=1∑m(θTx(i)−y(i))2
更新:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
m
(
θ
⃗
T
x
⃗
(
i
)
−
y
(
i
)
)
x
⃗
j
(
i
)
\theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{m}( \vec{\theta}^T\vec{x}^{(i)}-y^{(i)})\vec{x}_j^{(i)}
θj:=θj−αm1i=1∑m(θTx(i)−y(i))xj(i)
2. 随机梯度下降法(SGD)
每次更新使用当次输入的数据进行
θ
\theta
θ的更新。
代价函数则是所有已经测试过的数据误差平方之和。
代价函数:
J
(
θ
⃗
)
=
1
2
k
∑
i
=
1
k
(
θ
⃗
T
x
⃗
(
i
)
−
y
(
i
)
)
2
J(\vec{\theta})=\frac{1}{2k}\sum_{i=1}^{k}( \vec{\theta}^T\vec{x}^{(i)}-y^{(i)})^2
J(θ)=2k1i=1∑k(θTx(i)−y(i))2
更新:
θ
j
:
=
θ
j
−
α
1
m
(
θ
⃗
T
x
⃗
k
−
y
)
x
⃗
j
k
\theta_j := \theta_j-\alpha\frac{1}{m}( \vec{\theta}^T\vec{x}^k-y)\vec{x}^k_j
θj:=θj−αm1(θTxk−y)xjk
3. 小批量梯度下降法(MBGD)
每次更新使用当次输入的一组数据进行
θ
\theta
θ的更新。
代价函数则是所有已经测试过的数据误差平方之和。
代价函数:
J
(
θ
⃗
)
=
1
2
t
∑
i
=
1
t
(
θ
⃗
T
p
⃗
(
i
)
−
q
(
i
)
)
2
J(\vec{\theta})=\frac{1}{2t}\sum_{i=1}^{t}( \vec{\theta}^T\vec{p}^{(i)}-q^{(i)})^2
J(θ)=2t1i=1∑t(θTp(i)−q(i))2
更新:
θ
j
:
=
θ
j
−
α
1
m
∑
i
=
1
k
(
θ
⃗
T
s
⃗
(
i
)
−
v
(
i
)
)
s
⃗
j
(
i
)
\theta_j := \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{k}( \vec{\theta}^T\vec{s}^{(i)}-v^{(i)})\vec{s}_j^{(i)}
θj:=θj−αm1i=1∑k(θTs(i)−v(i))sj(i)
其中:
S
=
(
s
⃗
(
1
)
s
⃗
(
2
)
.
.
.
s
⃗
(
k
)
)
=
(
x
⃗
(
i
1
)
x
⃗
(
i
2
)
.
.
.
x
⃗
(
i
k
)
)
,
V
=
(
v
(
1
)
v
(
2
)
.
.
.
v
(
k
)
)
=
(
y
(
i
1
)
y
(
i
2
)
.
.
.
y
(
i
k
)
)
P
=
(
p
⃗
(
1
)
p
⃗
(
2
)
.
.
.
p
⃗
(
t
)
)
=
S
1
⋃
S
2
.
.
.
⋃
S
r
,
Q
=
(
q
(
1
)
q
(
2
)
.
.
.
q
(
t
)
)
=
V
1
⋃
V
2
.
.
.
⋃
V
r
其
中
i
1
,
i
2
,
.
.
.
,
i
k
∈
[
1
,
m
]
,
r
为
更
新
次
数
\begin{aligned} S=\begin{pmatrix}\vec{s}^{(1)} \\ \vec{s}^{(2)} \\ ... \\ \vec{s}^{(k)}\end{pmatrix}=\begin{pmatrix}\vec{x}^{(i_1)} \\ \vec{x}^{(i_2)} \\ ... \\ \vec{x}^{(i_k)}\end{pmatrix} , &V=\begin{pmatrix}v^{(1)} \\ v^{(2)} \\ ... \\ v^{(k)}\end{pmatrix}=\begin{pmatrix}y^{(i_1)} \\ y^{(i_2)} \\ ... \\ y^{(i_k)}\end{pmatrix} \\ P=\begin{pmatrix}\vec{p}^{(1)} \\ \vec{p}^{(2)} \\ ... \\ \vec{p}^{(t)}\end{pmatrix}=S_1\bigcup S_2...\bigcup S_r , &Q=\begin{pmatrix}q^{(1)} \\ q^{(2)} \\ ... \\ q^{(t)}\end{pmatrix}=V_1\bigcup V_2...\bigcup V_r\\ 其中 i_1,i_2,...,i_k\in[1,m],r为更新次数 \end{aligned}
S=⎝⎜⎜⎛s(1)s(2)...s(k)⎠⎟⎟⎞=⎝⎜⎜⎛x(i1)x(i2)...x(ik)⎠⎟⎟⎞,P=⎝⎜⎜⎛p(1)p(2)...p(t)⎠⎟⎟⎞=S1⋃S2...⋃Sr,其中i1,i2,...,ik∈[1,m],r为更新次数V=⎝⎜⎜⎛v(1)v(2)...v(k)⎠⎟⎟⎞=⎝⎜⎜⎛y(i1)y(i2)...y(ik)⎠⎟⎟⎞Q=⎝⎜⎜⎛q(1)q(2)...q(t)⎠⎟⎟⎞=V1⋃V2...⋃Vr
即是说,
S
S
S和
V
V
V是从测试集
X
X
X和
y
y
y中抽取出来的
k
k
k行,
P
P
P和
Q
Q
Q是所有输入过的测试集的并集。
4. 最优步长推导
下面针对一般形式MBGD做以下推导:
θ
j
^
=
θ
j
−
α
1
m
∑
i
=
1
k
(
θ
⃗
T
s
⃗
(
i
)
−
v
(
i
)
)
s
⃗
j
(
i
)
=
θ
j
−
α
m
(
s
⃗
(
1
)
T
θ
⃗
−
v
(
1
)
s
⃗
(
2
)
T
θ
⃗
−
v
(
2
)
.
.
.
s
⃗
(
k
)
T
θ
⃗
−
v
(
k
)
)
(
s
⃗
j
(
1
)
s
⃗
j
(
2
)
.
.
.
s
⃗
j
(
k
)
)
=
θ
j
−
α
m
(
s
⃗
(
1
)
T
θ
⃗
−
v
(
1
)
s
⃗
(
2
)
T
θ
⃗
−
v
(
2
)
.
.
.
s
⃗
(
k
)
T
θ
⃗
−
v
(
k
)
)
T
S
j
=
θ
j
−
α
m
(
S
θ
⃗
−
V
)
T
S
j
\begin{aligned} \widehat{\theta_j}&= \theta_j-\alpha\frac{1}{m}\sum_{i=1}^{k}( \vec{\theta}^T\vec{s}^{(i)}-v^{(i)})\vec{s}_j^{(i)} \\ &= \theta_j-\frac{\alpha}{m} \begin{pmatrix} {\vec{s}^{(1)}}^T\vec{\theta}-v^{(1)} & {\vec{s}^{(2)}}^T\vec{\theta}-v^{(2)} &...&{\vec{s}^{(k)}}^T\vec{\theta}-v^{(k)} \end{pmatrix} \begin{pmatrix} \vec{s}_j^{(1)} \\ \vec{s}_j^{(2)} \\...\\ \vec{s}_j^{(k)} \end{pmatrix} \\ &= \theta_j-\frac{\alpha}{m} \begin{pmatrix} {\vec{s}^{(1)}}^T\vec{\theta}-v^{(1)} \\ {\vec{s}^{(2)}}^T\vec{\theta}-v^{(2)} \\...\\{\vec{s}^{(k)}}^T\vec{\theta}-v^{(k)} \end{pmatrix}^TS_j\\ &= \theta_j-\frac{\alpha}{m} (S\vec{\theta}-V)^TS_j \end{aligned}
θj
=θj−αm1i=1∑k(θTs(i)−v(i))sj(i)=θj−mα(s(1)Tθ−v(1)s(2)Tθ−v(2)...s(k)Tθ−v(k))⎝⎜⎜⎜⎛sj(1)sj(2)...sj(k)⎠⎟⎟⎟⎞=θj−mα⎝⎜⎜⎜⎛s(1)Tθ−v(1)s(2)Tθ−v(2)...s(k)Tθ−v(k)⎠⎟⎟⎟⎞TSj=θj−mα(Sθ−V)TSj
有:
(
θ
1
^
θ
2
^
.
.
.
θ
n
^
)
T
=
(
θ
1
θ
2
.
.
.
θ
n
)
T
−
α
m
(
S
θ
⃗
−
V
)
T
(
S
1
S
2
.
.
.
S
n
)
\begin{pmatrix} \widehat{\theta_1} \\ \widehat{\theta_2} \\ ...\\ \widehat{\theta_n} \\ \end{pmatrix}^T \ = \begin{pmatrix} \theta_1\\ \theta_2\\ ...\\ \theta_n\\ \end{pmatrix}^T -\frac{\alpha}{m}(S\vec{\theta}-V)^T \begin{pmatrix} S_1&S_2&...&S_n \end{pmatrix}
⎝⎜⎜⎛θ1
θ2
...θn
⎠⎟⎟⎞T =⎝⎜⎜⎛θ1θ2...θn⎠⎟⎟⎞T−mα(Sθ−V)T(S1S2...Sn)
即:
θ
^
⃗
=
θ
⃗
−
α
m
S
T
(
S
θ
⃗
−
V
)
\vec{\widehat{\theta}}= \vec{\theta}-\frac{\alpha}{m}S^T(S\vec{\theta}-V)
θ
=θ−mαST(Sθ−V)
带入
J
(
θ
)
J(\theta)
J(θ)得:
J
(
θ
^
⃗
)
=
1
2
t
∑
i
=
1
t
(
θ
^
⃗
T
p
⃗
(
i
)
−
q
(
i
)
)
2
J(\vec{\widehat{\theta}})=\frac{1}{2t}\sum_{i=1}^{t}( \vec{\widehat{\theta}}^T\vec{p}^{(i)}-q^{(i)})^2
J(θ
)=2t1i=1∑t(θ
Tp(i)−q(i))2
要找到
α
\alpha
α使得
J
(
θ
^
⃗
)
J(\vec{\widehat{\theta}})
J(θ
)最小。对
J
(
θ
^
⃗
)
J(\vec{\widehat{\theta}})
J(θ
)关于
α
\alpha
α求导:
d
J
(
θ
^
⃗
)
d
α
=
−
1
t
2
∑
i
=
1
t
(
p
⃗
(
i
)
T
θ
^
⃗
−
q
(
i
)
)
p
⃗
(
i
)
T
S
T
(
S
θ
⃗
−
V
)
=
−
1
t
2
(
P
θ
^
⃗
−
Q
)
T
P
S
T
(
S
θ
⃗
−
V
)
=
−
1
t
2
(
P
(
θ
⃗
−
α
m
S
T
(
S
θ
⃗
−
V
)
)
−
Q
)
T
P
S
T
(
S
θ
⃗
−
V
)
\begin{aligned} \frac{d J(\vec{\widehat{\theta}})}{d{\alpha}}&=-\frac{1}{t^2}\sum_{i=1}^{t}( {\vec{p}^{(i)}}^T\vec{\widehat{\theta}}-q^{(i)}){\vec{p}^{(i)}}^TS^T(S\vec{\theta}-V) \\ &=-\frac{1}{t^2}(P\vec{\widehat{\theta}}-Q)^TPS^T(S\vec{\theta}-V)\\ &=-\frac{1}{t^2}(P(\vec{\theta}-\frac{\alpha}{m}S^T(S\vec{\theta}-V))-Q)^TPS^T(S\vec{\theta}-V) \end{aligned}
dαdJ(θ
)=−t21i=1∑t(p(i)Tθ
−q(i))p(i)TST(Sθ−V)=−t21(Pθ
−Q)TPST(Sθ−V)=−t21(P(θ−mαST(Sθ−V))−Q)TPST(Sθ−V)
令
U
=
S
T
(
S
θ
⃗
−
V
)
U=S^T(S\vec{\theta}-V)
U=ST(Sθ−V),则:
d
J
(
θ
^
⃗
)
d
α
=
−
1
t
2
(
P
(
θ
⃗
−
α
m
U
)
−
Q
)
T
P
U
=
−
1
t
2
(
(
P
θ
⃗
)
T
(
P
U
)
−
α
t
(
P
U
)
T
(
P
U
)
−
Q
T
(
P
U
)
)
\begin{aligned} \frac{d J(\vec{\widehat{\theta}})}{d{\alpha}} &=-\frac{1}{t^2}(P(\vec{\theta}-\frac{\alpha}{m}U)-Q)^TPU\\ &=-\frac{1}{t^2}((P\vec{\theta})^T(PU)-\frac{\alpha}{t}(PU)^T(PU)-Q^T(PU)) \end{aligned}
dαdJ(θ
)=−t21(P(θ−mαU)−Q)TPU=−t21((Pθ)T(PU)−tα(PU)T(PU)−QT(PU))
再次对
α
\alpha
α求导,有:
d
2
J
(
θ
^
⃗
)
d
α
2
=
1
t
3
(
P
U
)
T
(
P
U
)
>
=
0
\frac{d ^2J(\vec{\widehat{\theta}})}{d{\alpha}^2} =\frac{1}{t^3}(PU)^T(PU)>=0
dα2d2J(θ
)=t31(PU)T(PU)>=0
所以当
d
J
(
θ
^
⃗
)
d
α
=
0
\frac{dJ(\vec{\widehat{\theta}})}{d{\alpha}} =0
dαdJ(θ
)=0时,
J
(
θ
^
⃗
)
J(\vec{\widehat{\theta}})
J(θ
)得到最小值,记此时的解为
α
∗
\alpha ^*
α∗。
有:
(
P
θ
⃗
)
T
(
P
U
)
−
α
∗
t
(
P
U
)
T
(
P
U
)
−
Q
T
(
P
U
)
=
0
(P\vec{\theta})^T(PU)-\frac{\alpha ^*}{t}(PU)^T(PU)-Q^T(PU)=0
(Pθ)T(PU)−tα∗(PU)T(PU)−QT(PU)=0
解得:
α
∗
=
t
(
P
U
)
T
(
P
θ
⃗
−
Q
)
(
P
U
)
T
(
P
U
)
其
中
:
U
=
S
T
(
S
θ
⃗
−
V
)
\begin{aligned} \alpha^*=\frac{t(PU)^T(P\vec{\theta}-Q)}{(PU)^T(PU)} \\ 其中:U=S^T(S\vec{\theta}-V) \end{aligned}
α∗=(PU)T(PU)t(PU)T(Pθ−Q)其中:U=ST(Sθ−V)
代入得到梯度下降更新表达式:
θ
⃗
:
=
θ
⃗
−
(
P
U
)
T
(
P
θ
⃗
−
Q
)
(
P
U
)
T
(
P
U
)
U
其
中
:
U
=
S
T
(
S
θ
⃗
−
V
)
\vec{{\theta}}:= \vec{\theta}-\frac{(PU)^T(P\vec{\theta}-Q)}{(PU)^T(PU)} U\\ 其中:U=S^T(S\vec{\theta}-V)
θ:=θ−(PU)T(PU)(PU)T(Pθ−Q)U其中:U=ST(Sθ−V)
表达式说明,每次迭代我们都可以找到一个最优步长使得梯度下降最快。
当使用BGD时:
P
=
S
=
X
,
Q
=
V
=
y
P=S=X, Q=V=y
P=S=X,Q=V=y。
经测试使用
α
=
0.001
\alpha = 0.001
α=0.001时,迭代500次没有达到阈值范围内,使用最优步长只需6次就能达到阈值。
从表达式可以看出计算最优步长时计算量大,使用固定步长仍是一个好用的算法。
随机梯度下降算法及最优步长相关公式推导
最新推荐文章于 2024-02-24 21:05:54 发布