文章目录

前言


一、神经网络是什么?

二 、激活函数

三 、感知机与多层网路

四 、误差逆传播算法(BP)

五 、RBF网络

六 、ART网络

七、Boltzmann机

八 、其他

总结


前言

主要介绍一下神经网络的基本概念,神经网络的工作机理,感知机模型,BP模型等,希望对神经网路有一个大致的认识。


提示:本篇内容主要参考北风网课件,西瓜书(内容如有侵犯,实属不好意思,私信立刻修改)

一、神经网络是什么?

神经网络是由具有适应性的简单单元组成的广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。

神经网络主要由三个组成部分,第一个是架构(architecture)或称为拓扑结构 (topology),描述神经元的层次与连接神经元的结构。第二个组成部分是神经网络使用的激励/激活函数。第三个组成部分是找出最优权重值的学习算法。 神经网络主要分为两种类型,前馈神经网络(Feedforward Neural Networks) 是最常用的神经网络类型,一般定义为有向无环图,信号只能沿着最终输出的那 个方向传播。另外一个是反馈神经网络(Feedback Neural Networks),也称为递归神经网络(Recurent Neural Networks),也就是网络中环。

M-P神经元模型:神经元接受来自你个其他神经元传递过来的输入信号,这些输入信号通过权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过激活函数处理以产生神经元的输出。


神经网络 可解释 神经网络的具体表述_python

M-P神经元模型(来源西瓜书)

二 、激活函数

激活函数的主要作用是提供网络的非线性建模能力。如果没有激活函数,那么该网络仅能够表达线性映射,此时即便有再多的隐藏层,其整个网络跟单层神经网 络也是等价的。因此也可以认为,只有加入了激活函数之后,深度神经网络才具 备了分层的非线性映射学习能力。 激活函数的主要特性是:可微性、单调性、输出值的范围;

可微性:因为优化方法是基于梯度的,这个性质是必须的

单调性:当激活函数是单调的时候,能够保证单层网络是凸函数

输出值的范围:激活函数的输出值的范围可以有限也可以无限。当输出值是有限的时候,基于梯度的优化方法会更加稳定,因为特征的表示受有限权值的影响更加显著;当输出值是无限的时候,模型的训练会更加高效,不过在这种情况下,一般需要更小的learning rate。

常见激活函数:

1.Sigmoid函数:

缺点:1).饱和性,两侧导数逐渐趋近于0,具体来说,在反向传播的过程中,sigmoid的梯度会包含了一个

神经网络 可解释 神经网络的具体表述_机器学习_02

因子(sigmoid关于输入的导数),因此一旦输入落入两端的饱和区,

神经网络 可解释 神经网络的具体表述_机器学习_02

就会变得接近于0,导致反向传播的梯度也变得非常小,此时网络参数可能甚至得不到更新,难以有效训练,这种现象称为梯度消失。一般来说,sigmoid网络在5层之内就会产生梯度消失现象。

2).激活函数的偏移现象。sigmoid函数的输出值均大于0,使得输出不是0的均值,这会导致后一层的神经元将得到上一层非0均值的信号作为输入。

优点:使用范围最广,有很好的性质,可以被表示做概率或者用于输入的归一化等。

2. tanh函数

缺点:和sigmoid一样具有饱和性,会造成梯度消失。

优点:输出均值为0,收敛速度快,减少了迭代更新的次数。

3. Relu函数

缺点:在x<0的区域,存在饱和问题,权重无法更新,同时,与sigmoid类似,ReLU的输出均值也大于0,偏移现象和神经元死亡会共同影响网络的收敛性。

优点:当x>0 的时候,不存在饱和问题,所以ReLU能够在 x>0的时候保持梯度不衰减,从而缓解梯度消失的问题。这让我们可以以有监督的方式训练深度神经网络,而无需依赖无监督的逐层训练。

4. Leaky-ReLU&P-ReLU函数

针对x<0的硬饱和问题,我们对 ReLU作出改进,提出Leaky-ReLU,即在 x<0部分添加一个参数 a, P-ReLU则认为 a也应当作为一个参数来学习,一般建议 a初始化为0.25。

5.  ELU函数

ELU是结合了sigmoid的左侧软饱和性和ReLU的右侧无饱和性而提出的一种新的激活函数。从上面图中不难看到这一特点。右侧线性部分使得ELU可以缓解梯度消失问题,而左侧软饱和性能让ELU对输入变化或噪声更鲁棒。

而且ELU的输出均值接近于0,所以没有严重的偏移现象,所以收敛速度更快。

三 、感知机与多层网路

感知机有两层神经元组成,输入层接收外界输入信号后传递给输出层,输出层是M-P神经元,亦称“阈值逻辑单元”

感知机能容易地实现逻辑与,或,非运算。但感知机只有输出层神经元进行激活函数处理,学习能力有限,只适应于线性可分的问题。

