3.1.3 逃离鞍点的方法
这里会有一个问题:鞍点和局部最小值哪个比较常见?鞍点其实并不可怕,如果我们经常遇到的是鞍点,遇到局部最小值比较少,那就太好了.科幻小说《三体III:死神永生》中有这样一个情节:东罗马帝国的君士坦丁十一世为对抗敌人,找来了具有神秘力量的狄奥伦娜.狄奥伦娜可以于万军丛中取人首级,但大家不相信她有这么厉害,要狄奥伦娜先展示一下她的力量.于是狄奥伦娜拿出一个圣杯,大家看到圣杯大吃一惊,因为圣杯本来放在圣索菲亚大教堂地下室的一个石棺里面,而且石棺是密封的,没有人可以打开.狄奥伦娜不仅取得了圣杯,还自称在石棺中放了一串葡萄.于是君士坦丁十一世带人撬开了石棺,发现圣杯真被拿走了,而且石棺中真的有一串葡萄.为什么狄奥伦娜可以做到这些呢?因为狄奥伦娜可以进入四维空间.从三维空间来看,这个石棺是封闭的,没有任何路可以进去,但从更高维的空间来看,这个石棺并不是封闭的,是有路可以进去的.误差表面会不会也一样呢?
神经网络图3.5(a) 所示的一维空间中的误差表面有一个局部最小值.但是在二维空间(如图3.5(b) 所示)中,这个点就可能只是一个鞍点.常常会有人画类似图3.5(c) 这样的图来告诉我们深度神经网络的训练是非常复杂的.如果我们移动某两个参数,误差表面的变化就会非常复杂,有非常多的局部最小值.低维空间中的局部最小值点,在更高维的空间中,实际上是鞍点.同样,如果在二维空间中没有路可以走,会不会在更高维的空间中,其实有路可以走?更高的维度难以可视化,但我们在训练一个神经网络的时候,参数量动辄达百万、千万级别,所以误差表面其实有非常高的维度——参数的数量代表了误差表面的维度.既然维度这么高,会不会其实就有非常多的路可以走呢?既然有非常多的路可以走,会不会其实局部最小值就很少呢?而经验上,我们如果自己做一些实验,就会发现实际情况也支持这个假说.图3.6 是训练某不同神经网络的结果,每个点对应一个神经网络.纵轴代表在训练神经网络时收敛到临界点,损失没法再下降时的值.我们常常会遇到两种情况:损失仍然很高,却遇到了临界点而不再下降;或者直到损失降至很低,才遇到临界点.在图3.6 中,横轴代表最小值比例(minimum ratio),最小值比例的定义为
图3.5 误差表面
(3.12)
实际上,我们几乎找不到所有特征值都为正的临界点.在图3.6 所示的例子中,最小值比例最大也不过处于0.5~ 0.6的范围,代表只有约一半的特征值为正,其余的特征值为负. 换言之,在所有的维度里面,有约一半的路可以让损失上升,还有约一半的路可以让损失下降.虽然在图3.6 上,越靠近右侧代表临界点“看起来越像”局部最小值点,但这些点都不是真正的局部最小值点.所以从经验上看起来,局部最小值并没有那么常见.在大多数情况下,当我们训练到一个梯度很小的地方,参数不再更新时,往往只是遇到了鞍点.
图3.6 训练不同神经网络的结果