线性模型会被维数灾难问题限制,为了将模型应用于大规模的问题,需要根据数据调节基函数。一种方法是实现固定基函数的数量,但使用参数形式的基函数,这些参数可以在训练阶段调节,而神经网络就是这样一种模型。
前馈神经网络
回顾回归的线性模型和分类的线性模型,它们基于固定非线性基函数的线性组合,形式如下:
其中f在分类问题中是非线性激活函数,在回归问题是恒等式;
神经网络使用与上式形式相同的基函数,即每个基函数本身是输入的线性组合的非线性函数,其中,线性组合的系数是可调节的参数。
举例两层神经网络如下图:
对应的输出与输入关系为:
这里, σ 和 h 分别是隐含层输出和输入的非线性激活函数。
与感知器相比,一个重要区别是神经网络在隐含单元中使用连续的sigmoid非线性函数,而感知机使用阶梯函数
如果网络所有隐含单元的激活函数都是线性的,那么总可以找到等价的无隐含单元的网络
神经网络的扩展:引入跨层链接;稀疏网络(如卷积神经网络)
权空间对称性
对于多个不同的权向量w的选择,网络可能产生同样的从输入到输出的映射函数
网络训练
损失函数
(1)回归问题
标准的误差函数平方和形式的,即:
那么为什么是平方和的形式呢?考虑下面的过程,假设我们的目标值服从一个高斯分布:
则对于一个数据集,有:
取对数得到似然函数:
这里,如果不考虑噪声问题,它本质上优化的就是 y(x,w) ,因此这就是一个最小平方误差函数,也就是说,最小平方误差函数的来源是假设输入的目标服从高斯分布,而这应该是实际场景中比较普遍的假设,因此最小平方误差在回归问题中也用的最多。
这里的启发是,当我们设计损失函数的时候,应该从问题出发,考虑实际问题或者具体数据集的目标变量或者特征应该具备的分布情况,做出适当的假设,再推导对应的损失函数。
这里继续分析似然函数,以w为参数,计算对数似然的导数,很容易可以得到最佳的w,记为 wML 。然后,以 β 为参数, w=wML ,求解最佳的 β ,得到:
(2)二分类问题
回归问题到分类问题的转化就是在回归问题上套个sigmoid,如下:
因为是二分类问题,现在假设 y(x,w) 是条件概率 p(C1|x) ,而 p(C2|x) 为 1−y(x,w) ,所以,目标变量的条件概率分布是一个伯努利分布,如下:
则对应的误差函数是交叉熵的形式,如下:
(3)多分类问题
假设每个输⼊被分到
K
个互斥的类别中。⼆元⽬标变量
参数最优化
下面考虑求解误差函数的最优解;整个权值空间如下图举例。它的最小值出现在误差函数梯度为0的位置上,即
因为我们的基函数是非线性函数,上式基本无法得到解析解,因此考虑迭代的数值计算方法
(1)局部二次近似
这种方法利用泰勒展开,得到近似解
首先考虑全空间某点 wˆ 的泰勒展开,如下:
其中
Hessian矩阵 H=∇∇E 的元素为:
则在最小值点 w∗ 附近的局部二次近似为:
(2) 梯度下降最优化
梯度信息的使用可以大幅加快找到极小值点的速度
最简单的使用梯度信息的方法是,每次更新梯度如下:
这种方法是梯度下降法,但可以证明它是很差的算法
(3) 误差反向传播
误差反传主要是为了不断更新梯度,可以分为两个阶段。第一个阶段,误差函数关于权值的导数必须被计算出来;第二个阶段,倒数用于计算权值的调整值内部计算较复杂,包含了Jacobian矩阵的求导,Hessian矩阵的各种近似求解,但总体而言,神经网络采用的是链式法则,下面用相对简单的例子说明。
(a)考虑下图的例子,这是一个两输入一输出的网络,首先是损失函数求导,得到导数 δ=z−y :
(b)然后沿着网络的结构,按照目前的权重分配损失:
(c)不断往前分配和传递
(d)到达网络输入后,用梯度下降算法(也可以用其他算法),从输入到输出逐层更新权重:
(e)逐层往后更新:
这里, f 是非线性激活,所以对某一个单元的权重求导为:
其中, a=∑iwizi ,整体形势和上图过程一致。
从图中可以看出,反向传播包含两个过程,其一是误差反向分配和传播,其二是根据误差的权重从前到后更新。
书中的总结更具有一般性,链式法则的主要公式如下:
其中 aj=∑iwjizi ,表示神经网络的某一层中线性组合前一层所有输入的过程。
这里还说明反向传播的效率问题。反传效率是 O(W) ,可以使用有限差的来简化计算,但因为这是一种近似,得到的解可能精度不高,但是可以用它的结果与链式法则求导结果进行比对,检查反传的正确性
有限差的近似导数表达式如下:
神经网络的防止过拟合
误差函数增加正则化
一般增加了正则化后的误差函数为(正则化也称为权值衰减):
上式存在局限性,它与网络映射的确定缩放性质不相容(不具备缩放不变性)
同样考虑2层神经网络的例子,假设我们对输入输出进行基本的线性变换,如下:
输入:
输出:
那么求解到的权值和偏置也会发生改变,如下:
第一层:
第二层:
显然,基本的正则化形式将权值与偏置同等对待,线性变换后,得到的网络与之前的网络并不等价,而理论上两个网络应该是等价的
所以可以考虑修正之前的正则化项,是的正则化项对权值的缩放不变,对偏置的平移不变,可以改为下式(取消偏置的正则化,对不同层引入不同的权重):
早停止
误差函数是关于迭代次数的不增函数(因为梯度下降导致的),但是在验证集上的测量误差,通常会首先减小,然后因为过拟合而增加,如下图:
通过限制迭代次数,达到防止过拟合的效果,这里, τη ( τ 是迭代次数, η 是学习率)扮演了正则化参数 λ 的倒数的角色
不变性
在对输入变量进行一个或多个变换之后,预测不应该发生变化,或者说应该具有不变性,让模型能够表述不变性的方法有四种:
a. 通过复制训练模式,同时根据要求的不变性进行变换,对训练集进行扩展
b. 为误差函数加上正则化项,惩罚输入进行变换时,输出的改变(切线传播)
c. 抽取在要求的变换下不发生改变的特征
d. 把不变性的性质整合到神经网络的构建过程
其中,方法a因为对原有数据增加了变换,本质上,从数据的角度对损失函数产生了影响,可以证明,其效果与方法b是一致的
而方法d的典型例子是卷积神经网络,这种网络考虑的是小区域内的不变性,这种网络主要包含三种方式:局部接受场、权值共享和下采样,典型例子如下:
这种网络对微小平移不敏感,而因为是卷积,实现了全图的扫框,权值有共享,降低了网络复杂度,减少过拟合的情况
混合密度网络
神经网络往往是针对有监督学习,其目标的对条件概率分布 p(t|x) 建模,对许多问题而言,这个分布都是高斯分布,但是如果这个分布是多峰的,往往预测结果很差(注意,这里分布多峰,意味着存在一个特征向量x,可能对应多个回归值),混合密度网络可以解决这类问题
典型例子如下图(右图中,一个输入可能对应了多个输出,此时拟合效果很差):
混合密度网络:为 p(t|x) 使用混合模型,模型的混合系数和每个分量的概率分布都是输入向量x的一个比较灵活的函数
混合密度网络的例子如下:
显式地令模型的分量为高斯分布,即:
这里,参数主要是混合系数 πk(x) ,均值 μk(x) 以及方差 σ2k(x) ,它们都将作为网络的输出
如果这个混合模型有K个分量,t有L个分量,则网络有K个输出单元激活,确定混合系数;有K个输出确定方差;有K*L个输出确定均值分量
这个模型可以用最大似然求解,对应的误差函数形式如下: