1. 线性分类器

别嫌我罗嗦,从这里开始看你不会后悔的。

下面直线把平面分成两部分,平面上的点被分为两类:
w1x1+w2x2+w0=0(1) w_1x_1+w_2x_2 +w_0= 0\tag1
显然,给定坐标 (x1,x2)(x_1, x_2) 我们可以根据 w1x1+w2x2+w0w_1x_1+w_2x_2 +w_0 结果是大于零还是小于零,判断坐标落在了直线的哪一侧。为让判定结果更明确,我们把 (1) 式改造成下面的形式:

y=w1x1+w2x2+w0z=β(y)(2) y = w_1x_1+w_2x_2 +w_0 \tag2\\ z = \beta(y)
其中,
β(y)={1,(y>0)0,(y0)(3)\tag3 \beta(y) = \begin{cases} 1,&&(y>0)\\ 0,&&(y\le 0) \end{cases}
函数 β()\beta(*) 称为**函数。深究一下取“**函数”这个名字,可能是因为它把大于零、小于零这种结果量化成了0、1这样具体的布尔值,于是**了其应用价值。

把 (2) 式画成神经元的形式,我们就得到一个最简单的神经网络,输入平面点的坐标,输出一个布尔值。

几分钟看懂神经网络原理

2. 非线性分类

我们可以组合多个线性分类器,对稍微复杂一点的线性不可分问题建立网络模型。接下来构造一个神经网络,求两个半平面的交集
z1=β(w11x1+w12x2+w10)z2=β(w21x1+w22x2+w20)z=z1z2(4)\tag4 z_1=\beta(w_{11}x_1+w_{12}x_2+w_{10})\\ z_2=\beta(w_{21}x_1+w_{22}x_2+w_{20})\\ z=z_1 \land z_2
逻辑运算很容易用神经元实现,假设 x,x1,x2x,x_1,x_2 都是布尔值,则
x1x2=β(x1+x20.75)x1x2=β(x1+x20.25)¬x=β(1.0x)(5)\tag5 x_1 \land x_2 = \beta(x_1 + x_2 - 0.75)\\ x_1 \lor x_2 = \beta (x_1 + x_2 - 0.25)\\ \lnot x =\beta (1.0-x)

于是,(4)式可以写成
y1=β(w11x1+w12x2+w10)y2=β(w21x1+w22x2+w20)z=β(y1+y20.75) y_1=\beta(w_{11}x_1+w_{12}x_2+w_{10})\\ y_2=\beta(w_{21}x_1+w_{22}x_2+w_{20})\\ z= \beta(y_1 + y_2 - 0.75)
对应的神经网络简图如下,
几分钟看懂神经网络原理

3. 复杂分类网络模型

上面的结构只能求若干个半平面的交集,也就是所谓的凸集。遇到一些更复杂的分类,需要把分类区域分解成若干的凸集的并,这样神经网络就需要增加一层,例如

凸集1:
y1=β(w11x1+w12x2+w10)y2=β(w21x1+w22x2+w20)z1=β(y1+y20.75)(6)\tag6 y_1=\beta(w_{11}x_1+w_{12}x_2+w_{10})\\ y_2=\beta(w_{21}x_1+w_{22}x_2+w_{20})\\ z_1= \beta(y_1 + y_2 - 0.75)

凸集2:
y3=β(w31x1+w32x2+w30)y4=β(w41x1+w42x2+w40)z2=β(y3+y40.75)(7)\tag7 y_3=\beta(w_{31}x_1+w_{32}x_2+w_{30})\\ y_4=\beta(w_{41}x_1+w_{42}x_2+w_{40})\\ z_2= \beta(y_3 + y_4 - 0.75)

最终结果,凸集的并集
z=β(z1+z20.25)(8)\tag8 z=\beta(z_1+z_2-0.25)

对应的神经网络模型,
几分钟看懂神经网络原理

4. 小结

本文给出了平面分类模型的构建方法,对于多维空间分类问题,道理是一样的:第一层利用神经元构造一组(超)半平面,第二层利用半平面构造一组多维凸集,第三层求凸集的并集,形成对复杂空间的分类能力。

本文给说明人工建立模型的原理和方法,如何利用大数据通过算法自动建立对应的神经网络模型?下一篇文章我来讨论这个问题。

相关文章: