所以,两层感知器的结构为:
隐层的结点第一个结果为通过g1映射得到,第二个为通过g2得到
为什么两层感知器的分类能力有限?由上图,我们假设区域中的点,如
(000,001,011)这三个区域
我们可以先将区域中的点,通过y1,y2,y3三条直线映射到
000,001,....111(没有101),总共7个区域,前面我们是通过g1,g2映射到了平面上面的点,现在我们变成了三维,因此映射到了正方体的顶点,如果我们想将(000,001,011)这三个点与其余四个点分开的话,我们可以画出正方体,并且标出点,如下图所示:
我们很容易找到一个平面将他分开,因此只需要两层感知器就可以实现分类
从y1 y2 y3到z需要让决策面为 z: y1 + y2 - y3 -1/2即可
x y1 y2 y3 zx1,x2 0 0 0 0
x1,x2 0 0 1 0
x1,x2 0 1 0 1
x1,x2 0 1 1 0
x1,x2 1 0 0 1
x1,x2 1 1 0 1
x1,x2 1 1 1 1
网络结构如下图所示:
如果我们想将(000,111,110)中区域的点与其他区域分开,我们会怎么办呢?
区域图如下:
我们也会先将点映射到正方体的三个顶点,然后我们画出000,111,110三个点,我们会发现,我们没有办法用一个平面将000,111,110三个点与其他区域分开,我们需要两个平面才能解决这个问题,因为我们需要添加一层隐藏层,因为我们遇到了线性不可分问题
所以,两层感知器的分类能力是有限的
下面我将讨论如何使用三层感知器来实现(000,111,110)中区域的点与其他区域分开
与xor问题一样,我们会将
000 与其余6个区域分开
111 与其余6个区域分开
110 与其余6个区域分开
这样我们就会得到z1,z2,z3,再将z1,z2,z3输入感知器,我们只要将000与其他(100,010,001)分开即可 z: z1 + z2 + z3 -1/2
x1,x2 0 0 0 1 0 0 1
x1,x2 0 0 1 0 0 0 0
x1,x2 0 1 0 0 0 0 0
x1,x2 0 1 1 0 0 0 0
x1,x2 1 0 0 0 0 0 0
x1,x2 1 1 0 0 1 0 1
x1,x2 1 1 1 0 0 1 1