• 机器学习笔记之线性分类——感知机算法


    引言

    上一节介绍了线性回归模型的具体性质,本节将介绍线性分类中第一个具有代表性意义的算法——感知机算法(Perceptron)。

    回顾:线性回归与线性分类

    线性回归的模型(拟合方程)具体表示如下:
    f ( W , b ) = W T x ( i ) + b ( i = 1 , 2 , ⋯   , N ) f(\mathcal W,b) = \mathcal W^{T}x^{(i)} + b \quad(i = 1,2,\cdots,N) f(W,b)=WTx(i)+b(i=1,2,,N)
    其中 N N N表示数据集合中样本数量。从模型的角度观察,线性回归与线性分类的最根本区别是模型中是否包含非线性激活函数

    非线性激活函数的存在意义本质上是分类任务的需要。由于任务性质的不同:

    • 回归任务是 模型拟合样本。它的思路是模型如何精确描述真实样本的趋势。因此,它的策略(损失函数) 主要表示为 模型拟合结果 W T x ( i ) + b \mathcal W^{T}x^{(i)} +b WTx(i)+b与真实标签 y ( i ) y^{(i)} y(i)之间的差距信息
      L ( W ) = ∑ i = 1 N ∣ ∣ W T x ( i ) + b − y ( i ) ∣ ∣ 2 \mathcal L(\mathcal W) = \sum_{i=1}^N ||\mathcal W^{T}x^{(i)}+b - y^{(i)}||^2 L(W)=i=1N∣∣WTx(i)+by(i)2

    • 分类任务是 模型划分样本。不同于回归任务,此时的样本点并不存在某种趋势,而是聚集在不同的样本子空间中。因此,线性分类的思路是 模型 f ( W , b ) = W T x ( i ) + b f(\mathcal W,b) = \mathcal W^{T}x^{(i)} + b f(W,b)=WTx(i)+b p p p维样本子空间中产生的线(超平面),对样本空间进行划分,从而实现各样本在对应样本子空间的分类效果

    线性分类的类型

    激活函数的连续性对线性分类类型进行划分:

    • 硬分类:激活函数是非连续型函数
    • 软分类:激活函数是连续型函数

    二分类为例,真实标签结果 y ( i ) y^{(i)} y(i)只包含2个具体数值。例如:
    y ( i ) ∈ { − 1 , 1 } ( i = 1 , 2 , ⋯   , N ) y^{(i)} \in \{-1,1\}\quad (i=1,2,\cdots,N) y(i){1,1}(i=1,2,,N)

    • 硬分类中激活函数映射结果 y p r e d ( i ) = s i g n ( W T x ( i ) + b ) y_{pred}^{(i)} = sign(\mathcal W^{T}x^{(i)} + b) ypred(i)=sign(WTx(i)+b)真实标签结果的特征空间相同。即:
      y p r e d ( i ) ∈ { − 1 , 1 } ( i = 1 , 2 , ⋯   , N ) y_{pred}^{(i)} \in \{-1,1\} \quad (i=1,2,\cdots,N) ypred(i){1,1}(i=1,2,,N)
    • 软分类中激活函数映射结果是基于连续空间 [ 0 , 1 ] [0,1] [0,1]中的结果,其实际意义为选择上述两种真实标签的概率结果。即:
      其中 p p p表示’激活函数映射结果’ y p r e d ( i ) y_{pred}^{(i)} ypred(i)选择数值1的概率;
      { P ( y p r e d ( i ) = 1 ) = p P ( y p r e d ( i ) = − 1 ) = 1 − p
      {P(ypred(i)=1)=pP(ypred(i)=1)=1p" role="presentation" style="position: relative;">{P(ypred(i)=1)=pP(ypred(i)=1)=1p
      {P(ypred(i)=1)=pP(ypred(i)=1)=1p

    线性分类算法中:

    • 具有代表性的硬分类算法有感知机算法、线性判别分析(Linear Discriminant Analysis,LDA)
    • 具有代表性的软分类算法具体也分为两种:
      • 判别模型:代表模型有逻辑回归(Logistic Regression)
        判别模型的主要思路:直接求解 条件概率 P ( Y p r e d = − 1 ∣ X ) P(\mathcal Y_{pred}=-1 \mid \mathcal X) P(Ypred=1X) P ( Y p r e d = 1 ∣ X ) P(\mathcal Y_{pred}=1 \mid \mathcal X) P(Ypred=1X)之间的大小关系。其中 X , Y p r e d \mathcal X,\mathcal Y_{pred} X,Ypred分别表示样本集合预测标签的概率分布集合
      • 生成模型:代表模型有高斯判别分析(Gaussian Discriminant Analysis,GDA)
        生成模型的主要思路:使用贝叶斯定理 P ( Y p r e d ∣ X ) P(\mathcal Y_{pred} \mid \mathcal X) P(YpredX)分解为如下形式:
        P ( Y p r e d ∣ X ) = P ( X ∣ Y p r e d ) P ( Y p r e d ) P ( X ) P(\mathcal Y_{pred} \mid \mathcal X) = \frac{P(\mathcal X \mid \mathcal Y_{pred})P(\mathcal Y_{pred})}{P(\mathcal X)} P(YpredX)=P(X)P(XYpred)P(Ypred)
        由于样本集合 X \mathcal X X是给定的,因此可以将分母视为 X \mathcal X X的边缘概率分布,是常数;从而有
        P ( Y p r e d ∣ X ) ∝ P ( X ∣ Y p r e d ) P ( Y p r e d ) P(\mathcal Y_{pred} \mid \mathcal X) \propto P(\mathcal X \mid \mathcal Y_{pred})P(\mathcal Y_{pred}) P(YpredX)P(XYpred)P(Ypred)
        换句话说,就是给 Y p r e d \mathcal Y_{pred} Ypred一个先验信息 P ( Y p r e d ) P(\mathcal Y_{pred}) P(Ypred)通过求解 P ( X ∣ Y p r e d = − 1 ) P ( Y p r e d = − 1 ) P(\mathcal X \mid \mathcal Y_{pred}=-1)P(\mathcal Y_{pred} = -1) P(XYpred=1)P(Ypred=1) P ( X ∣ Y p r e d = 1 ) P ( Y p r e d = 1 ) P(\mathcal X \mid \mathcal Y_{pred} = 1)P(\mathcal Y_{pred} = 1) P(XYpred=1)P(Ypred=1)之间的大小关系来映射 P ( Y p r e d = 1 ∣ X ) P(\mathcal Y_{pred} = 1 \mid \mathcal X) P(Ypred=1X) P ( Y p r e d = − 1 ∣ X ) P(\mathcal Y_{pred} = -1 \mid \mathcal X) P(Ypred=1X)之间的大小关系

    本节将介绍硬分类算法中的感知机算法

    感知机算法(Perceptron)

    感知机算法作为线性分类中最简单的模型之一,它的模型表示如下:
    f ( W , b ) = s i g n ( W T x ( i ) + b ) ( i = 1 , 2 , ⋯   , N ) f(\mathcal W,b) = sign(\mathcal W^{T}x^{(i)} +b) \quad(i=1,2,\cdots,N) f(W,b)=sign(WTx(i)+b)(i=1,2,,N)
    其中:
    x ( i ) = ( x 1 ( i ) , x 2 ( i ) , ⋯   , x p ( i ) ) T W = ( w 1 , w 2 , ⋯   , w p ) T x^{(i)} = (x_1^{(i)},x_2^{(i)},\cdots,x_p^{(i)})^T \\ \mathcal W = (w_1,w_2,\cdots,w_p)^T x(i)=(x1(i),x2(i),,xp(i))TW=(w1,w2,,wp)T
    记作 x ( i ) ∈ R p , W ∈ R p , b ∈ R x^{(i)} \in \mathbb R^{p},\mathcal W \in \mathbb R^p,b \in \mathbb R x(i)Rp,WRp,bR s i g n sign sign函数被称为符号函数。它的定义如下:
    s i g n ( a ) = { 1 a ≥ 0 − 1 a < 0 sign(a) =

    {1a01a<0" role="presentation" style="position: relative;">{1a01a<0
    sign(a)={1a01a<0
    它的模型思路很简单:线性组合加一层硬输出的非线性激活函数,那么感知机的分类是基于什么思路实现的?换句话说:感知机算法的策略(损失函数)是什么?
    构建思想简单归纳为四个字:错误驱动

    • 在算法的初始状态,随机初始化模型参数 W i n i t ( W i n i t ∈ R p ) \mathcal W_{init}(\mathcal W_{init} \in \mathbb R^p) Winit(WinitRp)和偏置项 b i n i t ( b i n i t ∈ R ) b_{init}(b_{init} \in \mathbb R) binit(binitR),那么该模型参数会产生对应模型:
      f ( W i n i t , b i n i t ) = s i g n ( W i n i t T x ( i ) + b i n i t ) f(\mathcal W_{init},b_{init}) = sign(\mathcal W_{init}^{T}x^{(i)} + b_{init}) f(Winit,binit)=sign(WinitTx(i)+binit)
    • 样本和模型均已知的情况下,将所有样本 X = ( x ( 1 ) , x ( 2 ) , ⋯   , x ( N ) ) T \mathcal X = (x^{(1)},x^{(2)},\cdots,x^{(N)})^T X=(x(1),x(2),,x(N))T带入模型中,得到对应的预测结果 Y p r e d \mathcal Y_{pred} Ypred
      Y p r e d = ( y p r e d ( 1 ) y p r e d ( 2 ) ⋮ y p r e d ( N ) ) = ( s i g n ( W i n i t T x ( 1 ) + b i n i t ) s i g n ( W i n i t T x ( 2 ) + b i n i t ) ⋮ s i g n ( W i n i t T x ( N ) + b i n i t ) ) \mathcal Y_{pred} =
      (ypred(1)ypred(2)ypred(N))" role="presentation" style="position: relative;">(ypred(1)ypred(2)ypred(N))
      =
      (sign(WinitTx(1)+binit)sign(WinitTx(2)+binit)sign(WinitTx(N)+binit))" role="presentation" style="position: relative;">(sign(WinitTx(1)+binit)sign(WinitTx(2)+binit)sign(WinitTx(N)+binit))
      Ypred= ypred(1)ypred(2)ypred(N) = sign(WinitTx(1)+binit)sign(WinitTx(2)+binit)sign(WinitTx(N)+binit)

      观察这一组预测结果 { y p r e d ( i ) } ∣ i = 1 , 2 , ⋯   , N \{y_{pred}^{(i)}\}|_{i=1,2,\cdots,N} {ypred(i)}i=1,2,,N,判断 预测结果中每一个元素 y p r e d ( i ) y_{pred}^{(i)} ypred(i)与对应真实标签 y ( i ) y^{(i)} y(i)之间的关系
      r ( i ) = { 0 y p r e d ( i ) = y ( i ) 1 o t h e r w i s e r^{(i)} =
      {0ypred(i)=y(i)1otherwise" role="presentation" style="position: relative;">{0ypred(i)=y(i)1otherwise
      r(i)={0ypred(i)=y(i)1otherwise
    • 将所有 r ( i ) ( i = 1 , 2 , ⋯   , N ) r^{(i)}(i=1,2,\cdots,N) r(i)(i=1,2,,N)求和,求和结果 R \mathcal R R实际意义理解为:所有样本中被错误分类的样本数量
      R = ∑ i = 1 N r ( i ) \mathcal R = \sum_{i=1}^N r^{(i)} R=i=1Nr(i)
    • 那么, R \mathcal R R就可以定义为感知机算法的策略

    综上,根据上述的构建思想,我们重新观察符号函数

    • 线性计算结果 W T x ( i ) + b ≥ 0 \mathcal W^{T}x^{(i)} + b \geq 0 WTx(i)+b0时,我们给予 y p r e d ( i ) = 1 y_{pred}^{(i)} = 1 ypred(i)=1
    • 线性计算结果 W T x ( i ) + b < 0 \mathcal W^{T}x^{(i)} + b < 0 WTx(i)+b<0时,我们给予 y p r e d ( i ) = − 1 y_{pred}^{(i)} = -1 ypred(i)=1

    可以将上述逻辑归纳为:一旦 y ( i ) y^{(i)} y(i) W T x ( i ) + b \mathcal W^{T}x^{(i)} + b WTx(i)+b同号时,样本点 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))被正确分类;相反, y ( i ) y^{(i)} y(i) W T x ( i ) + b \mathcal W^{T}x^{(i)} + b WTx(i)+b异号时,样本点 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))被错误分类
    至此,感知机算法的策略(损失函数) 设计如下:
    实际意义为‘被错误分类样本的数量’。
    L ( W , b ) = ∑ i = 1 N I { y ( i ) ( W T x ( i ) + b ) < 0 } \mathcal L(\mathcal W,b) = \sum_{i=1}^N \mathcal I\{y^{(i)} \left(\mathcal W^{T}x^{(i)} + b\right) < 0\} L(W,b)=i=1NI{y(i)(WTx(i)+b)<0}
    其中 I \mathcal I I指示函数。其具体定义为:
    I = { 1 y ( i ) ( W T x ( i ) + b ) < 0 0 e l s e \mathcal I =

    {1y(i)(WTx(i)+b)<00else" role="presentation" style="position: relative;">{1y(i)(WTx(i)+b)<00else
    I={1y(i)(WTx(i)+b)<00else

    基于上述损失函数 L ( W ) \mathcal L(\mathcal W) L(W),参数 W , b \mathcal W,b W,b优化过程的缺陷

    • 参数 W , b \mathcal W,b W,b仅通过一个微小的变化得到 W + Δ W , b + Δ b \mathcal W + \Delta \mathcal W,b + \Delta b W+ΔW,b+Δb,可能使得部分样本的预测结果 y p r e d ( k ) : 0 → 1 y_{pred}^{(k)} :0 \to 1 ypred(k):01或者 y p r e d ( k ) : 1 → 0 ( k ∈ { 1 , 2 , ⋯   , N } ) y_{pred}^{(k)}:1 \to 0(k \in \{1,2,\cdots,N\}) ypred(k):10(k{1,2,,N}),这意味着 L ( W ) \mathcal L(\mathcal W) L(W)不可导
    • 从指示函数的角度观察,该函数是分段函数,该函数的值域在定义域范围内并不连续,因此符号函数不可导

    不可导意味着无法求解模型最优参数 W ^ , b ^ \hat {\mathcal W},\hat b W^,b^如何找到可导的损失函数?重新观察 y ( i ) ( W T x ( i ) + b ) < 0 y^{(i)}\left(\mathcal W^{T}x^{(i)} + b \right) < 0 y(i)(WTx(i)+b)<0的情况:

    • 基于上述逻辑,我们只是认为: ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))样本点是一个被错误分类的样本点。但由于 y ( i ) ( W T x ( i ) + b ) y^{(i)}(\mathcal W^{T}x^{(i)} + b) y(i)(WTx(i)+b)自身没有受到指示函数的限制,因此,它可以是任意负值结果
    • 基于该逻辑,在 y ( i ) ( W T x ( i ) + b ) < 0 y^{(i)}\left(\mathcal W^{T}x^{(i)} + b\right) <0 y(i)(WTx(i)+b)<0的条件下, y ( i ) ( W T x ( i ) + b ) y^{(i)}\left(\mathcal W^{T}x^{(i)} + b\right) y(i)(WTx(i)+b)自身数值是否存在具体意义?自然是存在意义的
    • 由于 ( x ( i ) , y ( i ) ) (x^{(i)},y^{(i)}) (x(i),y(i))是被错误分类的样本点, y ( i ) ( W T x ( i ) + b ) y^{(i)}\left(\mathcal W^{T}x^{(i)} + b\right) y(i)(WTx(i)+b)的值域是有界的 → ( − ∞ , 0 ) \to (-∞,0) (0)该值越趋近于零意味着模型预测结果越接近正确的方向。
      无限趋近于0意味着‘被错误分类的样本点’距离‘模型表示的直线’无限接近,但不会越过去,因为越过去就是‘分类正确的样本点’。
    • 因此,可以将损失函数直接修改为如下格式:
      D = { ( x ( i ) , y ( i ) ) ∣ y ( i ) ( W T x ( i ) + b ) < 0 } \mathcal D = \{(x^{(i)},y^{(i)}) \mid y^{(i)}\left(\mathcal W^{T}x^{(i)} + b \right) < 0\} D={(x(i),y(i))y(i)(WTx(i)+b)<0},即 所有被分类错误的样本点组成的集合;新的损失函数表示如下:
      负号的意思是将‘损失函数’将0从上界修改为下界,从而达到‘最小化损失函数’的效果。
      L ( W , b ) = ∑ ( x ( i ) , y ( i ) ) ∈ D − y ( i ) ( W T x ( i ) + b ) \mathcal L(\mathcal W,b) = \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} -y^{(i)}\left(\mathcal W^{T}x^{(i)} + b\right) L(W,b)=(x(i),y(i))Dy(i)(WTx(i)+b)

    此时的损失函数自然是连续的,想要求解最优参数 W ^ \hat {\mathcal W} W^,需要对 W \mathcal W W进行求导:
    ∂ L ( W , b ) ∂ W = ∇ W L ( W , b ) = ∑ ( x ( i ) , y ( i ) ) ∈ D − y ( i ) x ( i ) \frac{\partial \mathcal L(\mathcal W,b)}{\partial \mathcal W} = \nabla_{\mathcal W}\mathcal L(\mathcal W,b) = \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} -y^{(i)}x^{(i)} WL(W,b)=WL(W,b)=(x(i),y(i))Dy(i)x(i)

    观察求导结果发现, ∇ W L ( W , b ) \nabla_{\mathcal W}\mathcal L(\mathcal W,b) WL(W,b)结果中不含 W \mathcal W W项,无法直接求解最优参数 W ^ \hat {\mathcal W} W^。因此,这里算法部分使用随机梯度下降方法来迭代求解最优参数
    W ( t + 1 ) ← W ( t ) − λ ∇ W L ( W , b ) = W ( t ) + λ ∑ ( x ( i ) , y ( i ) ) ∈ D y ( i ) x ( i )

    W(t+1)W(t)λWL(W,b)=W(t)+λ(x(i),y(i))Dy(i)x(i)" role="presentation" style="position: relative;">W(t+1)W(t)λWL(W,b)=W(t)+λ(x(i),y(i))Dy(i)x(i)
    W(t+1)W(t)λWL(W,b)=W(t)+λ(x(i),y(i))Dy(i)x(i)

    下一节将介绍另一种基于硬分类的经典算法——线性判别分析(LDA)

    相关参考:
    机器学习-线性分类2-感知机

  • 相关阅读:
    【云原生 · Kubernetes】部署高可用 kube-controller-manager 集群
    多因素蚁群算法的移动机器人路径规划研究附Matlab代码
    移动硬盘显示要格式化怎么办?
    三、组件与数据交互
    Word控件Spire.Doc 【图像形状】教程(6): 如何在 C#、VB.NET 的 Word 文档中插入形状和形状组
    C++ - git 命令行
    Best practices for Grafana SLOs
    rtp流广播吸顶喇叭网络有源吸顶喇叭
    黑马VUE课程学习笔记
    Python基础教程:关于序列操作的方式方法
  • 原文地址:https://blog.csdn.net/qq_34758157/article/details/126507387