多层前馈神经网络:每层神经元与下层神经元全互连,神经元之间不存在同层连接,也不存在跨层连接,输入层神经元接收外界输入,隐层与输出层神经元对信号进行加工,最终结果由输出层神经元输出。

四 、误差逆传播算法(BP)

神经网络的一种求解W的算法,分为信号“正向传播(FP)”求损失, “反向 传播(BP)”回传误差;根据误差值修改每层的权重,继续迭代。

BP网络(以三层的感知器为例)


神经网络 可解释 神经网络的具体表述_神经网络_04

BP网络(来源西瓜书)

 BP算法也叫δ算法


神经网络 可解释 神经网络的具体表述_python_05

误差公式(来源北风网课件)

BP算法例子(来源北风网课件)

神经网络 可解释 神经网络的具体表述_机器学习_06

 FP过程

神经网络 可解释 神经网络的具体表述_神经网络_07

神经网络 可解释 神经网络的具体表述_python_08

神经网络 可解释 神经网络的具体表述_python_09


神经网络 可解释 神经网络的具体表述_激活函数_10

神经网络 可解释 神经网络的具体表述_神经网络 可解释_11

神经网络 可解释 神经网络的具体表述_神经网络_12

 BP过程

神经网络 可解释 神经网络的具体表述_机器学习_13

神经网络 可解释 神经网络的具体表述_激活函数_14

BP神经网络过拟合

常见两种策略:

第一种策略:早停,即将数据分成训练集和验证集,训练集用来计算梯度,更新连接权和阈值,验证集用来估计误差,若训练集误差降低但验证集误差升高,则停止训练,同时返回具有最小验证集误差的连接权和阈值。

第二种策略:正则化,其基本思想是在误差目标函数中增加一个用于描述网络复杂度的部分,例如连接权与阈值的平方和。

 五 、RBF网络

RBF(径向基函数)网络是一种单隐层前馈神经网络,它使用径向基函数作为隐层神经元激活函数,而输出层则是对隐层神经元输出的线性组合。

假定输入为d维向量x,输出为实值,则RBF网络可表示为:

神经网络 可解释 神经网络的具体表述_python_15

 其中q为隐层神经元个数,

神经网络 可解释 神经网络的具体表述_神经网络_16


神经网络 可解释 神经网络的具体表述_神经网络_17

分别是第i个隐层神经元所对应的中心和权重, 是径向基函数,这是某种沿径向对称的标量函数,通常定义为样本x到数据中心 之间欧式距离的单调函数,常用的高斯径向基函数形如

神经网络 可解释 神经网络的具体表述_机器学习_18

RBF神经网络的训练可分为两个阶段:

第一阶段为无监督学习,从样本数据中选择记忆样本/中心点;可以使用聚类算法, 也可以选择随机给定的方式。 第二阶段为监督学习,主要计算样本经过RBF转换后,和输出之间的关系/权重;可以使用BP算法计算、也可以使用简单的数学公式计算。

RBF网络能够逼近任意非线性的函数(因为使用的是一个局部的激活函数。在中心点附近有最大的反应;越接近中心点则反应最大,远离反应成指数递减;就相当于每个神经元都对应不同的感知域)。

可以处理系统内难以解析的规律性,具有很好的泛化能力,并且具有较快的学习速度。

有很快的学习收敛速度,已成功应用于非线性函数逼近、时间序列分析、数据分类、模式识别、信息处理、图像处理、系统建模、控制和故障诊断等。

当网络的一个或多个可调参数(权值或阈值)对任何一个输出都有影响时,这样的网络称为全局逼近网络。由于对于每次输入,网络上的每一个权值都要调整,从而导致全局逼近网络的学习速度很慢,比如BP网络。

如果对于输入空间的某个局部区域只有少数几个连接权值影响输出,则该网络称为局部逼近网络,比如RBF网络。

RBF和BP神经网络比较:

BP神经网络(使用Sigmoid激活函数)是全局逼近;RBF神经网络(使用径向基函数作为激活函数)是局部逼近;

相同点:  RBF神经网络中对于权重的求解也可以使用BP算法求解。

不同点:  中间神经元类型不同(RBF:径向基函数;BP:Sigmoid函数)

网络层次数量不同(RBF:3层;BP:不限制)

