从双层感知机到BP神经网络的Delta规则

本文介绍了从双层感知机到BP神经网络的Delta规则,探讨了内部表达的重要性和隐藏层在解决复杂问题如XOR上的作用。通用Delta规则用于有隐藏层的网络,通过误差传递更新权重。内容包括没有隐藏层节点的Delta规则、前向网络半线性激活函数的Delta规则,以及Delta规则的MATLAB实现。
摘要由CSDN通过智能技术生成

@(人工智能)

BP神经网络推导–通过误差传递学习内部表达

这是研一学习一门课程的课程实践,当时和另一位实验室小伙伴合作完成BP神经网络的推导以及部分应用,参考的是一本外文书籍(影印版)的部分章节,有我自己翻译的部分,也有自己的理解,整理在一起。

参考书是斯坦福的一门课程的参考材料,地址在https://web.stanford.edu/class/psych209a/ReadingsByDate/02_06/PDPVolIChapter8.pdf

问题的来源

在这之前,通过两层网络结构了解一些概念!
之前学习过两层网络的问题,是一种简单的直接映射网络,只有输入层和输出层,输入模式经过输入层与输出层映射,得到输出映射。但这样的网络没有隐含层,也就没有内部表达,对输出输出的要求也比较严格,必须满足某种条件的映射。虽然有各种限制,两层神经网络也有一定的应用,两层的网络结构通常来完成一些合理的规则化映射,比如与问题(&),规则明显,通过输入输出之间overlap就可以确定。
- 输入模式:网络的输入向量;
- 输出模式:网络的输出向量;
- 输入层:输入向量对应的输入单元组成的单元集合;
- 输出层:输出向量对应的输出单元组成的单元集合;
- 单元:网络的每个节点。

这里的输入模式和输出模式是指的输入向量和输出向量,一个模式也就对应着一个向量,一个模式对也就是对应着对训练数据。

但是由于这种简单的输入输出的映射的限制,对于特定输入到输出的映射是没有能力满足的。特别是当输入输出的相似的结构提供的表达信息非常不同的时候,没有内部表达的神经网络是不能够提供我们需要的唯一映射。一个比较经典的例子是异或问题(XOR),这时候,overlap可能产生多个结果,因此对这样的问题,就需要内部编码,增强网络的映射。

Input Layer OutPut Layer
0 0 0
0 1 1
1 0 1
1 1 0

对于XOR问题,可以修改双层网络来变相求解,但是通用的方式还是添加内部表达。如下表,在输入层添加一个节点:

Input Layer OutPut Layer
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

这都不是重点,重点是XOR问题,两层结构的网络是没办法解决的(除了上面这个添加输入层节点的方式),这就需要有新的网络结构,这样的新的网络有更强的映射能力,解决两层结构的网络不能解决的问题。

内部表达(internal representation)

什么是内部表达?内部表达实际上是将输入层编码的一种表达,直观上理解是将输入层的输入模式映射的一组编码的网络结构(连接及权重),后面的叙述慢慢会体现这一点。
1969年,Minsky 和 Papert 提供了一个某种条件详细的分析,这种条件存在于一个系统中,这个系统能够解决需要的映射。他们通过大量的案例和网络展示了这种这种条件可以解决问题(我们需要的映射)。另一方面,M&P两人同时还指出,若在一个简单的类似于感知机隐藏单元,通过这个隐含单元,输入层的输入模式会被增强,输入模式总是在隐藏单元被重新编码(或者称作内部表达),在这些隐藏层单元中,它们之间的模式的相似性,支持从输入层到输出层的映射。这样的话,如果输入层到隐藏单元之间存在正确的链接,并且这个隐藏单元集合足够大,那么就能找到一个内部表达,使得这样的网络结构满足输入到输出的映射。这里的内部表达其实就是经过输入层到隐藏层之间的网络连接权重,输入模式被重新编码。这就是引入隐藏层的网络结构,如下图所示。
BP神经网络示意图

利用隐藏层解决XOR问题,在文中给出了一个说明,只需添加了只有一个节点的隐藏层。下图有说明:
XOR问题

