本文提供了训练神经网络过程中优化算法和理论的概览,主要包括:
1.梯度消失和梯度爆炸问题,以及相对应的初始化和规范化的算法
2.总结了在训练神经网络过程中的常用的优化算法,如SGD,adaptive gradient methods 和distributed methods 和这些方法的结果。
3.总结了现有的研究关于全局问题,如陷入局部极小值,mode connectivity, lottery ticket hypothesis and infinite- width analysis.
1. 介绍
神经网络有效的三个原则
1.合适的网络。包括网络结构和激活函数。
2.训练算法。 如SGD,Adam , momentum算法等。
3.训练技巧。合适的初始化,normalization layers 和skip connections.
可以粗暴的把优化的优势分成三部分:controlling Lipschitz constants, faster convergence and better landscape.
本文主要讨论监督学习的NN结构,不包括GAN,RNN,attention和Capsule.
本文主要是写给对神经网络的优化理论有兴趣的读者。
1.1分解理论
表达,优化和泛化:监督学习的目标是第一步找到一个非常丰富的函数(rich family of functions)。第二步通过最小化损失函数的方式找到函数的参数。第三步用学习到的函数来对未知的数据进程预测。预测结果的误差成为test error。 测试误差可以被分为三部分。表达误差(representation error),优化误差(optimization error),泛化误差(generalization error)。分别对应前面的三步。
在机器学习中,通常表达,优化,和泛化三部分是分别来研究的/
最优问题分解: 深度学习的优化问题非常复杂,需要更近一步的分别。最优问题的发展可以分为三部分。第一步是让算法运行并收敛到稳定点。第二步是让算法瘦了尽可能快。第三部是让算法收敛到全局最优点(非局部)。即 convergence issue:gradient explosion/vanishing, convergence speed issue, bad local minima,plaeaus.
2.问题定义
在一个标准的全连接神经网络中:
我们想要通过选取神经网络合适的参数来使得预测的和真实 接近。因此我们想要最小化他们之间的距离。对于一个距离函数L ,最优化的问题可以定义为
对于回归问题,通常我们定义损失函数为mse.对于分类问题,通常使用logloss。
2.1 least squares
对于线性回归的最小二乘问题。如果神经网络只有一个线性神经元,那么神经网络将退化成最小二乘问题。最小二乘问题是最简单的神经网络,研究者可以通过研究最小二乘问题获得一些发现
2.2 Relation with matrix factorization
神经网络的优化问题非常接近数值计算中的一个问题,即矩阵分解matrix factorization. 如果只有2层线性网络。问题变为:
矩阵分解在工程中经常应用,并且有很多扩展,如non-negative matrix factorzation 和low rank matrix completion.