深度学习之梯度
什么是梯度?
一、数学知识:
一、简介
- 导数(derivate):高中所学的二维空间中的增长速率。(标量)
- 偏微分(partial derivate):对于空间中,某一方向的增长。(标量)
- 梯度(gradient):对函数的各个自变量的偏微分的集合。(矢量)
二、实例
- 函数
z
=
y
2
−
x
2
z = y^2 - x^2
- 偏导数:
∂
z
∂
x
=
−
2
x
frac{partial z}{partial x}=-2x
∂
z
∂
y
=
2
y
frac{partial z}{partial y}=2y
- 梯度:
∇
f
=
(
∂
z
∂
x
,
∂
z
∂
y
)
=
(
−
2
x
,
2
y
)
nabla f=(frac{partial z}{partial x},frac{partial z}{partial y})=(-2x,2y)
- 偏导数:
三、梯度的含义
- 神经网络的特征之一,从数据样本中学习。 而loss函数就是我们可以自动确定的抓手。当然,使得loss函数达到最小值时,就是我们要寻找的参数。这时就引入了导数的概念。
-
导数的引入,可以使我们容易获得极值点,
f
′
(
x
)
=
0
f'(x)=0
四、迭代法求取最小值
1、简单例子
通过使用
θ
t
+
1
=
θ
t
−
a
t
∇
f
(
θ
t
)
theta_{t+1}=theta_{t}-a_tnabla f(theta_t)
θt+1=θt−at∇f(θt)
- 函数:
f
(
θ
1
,
θ
2
)
=
θ
1
2
+
θ
2
2
f(theta_1,theta_2)=theta_1^2+theta_2^2
- 目标函数:
m
i
n
θ
1
,
θ
2
(
f
(
θ
1
,
θ
2
)
)
underset{theta_1,theta_2}{min}(f(theta_1,theta_2))
- 更新规则:
-
θ
1
=
θ
1
−
a
d
d
θ
1
f
(
θ
1
,
θ
2
)
theta_1=theta_1-afrac d{dtheta_1}f(theta_1,theta_2)
-
θ
2
=
θ
2
−
a
d
d
θ
2
f
(
θ
1
,
θ
2
)
theta_2=theta_2-afrac d{dtheta_2}f(theta_1,theta_2)
-
2、相关问题
-
Learning rate的设置:Learning rate设置不合理会影响最终生成的答案。如果LR太大则可能会跨越,太小可能会计算速度变慢。如下图所示
-
初始值的设置:初始值设置不合理会影响最终生成的答案。如图下图所示
-
就上图而言如何逃离最小值呢?可以引入惯性,可以变换到其他位置,如图所示: