一个神经网络是一个遵循连接原则级联构成的函数逼近器(function approximation)。这个function将输入x转化成输出y。以image classification为例,x是图片,y是labels。
对于一个神经网络的训练,是指通过trail-and-error来获得网络中所有参数w的最优值。当网络中所有参数都取得最优值时,该网络针对某个损失函数可以在给定样本集上得到最低loss。
这个训练,也即参数估计,的过程,就是一个目标函数为minimize loss function的优化过程。解优化的工具有很多,针对凸优化和非凸优化又可进行分类。由于神经网络的参数较多以及其强非线性,导致其所构成的优化问题往往非凸(non-convex optmization)。解这种非凸优化的工具就是gradient descent(GD).注意,我们之所以要“估计”参数,即approximate the optimal set of weights,而不是直接求解出这组参数(analytical solution:令loss funciton的导数函数(if convex)=0,求出所有wi),是因为 it is too complex to find the perfect analytical solution of all w with all the samples. Thus we find approximated solutions by an (numerical solution) iterative process-----GD optmization.
GD是一个迭代循环,trail-and-error,试错的过程。对参数的估计和优化也是不积跬步无以至千里,每次update都是微调,积少成多。GD每次循环的操作有两步:1. 计算网络中每个参数对应的梯度;2. 按照该参数负梯度的方向更新每个参数。
- 其中第一步,即参数梯度的计算,用到的计数就是back propagation(BP)。BP就是以loss function为起点,one operation at a time地依据复合函数求导的chian rule,将在起点处计算的gradient慢慢地反推流淌,流入网络的每一个参数处。假设网络中含有10K个参数w,那么在BP时,每一个wi处计算得到的流入的梯度gi只是一个可正可负的实数;而这10K个gi组成的大vector G则是一个10K维的向量。这个向量定义在一个10K维的w(参数)空间。在这个空间中,损失函数L(w)作为BP的梯度起点,会构成一个优化曲面(convex loss function会构成一个只有一个全局最优的碗形曲面,non-convex则会额外含有很多local optimal)。
- 在得到每个参数上的梯度gi后,即得到了梯度矩阵G,我们就进行第二步,参数更新。GD顾名思义,是沿着梯度下降的方向(即负梯度方向)进行每一次参数更新。梯度下降的几何解释就是在Loss function定义在w空间的曲面上,在某一点沿着该点梯度下降的方向微调一次。这个“点”从何而来呢?由于是10K维参数空间中的点。那么一个点就对应一个10K vector,这个vector就是在此次update开始时我们网络所有参数wi的现状,也就此刻我们在空间中所处的位置。因此,10K的梯度vector G就指引了在10K空间中的这个点下降的方向。10K对10K,乐哉。
好,综上,我们了解了BP与GD的关系:GD是一个优化算法,BP是一种梯度计算流程。在神经网络的训练中,BP是GD中的一个步骤。
那么为什么BP适用于在神经网络ANN中计算gradient呢?这是因为ANN的连接属性所构成的acyclic graph很适合与chain rule的实施。
接下来,介绍一下GD的两大热门问题:
1. GD的分类&