1 感知机

1 感知机模型

感知机

输入空间 XRn(=Rn×1) , 输出空间间 Y={+1,1}. 函数函数 (1.1)f(x)=sgn(ωx+b),ωRn,bR 称为称为感知机 .

  1. ωx+b 相当于一个超平面,将空间上的点切分为两部分. 感知机模型的任务就是,如果理论上存在一个切分点的超平面,则找到它, 将点正确分到正例与负例.
  2. 这里将两个尺寸相同的列向量相乘默认为逐元素相乘,得到的值为实数.

2 感知机学习策略

2.1 数据集的线性可分性

数据集的线性可分性

给定数据集 T={(x1,y1),,(xN,yN)}, xiX=Rn,yiY,1iN. 如果存在超平面 S, 可以将数据点完全正确地划分,则称数据集 T线性可分数据集.

2.2 感知机学习策略

选取误分类点到超平面的总距离作为损失函数(因为这关于参数是可导的). 首先给出点到超平面的距离公式: d=|ωx0+b|||ω||=yi(ωxi+b)||ω||, 这里使用了 yi 的特性: 在误分类点中,ωxi+byi 的符号始终相反. 因此,如果记误分类点的集合为 M, 将上述距离相加,推导出损失函数为 (2.1)L(ω,b)=xiMyi(ωxi+b).

注意到这个表达式里去掉了 1/||ω|| 系数,这是因为在线性可分的假设下,我们的目标是让 L 严格等于 0, 因此去掉这项系数不会影响最后的目标,但可以简化求导计算.

3 感知机学习算法

3.1 感知机学习算法的原始形式

感知机算法需要优化以下问题minω,bL(ω,b)=xiMyi(ωxi+b).
采用随机梯度下降( #SGD )方法迭代优化. 注意到损失函数是关于 ω,b 的线性函数,因此 ωL(ω,b)=xiMyixi,bL(ω,b)=xiMyi.然后给出具体算法.

感知机学习算法的原始形式

输入: 线性可分的训练集 T={(x1,y1),,(xN,yN)}, xiX=Rn, yiY={1,+1}, 1iN; 学习率 η(0,1].
输出: ω,b 和对应的感知机模型 f(x)=sgn(ωx+b).

  1. 选取初值 ω0,b0;
  2. 在训练集中选取 (xi,yi);
  3. 如果 yi(ωxi+b)0, 则执行 (3.1)ωω+ηyixi,bb+ηyi.
  4. 跳至 2,直至误分类点集合 M=.

3.2 原始形式的收敛性

3.3 感知机学习算法的对偶形式

在原始算法中,通过梯度下降不断对 ω 赋予了 yixi 项, 对 b 不断赋予了 yi 项,因此 ω,b 有表示形式 ω=i=1Nαiyixi,b=i=1Nαiyi,(αi0).

ni(1iN) 为模型在全部的训练过程中为 xi 更新的次数,则 αi=niη. 事实上,更新次数越多的点离超平面越近,也就越难正确分类.

在对偶算法中,我们不改变 b 的训练方式,但是要改变 ω.

感知机学习算法的对偶形式

输入: T,η(0,1].
输出: α=(α1,,αN)T,b 和对应的 f(x)=sgn(j=1Nαjyjxjx+b).

  1. α0,b0;
  2. 选取 (xi,yi);
  3. 如果 sgn(j=1Nαjyjxjx+b)0, 更新 (3.2)αiαi+η,bb+ηyi.
  4. 跳转到 2,直到误分类数据点集合 M=.

我们用 Gram 矩阵 G=[xixj]N×N
来存储计算结果.