感知机学习
📜

感知机学习

 

感知机简介


感知机是二元线性分类器,属于判别模型主要思想是通过寻找一个超平面来将输入空间(特征空间)中的实例划分为正负两类。
感知机的损失函数是所有误分类点到分离超平面的总函数间隔,采用随机梯度下降法进行优化。
感知机的学习算法有两种形式,原始形式和对偶形式。
 

感知机模型


f(x)=sign(wx+b)f(x)=sign(w\cdot x+b)
notion image
分离超平面
wx+b=0w\cdot x+b=0
notion image
 

感知机的学习策略


数据要求:线性可分
感知机要求数据集一定是线性可分的,即通过一个超平面能够将数据集的正实例点和负实例点全部准确的划分到超平面的两侧。
损失函数选择
  1. 误分类点总数
    1. 损失函数不是w、b的导数,不易优化
  1. 所有误分类点到超平面的总几何距离
    1. 1wxiMyi(wxi+b)-\frac{1}{||w||}\sum_{x_i \in M} y_i\left(w \cdot x_i+b\right)
  1. 所有误分类点到超平面的总函数间隔(即不考虑1/w)
    1. L(w,b)=xiMyi(wxi+b)L(w, b)=-\sum_{x_i \in M} y_i\left(w \cdot x_i+b\right)
 

感知机学习算法(原始形式)


随机梯度下降法
  1. 求损失函数对参数w,b的导数
    1. wL(w,b)=xiMyixibL(w,b)=xiMyi\begin{aligned}\nabla_w L(w, b) & =-\sum_{x_i \in M} y_i x_i \\\nabla_b L(w, b) & =-\sum_{x_i \in M} y_i\end{aligned}
  1. 随机选取一个误分类点(x_i, y_i)对参数进行更新
    1. w+ηyixiwb+ηyib\begin{aligned}&w+\eta y_i x_i \rightarrow w\\&b+\eta y_i \rightarrow b\end{aligned}
      通过迭代不断是损失函数减少到0
算法流程
notion image
 

感知机学习算法(对偶形式)


对偶形式的参数
设w,b关于(x_i,y_i)修改 η_i 次,记
αi=ηiη\alpha_i=\eta_i \eta
则参数w,b可表示为
w=i=1Nαiyixib=i=1Nαiyi\begin{aligned}&w=\sum_{i=1}^N \alpha_i y_i x_i\\&b=\sum_{i=1}^N \alpha_i y_i\end{aligned}
算法中关于w,b的更新可转化为 𝛼_i,b的更新
αi+ηαib+ηyib\begin{aligned}&\alpha_i+\eta \rightarrow \alpha_i\\&b+\eta y_i \rightarrow b\end{aligned}
对偶形式的优点
训练实例x_i,i=1,2,…仅以内积的形式出现,为了方便,可以预先存储矩阵
G=[xiyi]N×NG=[x_i\cdot y_i]_{N\times N}
 
算法流程
notion image
 

感知机学习算法性能

数据线性可分
算法收敛
存在无穷解;解依赖初值和随机点选择顺序
数据线性不可分
算法不收敛,发生震荡