1.声明
author:修远
此系列专栏为Datawhale下开源项目《李宏毅机器学习》决策树的补充内容。作者水平有限,还望学习者批评指正。
我们在李宏毅老师的课中可以看到求解loss function的最小值时,使用的是梯度下降。那现在的问题是,为什么李老师用负梯度方向作为搜索方向,李宏毅老师已经在课中讲到,这里我将对其进行一丢丢的补充
2.目录:
- 泰勒展开
-
- 泰勒近似推导
- 下降方法
-
- 梯度下降方法
接下来将从上述问题来进行讲解
3、泰勒展开
泰勒展开是一个用函数在某点的信息描述取值的公式,在已知函数在某一点的各阶导数值的情况下,泰勒展开可以用这些导数值系数构建一个多项式来近似函数子啊这一点的领域中的值
3.1泰勒近似推导
在如图点
(
a
,
f
(
a
)
)
(a,f(a))
(a,f(a))附近,与曲线
y
=
f
(
x
)
y=f(x)
y=f(x)最近似的直线方程是:曲线上点
(
a
,
f
(
a
)
)
(a,f(a))
(a,f(a))的切线,切线方程为:
y
=
f
(
a
)
+
f
′
(
a
)
(
x
−
a
)
y=f(a)+f'(a)(x-a)
y=f(a)+f′(a)(x−a)
这就是f在
x
=
a
x=a
x=a的线性化,右边是次数为1的多项式。如下图给出了曲线
y
=
f
(
x
)
y=f(x)
y=f(x)在x=a的切线,看起来不像是整个曲线的近似
不过,它确实为曲线在 ( a , f ( a ) ) (a,f(a)) (a,f(a))附近的近似。事实上,我们把 ( a , f ( a ) ) (a,f(a)) (a,f(a))放大,如下图。可以看到,切线与曲线y=f(x)并没有很大的差别,图像放的越大,他们的差别就越小。
在点
(
a
,
f
(
a
)
)
(a,f(a))
(a,f(a))附近,与曲线y=f(x)最近似的二次曲线方程是什么? (采用相同的函数)
最近似于曲线y=f(x)的二次曲线方程为
P
2
(
x
)
=
f
(
a
)
+
f
′
(
a
)
(
x
−
a
)
+
f
′
′
(
a
)
2
(
x
−
a
)
2
P_2(x)=f(a)+f'(a)(x-a)+\frac{f''(a)}{2}(x-a)^2
P2(x)=f(a)+f′(a)(x−a)+2f′′(a)(x−a)2
若我们忽视
P
2
(
x
)
P_2(x)
P2(x)方程右边的最后一项,就得到
f
(
a
)
+
f
′
(
a
)
(
x
−
a
)
f(a)+f'(a)(x-a)
f(a)+f′(a)(x−a),这就变为之前的线性化了。所以可以认为最后的项
f
′
′
(
x
)
2
(
x
−
a
)
2
\frac{f''(x)}{2}(x-a)^2
2f′′(x)(x−a)2为所谓的二阶修正项。这也意味着我们应该能够找到比切线更好的近似
泰勒近似定理
若f在x=a光滑,则在所有次数为N或更低的多项式中,当x在a附近时,最近似于f(x)的是
P N ( x ) = f ( a ) + f ′ ( a ) ( x − a ) + f ′ ′ ( a ) 2 ! ( x − a ) 2 + f ( 3 ) ( a ) 3 ! ( x − a ) 2 + . . . + f ( N ) ( a ) N ! ( x − a ) N P_N(x)=f(a)+f'(a)(x-a)+\frac{f''(a)}{2!}(x-a)^2+\frac{f^{(3)}(a)}{3!}(x-a)^2+...+\frac{f^{(N)}(a)}{N!}(x-a)^N PN(x)=f(a)+f′(a)(x−a)+2!f′′(a)(x−a)2+3!f(3)(a)(x−a)2+...+N!f(N)(a)(x−a)N
用求和表示该公式为:
P N ( x ) = ∑ n = 0 N f ( n ) ( a ) n ! ( x − a ) n P_N(x)=\sum_{n=0}^N\frac{f^{(n)}(a)}{n!}(x-a)^n PN(x)=n=0∑Nn!f(n)(a)(x−a)n
4.下降方法
接下来我们将产生一个优化点列 x ( k ) x^{(k)} x(k),k=1…,其中
x t = x t − 1 + Δ x x^t=x^{t-1}+\Delta x xt=xt−1+Δx
4.1梯度下降方法
在李宏毅老师的课堂中,想要做的就是最小化loss function,其中 w , b w,b w,b是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选取初始值 w 0 , b 0 w_0,b_0 w0,b0,然后选择 − ▽ f ( x ) -\bigtriangledown f(x) −▽f(x)作为搜素方向不断地迭代,更新 w , b w,b w,b的值,进行损失函数的最小化
将
f
(
x
t
)
f(x^t)
f(xt)在
x
t
−
1
x^{t-1}
xt−1处进行泰勒展开
f
(
x
t
)
=
f
(
x
t
−
1
+
Δ
x
)
≈
f
(
x
t
−
1
)
+
f
′
(
x
t
−
1
)
Δ
x
+
f
′
′
(
x
t
−
1
)
Δ
x
2
2
f(x^t)=f(x^{t-1}+\Delta x)\approx f(x^{t-1})+f'(x^{t-1})\Delta x + f''(x^{t-1}) \frac{\Delta x^2}{2}
f(xt)=f(xt−1+Δx)≈f(xt−1)+f′(xt−1)Δx+f′′(xt−1)2Δx2
那我们也可以将上述写为在机器学习中参数形式,将
L
(
w
t
)
L(w^t)
L(wt)在
w
t
−
1
w^{t-1}
wt−1处进行一阶泰勒展开
L ( w t ) = L ( w t − 1 + w x ) L(w^t)=L(w^{t-1}+w x) L(wt)=L(wt−1+wx)
= L ( w t − 1 ) + L ′ ( w t − 1 ) Δ x = L(w^{t-1})+L'(w ^{t-1}) \Delta x =L(wt−1)+L′(wt−1)Δx
其中 Δ x \Delta x Δx是微小矢量,它的大小就是“搜索步径(步长)”。 Δ x \Delta x Δx是微小矢量,可表示为 μ δ x \mu \delta x μδx,其中 α \alpha α为标量, δ x \delta x δx为单位向量。将其的代入上式中
L ( w t ) = L ( w t − 1 ) + L ′ ( w t − 1 ) α δ x L(w^t)=L(w^{t-1})+L'(w^{t-1})\alpha \delta x L(wt)=L(wt−1)+L′(wt−1)αδx
对于下降法而言,主要 w t w^t wt不是最优点就成立
L
(
w
t
−
1
)
<
L
(
w
t
)
L(w^{t-1})<L(w^t)
L(wt−1)<L(wt)
则有
L ′ ( w t − 1 ) α δ x < 0 L'(w^{t-1})\alpha \delta x <0 L′(wt−1)αδx<0
L ′ ( w t − 1 ) δ x < 0 L'(w^{t-1}) \delta x <0 L′(wt−1)δx<0
可知 δ x \delta x δx和 L ′ ( w t − 1 ) L'(w^{t-1}) L′(wt−1)都为向量, δ x \delta x δx为单位向量, L ′ ( w t − 1 ) L'(w^{t-1}) L′(wt−1)为当前位置的梯度方向
我们想要是使两个向量的乘积小于0,并且能够达到负最大值。所以 δ x \delta x δx和 L ′ ( w t − 1 ) L'(w^{t-1}) L′(wt−1)互为反向。当 δ x \delta x δx为 L ′ ( w t − 1 ) L'(w^{t-1}) L′(wt−1)(当前梯度)的负方向的时候,能够让 L ′ ( w t − 1 ) δ x L'(w^{t-1}) \delta x L′(wt−1)δx尽可能的小。
上述我们可以知道 δ x \delta x δx为 L ′ ( w t − 1 ) L'(w^{t-1}) L′(wt−1)的反方向, 可以得到:
δ x = − L ′ ( w t − 1 ) ∣ ∣ L ′ ( w t − 1 ) ∣ ∣ \delta x=- \frac{L'(w^{t-1})}{||L'(w^{t-1})||} δx=−∣∣L′(wt−1)∣∣L′(wt−1)
将得到的 δ x \delta x δx代入 Δ x \Delta x Δx中得到
Δ x = x t − x t − 1 = μ δ x = α L ′ ( w t − 1 ) \Delta x=x^{t}-x^{t-1}=\mu \delta x=\alpha L'(w^{t-1}) Δx=xt−xt−1=μδx=αL′(wt−1)
在李宏毅老师的学习任务中,需要去最小化L(w,b),其中w,b是要求解的模型参数。梯度下降法常用来求解这种无约束最优化问题,它是一种迭代方法:选取初值 w 0 , b 0 w^0,b^0 w0,b0,不断迭代,更新,进行loss function的最小化。所以迭代形式可以写为:
w t = w t − 1 − α L ′ ( w t − 1 ) w^{t}=w^{t-1}-\alpha L'(w^{t-1}) wt=wt−1−αL′(wt−1)
b t = b t − 1 − α L ′ ( b t − 1 ) b^{t}=b^{t-1}-\alpha L'(b^{t-1}) bt=bt−1−αL′(bt−1)