学习模型的过程其实就是一个寻找最优参数的过程,在谈到最优时,一般会提到局部极小(local minimum)全局最小(global minimum)

    • 局部极小解:参数空间中的某个点,其邻域点的误差函数值均不小于该点的误差函数值。
    • 全局最小解:参数空间中的某个点,所有其他点的误差函数值均不小于该点的误差函数值。

    这两个解对应的误差函数值分别成为局部最小值全局最小值

    要成为局部极小,只要满足该点在参数空间中梯度为0就可以了。局部极小可以有多个,全局最小则只有一个。全局最小一定也是局部极小,反之则不成立

    因为用梯度下降搜索最优解可能会陷入非全局最小解的局部极小解,在现实任务中,人们会使用以下这些策略试图跳出局部极小

    • 以多组不同参数值初始化多个神经网络:经过训练后,取误差最小的解作为最终参数。这种方法相当于从多个不同的初始点开始搜索,从而增加找到全局最小解的可能性。
    • 模拟退火(simulated annealing)技术:每次迭代都以一定的概率接收比当前解差的结果,从而有机会跳出局部极小(当然也有可能跳出全局最小),每次接受“次优解”的概率会随着时间推移逐渐减小,从而保证了算法的稳定。
    • 随机梯度下降(stochastic gradient descent,简称SGD):在计算梯度时加入了随机因素,因此即便陷入局部极小点,梯度依然可能不为0,从而有机会跳出局部极小,继续搜索。

    除了这些方法之外,遗传算法也常用于训练神经网络以逼近全局最小。当这些技术大多是启发式,没有理论的保障。也就是说,这些方法指示基于直观或者经验构造的,能在可接受的时间和空间花费下给出待解决的组合优化问题的一个可行解,但不能估计可行解与最优解的偏离程度