深度学习(三)梯度下降
Gradiect Descent 梯度下降
什么是梯度下降?
顾名思义,梯度下降法的计算过程就是沿梯度下降的方向求解极小值(也可以沿梯度上升方向求解极大值)。求解优化问题。
使用场景?
- 求最小损失函数(Loss function) L L L使用梯度下降,目的寻找最优参数 θ \theta θ
公式解释?
假设
θ
\theta
θ有两个参数{
θ
1
,
θ
2
\theta_1,\theta_2
θ1,θ2},随机选取起始参数
θ
0
\theta_0
θ0
计算偏微分
[
θ
1
1
θ
2
1
]
=
[
θ
1
0
θ
2
0
]
−
η
[
∂
L
θ
1
0
∂
θ
1
0
∂
L
θ
2
0
∂
θ
2
0
]
\begin{bmatrix} \theta_1^1 \\ \theta_2^1 \\ \end{bmatrix}=\begin{bmatrix} \theta_1^0 \\ \theta_2^0 \\ \end{bmatrix}-\eta \begin{bmatrix} \frac {\partial L \theta_1^0 }{\partial \theta_1^0} \\ \frac {\partial L \theta_2^0 }{\partial \theta_2^0} \\ \end{bmatrix}
[θ11θ21]=[θ10θ20]−η⎣⎡∂θ10∂Lθ10∂θ20∂Lθ20⎦⎤
η
\eta
η为learning rate 控制步幅,反复进行
- 简化写法,批量梯度下降
∇ L ( θ ) = [ ∂ C θ 1 ∂ θ 1 ∂ C θ 2 ∂ θ 2 ] \nabla L(\theta)= \begin{bmatrix} \frac {\partial C \theta_1 }{\partial \theta_1} \\ \frac {\partial C \theta_2 }{\partial \theta_2} \\ \end{bmatrix} ∇L(θ)=[∂θ1∂Cθ1∂θ2∂Cθ2]表示步子方向, θ 1 = θ 0 − η ∇ L ( θ 0 ) \theta^1=\theta^0-\eta \nabla L(\theta ^0) θ1=θ0−η∇L(θ0)
步骤
1. learning rate η \eta η 选取
- 可视化参数改变时loss的改变情况
- 选取思想
起始状态,learning rate选大些;在几代后,learning rate减少
2. 随机梯度下降 Stochastic Gradient Descent
只算单个样本得loss,让训练更快
-
弊端
偶尔失效,每部信息量有限,对梯度估计出现偏差 -
解决之道
惯性保持、环境感知 -
经典方法
AdaGrad、动量Momentum、Adam
Momentum
θ t + 1 = θ t − v t + 1 \theta^{t+1}=\theta^t-v^{t+1} θt+1=θt−vt+1 v t + 1 = μ v t + η g t v^{t+1}=\mu v^t+\eta g^t vt+1=μvt+ηgt 前进步伐由两部分组成:学习速率乘当前估计梯度和衰减的前一次步伐, μ \mu μ代表衰减系数
AdaGrad——历史梯度平方和
简化后learning rate为
η
∑
i
=
0
t
(
g
i
)
2
\frac{\eta}{\sqrt{\sum_{i=0}^t (g^i)^2 }}
∑i=0t(gi)2η i代表当前时刻
Adam——梯度一阶矩和二阶矩m
公式表示:
θ
t
+
1
=
θ
t
−
η
v
t
+
ε
m
t
^
\theta^{t+1}=\theta^t-\frac{\eta}{\sqrt{v^t+\varepsilon}}\hat{m^t}
θt+1=θt−vt+εηmt^
m
t
^
=
m
t
1
−
β
1
t
,
v
t
^
=
v
t
1
−
β
2
t
\hat{m^t}=\frac{m^t}{1-\beta_1^t},\hat{v^t}=\frac{v^t}{1-\beta_2^t}
mt^=1−β1tmt,vt^=1−β2tvt 其中,
m
t
^
\hat{m^t}
mt^是一阶矩,
v
t
^
\hat{v^t}
vt^是二阶矩,
β
1
\beta_1
β1和
β
2
\beta_2
β2是衰减系数
扩展其他
RMSProp——AdaGrad改进
θ t + 1 = θ t − η v t g t \theta^{t+1}=\theta^t-\frac{\eta}{\sqrt{v^t}}g^t θt+1=θt−vtηgt v t = g 0 2 v^{t}= g^2_0 vt=g02 v t + 1 = α v 1 + ( 1 − α ) ( g t ) 2 v^{t+1}=\alpha v^1+(1-\alpha)(g^t)^2 vt+1=αv1+(1−α)(gt)2 指数衰退平均法,确保 v t v^t vt不会永无止境变大
3.特征缩放 feature scaling
Why?处理多维问题时,特征缩放到相似尺度,梯度下降更快
What? 标准化特征范围,归一化+标准化
How?种类很多,下图为经典算法