- 首先介绍下,mini-batch gradient descent 在之前的讲解中,我们使用梯度下降来优化时,都是将所有training data全部输入,计算cost 这种算法叫做 batch gradient descent。这种算法只适用于训练集较小的情况。比如 训练集大小 m <2000时。
通常情况下,深度学习的训练集都会很大,所有最常用的 mini-batch gradient descent ,这里我们就要选择 mini-batch size了,这也是一个超参数,如下图,通常可以选择 64/128/256/512 或者1024总之都是2的指数
mini-batch gradient descent 优点,训练速度快,高效
原因: 1它不像batch gradient descent 每次迭代要把整个数据集计算法,当数据量很大时,计算缓慢很耗时。
2 合适的batch size 可以继续利用vecterization 向量化计算来加速计算。
- 除了mini-batch gradient descent 外还有以下常用优化算法:
- gradient descent with Momentum 它的基本思想是结合过去的梯度值做一个平均,以此来平滑整体的梯度序列,使得梯度能够更快的收敛到最优点。 要理解Momentum 你要首先理解 Exponentially Weighted Averages它的思想就是通过公式处理一个序列,使得新的序列更加平滑。
这里的主要步骤,首先创建一个大小与参数长度相等的容器V ,初始值设为0,套用如下公式: V d W = β ∗ V d W + ( 1 − β ) ∗ d W V_{dW}=\beta*V_{dW}+(1-\beta)*dW VdW=β∗VdW+(1−β)∗dW其中 β \beta β是一个超参,它的值在0-1之间,通常在0.8~0.999之间,值越大代表平均了更久之前的数据。例如0.9代表平均之前10条数据。每次迭代时,用上述公式计算 V d W V_{dW} VdW,然后更新参数 W = W − α ∗ V d W W=W-\alpha*V_{dW} W=W−α∗VdW - RMSprop 公式如下
V
d
W
=
β
1
∗
V
d
W
+
(
1
−
β
1
)
∗
d
W
V_{dW}=\beta1*V_{dW}+(1-\beta1)*dW
VdW=β1∗VdW+(1−β1)∗dW
S d W = β 2 ∗ V d W + ( 1 − β 2 ) ∗ d W 2 S_{dW}=\beta2*V_{dW}+(1-\beta2)*dW^2 SdW=β2∗VdW+(1−β2)∗dW2更新参数用如下公式: W = W − α ∗ V d W S d W + ϵ W=W-\alpha*\frac{V_{dW}}{\sqrt{S_{dW}}+\epsilon} W=W−α∗SdW+ϵVdW其中 α \alpha α是学习率 ϵ \epsilon ϵ是一个极小的正数,为了防止分母为0 - Adam 结合RMSprop 和 Momentum 被认为是目前最高效的优化算法之一。
深度学习之超参调节 、算法优化
最新推荐文章于 2024-06-16 01:12:42 发布