来客网

自荐一套二阶随机优化的方法

声明:本文转载自 「lixilinx博客」, 或因排版与篇幅原因进行过编辑,内容未经本站独立核实,不代表本站立场、观点或建议。 如涉及版权问题,请联系我们,核实后立即删除。 [ 免责声明 ]



一阶的方法(SGD,RMSProp,momentum,Adam等)其实区别都不太大;常用的二阶的方法往往都是些off-the-shelf的凸优化方法(quasi-Newton、truncated newton、共轭梯度等

+line search),对于非凸的和随机的大规模优化问题都不太好用。有兴趣的可以看看http://ieeexplore.ieee.org/document/7875097/里的理论,类似quasi-newton,用到preconditioner,但不同的是,最优的preconditioner涉及到期望(对付随机梯度噪声)和切线方程的外积的形式(对付非凸,有点类似Gaussian-Newton的形式)。Preconditioner在Lie group上用自然梯度下降来求解,当然Preconditioner可以是limited-memory的,这样才可用在large-scale的问题上。

最近有空整理了一番,写了一套tensorflow的demo code,有rnn, lstm, cnn等各种简单的benchmark problems,放在https://github.com/lixilinx/psgd_tf上,有兴趣的可以看看,ESGD和batch normalization与特定的limited-memory preconditioner是密切相关的。有些Pytorch demo(不完整,核心是numpy写的)放在https://github.com/lixilinx/psgd_np上。总之,感兴趣可以尝试一下。

评论 (0)