书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
第10章目录
10.6 还记得这是个“网络”吗
1、感知器只能解决线性可分的问题
-
感知器可以处理多个输入,但它只是个孤独的神经元。
神经网络的威力来自网络结构,而感知器的能力非常有限。 -
如果你去读一些有关人工智能的教学书籍,这些书一般会说明:感知器只能解决线性可分的问题。
-
什么是线性可分的问题?让我们回顾第一个例子:感知器能判断某个点位于直线的哪一边。
-
图10-11(左)表示线性可分类的数据,图形化所有数据之后,如果数据能被直线划分,那它们就是线性可分的;
-
图10-11(右)表示非线性可分的数据,你无法用一条直线分隔黑色和灰色的点。
2、非线性可分问题
-
最简单的非线性可分问题就是XOR,也就是逻辑算符“异或”。
-
我们都知道AND运算:为了让A且B为真,A和B必须都为真。
对于OR,只要A和B中有一个为真,A或B的结果就为真。
AND和OR运算都是线性可分的问题。
下面给出了AND和OR的真值表:
-
在图10-12中,你可以用一条直线分隔真和假的结果。
-
XOR相当于OR和NOT AND。
换句话说,只有在A和B有且仅有一个为真时,A XOR B才为真,否则就为假。XOR的真值表如下:
-
这不是线性可分的。你无法用一条直线分隔真和假的结果。
3、感知器组成网络
-
感知器无法解决XOR这么简单的问题。但我们可以把两个感知器组成网络:用一个感知器解决OR,用另一个感知器解决NOT AND。这两个感知器合起来就能解决XOR运算。
- 上面这幅图称为多层感知器,即由许多神经元组成的网络。其中某些神经元用于接收输入,某些神经元称为“隐藏”层(因为它们既不和输入相连,也不是输出),还有一些神经元是输出神经元。
4、训练
- 训练这类神经网络是一件复杂的事。对单个感知器而言,我们可以轻易地根据误差调整权重,但神经网络有多个连接,而且每个连接都位于不同层次。如何确定每个神经网络对整体误差的贡献是多少?
- 多层神经网络的权重优化方案称为反向传播。
神经网络产生输出的方式和感知器相同:都要将输入加权求和,再向前传递。两者之间的差别在于:产生最终输出之前是否通过其他层次。
网络的训练(即权重调整)也涉及误差计算(正确结果-猜测结果),但是它的误差必须从后向前传播。神经网络会将误差平摊给每个连接的权重。 - 反向传播超出了本书的讨论范围,它需要用到一个更复杂的激励函数(称为Sigmoid()函数)和一些基本的微积分知识。
后面我们将讨论神经网络可视化结构的构建。我们会用神经元对象和连接对象创建神经网络,并用动画的方法展示前馈过程。
网友评论