人工神经网络概述
生物神经元

人工神经元
人工神经元用于模拟生物神经元,人工神经元可以看做是一个多输入、单输出的信息处理单元,它先对输入变量进行线性组合,然后对组合的结果做非线性变换。因此可以将神经元抽象为一个简单的数学模型,也称为感知器。
最简单的人工神经元模型:

神经元的工作过程一般是:
- 从各输入端接收输入信号xi
- 根据连接权值wi,求出所有输入的加权和,即net=∑i=1nwixi
- 对net做非线性变换,得到神经元的输出,即y=f(net)
f称为**函数或激励函数,它对该神经元所获得输入进行变换,反映神经元的特性。常用的**函数类型如下:
- 线性函数 f(x)=kx+c
- 符号函数
- 对数函数 f(x)=1+e−x1
对数函数又称S形函数,其图形如下图所示,是最为常用的**函数,它将(−∞,+∞)区间映射到(0,1)的连续区间。特别地,f(x)是关于x处处可导的,并有f(x)的导数f′(x)=f(x)(1−f(x))

人工神经网络
神经网络由3个要素组成:拓扑结构、连接方式和学习规则
1.拓扑结构
拓扑结构是一个神经网络的基础。拓扑结构可以是两层或者两层以上的。如下图是一个两层神经网络,它只有一组输入单元和一个输出单元,是最简单的神经网络结构

2.连接方式
神经网络的连接包括层之间的连接和每一层内部的连接,连接的强度用权表示。不同的连接方式构成了网络的不同连接模型。常见的有以下几种:
前馈神经网络
前馈神经网络也称前向神经网络,其中单元分层排列,分别组成输入层、隐藏层和输出层,每一层只接受来自前一层单元的输入,无反馈。如下图所示的是一个两层前馈神经网络,图中箭头表示连接方向。

反馈神经网络
在反馈神经网络中,除了单向连接外,最后一层单元的输出返回去作为第一层单元的输入。如下图所示的是一个两层反馈神经网络。

层内有互连的神经网络
在前面两种神经网络中,同一层的单元都是相互独立的,不发生横向联系。有些神经网络中同一层的单元之间存在连接
3.学习规则
神经网络的学习分为离线学习和在线学习两类
- 离线学习指神经网络的学习过程和应用过程是独立的
- 在线学习指学习过程和应用过程是同时进行的
神经网络应用
神经网络方法应用于实际问题的一般过程如下:
- 神经网络在开始训练之前,必须设计好神经网络的拓扑结构,包括输入层的单元数、隐藏层数(如果多于一层)、每一隐藏层的单元数和输出层的单元数,单元之间的连接方式,以及每个单元**函数的选取。同时需要对网络连接的权值和每个单元的偏置进行初始化。
- 然后进行训练样本学习,计算各层连接权值和偏置值。
- 最后是工作阶段,用确定好的神经网络解决实际分类问题。
用于分类的前馈神经网络
前馈神经网络的学习过程
前馈神经网络广泛使用的学习算法是由Rumelhart等人提出的误差后向传播(Back Propagation,BP)算法。
BP算法的学习过程分为两个基本子过程,即工作信号正向传递子过程和误差信号反向传递子过程,如下图所示:

