感知器以一个实数值向量作为输入,计算这些输入的线性组合,然后如果结果大于某个阈值就输出 1,否则输出-1。更精确地,如果输入为 x1 到 xn,那么感知器计算的输出为:
所以我们的目标是:学习权 w0, ..., wn 的值 。
我们可以把感知器看作是 n 维实例空间(即点空间)中的超平面决策面。对于超平面一侧的实例,感知器输出 1,对于另一侧的实例输出-1。二维如下图:方块为1,星为-1。
为了得到可接受的权向量,一种办法是从随机的权值开始,然后反复地应用这个感知器到 每个训练样例,只要它误分类样例就修改感知器的权值。
重复这个过程,直到感知器正确分类所有的训练样例。每一步根据感知器训练法则来修改权值,也 就是根据下面的法则修改与输入 xi 对应的权 wi:
wi←wi+∆wi
其中 ∆wi =η(t-o)xi
这里 t 是当前训练样例的目标输出,o 是感知器的输出,η是一个正的常数称为学习速 率(learning rate)。
学习速率的作用是缓和每一步调整权的程度。它通常被设为一个小的数 值(例如 0.1),而且有时会使其随着权调整次数的增加而衰减。
为什么这个更新法则会成功收敛到正确的权值呢?
一、假定训练样本已被感知器正确分类。
这时,(t-o)是 0,这使∆wi 为 0,所以没有权值被修改。
二、如果当目标输出是+1 时,感知器输出一个-1。(上图红色方块)
这种情况为使感知器输出一个+1 而不是-1,权值必须被修改以增大 的值。
例如,如果 xi>0,那么增大 wi 会使感知器更接近正 确分类这个实例。注意这种情况下训练法则会增长 wi,因为(t-o),η和 xi 都是正的。例如, 如果 xi=0.8,η=0.1,t=1,并且 o= -1,那么权更新就是∆wi =η(t-o)xi=0.1(1-(-1))0.8=0.16。另 一方面,如果 t=-1 而 o=1,那么和正的 xi 关联的权值会被减小而不是增大。
更深刻的栗子:
上图虚线为第一次的分类器:O(x1,x2) = w0+w1x1+w2x2 = -4 + 2x1 + x2
代入红色方块(1,1)得:O(1,1) = -4+2+1 = -1 < 0, 感知器将其标记为-1。但是真实的分类为+1。
更新wi:
- ∆wi = η(t-o)xi = 0.2*(1+1)*1 = 0.4
- w0 = w0 + ∆wi = -4 + 0.4 = -3.6
- w1 = w1 + ∆wi = 2 + 0.4 = 2.4
- w2 = w2 + ∆wi = 1 + 0.4 = 1.4
新的O(x1,x2) = -3.6 + 2.4x1 + 1.4x2 (上图实线)
再次对红色方块进行分类:O(1,1) = -3.6 + 2.4 + 1.4 = 0.2 > 0, 这次被标记成 +1啦。
总结:
优点:事实上可以证明,在有限次使用感知器训练法则后,上面的训练过程会收敛到一个能正 确分类所有训练样例的权向量,前提是训练样例线性可分,并且使用了充分小的η 。
不足:如果数据不是线性可分的,那么不能保证收敛;得出的分类函数未必是最优的。