标准梯度下降法
梯度下降法用于解无约束问题,是一种迭代算法,每一步要求解目标函数的梯度向量,具有实现简单的优点。
一阶泰勒展开
设
f
(
x
)
f(x)
f(x)具有一阶连续偏导数,若第k次的迭代值为
x
(
k
)
x^{(k)}
x(k),则在
x
(
k
)
x^{(k)}
x(k)处的一阶泰勒展开为
f
(
x
)
=
f
(
x
(
k
)
)
+
g
k
T
∗
(
x
−
x
(
k
)
)
f(x)=f(x^{(k)})+g_{k}^{T}*(x-x^{(k)})
f(x)=f(x(k))+gkT∗(x−x(k))
这里,
g
k
=
g
(
x
(
k
)
)
=
∇
f
(
x
(
k
)
)
g_{k}=g(x^{(k)})=\nabla f(x^{(k)})
gk=g(x(k))=∇f(x(k)),即
f
(
x
)
f(x)
f(x)在
x
(
k
)
x^{(k)}
x(k)的梯度。
第k+1次的迭代值 x ( k + 1 ) x^{(k+1)} x(k+1)
x
(
k
+
1
)
=
x
(
k
)
+
λ
k
p
k
x^{(k+1)}=x^{(k)}+\lambda _{k}p_{k}
x(k+1)=x(k)+λkpk
其中
p
k
p_{k}
pk是搜索方向,取负梯度方向
p
k
=
−
∇
f
(
x
k
)
p_{k}=-\nabla f(x^{k})
pk=−∇f(xk)
λ k \lambda _{k} λk的确定
λ
k
\lambda _{k}
λk是搜索步长,可由一维搜索确定,即
p
k
p_{k}
pk方向的最优步长。
f
(
x
k
+
λ
k
p
k
)
=
min
λ
≥
0
f
(
x
k
+
λ
p
k
)
f(x^{k}+\lambda _{k}p_{k})=\min_{\lambda \geq0}f(x^{k}+\lambda p_{k})
f(xk+λkpk)=λ≥0minf(xk+λpk)
算法步骤
input:目标函数
f
(
x
)
f(x)
f(x),梯度函数
g
(
x
)
=
∇
f
(
x
)
g(x)=\nabla f(x)
g(x)=∇f(x),计算精度
ε
\varepsilon
ε;
ooutput:
f
(
x
)
f(x)
f(x)的极小点
x
∗
x^*
x∗
(1)取初值
x
(
0
)
∈
R
n
x^{(0)}\in \R^{n}
x(0)∈Rn,置k=0;
(2)j计算
f
(
x
(
k
)
)
f(x^{(k)})
f(x(k))
(3)计算梯度
g
k
=
g
(
x
(
k
)
)
g_{k}=g(x^{(k)})
gk=g(x(k)),当
∥
g
k
∥
<
ε
\|g_k\|<\varepsilon
∥gk∥<ε时,停止迭代,令
x
∗
=
x
(
k
)
x^*=x^{(k)}
x∗=x(k);否则,令
p
k
=
−
g
(
x
(
k
)
)
p_k=-g(x^{(k)})
pk=−g(x(k)),求
λ
k
\lambda _k
λk,使
f
(
x
k
+
λ
k
p
k
)
=
min
λ
≥
0
f
(
x
k
+
λ
p
k
)
f(x^{k}+\lambda _{k}p_{k})=\min_{\lambda \geq0}f(x^{k}+\lambda p_{k})
f(xk+λkpk)=λ≥0minf(xk+λpk)
(4)置
x
(
k
+
1
)
=
x
(
k
)
+
λ
k
p
k
x^{(k+1)}=x^{(k)}+\lambda _{k}p_{k}
x(k+1)=x(k)+λkpk, 计算
f
(
x
(
k
+
1
)
)
)
f(x^{(k+1)}))
f(x(k+1)))
当
∥
f
(
x
(
k
+
1
)
)
−
f
(
x
(
k
)
)
∥
<
ε
\|f(x^{(k+1)})-f(x^{(k)})\| < \varepsilon
∥f(x(k+1))−f(x(k))∥<ε 或
∥
x
(
k
+
1
)
−
x
(
k
)
∥
<
ε
\|x^{(k+1)}-x^{(k)}\| < \varepsilon
∥x(k+1)−x(k)∥<ε时,停止迭代,令
x
∗
=
x
(
k
+
1
)
x^*=x^{(k+1)}
x∗=x(k+1)
(5)否则,置k = k+1,转(3)。
注意
当目标函数是凸函数时,梯度下降法的解一定是全局最优。否则,容易陷入局部最优解。