运行速度的区别(RBF:快;BP:慢

六 、ART网络

竞争型学习是神经网络中常用的一种无监督学习策略,在使用该策略时,网络的输出神经元相互竞争,每一时刻仅有一个竞争获胜的神经元被激活,其他神经元的状态被抑制,这种机制亦称“胜者通吃“原则。

ART(自适应谐振理论)网络是竞争学习的重要代表,该网络是由比较层,识别层,识别阈值和重置模块构成。

比较层负责接收输入样本,并将其传递给识别层神经元。识别层每个神经元对应一个模式类,神经元数目可在训练过程中动态增长以增加新的模式类。在接收到比较层的输入信号后,识别层神经元之间相互竞争以产生获胜神经元。

竞争的简单方式:计算输入向量与每个识别层神经元所对应的模式类的代表向量之间的距离,距离最小者胜.获胜神经元将向其他识别层神经元发送信号,抑制其激活。若输入向量与获胜神经元所对应的代表向量之间的相似度大于识别阈值,则当前输入样本将被归为该代表向量所属类别,同时,网络连接权将会更新,使得以后在接收到相似输入样本时该模式类会计算出更大的相似度,从而使该获胜神经元有更大可能获胜;若相似度不大于识别阈值,则重置模块将在识别层增设一个新的神经元,其代表向量就设置为当前输入向量。

ART比较好的缓解了竞争型学习中的“可塑性-稳定性窘境“,可塑性是指神经网络要有学习新知识的能力,而稳定性则是指神经网络在学习新知识时要保持对旧时知识的记忆,ART网络具有一个很重要的优点;可进行增量学习或在线学习。

七、Boltzmann机


神经网络 可解释 神经网络的具体表述_python_19

来源西瓜书

神经网络中有一类模型是为网络状态定义一个“能量”(energy),能量最小化时网络达到理想状态,而网络的训练就是在最小化这个能量函数。Boltzmann机就是一种“基于能量的模型”(energy-basedmodel),常见结构如上图所示,其神经元分为两层:显层与隐层.显层用于表示数据的输入与输出,隐层则被理解为数据的内在表达. Boltzmann机中的神经元都是布尔型的,即只能取0、1两种状态,状态1表示激活,状态0表示抑制.令向量s ∈ {0,1}”表示n个神经元的状态, wg,表示神经元i与j之间的连接权,0。表示神经元i的阈值,则状态向量s 所对应的Boltzmann机能量定义为

神经网络 可解释 神经网络的具体表述_神经网络_20

若网络中的神经元以任意不依赖于输入值的顺序进行更新,则网络最终将达到Boltzmann分布,此时状态向量s 出现的概率将仅由其能量与所有可能状态向量的能量确定:

 

神经网络 可解释 神经网络的具体表述_机器学习_21

 八 、其他

从增加模型复杂度的角度来看,增加隐层的数目显然比增加隐层神经元的数目更有效,因为增加隐层数不仅增加了拥有激活函数的神经元数目,还增加了激活函数嵌套的层数。

无监督逐层训练(unsupervised layer-wise training)是多隐层网络训练的有效手段,其基本思想是每次训练一层隐结点,训练时将上一层隐结点的输出作为输入,而本层隐结点的输出作为下一层隐结点的输入,这称为“预训练”(pre-training);在预训练全部完成后,再对整个网络进行“微调”(fine-tuning)训练。例如,在深度信念网络(deep belief network,简称DBN) 中,每层都是一个受限 Boltzmann机,即整个网络可视为若干个RBM堆叠而得.在使用无监督逐层训练时,首先训练第一层,这是关于训练样本的RBM模型,可按标准的RBM训练;然后,将第一层预训练好的隐结点视为第二层的输入结点,对第二层进行预训练;……各层预训练完成后,再利用BP算法等对整个网络进行训练.

另一种节省训练开销的策略是“权共享”(weight sharing),即让一组神经元使用相同的连接权.这个策略在卷积神经网络(Convolutional NeuralNetwork,简称CNN)中发挥了重要作用。

跳出局部最小的常用策略:

  1. 以多组不同参数初始化多个神经网络,按标准方法训练后,取其中误差最小的解作为最终参数,这相当于从多个不同的初始点开始搜索,这样就可能陷入不同的局部最小,从中进行选择有可能获得更接近全局最小的结果。
  2. 使用模拟退火技术,模拟退火在每一步都以一定的概率接受比但当前解更差的结果,从而有助于跳出局部极小。
  3. 使用随机梯度下降。与标准梯度下降法精确计算梯度不同,随机梯度下降法在计算梯度时加入了随机因素。于是,即便陷入局部极小点,它计算出的梯度仍不可能为零,这样就有机会跳出局部极小继续搜索。

神经网络之DNN问题

一般来讲,可以通过增加神经元和网络层次来提升神经网络的学习能力,使其得到的模型更加能够符合数据的分布场景;但是实际应用场景中,神经网络的层次一般情况不会太大,因为太深的层次有可能产生一些求解的问题。 在DNN的求解中有可能存在两个问题:梯度消失和梯度爆炸;我们在求解梯度的时候会使用到链式求导法则,实际上就是一系列的连乘,如果每一层都小于1的话,则梯度越往前乘越小,导致梯度消失,而如果连乘的数字在每层 都是大于1的,则梯度越往前乘越大,导致梯度爆炸。

总结

以上是对神经网络章节的总结,存在着很多不理解的地方。