赞
踩
梯度方向: 指定点处, 函数值变化幅度最大的方向.
梯度下降算法, Gradient Descent, 也称为 最速下降算法, Steepest Descent. 是求解无约束最优化问题的经典方法.
它属于迭代优化方法. 迭代公式是:
x
(
k
+
1
)
=
x
(
k
)
+
(
−
1
)
λ
k
∇
f
(
x
(
k
)
)
x^{(k+1)}=x^{(k)}+ (-1)\lambda_k \nabla f(x^{(k)})
x(k+1)=x(k)+(−1)λk∇f(x(k))
即从
x
(
k
)
x^{(k)}
x(k)点出发, 沿该点处的负梯度方向
−
∇
f
(
x
(
k
)
)
-\nabla f(x^{(k)})
−∇f(x(k)), 以步长
λ
k
\lambda_k
λk 找到下一个迭代点.
SGD, Stochastic Gradient Descent.
一般来讲, 目标函数是每个样本损失函数的加和. 即
L
(
w
)
=
∑
i
=
1
n
L
i
(
w
)
L(w)=\sum_{i=1}^n L_i(w)
L(w)=i=1∑nLi(w)
当样本很多, 参数很多, 又没有简单的公式时, 计算的代价会很昂贵.
所以随机梯度下降的思想是: 在计算每轮迭代时, 从总样本中随机选一个子集来计算. 大大减轻运算量. It’s effective in large-scale machine learning problems.
虽然不是每次迭代得到的损失函数都向着全局最优方向, 但是大的整体的方向是向全局最优解的, 最终的结果往往是在全局最优解附近.
momentum, [mə’mentəm], [物] 动量.
P
=
m
v
P=mv
P=mv.
在sgd的过程中,每次下降步长仅通过α(alpha)来控制,容易陷入更新太慢的状态:
看一下小球滚落的物理现象:
如果是个笔直的斜坡, 由于加速度方向一致, 小球的动量会快速变大; 若轨道比较蜿蜒, 小球甚至还会减速.
于是参照小球滚落的物理现象, 引入了 mementum 参数.
思想是,若当前梯度方向与上一次相同,那么,此次的步长增强,否则,应该相应减弱.
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcfMJZOa-1610894718739)(http://image100.360doc.com/DownloadImg/2016/10/1008/81923986_10.jpg)]
Nesterov Accelerated Gradient(NAG)算法相对于Momentum的改进在于,以“向前看”看到的梯度 而不是 当前位置梯度去更新。经过变换之后的等效形式中,NAG算法相对于Momentum多了一个本次梯度相对上次梯度的变化量,这个变化量本质上是对目标函数二阶导的近似。由于利用了二阶导的信息,NAG算法才会比Momentum具有更快的收敛速度。
下面的参数来自于kerkas中的 keras.optimizers.SGD
.
参数w的更新迭代为:
w
=
w
+
(
−
1
)
∗
λ
∗
∂
L
∂
w
w = w+(-1)* \lambda *\frac {\partial L}{\partial w}
w=w+(−1)∗λ∗∂w∂L
略去学习率与负号,
Δ
w
3
=
∂
L
∂
w
3
=
h
3
(1)
\Delta w3=\frac {\partial L}{\partial w3}=h3 \tag 1
Δw3=∂w3∂L=h3(1)
继续往前, 就要用到复合函数求导的链式法则了. 以激活函数为 sigmoid,
σ
(
⋅
)
\sigma(\cdot)
σ(⋅) 为例:
Δ
w
2
=
∂
L
∂
w
2
=
∂
L
∂
h
3
⋅
∂
h
3
∂
w
2
=
w
3
⋅
∂
h
3
∂
w
2
(2)
对其中的复合函数
h
3
=
σ
(
w
2
h
2
+
b
2
)
h3=\sigma(w2h2+b2)
h3=σ(w2h2+b2) 再度应用链式法则:
Δ
w
2
=
w
3
⋅
∂
[
σ
(
h
2
w
2
+
b
2
)
]
∂
w
2
=
w
3
⋅
∂
[
σ
(
h
2
w
2
+
b
2
)
]
∂
(
h
2
w
2
+
b
2
)
⋅
∂
(
h
2
w
2
+
b
2
)
∂
w
2
=
w
3
⋅
σ
(
h
2
w
2
+
b
2
)
(
1
−
σ
(
h
2
w
2
+
b
2
)
)
⋅
h
2
(2.1)
可以看到, 值的大小由 {高层权重, 前一层输出, 激活函数选择} 共同决定.
所以, 对一个 variable 打印梯度, 在不同的 step, 其梯度也会有较大变化.
再继续往前,
Δ
w
2
=
∂
L
∂
w
1
=
∂
L
∂
h
3
⋅
∂
h
3
∂
w
1
=
∂
L
∂
h
3
⋅
∂
h
3
∂
h
2
⋅
∂
h
2
∂
w
1
(3)
其中
h
3
=
σ
(
w
2
h
2
+
b
2
)
h3=\sigma(w2h2+b2)
h3=σ(w2h2+b2), 与式(2)中类似, 由对
w
2
w2
w2 求偏导变为 对
h
2
h2
h2求偏导.
图: sigmoid 函数的梯度函数的图像. 其梯度的值域为 [0,0.25] .
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。