感知机(perceotron)是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1,-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型。
定义 2.1(感知机):假设输入空间是 R n R^n Rn,输出空间是 { − 1 , + 1 } \{-1,+1\} { −1,+1},从输入空间到输出空间的函数 f ( x ) f(x) f(x)
f ( x ) = sign ( w ⃗ ⋅ x ⃗ + b ) f(x)=\text{sign}(\vec{w}\cdot\vec{x}+b) f(x)=sign(w⋅x+b)
被称为感知机。其中, w ⃗ , b \vec{w},b w,b被称为感知机模型参数, w ⃗ ∈ R n \vec{w}\in R^n w∈Rn被称为权值向量或权值, b ∈ R b\in R b∈R被称为偏置, sign \text{sign} sign是符号函数。
在几何表示中,对于给定的 w ⃗ , b \vec{w},b w,b,线性方程 w ⃗ ⋅ x ⃗ + b = 0 \vec{w}\cdot\vec{x}+b=0 w⋅x+b=0对应于特征空间 R n R^n Rn的超平面。容易证明, w ⃗ \vec{w} w是这个超平面的法向量, w ⃗ ⋅ x ⃗ + b > 0 \vec{w}\cdot\vec{x}+b>0 w⋅x+b>0对应于 w ⃗ \vec{w} w指向的一侧, w ⃗ ⋅ x ⃗ + b < 0 \vec{w}\cdot\vec{x}+b<0 w⋅x+b<0对应于 − w ⃗ -\vec{w} −w指向的一侧。因此,这个超平面将特征空间划分为两个部份,所以可以被用于解决分类问题。
感知机通过学习训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={ (x1,y1),(x2,y2),⋯,(xN,yN)}
得到模型参数 w ⃗ , b \vec{w},b w,b,然后通过 f ( x ) f(x) f(x)来预测新的输入实例,最终得到其输出类别。
线性可分:如果存在某个超平面 S S S将数据集的正实例点和负实例点完全正确地划分到超平面的两侧,那么就称该数据集为线性可分数据集,否则称其为线性不可分数据集。
在感知机的学习策略中,其定义经验损失函数并将其最小化,最终得到模型参数 w ⃗ , b \vec{w},b w,b,如下所示。
假设输入的数据集为 T T T,感知机对应的超平面记为 S S S
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯ , ( x N , y N ) } x i ∈ R n , y i ∈ { − 1 , + 1 } , i = 1 , 2 , ⋯ , N S = { x ⃗ ∣ w ⃗ ⋅ x ⃗ + b = 0 } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\}\\ x_i\in R^n,\ y_i\in\{-1,+1\},\ i=1,2,\cdots,N\\ S=\{\vec{x}|\vec{w}\cdot\vec{x}+b=0\} T={ (x1,y1),(x2,y2),⋯,(xN,yN)}xi∈Rn, yi∈{ −1,+1}, i=1,2,⋯,NS={ x∣w⋅x+b=0}
容易证明,输入空间中任一点到超平面的距离为
∣ w ⃗ ⋅ x ⃗ + b ∣ ∣ ∣ w ⃗ ∣ ∣ \frac{|\vec{w}\cdot\vec{x}+b|}{||\vec{w}||} ∣∣w∣∣∣w⋅x+b∣
对于误分类的数据 ( x i , y i ) (x_i,y_i) (xi,yi)来说,我们有
− y i ( w ⃗ ⋅ x + b ) > 0 -y_i(\vec{w}\cdot{x}+b)>0 −yi(w⋅x+b)>0
假设所有的误分类点的集合为 M M M,那么所有误分类点到超平面的距离之和为损失函数 L ( w ⃗ , b ) L(\vec{w},b) L(w,b)
L ( w ⃗ , b ) = − ∑ x i ∈ M y i ( w ⃗ ⋅ x i ⃗ + b ) L(\vec{w},b)=-\sum_{x_i\in M}y_i(\vec{w}\cdot\vec{x_i}+b) L(w,b)=−xi∈M∑yi(w⋅xi+b)
其中不考虑 1 ∣ ∣ w ⃗ ∣ ∣ \frac{1}{||\vec{w}||} ∣∣w∣∣1。
感知机的学习策略是在假设空间中选择使 L ( w ⃗ , b ) L(\vec{w},b) L(w,b)达到最小的模型参数 w , b w,b w,b。
感知机的学习问题实际上是损失函数 L ( w , b ) L(w,b) L(w,b)的最优化问题。
采用随机梯度下降法来优化函数 L ( w , b ) L(w,b) L(w,b)。在极小化的过程中,不是一次使 M M M中所有的误分类点的梯度下降,而是一次随机一个误分类点,使其梯度下降,更新方法如下
w = w + η y i x i b = b + η y i w=w+\eta y_ix_i\\ b=b+\eta y_i w=w+ηyixib=b+ηyi
其中, η \eta η是步长,又被称为学习率。
算法 2.1 感知机算法的原始形式
输入:训练数据集 T T T,学习率 η ∈ ( 0 , 1 ] \eta\in(0,1] η∈(0,1]
输出: w , b w,b w,b
选定初值 w 0 , b 0 w_0,b_0 w0,b0
在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
如果 y i ( w ⋅ x i + b ) ≤ 0 y_i(w\cdot x_i+b)\le 0 yi(w⋅xi+b)≤0,则更新 w , b w,b w,b
w = w + η x i y i b = b + η y i w=w+\eta x_iy_i\\ b = b+\eta y_i w=w+ηxiyib=b+ηyi
转2,直到训练集中没有误分类点。
不失一般性,在算法 2.1中可假设初始值 w 0 , b 0 ) w_0,b_0) w0,b0)的值均为0,设 w , b w,b w,b关于 ( x i , y i ) (x_i,y_i) (xi,yi)的增量为 α i y i x i \alpha_iy_ix_i αiyixi和 α i y i \alpha_iy_i αiyi。其中, α i = n i η \alpha_i=n_i\eta αi=niη, n i n_i ni是数据点 ( x i , y i ) (x_i,y_i) (xi,yi)被选为误分类点来更新 w , b w,b w,b的次数。此时, w , b w,b w,b可表示如下。
w = ∑ i = 1 N α i y i x i b = ∑ i = 1 N α i y i w=\sum_{i=1}^N\alpha_iy_ix_i\\ b=\sum_{i=1}^N\alpha_iy_i w=i=1∑Nαiyixib=i=1∑Nαiyi
由此得到感知机算法的对偶形式。
输入:训练数据集 T T T,学习率 η ∈ ( 0 , 1 ] \eta\in(0,1] η∈(0,1]
输出: α , b \alpha,b α,b,感知机模型 f ( x ) = sign ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=\text{sign}(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b) f(x)=sign(∑j=1Nαjyjxj⋅x+b)
α = 0 , b = 0 \alpha=0,b=0 α=0,b=0
在训练集中选取 ( x i , y i ) (x_i,y_i) (xi,yi)
如果 y i f ( x i ) ≤ 0 y_if(x_i)\le 0 yif(xi)≤0
α i = α a + η b = b + η y i \alpha_i=\alpha_a+\eta\\ b=b+\eta y_i αi=αa+ηb=b+ηyi
转2,直到没有误分类数据。