本课程来自深度之眼,部分截图来自课程视频以及李航老师的《统计学习方法》第二版。
公式输入请参考:在线Latex公式
梯度下降法是一种迭代算法。选取适当的初值
x
0
x^0
x0,不断迭代,更新
x
x
x的值,进行目标函数的极小化,直到收敛。这个方法应该大部分人都很熟悉,在NG和李宏毅的课程里面都有涉及,提几个点。
1.这个方法什么时候不适用
2.多个极值点的情况是否能保证一定会找到最优点:当目标函数是凸函数时,梯度下降法的解是全局最优解。一般情况下,其解不保证是全局最优解。梯度下降法的收敛速度也未必是很快的。
下面直接看例子
例子

上图是函数
f
(
x
)
=
(
x
−
1
)
2
+
0.5
f(x)=(x-1)^2+0.5
f(x)=(x−1)2+0.5,使用GD计算其最小值,步长
η
=
0.2
\eta=0.2
η=0.2,初始点
x
0
=
5
x^0=5
x0=5
- 求导
f ′ ( x ) = 2 ( x − 1 ) f'(x)=2(x-1) f′(x)=2(x−1) - 计算初始位置
x
0
=
5
x_0=5
x0=5的梯度
f ′ ( x 0 ) = 2 ( x 0 − 1 ) = 2 ( 5 − 1 ) = 8 f'(x^0)=2(x^0-1)=2(5-1)=8 f′(x0)=2(x0−1)=2(5−1)=8 - 根据步长更新下一个位置
x
1
x^1
x1
x 1 = x 0 − f ′ ( x 0 ) η = 5 − 8 × 0.2 = 3.4 x^1=x^0-f'(x^0)\eta=5-8\times0.2=3.4 x1=x0−f′(x0)η=5−8×0.2=3.4 - 计算当前位置
x
1
x_1
x1的梯度
f ′ ( x 1 ) = 2 ( x 1 − 1 ) = 2 ( 3.4 − 1 ) = 4.8 f'(x^1)=2(x^1-1)=2(3.4-1)=4.8 f′(x1)=2(x1−1)=2(3.4−1)=4.8 - 根据步长更新下一个位置
x
2
x_2
x2
x 2 = x 1 − f ′ ( x 1 ) η = 3.4 − 4.8 × 2 = 2.44 x^2=x^1-f'(x^1)\eta=3.4-4.8\times2=2.44 x2=x1−f′(x1)η=3.4−4.8×2=2.44
不断重复,直到梯度
f
′
(
x
)
f'(x)
f′(x)很小很小后停止

GD数学表示
输入:目标函数
f
(
x
)
f(x)
f(x),梯度函数
g
(
x
)
=
Δ
f
(
x
)
g(x)=\Delta f(x)
g(x)=Δf(x),计算精度
ϵ
\epsilon
ϵ,步长
η
\eta
η。
输出:
f
(
x
)
f(x)
f(x)的极小值点
x
∗
x^*
x∗。
(1)取初始值
x
0
∈
R
n
x^0\in R^n
x0∈Rn,取
k
=
0
k=0
k=0
(2)计算
f
(
x
k
)
f(x^k)
f(xk)
(3)计算梯度
g
k
=
g
(
x
(
k
)
)
g_k=g(x^{(k)})
gk=g(x(k)),当
∣
∣
g
k
∣
∣
<
ϵ
||g_k||<\epsilon
∣∣gk∣∣<ϵ时,停止迭代,否则,
x
k
+
1
=
x
k
−
η
∗
g
k
x^{k+1}=x^k-\eta*g_k
xk+1=xk−η∗gk,重新转至步骤2
总结
1.梯度下降法在每一步时计算当前位置的梯度,由此明白该往什么方向走能够使函数值下降。
2.参数步长决定了每步走的幅度。太大最后接近极值后不容易收敛,太小接近极值要花很多时间。
本文介绍了梯度下降法的基本原理及应用,通过一个具体的例子详细展示了如何使用梯度下降法来寻找函数的最小值,并讨论了该方法在不同情况下的适用性和局限性。
843

被折叠的 条评论
为什么被折叠?



