用SGD时陷入局部最优解的解决方法

  数学 数值计算 最优化    浏览次数: 124
0

我自己用SGD实现了一个算法,但是似乎陷入了局部最优。这种情况一般如何解决?

 

huanx8t   2018-06-19 13:29



   3个回答 
3

可尝试随机地增大学习速率/学习步长。其想法是像模拟退火算法样,在优化时有一定概率接受非最优解,从而增大跳出局部最优的概率。

在每个epoch/iteration后需要把数据洗牌一遍,让每个batch的数据都不一样。我的理解是每个data point的loss funtion曲面不一样,一个batch的曲面是相关曲面的平均。如果每次batch中data不一样,也就是曲面都不一样,那就减小了停在局部最优的可能性。

Zealing   2018-06-19 14:12

1

可以尝试更多的初始值

也可以使用更好的优化算法,如动量、Adam

sofasofa   2018-06-21 09:58

0

有可能是初始点不好,也可能是学习率太小。


沛县李刚   2018-06-20 09:45



  相关主题

随机平均梯度法(Stochasitc Average Gradient)和随机梯度下降(SGD)有什么区别   3回答

最速下降法与梯度下降法   1回答

Adam优化算法   1回答

梯度上升算法是什么?   2回答

对于小批量随机剃度下降法(mini-batch SGD),如何选择每批样本的数量?   1回答

RMSProp的直白解释   1回答

随机梯度下降(sgd)的收敛问题   2回答

牛顿法到底是一阶优化算法还是二阶优化算法?   2回答

线性回归有精确的解析解为什么还要用梯度下降得到数值解?   4回答

什么是Hessian矩阵和Jacobian矩阵   1回答

python里用来做数值优化的库?   2回答

怎么用牛顿法近似求解根号2?   2回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!