感知机算法原理

本文最后更新于:2023年2月28日 下午

相关概念

术语 释义 推导
超平面 n维空间中的n-1维的子空间,即平面中的直线、空间中的平面之推广 wx+b=0\vec w \cdot \vec x + b = 0
(w,b)(\vec w, b)
点到超平面的距离 $d = \frac{ \vec w \cdot \vec {x_0} + b
线性可分性 给定一个数据集:
T={(x1,y1),(x2,y2),...,(xn,yn)}T = \lbrace (x_1,y_1),(x_2,y_2), ..., (x_n,y_n)\rbrace,其中$ x_i \subseteq \mathbb R^n\gamma = \lbrace+1,-1\rbrace$, i=1,2,...,ni=1,2,...,n
如果存在某个超平面 wx+b=0\vec w \cdot \vec x + b = 0 能将数据集中的正实例点和负实例点完全正确地划分到超平面两侧,
即对所有yi=+1y_i = +1的正实例ii,有$$\vec w \cdot \vec x + b > 0$$;
对所有yi=1y_i = -1的正实例ii,有$$\vec w \cdot \vec x + b < 0$$。
则称数据集TT线性可分;否则,数据集TT线性不可分。

原理

感知机是一个线性分类器,只适用于线性可分问题。

感知机通过训练集数据最小化损失函数的学习,得到能够将正实例点和负实例点完全分离的分离超平面 (确定w,bw, b)。

image-20220821120813833

结构

单个神经元/处理单元

输入空间:$ x \subseteq \mathbb R^n,输入n$维特征向量

输出空间:yiγ,γ={+1,1}y_i \in \gamma, \gamma = \lbrace+1,-1\rbrace,实现二分类

感知机:i=1nwixi+b\sum_{i=1}^{n}w_ix_i+bw1,...,wnw_1, ..., w_n为各维输入分量连接到感知机的权重,bb为偏置

激活函数:将结果映射至输出空间

函数 表达式 图像
符号函数:sign(x)sign(x) f(x)={1,x>00,x=01,x<0f(x) = \begin{cases}1 , x>0\\0 , x=0\\-1 , x<0\end{cases} image-20220821185750379

学习策略

损失函数

损失函数的自然选择

  • 误分类点的总数。

    这样的损失函数不是参数w,bw,b 的连续可导函数,不易优化。

  • 误分类点到超平面的总距离

    感知机采用的损失函数

由于误分类的数据满足 (异号):

yi(wxi+b)0-y_i(w \cdot x_i + b) \geq 0

因此,误分类点(xi,yi)(x_i,y_i)到超平面的距离是:

d=yi(wxi+b)wd = \frac{-y_i(w \cdot x_i + b) }{\|w\|}

误分类点集合MM中的点到超平面的总距离是:

d=xiMyi(wxi+b)wd = \frac{-\sum_{x_i \in M}y_i(w \cdot x_i + b) }{\|w\|}

忽略1w\frac{1}{\|w\|},得到感知机学习的损失函数:

L(w,b)=xiMyi(wxi+b)L(w,b) = -\sum_{x_i \in M}y_i(w \cdot x_i + b)

学习算法

采用随机梯度下降算法 (stochastic gradient descent,SGD),解决最小化损失函数的优化问题。

目标:

minL(w,b)=xiMyi(wxi+b)min L(w,b) = -\sum_{x_i \in M}y_i(w \cdot x_i + b)

损失函数L(w,b)L(w,b)的梯度为:

wL(w,b)=xiMyixi\nabla_w L(w,b) = -\sum_{x_i \in M}y_i x_i

\nabla_w L(w,b) = -\sum_{x_i \in M}y_i\

误分类点(xi,yi)(x_i,y_i)更新w,bw,b

ww+αwL(w,b)=w+αyixiw \gets w+ \alpha \cdot \nabla_w L(w,b) = w + \alpha y_ix_i

bb+αbL(w,b)=b+αyib \gets b+ \alpha \cdot \nabla_b L(w,b) = b + \alpha y_i

学习算法的原始形式

  1. 选取初值w0,b0,αw_0,b_0,\alpha

  2. 选取训练集中点(xi,yi)(x_i,y_i)

  3. 将数据输入感知机,若激活函数得到的结果yi(wxi+b)0y_i(w \cdot x_i + b) \leq 0,则为误分类点,更新w,bw,b

    ww+αyixiw \gets w + \alpha y_ix_i

    bb+αyib \gets b + \alpha y_i

  4. 转至2. ,直到训练集中无误分类点

示例:

image-20220821194037131

即对于x1(3,3)T,x2(4,3)Tx_1(3,3)^T,x_2(4,3)^Ty=1y=1x3(1,1)Tx_3(1,1)^Ty=1y=-1

  1. 选取初值w0=b0=0w_0=b_0=0α=1\alpha=1

  2. 对于x1(3,3)Tx_1(3,3)^T,得到sign(0)=0sign(0)=0,为误分类点

  3. 更新w,bw,bw1=w0+αy1x1=(3,3)Tw_1=w_0+\alpha y_1x_1=(3,3)^Tb1=b0+αy1=1b_1=b_0+\alpha y_1 = 1

  4. 选取x1,x2x_1,x_2均被更新后的感知机正确分类,对于x3(1,1)Tx_3(1,1)^T,得到sign(7)=1sign(7)=1,为误分类点

  5. 更新w,bw,bw2=w1+αy3x3=(2,2)Tw_2=w_1+\alpha y_3x_3=(2,2)^Tb2=b1+αy3=0b_2=b_1+\alpha y_3 = 0

  6. 以此类推,计算结果如下表:

    image-20220821195717386

参考资料

  • 《统计学习方法》- 李航
  • 《机器学习》 - 周志华