人工神经元也称为感知器。它接受输入信号,处理后再向一下层神经元输出信号。
感知器由Frank Rosenblatt在1957年提出,他介绍了一种基于人工神经元的感知器学习规则。
感知器定义
感知器的结构,如下图所示:
感知器中,输入信息被加权求和,再经过一个激活函数处理,然后生成输出信息。
假设正确的输出是预定义的,每次通过感知器传递数据时,都会将最终结果与正确的结果进行比较,并根据差值对感知器中的输入权重值进行调整,直到网络可以生成正确的最终输出。
所以,感知器的学习过程,实际上就是根据一组样本数据,确定感知器输入权重的过程。
感知器输入
一个感知器可以接受多个输入(x_1, x_2, …, x_n),每个输入都有一个权重值,另外还有一个偏置项(bias),即上图中的w0,通常也记为b(bias)。
加权求和
对于输入信号,感知器首先会对其加权求和:
z(x) = w_0 + w_1x_1 + w_2x_2 + … + w_nx_n
激活函数
激活函数作用是模拟生物神经元中阈值的作用,当信号强度达到阈值时,就输出信号,否则就没有输出。数学中的许多函数可以作为激活函数使用,例如阶跃函数(step funciton),sign函数,sigmoid函数。
- 阶跃函数的输入信号大于t, 输出1,否则输出0。
- 符号(sign)函数的输入大于0,输出1,小于0,输出-1。
- Sigmoid函数是s曲线,输出值在0到1之间。
感知器的输出
感知器的输出,可以表示为:
输入
输入项:1, x_1, x_2, …, x_n,表示为向量x
X = [1, x_1, x_2, …, x_n]
权重
权重项:w_1, w_2, …, w_n,表示为向量w
W = [w_0, w_1, w_2, …, w_n]
偏置项(bias)
偏置项为 w_0 \times 1,也记为b
激活函数
激活函数为f(Z)
输出
加权求和的值可以表示为:
Z = W · X = W^TX = \sum _{i=0}^n w_i*x_i
经过激活函数处理后:
Y = f( W · X )
例子:用感知器实现逻辑门
用感知器实现逻辑与
设计一个感知器,实现逻辑与功能。逻辑与函数,有两个输入,一个输出,真值表如下所示:
x1 | x2 | y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
0表示false, 1表示true。
我们让权重:w0 = -0.8, w1 = 0.5, w2 = 0.5,激活函数使用阶跃函数(t=0),这时,感知器就相当于and函数。
我们验算一下:
x1 = 1
,x2 = 1
,y = x1 * w1 + x2 * w2 + w0 = 0.5*1 + 0.5*1 + (-0.8) = 0.2 > 0
,输出为1,即truex1 = 0
,x2 = 1
,y = x1 * w1 + x2 * w2 + w0 = 0.5*0 + 0.5*1 + (-0.8) = -0.3 < 0
,输出为0,即false
用感知器实现逻辑或
类似的,可以使用感知器实现逻辑或功能。
我们让权重:w0 = -0.3, w1 = 0.5, w2 = 0.5,激活函数使用阶跃函数(t=0),这时,感知器就相当于or函数。
x1 = 1
,x2 = 1
,y = x1 * w1 + x2 * w2 + w0 = 0.5*1 + 0.5*1 + (-0.3) = 0.7 > 0
,输出为1,即truex1 = 0
,x2 = 1
,y = x1 * w1 + x2 * w2 + w0 = 0.5*0 + 0.5*1 + (-0.3) = 0.2 > 0
,输出为1,即true
感知器还能做什么
事实上,感知器不仅仅能实现简单的布尔运算。它可以拟合任何的线性函数,任何线性分类或线性回归问题都可以用感知器来解决。
感知器训练
现在,你可能困惑前面的权重项和偏置项的值是如何获得的呢?
在感知器学习规则中,将实际输出与样本中的正确输出进行比较,根据输出偏差调整权重与偏置项。重复多次迭代样本数据,直到实际输出与正确输出匹配,从而得出正确的权重与偏置项,这就是感知器的学习过程。后面章节,将有更详细的介绍。