(2020.6.17)优化器

今天看到 https://arxiv.org/abs/2006.05987 这篇论文感触还是挺大的,深度学习越来越向高层发展了,高层只需要知道怎么调用底层的API就好了。但是这样是不够的,因为如果只这样,性能就会被底层局限了,比如优化器。如果不了解优化器的原理,就没法发现huggingface/transformers里面的AdamW没有bias correcting的问题。因此这篇博客就总结一下优化器的原理。

参考资料:https://www.coursera.org/lecture/deep-neural-network/adam-optimization-algorithm-w9VCZ

Naive Gradient Descent

每次更新都是减掉学习率乘以偏微分,还有涉及梯度下降的问题,但是很简单。

\[\theta_i = \theta_i - \alpha \frac{\partial J}{\partial \theta_i} \]

Momentum

使用偏微分的exponential weighted average。

\[v_{i,t} = \beta v_{i,t-1} + (1-\beta) \frac{\partial J}{\partial \theta_i} \]

\[\theta_i = \theta_i - \alpha v_{i,t} \]

RMSprop

使用偏微分的归一化。

\[s_{i,t} = \beta s_{i, t-1} + (1-\beta) (\frac{\partial J}{\partial \theta_i})^2 \]

\[\theta_i = \theta_i - \alpha \frac{\frac{\partial J}{\partial \theta_i}}{\sqrt {s_{i, t}}} \]

Adam

把上面两个结合,并且加入bias correction。(第t步除以\(1-\beta^t\)

因此,不加bias correction的后果只不过是收敛得慢一点,只要迭代次数多一些,结果应该是一样的。所以那篇论文的主要贡献应该是发现了随机初始化末尾的层有助于提升结果。

你可能感兴趣的:((2020.6.17)优化器)