书名:代码本色:用编程模拟自然系统
作者:Daniel Shiffman
译者:周晗彬
ISBN:978-7-115-36947-5
第10章目录
10.3 用感知器进行简单的模式识别
1、模式识别
- 我们已经理解了感知器的运算过程,下面来看一个具体的例子。
- 我们在前面曾经提到,神经网络常用于模式识别,比如面部识别。
-
即使是非常简单的感知器也能表现出基本的分类功能,如下例所示:
- 在二维空间中有一条直线,它将平面上的点分隔成两部分,我们要用神经网络判断某一个点位于哪一边。尽管这是一个非常简单的例子(不需要用神经网络就能判断点位于哪一边),但它展示了感知器的训练过程。
2、感知器的训练
-
假设感知器有两个输入(某个点的x坐标和y坐标),在激励函数的处理下,可能产生两种输出结果:-1或+1。
换句话说,我们要根据输出结果的符号对输入进行分类。
如上图所示,所有点可被分为两类:位于直线下方(-1)或位于直线上方(+1)。 -
我们可以用下图表示这个感知器:
-
如上图所示,感知器有两个输入(x和y),每个输入都有一个权重(weightx和weighty),除此之外,感知器还有一个神经元和输出结果。
-
然而,这里还有一个问题。考虑点(0,0),如果把这个点传入感知器(输入为:x=0和y=0),会得到什么结果?无论权重等于多少,总和总是为0!但这并不是正确结果
——因为在这个二维平面中,点只能被分为两类:位于直线上方或者下方! -
为了避免这个问题,我们的感知器还要有第三个输入,这个输入常称为偏置输入。偏置输入总是等于1,也有相应的权重。加入偏置后,感知器如下图所示:
-
让我们回到点(0,0),它的输入如下:
0 × x的权重 = 0
0 × y的权重 = 0
1 × 偏置的权重 = 偏置的权重 -
输出值等于三者的和:0加上0,再加上偏置的权重。因此,偏置回答了点(0,0)位于直线哪一边的问题。如果偏置的权重是正数,(0,0)就位于直线上方;如果为负数,则位于直线下方。它“偏置”了感知器对于直线和(0,0)之间相对位置的理解。
网友评论