这样的网络的存在,说明了隐藏层和内部表达的求解问题(映射)能力。M& P指出这样一个问题:对于没有隐藏层的网络,存在一个非常简单的对所有问题的学习规则,这个规则可以保证解决所有的映射问题(没有隐藏层的网络),这个规则被称作是感知器收敛规则,也被人称作delta规则,但是在具有隐藏层的神经网络中,没有同样的能力的规则。
对于这样的缺陷,有三个基本的反馈(不太理解这里什么意思):
1. 第一个原因是竞争学习,在竞争学习中,使用简单的非监督学习规则,以致于有用的隐藏层单元发展。尽管这些方法是有前景的,但是没有外部的力量保证隐藏层单元适用于我们需要的映射,而且这些映射已经成熟的。
2. 第二个原因是简单的假设内部表达,虽然有一些先验的根据,看起来这是有根据的。这是在verb learning章节和互动激活单词认知模型的策略,
3. 第三个原因是尝试开发一个学习过程,这个过程学习过程由能力学习一个内部表达,内部表达足够解决当前的任务。在玻尔兹曼机的章节中,有描述类似的过程。正如我们所看到的,这个过程包含随机单元的使用,需要使网络达到两个阶段对等的状态,这限制了网络的同步。当然,其他人也使用了随机单元。

在本章节内容,我们提出了一个可供选择的方式,这种方式采用确定的单元(数),并且仅涉及局部计算,是一个delta规则的清晰的泛化。我们称之为通用的delta规则。出于其他方面的考虑,Parker独立推导了类似的泛化,他称之为学习逻辑(learning logic).Lee Cun也研究了一个粗略的学习框架。下面的内容,首先要推导通用delta规则,然后通过一些仿真的结果来说明delta规则的使用,最后,我们指明这个基础想法的更长远的泛化。

通用Delta规则

这这里提到的学习框架,需要涉及一个输入模式输出模式对的集合(就是训练数据)。系统首先用一个输入向量,输入网络结构,得到一个输出向量;每个输入向量都有一个对应的期望输出向量、或者称作是目标向量;比较实际输出向量与期望输出向量的差别,若没有差别,就不再继续学习;否则,连接的权重修改对应的差值(delta差)。

没有隐藏层节点的网络中的Delta规则

先从简单的开始,没有隐藏层节点的网络结构,Delta规则计算。通用计算公式(1)如下:

公式(1):

Δpωji=η(tpjopj)ipi=ηδpjipi Δ p ω j i = η ( t p j − o p j ) i p i = η δ p j i p i

其中:
- tpj t p j 表示模式对p的输出向量(期望输出)的第j个元素;
- opj o p j 表示模式对p的输入向量得到实际输出(输入向量的表达)的第j个元素;
- ipi i p i 表示输入模式的输入向量的第i个元素;
- δpj δ p j 是简化 (tpjopj) ( t p j − o p j )
- Δpωji Δ p ω j i 表示输入层第i个节点到输出层第j个节点连接的权重的变化;
- η η 只是一个常量

Delta规则与梯度下降

有很多方法可以推导这个公式,对于当前的目标是,线性神经元,最小化应用每一个输入输出模式向量,得到所有输出单元的实际输出与期望输出的差的平方和,这是非常有用的。得到这个最小值的方法是求解测量误差的梯度值,对于每个权重,根据Delta规则成比例的改变,这个比例是一个负的常数。为了在权重表面空间下降的最快,在这个权重空间任意点的高度应该与测量误差相等(说的比较绕,其实就是求一个梯度)。

具体步骤如下:

公式(2):

Ep=12j(tpjopj)2 E p = 1 2 ∑ j ( t p j − o p j ) 2

表示对于每个输入输出模式 p的测量误差,所有输入输出模式的总误差是 E=pEp E = ∑ p E p 。神经单元是线性的,因此我们实现 Delta规则是对 E梯度下降的。具体步骤:
Epωji=δpjipi − ∂ E p ∂ ω j i = δ p j i p i

后面是公式推导,这与前面计算的 Δpωji Δ p ω j i 是成比例的。本部分假设没有隐藏层单元,因此可以直接计算出相关的梯度。下面,我们用链式规则来分解梯度求解:分解为两部分,误差对实际输出的求导,和实际输出对对应的权重求导。

公式(3):

Epωji=Epopjopjωji
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值