除了正则化之外,优化也是深度学习需要解决的一个核心问题。由于深度神经网络中的隐藏层数目较多,因而将整个网络作为一个整体进行优化是非常困难的事情,需要花费大量的时间和计算力。出于效率和精确性的考虑,在深度学习的优化上需要使用专门的技术。
出于可解性的考虑,传统机器学习算法往往会小心翼翼地选择代价函数和优化条件,将待优化问题转化为容易求解的凸优化问题。但在神经网络,尤其是在深度神经网络中,更一般的非凸情况是不可避免的,这就给深度学习中的优化带来很多额外的挑战。
当待优化的代价函数的输入是 n 维向量时,其二阶导数就包含针对不同变量分别求偏导所得到的很多分量,将这些分量按顺序排列可以得到 Hessian 矩阵。而在神经网络的训练中,Hessian 矩阵的病态问题非常常见,甚至无论优化问题是否具有凸优化的形式,病态的 Hessian 矩阵都会出现。
在线性方程 Ax=b 中,当系数矩阵 A 的微小扰动会给解集 x 带来较大幅度的波动时,这样的矩阵就被称为病态矩阵(ill-conditioned matrix)。
病态矩阵是科学计算不愿打交道的对象,因为数值精度导致的不可避免的舍入误差可能会给输出带来巨大的偏离,正所谓“差之毫厘,谬以千里”。在神经网络的训练中,病态矩阵的影响体现在梯度下降的不稳定性上。当应用随机梯度下降解决优化问题时,病态矩阵对输入的敏感性会导致很小的更新步长也会增加代价函数,使学习的速度变得异常缓慢。
深度神经网络面临的另一个挑战是局部极小值的问题。凸优化问题的数学特性保证了局部极小值和全局最小值之间的等价关系。因而在优化一个凸问题时,任何形式的临界点都可以看成是可行解。而在神经网络,尤其是深度模型中,代价函数甚至会具有不可列无限多个局部极小值,这显然会妨碍对全局最小值的寻找,导致搜索陷入局部最优的陷阱中。