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

  数学 数值计算 最优化    浏览次数:7270        分享
0

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

 

huanx8t   2018-06-19 13:29



   3个回答 
3

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

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

SofaSofa数据科学社区DS面试题库 DS面经

Zealing   2018-06-19 14:12

1

可以尝试更多的初始值

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

SofaSofa数据科学社区DS面试题库 DS面经

sofasofa   2018-06-21 09:58

0

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


SofaSofa数据科学社区DS面试题库 DS面经

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



  相关讨论

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

Newton–Raphson和牛顿法区别?

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

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

学习率不当会导致sgd不收敛吗?

RMSProp的直白解释

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

最速下降法与梯度下降法

nesterov’s momentum和momentum的区别?

Adam优化算法

  随便看看

sota model是什么意思?

pandas同时返回一个dataframe的前几行(head)和后几行(tail)

pandas报错ValueError: Cannot convert non-finite values (NA or inf) to integer

线性可分是什么意思?

plt.show()之后matplotlib图像依然不展示