网络训练
这一节主要是训练网络来获得网络中的权重。把神经网络当作输入变量x到输出变量y的参数化非线性函数。使用与1.1节的方法对多项式拟合的问题,所以需要最小化平方和误差。现在给定一个由输入向量{xn}组成的训练集,和对应的目标tn,最小化误差函数:
回归问题
假定t服从高斯分布,均值与x相关,神经网络的输出为:
将输出单元激活函数取成恒等函数,这样的话可以近似任何从想到y的连续函数。给定N个独立同分布的观测数据集X={x1,x2,,,}以及对应的目标变量t={t1,t2,,,tn},构成似然函数:
然后再取负对数,就得到误差函数:
首先考虑w。把最大似然函数等价于最小平方和误差函数:
通过最小化得到的w被记作wML。
注意一点的是,在实际中神经网络函数y(xn,w)的非线性性质导致误差函数E(w)不是凸函数,在应用中寻找的是似然函数的局部最大值,对英语的误差的局部最小值。
现在使用已经找到的wML来寻找β:
现在考虑多个目标变量,假定w和x条件下,目标变量是相互独立的,那么目标变量的条件分布:
这种情况下噪声的精度为:
二分类
一个单一目标变量t,且t=1为C1、t=0为C2。现在只考虑单一输出,激活函数:
现在给定输入,目标变量的条件概率分布是一个伯努利分布:
如果是考虑一个由独立的观测组成的训练集,由负对数似然函数就是由一个交叉熵误差函数:
有人提出在分类问题上,使用交叉熵误差函数会使训练速度更快,同时提高泛化能力。
现在有k个二元分类问题,则目标向量的条件概率:
就可以推出误差函数:
假设使用标准的两层神经网络,第一层的权向量由各个输出共享,而在线性模型中每个分类问题都是独立解决。第一层被看成进行非线性的特征提取,不同的输出之间共享特征可以节省计算量。
前面这些都是说明了对于不同问题,要选取不同的误差函数,可以有效地进行计算提高计算能力和泛化能力。
参数最优化
我们把E(w)看作位于权空间的一个曲面。咋权空间中走一小步,从w到w+δw,误差函数变为:δE=δw.T▽E(w)。由于E(w)是w光滑连续函数,则最小值位于权空间中误差函数梯度等于零的位置上:
如果最小值不在这个位置上,就沿着
但是在误差函数上可能存在很多个驻点,梯度为零的那个驻点就是最小值,所以又提出了通过迭代的数值方法来计算最小值:
局部二次近似
这个是为了判断所找的驻点就是最小值。
现在把误差函数E(w’)在w出泰勒展开:
其中b的定义:
海森矩阵H为:
则梯度的局部近似为:
考虑一个特殊情况,在误差函数最小值点w‘附近的二次近似。因为误差函数在那点处为零,所示公式变成了:
其中H的特征值方程:
这样误差公式可以得到:
其中H是正定矩阵。
这样得到一个验证方法:当求出一个驻点,可以通过海森矩阵是否是正定矩阵来判断是否是最小值点。
使用梯度信息
文中提到使用梯度信息可以大幅度加快找到极小值点的速度。
在上面给出的误差函数的二次近似中,误差函数由w和b确定,包含w(w+3)/2个元素,W是w的维度。这个二次近似的极小值点的位置因此依赖于O(W2)个参数。如果不使用梯度信息,必须进行O(w2)次函数求值,每次求值都需要O(w)个步骤。因此需要O(W3)的计算复杂度。
而使用梯度信息,由于每次计算E的梯度都有W条信息,预计找到极小值需要O(w)次梯度。通过反向误差传播,这样的计算需要O(W)步骤,可以在O(W2)步骤内找到极小值。
梯度下降最优化
这一节讲的是梯度下降的优化,主要介绍了梯度下降,批梯度下降、随机梯度下降。
最开始提出使用迭代数值的方式求得w的值,公式为:
现在更改更新的方式,每一次权值更新都是在负梯度方向上进行移动:
这种方法被称为梯度下降,权值向量沿着误差函数下降速度最快的方向移动。
也还有批量梯度法和共轭梯度法、拟牛顿法,这些算法都有:误差函数在每次迭代时总是减小,除非权向量达到了局部或者全局的最小值。
现在讲解在线梯度下降。
基于一组独立观测的最大似然函数的误差函数由一个求和式构成,求和式每一项对应着一个数据点: