PRML学习笔记(五)

第五章 神经网络

Posted by Pelhans on November 2, 2018

PRML 和 ESL 的学习基本上是学十得一。稳扎稳打再来一次

神经网络

5.1 前馈神经网络

前馈神经网络即网络中不能存在有向圈,从而确保了输出是输入的确定函数。

假设有一个两层神经网络,即除输入层外有一个隐藏层和一个输出层。$\sigma$ 和 h 为激活函数 ,则整体的网络函数为:

与感知器模型相比,一个重要的区别是神经网络在隐含单元中使用连续的 sigmoid 非线性函数,而感知器使用阶梯函数这一非线性函数。这意味着神经网络函数关于神经网络参数是可微的,这对于网络的训练很重要。

5.1.1 权空间对称性

前馈神经网络的一个性质是,对于不同的权向量w的选择,网络可能产生同样的从输入到输出的映射函数。该对称性不仅是双曲正切函数的特有性质,而是一大类激活函数都存在的性质。在许多情况下,

5.2 网络训练

我们要最小化误差函数:

回归问题

现在我们只考虑一元变量的情形,我们假定t服从高斯分布,均值与x相关,由神经网络的输出确定,即:

其中$\beta$是高斯噪声的精度。 激活函数采用恒等函数。在后面我们将该方法推广到更一般的情况。由此我们可以构造对应的似然函数:

取负对数就得到了误差函数:

这可以用来学习参数w 和 $\beta$。现在我们考虑最大似然法,首先确定w,最大化似然函数等价于最小化平方和误差函数:

通过最小化E(w)的方式可以得到w的最大似然姐。在实际应用中,由于 y(x,w)的非线性性质导致误差函数不是凸函数,因此实际应用中可能寻找的是似然函数的局部最大值,对应于误差函数的局部最小值。

找到$w_{ML}$后,$\beta$就可以通过最小化似然函数的负对数的方式的得到,结果为:

在回归问题中,我们可以把神经网络看做具有一个恒等输出的激活函数的模型,即$y_{k} = a_{k} $,对应的平方和误差函数有如下性质:

二分类情形

采用 sigmoid 激活函数,目标变量分布为伯努利分布,则负对数似然函数给出的误差函数就是一个交叉熵误差函数:

注意,此处没有与噪声精度$\beta$相类似的东西,因为我们假定目标值的标记都正确。对于分类问题,使用交叉熵损失函数而不是平方和误差损失函数会使得训练速度更快,同事提升泛化能力。

我们可以很容易的将其推广为多酚类问题,误差函数为:

5.2.1 参数优化

由于误差E(w)是w的光滑连续函数,因此它的最小值出现在权空间中误差函数梯度等于领的位置上。梯度为零的点被称为住店,它可以进一步地被分为极小值点、极大值点和鞍点。

连续的非线性函数的最优化问题是一个被广泛研究的问题,有相当多的文献讨论如何高效地解决。大多数方法涉及到为权向量选择某个初始值$w_{0}$,然后在权空间进行一系列移动,形式为:

其中$\tau$表示迭代次数,不同的算法涉及到的权向量更新$\Delta w^{\tau}$的不同选择,许多算法会使用梯度信息。

5.2.2 局部二次近似

现在讨论误差函数的局部二次近似来寻找各种解决最优化问题的方法。

考虑E(w)在权空间某点出$\hat{w} $处的泰勒展开:

其中立方项和更高阶项已经被省略掉了。b被定义为E的梯度在$\hat{w}$处的值:

H为 Hessian矩阵,是E关于w的二阶导数在$\hat{w}$处的值。

当$w^{*}$为误差函数最小值点时,一阶导数项消失,于是有:

5.2.3 使用梯度信息

不适用梯度信息时,需要进行$O(W^{2})$次函数求值,每次求值都需要$O(W)$ 个步骤,因此时间复杂度为$ O(W^{3})$。使用梯度信息后整体的时间复杂度变为$ O(W^{2})$。

5.2.4 梯度下降最优化

最简单使用梯度信息的方法时:每次犬只更新都是在负梯度方向上的一次小的移动,即:

其中$\eta$时学习率。在每次更新后,梯度会使用新的权值向量重新计算,然后重复该过程。

对于批量最优化方法,存在更高效的方法,如共轭梯度法或拟牛顿法。与梯度下降法不同,这些算法 使得误差函数在每次迭代时总是减小的,除非权向量达到了局部的或者全局的最小值。

除此之外,我们还经常采用顺序梯度下降或随机梯度下降的方法,它使得权向量的每次更新只依赖于一个数据点:

这个更新在数据集上循环重复进行。随机梯度下降的方法的另一个性质是,可以逃离局部极小值点,因为整个数据集的关于误差函数的驻点通常不会是每个数据点各自的驻点。

5.3 误差反向传播

关于反向传播算法此处只给出简单解释。反向传播的总结为:

  1. 对网络的一个输入向量$x_{n}$,使用公式 $a_{j} = \sum_{j}w_{ji}z_{i} $和 $z_{j}=h(a_{j}) $进行正向传播,找到所有隐含单元和输出单元的激活。

  2. 使用公式 $\delta_{j} = y_{k} - t_{k}$计算所有输出单元的$\delta$。

  3. 使用公式 $\delta_{j} = h^{‘}(a_{j})\sum_{k}w_{kj}\delta_{k} $$

  4. 使用公式 $\frac{\partial E_{n}}{\partial w_{ji}} = \delta_{j}z_{i} $计算导数。

5.3.4 Jacobian 矩阵

使用反向传播计算 Jacobian矩阵的方法为:将输入空间中要寻找的 Jacobian 矩阵的点映射成一个输入向量,将这个输入向量作为网络的输入,使用通常的正向传播算法,得到网络的所有隐含单元和输出单元的激活。接下来,对于 Jacobian矩阵的每一行k(对应输出单元k),使用递归关系

对网络中的所有隐含节点,反向传播开始于公式

进行反向传播,最终使用

进行对输入单元的反向传播。

通过反向传播,我们还可以计算 Hessian矩阵,具体方式可以参阅PRML。

5.5 神经网络的正则化

5.5.1 相容的高斯先验

相容性要求对网络的权值进行相应的线性变换使得输出不变两个网络应该是等价的,任何正则化项都应该与这个性质相容,否则模型就会倾向于选择某个解,而忽视某个等价的解。显然我们之前的权值衰减不满足这个要求。

满足该要求的一个正则化项为:

其中$W_{1}$是第一层权值的集合,$W_{2}$表示第二层权值的集合,偏置未出现在求和式中。

5.5.2 早停止

对于许多用于网络训练的最优化算法,如共轭梯度算法,误差函数是一个关于迭代次数的不增函数。然后在独立的数据集如验证集上测量的误差,通常首先减小,接下来由于模型开始过拟合而逐渐增大。于是训练过程可以再关于验证集误差最小的点停止。这也是一种限制模型复杂度的方式。

5.5.3 不变性

在许多模型识别任务中,在对输入变量进行了一个或多个变换之后,预测不应该发生变化,或者说应该具有不变性。在训练样本有限的情况下,可以通过下面四类方法来调节模型使其具有不变性:

  • 通过复制训练模式,同时根据要求的不变性进行变换,对训练集进行扩展。
  • 为误差函数增加一个正则化项,用来惩罚当输入进行变换时,输出发生的改变。
  • 通过抽取在要求变换下不发生改变的特征,不变性被整合到与处理过程中。
  • 把不变的性质整合到神经网络构建过程中,或者对于相关向量机的方法,整合到核函数中。

一般来说,方法1实现起来简单,并且可以用来处理复杂的不变性,方法二保持了数据集的不变性,而是给误差函数增加了一个正则化项。方法3的有点是对于训练集没有包含的变换,他可以进行正确地外插,然而找到符合要求的人工设计的特征很困难,因为这种特征要具有所需的不变性,还不能丢失对于判别很有帮助的信息。

5.5.4 切线传播

通过切线传播(tangent propagation)的方法,我们可以使用正则化来让模型对输入的变换具有不变性。对于比一个特定的输入向量$x_{n}$,考虑变换产生的效果,假设变换是连续的,那么变换的模式会扫过D维输入空间的一个流形M。假设单一参数$\epsilon$ 控制。那么被$x_{n}$扫过的子空间M是D-1维的,并且以$\epsilon$维参数。令这个变换作用到$x_{n}$上产生的向量为$s(x_{n}, \epsilon)$,且$s(x,0)=\mathbf{x}$。

这样曲线M的切线就由方向导数$\tau = \frac{\partial x}{\partial \epsilon}$ 给出。对输入向量进行变换后,网络的输出通常会发生变化,输出k关于$\epsilon$的导数为:

其中$J_{ki}$为矩阵J的第$(k, i)$个元素。因此我们可以根据上式来修改标准的误差函数,使得在数据点的邻域之内具有不变性。

5.5.5 用变换后的数据进行训练

考虑数据集由单一参数$\epsilon$控制变换,切这个变换由函数$s(x, \epsilon)$描述,在平方和误差的情况下,误差函数可以写作:

假设$\epsilon$服从概率分布$p(\epsilon)$,则扩展的误差函数可以写作:

再进一步假设$p(\epsilon)$的均值为零,方差很小,即对原始输入向量很小的变换,则对$\epsilon$进行展开并带入误差函数可得:

使平方和误差函数达到最小值的函数为目标值t的条件均值 $E[t|x]$,此时正则化项中的第一项消失,剩下的项将等价于切线传播的正则化项。

5.5.6 卷积神经网络

通过1)局部接收场 2)权值共享 3)下采样三种方式,将不变性融入到神经网络之中。

