1. 线性分类器
别嫌我罗嗦,从这里开始看你不会后悔的。
下面直线把平面分成两部分,平面上的点被分为两类:
w1x1+w2x2+w0=0(1)
显然,给定坐标
(x1,x2) 我们可以根据
w1x1+w2x2+w0 结果是大于零还是小于零,判断坐标落在了直线的哪一侧。为让判定结果更明确,我们把 (1) 式改造成下面的形式:
y=w1x1+w2x2+w0z=β(y)(2)
其中,
β(y)={1,0,(y>0)(y≤0)(3)
函数
β(∗) 称为激活函数。深究一下取“激活函数”这个名字,可能是因为它把大于零、小于零这种结果量化成了0、1这样具体的布尔值,于是激活了其应用价值。
把 (2) 式画成神经元的形式,我们就得到一个最简单的神经网络,输入平面点的坐标,输出一个布尔值。
2. 非线性分类
我们可以组合多个线性分类器,对稍微复杂一点的线性不可分问题建立网络模型。接下来构造一个神经网络,求两个半平面的交集
z1=β(w11x1+w12x2+w10)z2=β(w21x1+w22x2+w20)z=z1∧z2(4)
逻辑运算很容易用神经元实现,假设
x,x1,x2 都是布尔值,则
x1∧x2=β(x1+x2−1.5)x1∨x2=β(x1+x2−0.5)¬x=β(1.0−x)(5)
于是,(4)式可以写成
y1=β(w11x1+w12x2+w10)y2=β(w21x1+w22x2+w20)z=β(y1+y2−1.5)
对应的神经网络简图如下,
3. 复杂分类网络模型
上面的结构只能求若干个半平面的交集,也就是所谓的凸集。遇到一些更复杂的分类,需要把分类区域分解成若干的凸集的并,这样神经网络就需要增加一层,例如
凸集1:
y1=β(w11x1+w12x2+w10)y2=β(w21x1+w22x2+w20)z1=β(y1+y2−1.5)(6)
凸集2:
y3=β(w31x1+w32x2+w30)y4=β(w41x1+w42x2+w40)z2=β(y3+y4−1.5)(7)
最终结果,凸集的并集
z=β(z1+z2−0.5)(8)
对应的神经网络模型,
4. 小结
本文给出了平面分类模型的构建方法,对于多维空间分类问题,道理是一样的:第一层利用神经元构造一组(超)半平面,第二层利用半平面构造一组多维凸集,第三层求凸集的并集,形成对复杂空间的分类能力。
本文给说明人工建立模型的原理和方法,如何利用大数据通过算法自动建立对应的神经网络模型?下一篇文章我来讨论这个问题。