理论教育 多层感知器原理与应用

多层感知器原理与应用

时间:2023-07-01 理论教育 版权反馈
【摘要】:比起单层感知器,多层感知器能够处理现实世界中更复杂的数据结构或结构难以被预先定义的数据。下面以分类为例,介绍多层感知器的前向传播过程、反向传播求解过程。图2.4多层感知器结构示意二分类模型;多分类模型1.前向传播多层感知器的前向传播过程是将输入数据映射到一个输出空间。若输出层的激活函数为sigmoid函数,则可得采用sigmoid函数分类时,输出y表示多层感知器的输出类别为1的概率,则输出类别为0的概率为1-y。

多层感知器原理与应用

多层感知器(multi-layer perceptron,MLP)[7],顾名思义就是采用多层网络结构的感知器模型,它可以显著增强网络的建模能力。多层感知器的功能十分强大,当神经元的激活函数是阈值函数时,利用多层感知器的多层非线性特性可以模拟任意非线性逻辑函数,当神经元的激活函数为sigmoid时,上述结论可以推广到任何连续的非线性函数。在计算资源足够且条件宽松的情况下,利用三层感知器就可以逼近任意多元非线性函数。比起单层感知器,多层感知器能够处理现实世界中更复杂的数据结构或结构难以被预先定义的数据。从结构上看,多层感知器是在单层感知器的输入层(input layer)和输出层(output layer)之间添加一个(或多个)隐含层(hidden layer),这样的网络又称为多层前向神经网络,如图2.4所示。图2.4(a)为用于解决二分类问题的模型,输出层只有一个单元;图2.4(b)所示的网络结构面向多分类任务,输出层有多个单元。多层感知器的前向过程(forward process)又称前向传播过程,可以将输入量{x1,x2,…,xm}(固定输入的维度是m)映射到输出空间y1或{y1,y2,…,yn}(假定有n个类)从而完成分类或回归等任务。多层感知器与单层感知器一样,是一种参数化的模型,同样需要求解参数,当前最常用的方法是误差反向传播(back propagation,BP)算法[8]。除此之外,还有其他算法(如粒子群算法、遗传算法等)可以探索多层感知器的参数空间求出一组理想的参数。下面以分类为例,介绍多层感知器的前向传播过程、反向传播求解过程。

图2.4 多层感知器结构示意

(a)二分类模型;(b)多分类模型

1.前向传播

多层感知器的前向传播过程是将输入数据映射到一个输出空间。以二分类为例,输入样本是(x,y),y是类别标签,假定输入层有m个单元,那么中间的第1层隐含层的输出为

式中,h为隐含层中的第h个神经元;1(上标)为第1层隐含层;i为输入层的第i个神经元;img为输入层到隐含层之间的权重;σ(·)为激活函数Sigmoid。

假定第l层隐含层有ql个单元,在得到第l层隐含层每个单元的输出img后,可以递推得到第l层隐含层的输出为

式中,img为第l层隐含层第h个单元的输出。假定一共有K层隐含层,那么输出层的输出为

式中,img为第K层隐含层第i个单元和输出单元之间的权值。若输出层的激活函数为sigmoid函数,则可得

采用sigmoid函数分类时,输出y表示多层感知器的输出类别为1的概率,则输出类别为0的概率为1-y。我们希望当类别标签c=1时,y的值越大越好,而当c=0时,1-y的值越大越好,这样才能得到最优的参数w。我们可以采用最大似然估计法求取参数w,用数学形式表示为yc(1-y)1-c,这就是单个样本的似然函数。对于所有样本采用取对数的似然函数img,网络的最终目标就是最大化似然函数值,等价于极小化损失函数

对于多分类问题,输出层有多个神经元,那么输出层的第k个输出单元为

式中,img表示第K个隐含层的第i个单元和输出层的第k个单元之间的权值,多分类的回归方法可以采用softmax激活函数[6]对输出值进行归一化,有

对于第k类,类别标签c只有第k维为1,其余为0,而输出层的第k个单元计算为yk,假定类别k的概率可以写成img,则可以得到似然函数

同样地,损失函数是最小化负对数似然函数,也称为softmax损失函数。在预测类别时,对于softmax的输出y的每个维度就是属于该类的概率。

2.反向传播

神经网络在工作时,数据是前向传播的,即输入数据x后,x在网络中一层一层地向前传播,直到得到最终的输出y^。而在训练时,网络的代价函数J(θ)是关于网络当前输出y^与真实输出y之间差异的函数(θ是网络参数),它只能产生在输出端。因此,我们需要把误差反向传播到各个隐含层,以完成对各层的参数更新。(www.daowen.com)

假设给定一组数据D={(x1,y1),(x2,y2),…,(xm,ym)},xi∈Rd,yi∈Rl,即输入的数据包含m个样本,输出为一个n维的实向量。为了方便讨论,我们以一个有m个输入神经元、n个输出神经元、q个隐含神经元的三层感知器为例,并假设:δj表示输出层第j个神经元的阈值;γh表示隐含层第h个神经元的阈值;vih表示输入层第i个神经元与隐含层第h个神经元之间的连接权重;whj表示隐含层第h个神经元与输出层第j个神经元之间的连接权重;αh表示隐含层第h个神经元接收的输入;βj表示输出层第j个神经元接收的输入;bh表示隐含层第h个神经元的输出。

对于训练样本(xk,yk),假设网络的输出为img,即

则网络在(xk,yk)上的均分误差为

反向传播算法作为一种迭代学习算法,其参数θ的更新规则为

反向传播算法基于梯度下降策略,以目标的负梯度方向对参数进行调整,对式(2.95)给定的误差Ek和学习率η,有

注意到whj先影响j个输出层神经元的输入值βj,再影响其输出值img,然后影响Ek,所以有

式(2.98)被称为链式法则。由img,易得

现假设使用sigmoid函数作为网络的激活函数,则其导数

根据式(2.94)、式(2.95),可知神经元的梯度项为

将式(2.99)、式(2.101)代入式(2.98),再代入式(2.97),就可以得到反向传播算法关于whj的更新公式,为

与之类似,可得

在式(2.104)、式(2.105)中,隐含层神经元的梯度项eh

学习率η∈(0,1)控制着每轮权重更新的步长:η越大,则更新的步长越大,网络收敛的速度越快,但是也容易引起振荡;当η越来越靠近0时,更新的步长就越小,网络就越稳定,但收敛的速度会变慢。有时为了权衡收敛速度和网络稳定性,可以设置自适应的学习率。

算法2.4给出了神经网络反向传播的算法描述。对于每个样本,首先将输入数据提供给网络,然后向前逐层传播信号,直到得到输出结果;然后根据网络的输出结果img与样本标签img的差值,计算输出层的参数的梯度(第4、5行),再将误差反向传播到各个隐含层神经元,计算隐含层参数的梯度(第6行);最后根据神经元的梯度来对连接权重和阈值进行更新(第7行)。迭代此过程,直到满足某些条件时停止,迭代停止条件可以是达到一定的迭代步数,或者是训练的误差已达到一个很小的值。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