机器学习笔记——感知机【图文,详细推导】

机器学习笔记

第一章 机器学习简介
第二章 感知机


文章目录

  • 机器学习笔记
  • 一、超平面
  • 二、感知机定义
  • 三、学习策略和学习算法
    • 1 线性可分
    • 2 损失函数定义
    • 3 优化算法—SGD
    • 4 算法收敛性
  • 四、感知机的缺点
  • 参考资料


感知机(PLA)是 1957 年,由 Rosenblatt 提出会,是神经网络和支持向量机的基础。PLA 全称是 Perceptron Linear Algorithm,即线性感知机算法,属于一种最简单的感知机模型。感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取值为+1和-1。

一、超平面

首先我们来介绍一下什么是超平面,超平面是具有下面形式的集合:
Ω = { x ∣ a T x = b } , 其中 a ∈ R n , a ≠ 0 且 b ∈ R \Omega=\{x|a^Tx=b\} ,其中 a\in R^n,a≠0 且 b\in R Ω={xaTx=b},其中aRn,a=0bR超平面是关于 x x x的非平凡线性方程组的解空间。为了从几何上来直观理解,首先, 我们选取这样的一点 x 0 x_0 x0 , 使得 a T x 0 = b a^T x_0=b aTx0=b(若不存在这样的 x 0 x_0 x0, Ω \Omega Ω为空集),然后我们对原式做如下变换:
a T x = b ⇒ a T x − b = 0 ⇒ a T x − a T x 0 = 0 ⇒ a T ( x − x 0 ) = 0 \begin{aligned} & a^T x=b \\ \Rightarrow\quad &a^T x-b=0 \\ \Rightarrow\quad& a^T x-a^T x_0=0 \\ \Rightarrow\quad& a^T\left(x-x_0\right)=0 \end{aligned} aTx=baTxb=0aTxaTx0=0aT(xx0)=0
也就是说, x x x 代表所有与 a a a 内积为 b 的向量组成的集合, x − x 0 x−x_0 xx0 代表所有与 a a a 内积为0的向量组成的集合。那么,在二维条件下,我们先尝试构造出 x − x 0 x−x_0 xx0 a a a 的几何表示:

机器学习笔记——感知机【图文,详细推导】_第1张图片

橙色线上的点与原点构成的向量即为 x − x 0 x-x_0 xx0,那么 x = ( x − x 0 ) + x 0 x=(x-x_0 )+x_0 x=(xx0)+x0(相对于黄色的线平移 x 0 x_0 x0),如下图所示:

机器学习笔记——感知机【图文,详细推导】_第2张图片

由图可知红色直线上的点到 a a a向量方向的投影 ∣ x ∣ cos ⁡ θ |x|\cos\theta xcosθ为一个定值,故 < a , x > = ∣ a ∣ ∣ x ∣ cos ⁡ θ = b =|a||x|\cos\theta=b <a,x>=a∣∣xcosθ=b.

二、感知机定义

假设输入空间(特征空间)是 X ⊆ R n \mathcal{X}\subseteq R^n XRn, 输出空间是 Y = { + 1 , − 1 } \mathcal{Y}=\{+1,-1\} Y={+1,1}。输入 x ∈ X x\in\mathcal{X} xX 表示实例的特征向量,对应于输入空间(特征空间)的点;输出 y ∈ Y y\in\mathcal{Y} yY 表示实例的类别。由输入空间到输出空间的如下函数
f ( x ) = sign ⁡ ( w ∙ x + b ) f(x)=\operatorname{sign}(w\bullet x+b) f(x)=sign(wx+b) 称为感知机。

其中:

  • w w w b b b 为感知机模型参数(超平面参数), w ∈ R n w\in R^n wRn 叫作权值, b ∈ R b\in R bR 叫作偏置;
  • w ⋅ x w\centerdot x wx 表示 w w w x x x 的内积;
  • sign 是符号函数,即 sign ⁡ ( x ) = { + 1 , x ≥ 0 , − 1 , x < 0. \operatorname{sign}(x)=\begin{cases}+1,\quad x\geq0, \\ -1,\quad x < 0. \end{cases} sign(x)={+1,x0,1,x<0.
  • 感知机对应的超平面 w x + b = 0 wx+b=0 wx+b=0称为分离超平面

也就是说,我们想用一个超平面将两类点分开,如下图所示,黑色点和红色的是两类标签取值不同的点,我们可以用直线将其“分开”.
机器学习笔记——感知机【图文,详细推导】_第3张图片

感知机是受生物学上的启发创造的,可以类比我们大脑的神经元。神经元通过树突、轴突等接受信号、处理信号,然后将信号在输出。为了模拟机器来实现这样一个过程,那么感知机就构建了一个类似的结构:

机器学习笔记——感知机【图文,详细推导】_第4张图片

上面的神经元的激活函数取符号函数(sign),便得到感知机模型。而在神经网络结构里,前馈神经网络也是由这样一个个神经元构成,只不过激活函数一般取sigmoid函数、tanh函数等。(见多层感知机与反向传播)

三、学习策略和学习算法

1 线性可分

在二维空间上,两类点被一条直线(高维空间叫超平面)完全分开叫做线性可分:

机器学习笔记——感知机【图文,详细推导】_第5张图片

严格的数学定义是:

D 0 D_{0} D0 D 1 D_{1} D1 n \mathrm{n} n 维欧氏空间中的两个点集,如果存在 n \mathrm{n} n 维向量 w \mathrm{w} w 和实数 b \mathrm{b} b, 使得:

  1. 所有属于 D 0 D_{0} D0 的点 x i x_{i} xi 都有 w x i + b > 0 w x_{i}+b>0 wxi+b>0
  2. 而对于所有属于 D 1 D_{1} D1 的点 x j x_{j} xj 则有 w x j + b < 0 w x_{j}+b<0 wxj+b<0, 则我们称 D 0 D_{0} D0 D 1 D_{1} D1 线性可分
  3. 从二维扩展到多维空间中时, 将 D 0 D_{0} D0 D 1 D_{1} D1 完全正确地划分开的 w x + b = 0 w x+b=0 wx+b=0 就成了一个超平面。

如果数据不是线性可分的,那么便不能用感知机进行分类,见第四节的讨论(感知机不能表示异或函数)。

2 损失函数定义

假设数据集是线性可分的,接下来需要定义损失函数,我们注意到:

  • x i x_i xi ( w , b ) (w,b) (w,b)正确分类,则 y i ( w ⋅ x i + b ) > 0. y_i(w\cdot x_i+b)>0. yi(wxi+b)>0.(给定 w w w b b b很容易判断误分类点)
  • 对误分类的数据 ( x i , y i ) (x_i,y_i) (xi,yi)
    − y i ( w ⋅ x i + b ) > 0 -y_i(w\cdot x_i+b)>0 yi(wxi+b)>0可以作为 x i x_i xi 被误分类的损失.

设误分类的点集为M,则考虑: ∑ x i ∈ M − y i ( w ⋅ x i + b ) . \sum\limits_{x_i\in M}-y_i(w\cdot x_i+b). xiMyi(wxi+b). 感知机 f ( x ) = sign ⁡ ( w ⋅ x + b ) f(x)=\operatorname{sign}(w\cdot x+b) f(x)=sign(wx+b)学习的损失函数定义为:
L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) . L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b). L(w,b)=xiMyi(wxi+b).由这个定义我们知:

  1. 损失函数是非负的(因为只计算误分类点);
  2. 若没有误分类点,损失函数为0,所以一个自然的想法就是最小化损失函数。

有了损失函数,感知机的学习问题转化为如下最优化问题,给定训练数据集
D = { ( x i , y i ) } i = 1 N , D=\left\{\left(x_i, y_i\right)\right\}_{i=1}^N, D={(xi,yi)}i=1N,

求参数 w w w b b b 为如下优化问题的解:
min ⁡ w , b L ( w , b ) . \min _{w, b} L(w, b). w,bminL(w,b).

3 优化算法—SGD

由上面对感知机问题的分析知,感知机模型的求解是一个无约束优化问题,可以采用随机梯度下降法。梯度下降法的基本思想:负梯度方向是函数值下降最快的方向.若误分类的点集 M M M固定, L ( w , b ) L(w,b) L(w,b)的梯度由如下给出:
∇ w L = − ∑ x i ∈ M y i x i ∇ b L = − ∑ x i ∈ M y i . \begin{aligned} \nabla_wL &=-\sum_{x_i\in M}y_ix_i\\ \nabla_bL &=-\sum_{x_i\in M}y_i. \end{aligned} wLbL=xiMyixi=xiMyi.随机梯度下降法(SGD)的核心思想是
随机选取一个误分类点 ( x i , y i ) (x_i,y_i) (xi,yi),对参数进行更新
:
w = w − η ∇ w L , b = b − η ∇ b L , = w + η y i x i . = b + η y i . \begin{aligned} w &= w-\eta\nabla_wL,& b &=b-\eta\nabla_bL,\\ &=w+\eta y_ix_i .& &=b+\eta y_i. \end{aligned} w=wηwL,=w+ηyixi.b=bηbL,=b+ηyi.其中 η ( 0 < η ≤ 1 ) \eta(0<\eta\leq1) η(0<η1)是步长 (或学习率)。通过迭代,使 L ( w , b ) L(w,b) L(w,b)不断减小,直至为0.

机器学习笔记——感知机【图文,详细推导】_第6张图片

由学习算法知,迭代次数主要和误分类点有关,下面给出这个算法的收敛性分析。

4 算法收敛性

为了表述方便,令 w + = ( w T , b ) T , x + = ( x T , 1 ) T . w^+=(w^T,b)^T,x^+=(x^T,1)^T. w+=(wT,b)T,x+=(xT,1)T.下面给出收敛性定理,证明见参考资料.

Novikoff定理

设训练数据集 D = { ( x i , y i ) } i = 1 N D=\left\{\left(x_i, y_i\right)\right\}_{i=1}^N D={(xi,yi)}i=1N 是线性可分的,其中 x i ∈ X = R n , y i ∈ Y = { + 1 , − 1 } x_i \in \mathcal{X}=\mathrm{R}^n, y_i \in \mathcal{Y}=\{+1,-1\} xiX=Rn,yiY={+1,1}, 则

  1. 存在满足 ∥ w o p t + ∥ = 1 \left\|w_{o p t}^{+}\right\|=1 wopt+ =1 的超平面 w o p t + ⋅ x + = 0 w_{o p t}^{+} \cdot x^{+}=0 wopt+x+=0 将训练数据集完全正确分开;
  2. 存在 γ > 0 \gamma>0 γ>0 ,对所有 i ≥ 1 , y i w o p t + ⋅ x i + ≥ γ i \geq 1, y_i w_{o p t}^{+} \cdot x_i^{+} \geq \gamma i1,yiwopt+xi+γ;
  3. R = max ⁡ 1 ≤ i ≤ N ∥ x i + ∥ R=\max\limits_{1 \leq i \leq N}\left\|x_i^{+}\right\| R=1iNmax xi+ , 则感知机算法在训练集上的误分类次数 k k k 满足: k ≤ ( R γ ) 2 k \leq\left(\frac{R}{\gamma}\right)^2 k(γR)2.

上述定理表明,误分类次数有上界,所以算法会在有限次迭代后终止。

四、感知机的缺点

Minsky 与Papert指出: 因为感知机是线性模型,所以不能表示复杂的函数如异XOR 。

这里给出证明,我们考虑只有两个变量的情况,异或运算的规则如下:

x 1 x_1 x1 x 2 x_2 x2 x 1 ⊕ x 2 x_1\oplus x_2 x1x2
0 0 0
0 1 1
1 0 1
1 1 0

其实在图上画出异或函数的四个点,很明显能看出不能用一条线分开这两类点:
机器学习笔记——感知机【图文,详细推导】_第7张图片

为了严谨给出严格的数学证明。考虑如下的感知机模型:
f ( x ) = sign ⁡ ( w T x + b ) f(\boldsymbol{x}) = \operatorname{sign}(\boldsymbol{w}^T\boldsymbol{x} + b) f(x)=sign(wTx+b)
其中 x = ( x 1 , x 2 ) T \boldsymbol{x} = (x_1,x_2)^T x=(x1,x2)T, w = ( w 1 , w 2 ) T \boldsymbol{w} = (w_1,w_2)^T w=(w1,w2)T sign ⁡ ( x ) = { 1 , x ≥ 0 − 1 , x < 0 \operatorname{sign}(x) = \begin{cases} 1, & x \geq 0 \\ -1, & x < 0 \end{cases} sign(x)={1,1,x0x<0.接下来我们证明感知机不能表示异或。

反证法.假设感知机可以模拟异或运算,则必须满足:

  • x = ( 0 , 0 ) T \boldsymbol{x}=(0,0)^T x=(0,0)T时,有 f ( x ) = 0 f(\boldsymbol{x}) = 0 f(x)=0,从而 b < 0 b<0 b<0;
  • x = ( 1 , 0 ) T \boldsymbol{x}=(1,0)^T x=(1,0)T时,有 f ( x ) = 1 f(\boldsymbol{x}) = 1 f(x)=1,从而 w 1 > − b > 0 w_1>-b>0 w1>b>0;
  • x = ( 0 , 1 ) T \boldsymbol{x}=(0,1)^T x=(0,1)T时,有 f ( x ) = 1 f(\boldsymbol{x}) = 1 f(x)=1,从而 w 2 > − b > 0 w_2>-b>0 w2>b>0;
  • 但是,当 x = ( 1 , 1 ) T \boldsymbol{x}=(1,1)^T x=(1,1)T时,有: f ( x ) = sign ⁡ ( w 1 + w 2 + b ) = 1 f(\boldsymbol{x}) = \operatorname{sign}(w_1+w_2+b) = 1 f(x)=sign(w1+w2+b)=1,与 x 1 ⊕ x 2 = 0 x_1\oplus x_2=0 x1x2=0矛盾。

因此,原假设不成立,感知机无法模拟异或逻辑运算。

这也是为什么在神经网络里面,要引入非线性的激活函数,使得模型更复杂,表达能力更强。

参考资料

  1. 李航. 机器学习方法. 清华大学出版社, 2022.

你可能感兴趣的:(机器学习,机器学习,笔记,人工智能)