5.5.7 软权值共享

降低具有大量权值参数的网络的复杂度的一种方法是将权值分组,然后令组内的权值相等。然而它只适用于限制的形式可以预先确定的问题中,这里我们考虑软权值共享。这种方法中,权值相等的硬限制被替换为一种形式的正则化,其中权值的分组倾向于取近似的值,此外,权值的分组、每组权值的均值,以及组内的取值范围全都作为学习过程的一部分被确定。

我们可以将权值分为若干组,分组的方法是使用高斯混合概率分布,每个高斯分量的均值、方差以及混合系数都会作为可调节的参数在学习过程中被确定。

5.6 混合密度网络

现在我们寻找对条件概率密度建模的一般框架,即:为 $p(\mathbf{t|x})$使用一个混合模型,模型的混合系数和每个分量的概率分布都是输入向量x的一个比较灵活的函数,这就构成了混合密度网络。对于任意给定的x的值,混合模型提供了通用的形式,用来对任一条件概率密度$p(\mathbf{t|x})$进行建模。假设我们考虑一个足够灵活的网络,那么我们就有了一个近似任意条件概率分布的框架。

这里我们显示地领模型的分量为高斯分布,即:

这是异方差模型的一个例子,因为数据中的噪声方差是输入向量x的一个函数。

混合密度网络的可调节参数由权向量w和偏置组成,这些参数可通过最似然法确定,或者等价地,通过最小化误差函数的方法确定。对于独立的数据,误差函数的额形式为:

一旦混合密度网络训练结束,它就可以预测对于任意给定的输入向量的目标数据的条件密度函数。

5.7 贝叶斯网络

到目前为止,对于神经网络的讨论主要集中于使用最大似然法来的确定网络的参数。正则化的最大似然法可以看成MAP方法,其中正则化项可以被看成先验参数分布的对数。然后,在贝叶斯方法中,为了进行预测,我们需要对参数的概率分布进行求和。

最完整的贝叶斯方法是基于拉普拉斯近似的方法,这是我们接下来讨论的基础。我们会使用一个真实后验概率分布的众数为中心的高斯分布来近似后验概率分布。此外我们会假设这个高斯分布的协方差很小,从而网络函数关于参数空间的区域中的参数近似是线性关系。在参数空间中,后验概率距离概率为零的状态相当远。使用这两个近似,我们会得到与之前讨论的线性回归和线性分类的模型相类似的模型。

5.7.1 后验参数分布

对于回归模型,考虑从输入向量x预测单一连续目标变量t的问题(很容易扩展到多变量情形)。我们假设条件概率分布 $p(t|x)$是一个高斯分布,均值与x相关,由神经网络的输出确定,$\beta$为精度,则:

类似地,我们将权值w的先验概率分布选为高斯分布,形式为:

对于i.i.d. 观测得到的x,对应的目标值集合$ D = {t_[1], \dots, t_{N}} $,似然函数为:

因此最终的后验概率为:

由于$y(x,w)$与w的关系是非线性的,因此后验概率不是高斯分布。

使用拉普拉斯近似,可得:

预测分布可以将后验概率分布求积分的方式获得:

然而即使对于该近似,上式积分仍然无法得到解析解,因为$y(x,w)$与w的关系是非线性的。为了将计算进行下去,我们假设与$y(x,w)$发生变化噪声的w的幅度变化相比,后验概率分布的方差比较小,因此在$w_{MAP}$附近展开后得到线性高斯模型,分布均值是w的线性函数:

这样我们就得到了边缘分布p(t)的一般结果:

其中:

可以看到,预测分布 $p(t|x, D)$是一个高斯分布,它的均值由网络函数$y(x, w_{MAP})$给出。方差由两项组成,第一项来自目标变量的固有噪声,第二项是一个与x相关的项,表示由于模型参数w的不确定性造成的内插的不确定性。

对于参数优化问题,可以使用3.5模型证据框架的结论,结合使用拉普拉斯近似得到后验概率的高斯近似,得到确定这些超参数的的值的步骤。

5.7.3 用于分类的贝叶斯神经网

前面我们使用拉普拉斯近似推导出神经网络回归模型的贝叶斯方法,现在我们看看对于分类法问题应该如何修改框架。

首先考虑网络有一个 sigmoid 输出(推广到多分类softmax是很容易的)。模型的对数似然函数为:

将拉普拉斯框架用于这个模型的第一个阶段是初始化超参数$\alpha$,然后通过最大化对数后验概率分布的方法确定参数向量w。这等价于最小化正则化误差函数:

最小化的过程可以通过使用误差反向传播方法结合标准的最优化算法得到。

为了最优化超参数$\alpha$,我们需要再次最大化边缘似然函数,而后最大化这个模型的证据函数,得到估计方程。

最后我们需要求预测分布,和前面类似,我们可求得最终的近似分布为: