感知机

前言

旨在求出线性可分数据的分离超平面,使用基于误差(误分类)的损失函数,使用随机梯度下降优化模型。为了使计算更具有一般性以及简化计算量常用对偶形式优化。感知机是神经网络(多层感知机)与支持向量机(相同的模型,不同的策略和算法)的基础。

模型功能:二类分类线性分类模型
模型类别:判别模型
输入数据:线性可分

感知机模型

假设输入空间(特征空间)为 X ⊆ R n X \subseteq R^n XRn,输出空间 Y ⊆ { − 1 , + 1 } Y \subseteq \lbrace -1,+1 \rbrace Y{1,+1}。输入 x ∈ X x \in X xX是实例的特征向量,对应输入空间(特征空间)的点;输出 y ∈ Y y \in Y yY表示实例的类别。由输入空间到输出空间有如下关系: f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w·x+b) f(x)=sign(wx+b)
上式称为感知机模型,其中 w w w b b b为模型参数, w ∈ R w \in R wR为权重向量, b ∈ R b \in R bR为偏置, w ⋅ x w·x wx表示向量 w w w x x x的内积, s i g n sign sign为符号函数,即
s i g n ( x ) = { + 1 , x ⩾ 0 − 1 , x < 0 sign(x) = \begin{cases} +1, & \text{$x \geqslant 0$} \\ -1, & \text{$x<0$} \end{cases} sign(x)={+1,1,x0x<0

学习策略


如果数据是线性可分的,感知机的学习策略是求得一个能将正样本与负样本能够正确分开的超平面,所以在选择损失函数的时候要满足以下要求:

  1. 损失函数优化过程中能够使误分类的实例数量逐渐变少
  2. 权重 w w w b b b对于损失函数是可微的

要满足第1条的要求最直接的损失函数就是误分类的点数,但是误分类点数对参数 w w w b b b是不可微的,因此采用误分类的点到超平面的距离作为损失函数,如下: L ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) L(w,b)=-\sum_{x_i \in M} y_i(wx_i+b) L(w,b)=xiMyi(wxi+b)其中 M M M为误分类实例的集合。 y i ( w x i + b ) > 0 y_i(wx_i+b)>0 yi(wxi+b)>0的实例就是误分类的实例,最小化以上损失函数使集合 M M M的规模不断变小即误分类的实例不断变小最后损失函数 L ( w , b ) = 0 L(w,b)=0 L(w,b)=0 M M M变为空集,因此这个损失函数同时满足条件1和2。

min ⁡ w , b L ( w , b ) = − ∑ x i ∈ M y i ( w x i + b ) \min_{w,b} L(w,b)=-\sum_{x_i \in M} y_i(wx_i+b) w,bminL(w,b)=xiMyi(wxi+b)使用随机梯度下降法优化以上函数: Δ w L ( w , b ) = − ∑ x i ∈ M y i x i \Delta_wL(w,b)=-\sum_{x_i \in M} y_ix_i ΔwL(w,b)=xiMyixi Δ b L ( w , b ) = − ∑ x i ∈ M y i \Delta_bL(w,b)=-\sum_{x_i \in M} y_i ΔbL(w,b)=xiMyi从集合 M M M中随机取出一个实例点 ( x i , y i ) (x_i,y_i) (xi,yi)更新 w w w b b b w ← w + η y i x i w\leftarrow w+\eta y_ix_i ww+ηyixi b ← b + η y i b \leftarrow b+\eta y_i bb+ηyi其中 η ( 0 < η ⩽ 1 ) \eta (0<\eta \leqslant 1) η(0<η1)为更新步长即学习率通过以上方法不断最小化 L ( w , b ) L(w,b) L(w,b)直至 L ( w , b ) = 0 L(w,b)=0 L(w,b)=0得到超平面 w x + b = 0 wx+b=0 wx+b=0
这种学习算法直观上有如下解释:当一个实例点被误分类,即位于分离超平面的错误一 侧时,则调整w,b的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面 间的距离,直至超平面越过该误分类点使其被正确分类。

对偶形式


对于误分类点 ( x i , y i ) (x_i,y_i) (xi,yi)通过 w ← w + η y i x i w\leftarrow w+\eta y_ix_i ww+ηyixi b ← b + η y i b \leftarrow b+\eta y_i bb+ηyi逐步的更新 w , b w,b w,b使点 ( x i , y i ) (x_i,y_i) (xi,yi)不再是误分类点,设更新 n i n_i ni次后点 ( x i , y i ) (x_i,y_i) (xi,yi)内正确分类,因此该点对 w w w b b b的贡献为 n i η y i x i n_i\eta y_ix_i niηyixi n i η y i n_i\eta y_i niηyi a i = n i η a_i=n_i \eta ai=niη,因此最后我们学到的 w w w b b b为: w = ∑ i = 1 N a i y i x i w=\sum_{i=1}^N a_iy_ix_i w=i=1Naiyixi b = ∑ i = 1 N a i y i b=\sum_{i=1}^Na_iy_i b=i=1Naiyi其中 N N N为实例的总数量。将上式带入到感知机的模型中有: f ( x ) = s i g n ( ∑ i = 1 N a i y i x i ⋅ x + b ) f(x)=sign(\sum_{i=1}^N a_iy_ix_i·x+b) f(x)=sign(i=1Naiyixix+b)此时 w w w b b b的更新过程为: a i y i x i ← a i y i x i + η y i x i a_iy_ix_i\leftarrow a_iy_ix_i+\eta y_ix_i aiyixiaiyixi+ηyixi b ← b + η y i b \leftarrow b+\eta y_i bb+ηyi化简得到以下式子: a i ← a i + η a_i\leftarrow a_i+\eta aiai+η b ← b + η y i b \leftarrow b+\eta y_i bb+ηyi在判断是否为误分类点时要频繁计算 y i ( ∑ i = 1 N a i y i x i ⋅ x i + b ) ⩽ 0 y_i(\sum_{i=1}^N a_iy_ix_i·x_i+b) \leqslant0 yi(i=1Naiyixixi+b)0其中有大量的重复计算因此定义Gram矩阵这样可以只计算一次其他的通过查表的方式获得 x j ⋅ x i x_j·x_i xjxi G r a m = [ x j ⋅ x i ] N × N Gram=[x_j·x_i]_{N\times N} Gram=[xjxi]N×N

你可能感兴趣的:(感知机)