当前位置:   article > 正文

感知机与BP算法_bp神经网络与多层感知机制的关系

bp神经网络与多层感知机制的关系

感知机BP算法

M-P 神经元模型 [McCulloch and Pitts, 1943]

在这里插入图片描述

输入:来自其他n个神经元传递过来的输入信号(特征值

处理:输入信号通过带权重的连接进行传递, 神经元接受到总输入值将与神经元的阈值进行比较

输出:通过激活函数的处理以得到输出

激活函数

在这里插入图片描述

感知机

单层感知机(又叫单层前馈网络)

两个输入神经元的感知机网络结构示意图
在这里插入图片描述

感知机(Perceptron)由两层神经元组成, 输入层接受外界输入信号传递给输出层, 输出层是一个或多个M-P神经元(亦称阈值逻辑单元,threshold logic unit)

感知机能够容易地实现逻辑与、或、非运算,针对上面的感知机网络结构图,假设激活函数为跃迁函数,f(x) = 1, x>=0;f(x) = 0, x<0。

与运算:令w1 = w2 = 1, Θ=2,则y = f(1*x1+1*x2-2)

x1 = x2 = 1时,y = 1;在x1 = 0, x2 = 1时,y = 0

或运算:令w1 = w2 = 1, Θ=0.5,则y = f(1*x1+1*x2-0.5)

x1 = 1x2 = 1时,y = 1

非运算:令w1 = -0.6, w2 = 0, Θ=-0.5,则y = f(-0.6*x1+0.5)

x1 = 1时,y = 0;在x2 = 0时,y = 1

事实上,上述与、或、非问题都是线性可分(linearly separable)的问题,可以证明,若两类模式是线性可分的,即存在一个线性超平面能将它们分开,则感知机的学习过程一定会收敛而求得适当的权向量w;否则感知机学习过程将会发生振荡,w难以稳定下来,不能求得合适解,例如感知机甚至不能解决异或这样简单的非线性可分问题

Minsky & Papert (1969) 《Perceptron》感知器无法解决对XOR(异或)这样的分类任务

在这里插入图片描述

上面这个图的数据集仅是四个点,不是平面上所有的点

要解决非线性可分问题,需考虑多层功能神经元,如下图这个简单的两层感知机就能解决异或问题。在该图中,输出层和输入层之间的一层神经元,被称为隐层或隐含层,隐含层和输出层神经元都是有激活函数的功能神经元

在这里插入图片描述

x1 = 1, x2 = 1, y = 0 ; x1 = 1, x2 = 0, y = 1

多层前馈神经网络

根据上面的两层感知机问题,可以得到更一般的多层前馈神经网络

定义:每层神经元与下一层神经元全互联, 神经元之间不存在同层连接也不存在跨层连接

前馈:输入层接受外界输入, 隐含层与输出层神经元对信号进行加工, 最终结果由输出层神经元输出

学习:根据训练数据来调整神经元之间的“连接权”以及每个功能神经元的“阈值”

在这里插入图片描述

前馈并不意味着网络中的信号不能向后传,而是指网络拓扑结构上不存在环或回路

神经网络的表示能力

万能近似定理

只需要一个包含足够多神经元的隐层, 多层前馈神经网络就能以任意精度逼近任意复杂度的连续函数**[Hornik et al. , 1989]**

误差反向传播算法(Error BackPropagation

BP算法是最成功的训练多层前馈神经网络的学习算法,关于手动推导误差反向传播算法的过程,前面转发了一篇文章,手动推导BP算法。这里主要从例子来体验这一过程。

参数优化

BP是一个迭代学习算法, 在迭代的每一轮中对参数进行一次更新估计

前向计算

step1: 计算隐层的神经元

step2: 计算输出层的神经元

step3: 计算误差

网络参数

参数包括:权重,阈值

网络训练的过程就是参数优化的过程

反向计算

step1: 计算输出层的梯度

step2: 从输出层开始,循环直到最早的隐藏层

2.1: 将误差传播回前一层

2.2: 更新这两层间的权重与阈值

例题1:

在这里插入图片描述

目标:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原始输出o1,o2(0.01和0.99)接近;激活函数为sigmoid函数。

Step1 前向传播

1.输入层---->隐含层:

计算神经元h1的输入加权和:

在这里插入图片描述

神经元h1的输出o1:

在这里插入图片描述

同理,可计算出神经元h2的输出o2:

out(h2) = 0.596884378

2.隐含层---->输出层:

[0.75136079 , 0.772928465]

Step2 反向传播

1.计算总误差:

在这里插入图片描述

分别计算o1和o2的误差,总误差为两者之和:

在这里插入图片描述

2.隐含层---->输出层的权值更新

以权重参数w5为例,如果想知道w5对整体误差产生了多少影响,计算整体误差E(total)对w5的偏导值,根据链式法则:

在这里插入图片描述

根据下图可以直观的看清楚误差是如何反向传播的

在这里插入图片描述

现在我们来分别计算每个式子的值:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

更新w5的值:(学习速率这里取0.5)

在这里插入图片描述

同理,可更新其它参数w6,w7,w8,……

这里E对w5的偏导实际上是:

在这里插入图片描述

这个式子有助于我们推导出一般性的结论,下面会讲。

3.隐含层---->隐含层的权值更新:

以权重参数w1为例,如果想知道w1对整体误差产生了多少影响,计算整体误差E(total)对w1的偏导值,根据链式法则

在这里插入图片描述

计算的过程与之前的类似,不同之处:隐含层之间的权值更新时,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算

在这里插入图片描述

反向传播公式推导

§在单个样本上的平方误差定义为:

在这里插入图片描述

其中,求和是对输出层的所有节点进行的;yi是真值,ai是预测值,ai=g(in(i))= g(ΣWjiaj)

g是激活函数,Wji是从前一层的第j个神经元到输出层i神经元的权重。

输出层的权值更新:

在这里插入图片描述

这个推导的结果和上面的E对W5的偏导结果式子(蓝色字体)是一致的。把这里的▲i记为修正误差。

在这里插入图片描述

所以说如果要求E对w6的偏导,只需要把aj从out(h1)改为out(h2)即可。

隐藏层的权值更新

在这里插入图片描述

例题2:

在这里插入图片描述

训练样本x={1,0,1},类标号(标签)为1,激活函数为sigmoid函数

在这里插入图片描述

X1X2X3θ4θ5θ6W14
101-0.40.20.10.2
W15W24W25W34W35W46W56
-0.30.40.1-0.50.2-0.3-0.2

step2 前向传播

神经元输入 net输出o
40.2*1+0.4*0+(-0.5)*1-0.4=-0.71/(1+e-(-0.7))=0.332
5(-0.3)*1+0.1*0+(0.2)*1-(-0.2)=0.11/(1+e(-0.1))=0.525
6(-0.3)*0.332+(-0.2)*0.525-(-0.1)=-0.1051/(1+e-(-0.105))=0.474

step2 反向传播

2.1 计算修正误差

神经元修正误差
6(1-0.474)*0.474*(1-0.474) =0.1311
5(0.1311*(-0.2))*0.525*(1-0.525)=-0.0065
4(0.1311*(-0.3))*0.332*(1-0.332)=-0.0087

输出层修正误差:Err(k) = Ok*(1-Ok)*(T-Ok)(T是标签输出)

隐含层修正误差:Err(j) = Oj*(1-Oj) *( Σ( Err(k) * W(jk) )(与所有输出相关联的地方都要计算,这里因为只有一个输出所以比较容易积善)

2.2 计算权重和阈值的更新(学习率α,此处取值为0.9)

在这里插入图片描述

w46-0.3+0.9*0.332*0.1311=-0.216
w56-0.2+0.9*0.525*0.1311=-0.138
w140.2+0.9*1*(-0.0087)=0.192
w15-0.3+0.9*1*(-0.0065) =-0.306
w240.4+0.9*0*(-0.0087)=0.4
w250.1+0.9*0*(0.0065)=0.1
w34-0.5+0.9*1*(-0.0087)=-0.508
w350.2+0.9*1*(-0.0065)=-0.194
Ө60.1+0.9*0.1311=0.218
Ө50.2+0.9*(-0.0065)=0.194
Ө4-0.4+0.9*(-0.0087)=-0.408

这里偏置的更新公式为: θj = θj + α*Err(j)

深度学习

多层前馈网络局限

  1. 神经网络由于强大的表示能力, 经常遭遇过拟合, 表现为:训练误差持续降低, 但测试误差却可能上升

  2. 如何设置隐层神经元的个数仍然是个未决问题. 实际应用中通常使用**“试错法”**调整

缓解过拟合的策略

  1. 早停:在训练过程中, 若训练误差降低, 但验证误差升高, 则停止训练

  2. 正则化:在误差目标函数中增加一项描述网络复杂程度的部分, 例如连接权值与阈值的平方和

2006年,Hinton在《Science》上发表了论文,首次提出了“深度信念网络”的概念。

与传统的训练方式不同,“深度信念网络”有一个“预训练”(pre-training)+“微调”(fine-tuning)技术来对整个网络进行优化训练。

他给多层神经网络相关的学习方法赋予了一个新名词–“深度学习”。

增加隐层的数目比增加隐层神经元的数目更有效。这是因为增加隐层数不仅增加了拥有激活函数的神经元数目, 还增加了激活函数嵌套的层数.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/314133
推荐阅读
相关标签
  

闽ICP备14008679号