感知机(perceptron)是一个线性二分类模型,其目的是寻找一个超平面将正负示例划分开,属于判别模型,也是神经网络与SVM的基础。
感知机模型
假设输入空间为
χ⊆Rn
χ
⊆
R
n
,输出空间为
Υ⊆{+1,−1}
Υ
⊆
{
+
1
,
−
1
}
。输入
x∈χ
x
∈
χ
表示实例的特征向量,输出
y∈Υ
y
∈
Υ
表示实例的类别。则下面的函数
称为感知机,其中 sign s i g n 为符号函数, w w 为权值向量(weight vector),为偏置(bias)。
令 w⋅x+b=0 w ⋅ x + b = 0 ,则所有的 x x 形成一个空间上的超平面,将空间 χ χ 分为两个部分,对于满足 w⋅x+b≥0 w ⋅ x + b ≥ 0 的实例感知机输出 +1 + 1 ,反之则输出 −1 − 1 。
感知机学习策略
考察空间
χ
χ
中任意一点
x0
x
0
,其到超平面
w⋅x+b=0
w
⋅
x
+
b
=
0
的距离为1
由于 ∥w∥ ‖ w ‖ 为常数,因此取损失函数为
其中 M M 为误分类点集合
学习算法
由于
因此从误分类点中任取一点 (xi,yi) ( x i , y i ) 得到感知机SGD的迭代公式
算法收敛性
给定线性可分数据集 T T ,则
- 存在满足条件的超平面
w^opt⋅x^=wopt⋅x+bopt=0
w
^
o
p
t
⋅
x
^
=
w
o
p
t
⋅
x
+
b
o
p
t
=
0
将数据集完全分开;且存在
γ>0
γ
>
0
,对所有
i=1,2,⋯,N
i
=
1
,
2
,
⋯
,
N
yi(w^opt⋅x^i)=yi(wopt⋅xi+bopt)≥γ y i ( w ^ o p t ⋅ x ^ i ) = y i ( w o p t ⋅ x i + b o p t ) ≥ γ
- 令
R=max1≤i≤N∥x^i∥
R
=
max
1
≤
i
≤
N
‖
x
^
i
‖
,则感知机算法在训练集上的误分类次数
k
k
满足
对偶形式
取初始值 w0=b0=0 w 0 = b 0 = 0 ,由SGD可得
wb=∑i=1Nniηyixi=∑i=1Nαiyixi=∑i=1Nniηyi=∑i=1Nαiyi w = ∑ i = 1 N n i η y i x i = ∑ i = 1 N α i y i x i b = ∑ i = 1 N n i η y i = ∑ i = 1 N α i y i
由此可得感知机的对偶形式:
输入: α,b α , b ;感知机模型 f(x)=sign(∑j=1Nαjyjxj⋅x+b) f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) ,其中 α=(α1,α2,⋯,αN)T α = ( α 1 , α 2 , ⋯ , α N ) T 。- α←0,b←0 α ← 0 , b ← 0
- 选取数据 (xi,yi) ( x i , y i )
- 如果
yi(∑j=1Nαjyjxj⋅x+b)≤0
y
i
(
∑
j
=
1
N
α
j
y
j
x
j
⋅
x
+
b
)
≤
0
αib←αi+η←b+ηyi α i ← α i + η b ← b + η y i
- 转至2直至没有误分类数据。
与线性SVM的异同
从分类原理上看,线性感知机与线性SVM原理似乎相同:二者均为二分类模型,都是在特征空间寻找一个超平面将正负两类样本区分开来。事实上,感知机作为神经网络算法的基础,与SVM确实存在很多相似之处。作为线性分类器,感知机与SVM的预测过程相同,均是利用学得的模型 f(x)=sign(w⋅x+b) f ( x ) = s i g n ( w ⋅ x + b ) 进行分类,但是二者的学习过程存在差异。
首先是损失函数,感知机一般将误分类点到超平面的距离之和作为损失函数,即LPerceptron=−∑xi∈Myi(w⋅xi+b) L P e r c e p t r o n = − ∑ x i ∈ M y i ( w ⋅ x i + b )
在神经网络中也常用交叉熵(cross entropy)作为分类任务的损失函数。可以看到,感知机是要最小化所有误分类样本点到超平面之间的距离,而SVM则是最大化两个异类支持向量(即离超平面最近的点)到超平面的距离 2∥w∥ 2 ‖ w ‖ ,或者说最小化其距离的倒数,即等价于
mins.t.LSVM=12∥w∥2yi(wT⋅x+b≥1,)i=1,2,⋯,m。 m i n L S V M = 1 2 ‖ w ‖ 2 s . t . y i ( w T ⋅ x + b ≥ 1 , ) i = 1 , 2 , ⋯ , m 。
另外,在学习的过程中,感知机的损失函数是非凸的,因此一般采用梯度下降类方法进行优化,而SVM的损失函数是凸函数,可以采用凸优化(如SMO)的方法进行优化。
- 过
x0
x
0
向超平面
w⋅x+b=0
w
⋅
x
+
b
=
0
作垂线,设垂足为
x
x
,则有。则有
w⋅(x−x0)=w⋅x+b−w⋅x0−b w ⋅ ( x − x 0 ) = w ⋅ x + b − w ⋅ x 0 − b
注意到 w⋅x+b=0 w ⋅ x + b = 0 ,因此
w⋅(x−x0)=−w⋅x0−b w ⋅ ( x − x 0 ) = − w ⋅ x 0 − b
由于向量 w w 与平行,因此
|w⋅(x−x0)|=∥w∥∥x−x0∥ | w ⋅ ( x − x 0 ) | = ‖ w ‖ ‖ x − x 0 ‖
因此
∥x−x0∥=1∥w∥|w⋅x0+b| ‖ x − x 0 ‖ = 1 ‖ w ‖ | w ⋅ x 0 + b |↩
- 令
R=max1≤i≤N∥x^i∥
R
=
max
1
≤
i
≤
N
‖
x
^
i
‖
,则感知机算法在训练集上的误分类次数
k
k
满足