计算过程
BP神经网络的计算过程由正向计算过程和反向计算过程组成。
正向传播过程,输入模式从输入层经隐单元层逐层处理,并转向输出层,每一层神经元的状态只影响下一层神经元的状态。
如果在输出层不能得到期望的输出,则转入反向传播,将误差信号沿原来的连接通路返回,通过s修改各神经元的权值,使得误差信号最小。
1.工作信号正向传递子过程
输入层的输入向量为X=(x1,x2,…,xn),隐藏层输出向量Y=(y1,y2,…,ym),并有:
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
net_j = \sum_{…
其中,偏置θj是隐藏层中节点j用来改变单元的活性的阈值。同样地,输出层输出向量O=(o1,o2,…,ol),并有:
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
net_k = \sum_{…
这样,O向量就是输入向量X对应的实际输出,ok是输入向量X对应的第k个输出单元的输出。
2. 误差信号反向传递子过程
为了降低推导过程的复杂性,在下面讨论一次误差信号反向传递,计算权修改量△wjk、△vij时不考虑偏置θk和θj,这不影响权修改量的计算结果。
对于某个训练样本,实际输出与期望输出存在着误差,用误差平方和来表示误差信号即E定义为:
E=21(d−o)2=21k=1∑l(dk−ok)2
其中dk是输出层第k个单元基于训练样本的期望输出(也就是该训练样本真实类别对应的输出),ok是该样本在训练时第k个单元的实际输出。
将以上误差信号向后传递回隐藏层,即将以上定义式E展开到隐藏层:
E=21k=1∑l(dk−ok)2=21k=1∑l[dk−f(netj)]2=21k=1∑l[dk−f(j=1∑mwjkyj)]2
再将误差信号向后传递回输入层,即将以上定义式E进一步展开至输入层:
E=...=21k=1∑l{dk−f[j=1∑mwjkf(i=1∑nvijxi)]}2
从中看到,误差平方和E取决于权值vij和wjk,它是权值的二次函数。
为了使误差信号E最快的减少,采用梯度下降法,E是一个关于权值的函数,E(wjk)在某点wjk的梯度△E(wjk)是一个向量,其方向是E(wjk)增长最快的方向。显然,负梯度方向是E(wjk)减少最快的方向。在梯度下降法中,求某函数极大值时,沿着梯度方向走,可以最快达到极大点;反之,沿着负梯度方向走,则最快地达到极小点。
为使函数E(wjk)最小化,可以选择任意初始点wjk,从wjk出发沿着负梯度方向走,可使得E(wjk)下降最快,所以取:
△wjk=−η∂wjk∂E,j=1...m,k=1...l
其中η是一个学习率,取值为0~1。
同样的
△vij=−η∂vij∂E,j=1...m,k=1...l
对于输出层的△wjk:
△wjk=−η∂wjk∂E=−η∂netk∂E×∂wjk∂netk=−η∂netk∂E×yj
对于隐藏层的△vij:
△vij=−η∂vij∂E=−η∂netjk∂E×∂vij∂netj=−η∂netjk∂E×xi
对输出层和隐藏层各定义一个权值误差信号,令:
δko=−∂netk∂E,δjy=−∂netj∂E
则δwjk=ηδkoyj,δvij=ηδjyxi
只要计算出δko,δjy,则可计算出权值调整则δwjk和δvij
对于输出层δko可展开为:
δko=−∂netk∂E=−∂ok∂E×∂netk∂ok=−∂ok∂E×f′(netk)
对于隐藏层δjy可展开为:
δjy=−∂netj∂E=−∂yj∂E×∂netj∂yj=−∂yj∂E×f′(netj)
由于E=21∑k=1l[dk−f(∑j=1mwjkyj)]2可得:
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
\frac{\partial…
由ok=f(netk)=1+e−netk1,f(x)的导数f′(x)=f(x)(1−f(x)),可求出f′(netk)=ok(1−ok),代入可得:
δko=−∂ok∂E×f′(netk)=(dk−ok)ok(1−ok)
同样推出
δjy=−∂yj∂E×f′(netj)=(k=1∑lδkowjk)yj(1−yj)
所以前馈神经网络BP学习算法权值调整计算公式如下:
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
& \delta^o_k=(…
再考虑各层的偏置设置,隐藏层的净输出为:
netj=i=1∑nvijxi+θj
隐藏层偏置的更新为(△θj是偏置θj的改变):
△θj=ηδko,θj=θj+△θj
相应地,输出层地净输出为:
netj=i=1∑mwijyi+θj
输出层偏置的更新为(△θj是偏置θj的改变):
△θj=ηδjy,θj=θj+△θj
上述过程是一个样本训练的一次迭代,通过多个样本的多次迭代,直到找到合适的权值和偏置为止。
BP神经网络的优劣势
BP神经网络无论在网络理论还是在性能方面已比较成熟。其突出优点就是具有很强的非线性映射能力和柔性的网络结构。网络的中间层数、各层的神经元个数可根据具体情况任意设定,并且随着结构的差异其性能也有所不同。但是BP神经网络也存在以下的一些主要缺陷:
- 学习速度慢,即使是一个简单的问题,一般也需要几百次甚至上千次的学习才能收敛。
- 容易陷入局部极小值。
- 网络层数、神经元个数的选择没有相应的理论指导。
- 网络推广能力有限。
应用
目前,在人工神经网络的实际应用中,绝大部分的神经网络模型都采用BP网络及其变化形式。它也是前向网络的核心部分,体现了人工神经网络的精华。
BP网络主要用于以下四个方面:
- 函数逼近:用输入向量和相应的输出向量训练一个网络逼近一个函数。
- 模式识别:用一个待定的输出向量将它与输入向量联系起来。
- 分类:把输入向量所定义的合适方式进行分类。
- 数据压缩:减少输出向量维数以便于传输或存储

例题
有如下图所示的一个简单的前馈神经网络,输入层有3个单元,编号为0~2,隐藏层只有一层,共2个单元,编号为0、1,输出层仅有一个单元,编号为0。其中eej表示隐藏层的误差信号,eok表示输出层的误差信号 ,θe表示隐藏层的偏置,θo表示输出层的偏置。假设学习率η=0.9。并规定迭代结束条件是:当某次迭代结束时,所有权改变量都小于某个指定阈值0.01,则训练终止。

现有一个训练样本s,它的输入向量为(1,0,1),类别为1。采用上述算法的学习过程如下:
(1)随机产生权值和偏置值,假设结果如下表所示

(2)第一次迭代
①求隐藏层输出
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
& net_0=\sum v…
②求输出层输出
neto0=∑wi0×yi=(−0.3×0.331812)+(−0.2×0.524979)+0.1=−0.10454o0=0.47889
③求输出层误差信号
eo0=(1−0.473889)×0.473889×(1−0.473889)=0.131169
④求隐藏层误差信号
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
& ee_0=0.13116…
⑥求输入层权该变量和新权
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
& \triangle v_…
⑦求隐藏层每个单元的偏置该变量和新偏置
KaTeX parse error: No such environment: align at position 8:
\begin{̲a̲l̲i̲g̲n̲}̲
& \triangle \t…
后面多次迭代的过程就不写了
前馈神经网络、BP神经网络、卷积神经网络的区别与联系
前馈神经网络
前馈神经网络就是一层的节点只有前面一层作为输入,并输出到后面一层,自身之间、与其它层之间都没有联系,由于数据是一层层向前传播的,因此称为前馈网络。
BP神经网络
BP网络是最常见的一种前馈网络,BP体现在运作机制上,数据输入后,一层层向前传播,然后计算损失函数,得到损失函数的残差,然后把残差向后一层层传播。
卷积神经网络
卷积神经网络是根据人的视觉特性,认为视觉都是从局部到全局认知的,因此不全部采用全连接(一般只有1-2个全连接层,甚至最近的研究建议取消CNN的全连接层),而是采用一个滑动窗口只处理一个局部,这种操作像一个滤波器,这个操作称为卷积操作(不是信号处理那个卷积操作,当然卷积也可以),这种网络就称为卷积神经网络。
三者之间的关系
目前流行的大部分网络就是前馈网络和递归网络,这两种网络一般都是BP网络;深度网络一般采用卷积操作,因此也属于卷积神经网络。在出现深度学习之前的那些网络,基本都是全连接的,则不属于卷积网络的范围,但大部分是前馈网络和BP网络。