前段时间在看深度学习的内容,对于全局最小值和局部最小值这两个概念之前理解的不太深入,总是容易混淆,看了西瓜书之后明白了,特此总结一下,加深印象。
1. 全局、局部最小值的概念
局部最小值是在某一区域内,函数的取值达到了最小,但是如果将这个区域扩展到定义域上来,那么这个局部最小值就不一定是最小的。 全局最小值,是在定义域内,函数值最小。全局最小一定是局部最小值,但是反之不一定成立。
图中的点是一个局部最小值点,因为我们可以看见在该点的右侧,函数值一直在变小。
2.如何跳出局部最小值
(1)使用随机梯度下降算法,顾名思义,因为是随机选择要计算梯度的点,数值可能不为0,就有机会跳出“局部最小值”,但也可能跳出“全局最小值”;
(2)使用“模拟退火”算法,模拟退火每一步都在以一定的概率接受比当前解更差的结果,在每次迭代过程中,接受“次优解”的概率要随着时间的推移而逐渐降低,从而保证算法的稳定;
(3)以多组不同的参数值初始化多个神经网络,按照标准的方法训练之后,去其中误差最小的解作为最终的参数。
(4)借助动量法,冲出局部最小值;
(5)对应第(3)条,调整学习率(步长),选取合适的ansatz。
步长过小:收敛太慢;
步长偏大:在最小值附近震荡,达不到最优
步长太大: 容易跳出合理区域,无法收敛
2022/8/23补充:
1.当存在一个局部最小值的时候,局部最小值就是全局最小值;
2.当存在多个局部最小值的时候,无法区分局部还是全局最小值,只能多选取不同的初始点,经过标准的参数优化,选择误差小的解,借此逼近全局最小值。