问题一: 机器学习的基本流程(14)


事实上,对于布尔 XOR 函数而言,不可能使用一条单一的直线成功 地将红色区域和蓝色区域划分开来. 也就是说, 如果出现的是由 XOR 函数支配的训练数据,那么一个简单的线性分类器无法学习到布尔 XOR 函数.
我们已经说明了简单的线性分类器的一个主要限制.如果不能用一条 直线把根本性的问题划分开来,那么简单的线性分类器是没有用处的.
在一些任务中,根本性问题不是线性可分的,也就是说单一的一条直 线于事无补,而我们希望神经网络能够解决此类的任务.
因此,我们需要一种解决的办法.
好在解决的办法很容易,下图使用两条直线对不同的区域进行划分. 这暗示了一种解决的办法, 也就是说, 我们可以使用多个分类器一起工 作.这是神经网络的核心思想.你可以想象,多条直线可以分离出异常形 状的区域,对各个区域进行分类.
关键点
如果数据本身不是由单一线性过程支配,那么一个简单的线性分类器不能对数据进行划分.例如,由逻辑XOR运算符支配的数据说 明了这一点. 但是解决方案很容易,你只需要使用多个线性分类器来划分由单一直线无法分离的数据.
问题2 系统阐述BP神经网络结构原理,用类C语言(或)写出误差传播算法.
下图显示了具有 2 个输入节点和 2 个输出节点的简单网络.
两个输出节点都有误差一一事实上, 在末受过训练的神经网络中, 这是极有可能发生的情况.你会发现, 在网络中, 我们需要使用这两个误差 值来告知如何调整内部链接权重.我们可以使用与先前一样的方法, 也就 是跨越造成误差的多条链接, 按照权重比例, 分割输出节点的误差.
我们拥有多个节点这一事实并没有改变任何事情.对于第二个输出节点, 我们只是简单地重复第一个节点所做的事情.为什么如此简单呢? 这 是由于进入输出节点的链接不依赖于到另一个输出节点的链接, 因此事情 就变得非常简单, 在两组的链接之间也不存在依赖关系.
让我们再次观察此图, 我们将第一个输出节点的误差标记为e 1 \{e}_{1} e1? .请记 住, 这个值等于由训练数据提供的所期望的输出值t 1 \{t}_{1} t1? 与实际输出值o 1 \{o}_{1} o1? 之 间的差.也就是,e 1 = ( t 1 ? o 1 ) e_{1}=\left(t_{1}-o_{1}\right) e1?=(t1??o1?) .我们将第二个输出节点的误差标记为e 2 e_{2} e2? .
从图中, 你可以发现, 按照所连接链接的比例, 也就是权重w 1 , 1 \{w}_{1,1} w1,1? 和w 2 , 1 \{w}_{2,1} w2,1?, 我 们对误差e 1 e_{1} e1? 进行了分割.类似地, 我们按照权重w 1 , 2 w_{1,2} w1,2? 和w 2 , 2 w_{2,2} w2,2? 的比例分割了e 2 e_{2} e2? .
让我们写出这些分割值, 这样我们就不会有任何疑问了.我们使用误差e 1 e_{1} e1? 的信息, 来调整权重w 1 , 1 w_{1,1} w1,1? 和w 2 , 1 w_{2,1} w2,1? .通过这种分割方式, 我们使用e 1 e_{1} e1? 的一部分来更新w 1 , 1 w_{1,1} w1,1? :
w 2 , 1 w 1 , 1 + w 2 , 1 \frac{w_{2,1}}{w_{1,1}+w_{2,1}} w1,1?+w2,1?w2,1??
类似地, 用来调整w 2 , 1 \{w}_{2,1} w2,1? 的e 1 \{e}_{1} e1? 部分为:
w 1 , 1 w 1 , 1 + w 2 , 1 \frac{w_{1,1}}{w_{1,1}+w_{2,1}} w1,1?+w2,1?w1,1??
这些分数看起来可能令人有点费解, 让我们详细阐释这些分数.在所有这些符号背后, 思想非常简单, 也就是误差e 1 e_{1} e1? 要分割更大的值给较大的 权重, 分割较小的值给较小的权重.
如果w 1 , 1 \{w}_{1,1} w1,1? 是w 2 , 1 \{w}_{2,1} w2,1? 的 2 倍, 比如说,w 1 , 1 = 6 , w 2 , 1 = 3 \{w}_{1,1}=6, \{w}_{2,1}=3 w1,1?=6,w2,1?=3, 那么用于更新w 1 , 1 \{w}_{1,1} w1,1? 的e 1 e_{1} e1? 的部分就是6 / ( 6 + 3 ) = 6 / 9 = 2 / 3 6 /(6+3)=6 / 9=2 / 3 6/(6+3)=6/9=2/3 . 同时, 这留下了1 / 3 1 / 3 1/3 的e 1 e_{1} e1? 给较小的 权重w 2 , 1 \{w}_{2,1} w2,1?, 我们可以通过表达式3 / ( 6 + 3 ) = 3 / 9 3 /(6+3)=3 / 9 3/(6+3)=3/9 确认这确实是1 / 3 1 / 3 1/3 .