【机器学习教程】感知机详解

【机器学习教程】感知机详解_第1张图片
今天小编给大家带来感知机算法的详解。感知机算法由Rosenblatt在1957年提出,是一类简单的线性判别算法,通过扩展又可以与许多其他算法密切相关。如逻辑回归模型、支持向量机、前馈神经网络(多层感知机)、线性判别分析等。因此感知机算法尽管很少单独使用,但它对于理解其他模型和算法非常有用,很适合作为开始机器学习的一个切入点,同时也是建立知识体系的一个枢纽。
本文首先简要介绍感知机,然后讲解感知机的模型、策略、算法,最后分析感知机算法与各个算法之间的联系并做出总结。

感知机能做什么

感知机是一种二分类模型,其输入为样本的特征向量,输出为样本的类别,取+1和-1二值。要得到正确的模型,感知机要求数据集本身线性可分:
在二维平面上,线性可分意味着能用一条直线将正、负样本分开;
在三维空间中,线性可分意味着能用一个平面将正、负样本分开;
在n维空间中,线性可分意味着能用n-1维超平面将正、负样本分开。
【机器学习教程】感知机详解_第2张图片

图1 二维平面上的线性可分与线性不可分

为了便于应用感知机算法,我们有时会使用一些技巧,使得线性不可分的样本在某些变换下成为线性可分。这些技巧包括将样本分离到更高维空间(图2)或投影到特定的方向(图3)等,这是另一大类方法,本文主要讲解一般的感知机,此处不详细展开讨论。

【机器学习教程】感知机详解_第3张图片图2 分离到高维空间实现线性可分
【机器学习教程】感知机详解_第4张图片图3 投影特定方向实现线性可分

感知机模型

  • 定义
    设输入空间(特征空间)为 X ⊆ R n X\subseteq\R^n XRn,输出空间为 Y = { − 1 , + 1 } Y=\{-1,+1\} 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(wx+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称为偏置。 s i g n sign sign是符号函数。
    感知机模型有直观的几何解释:线性方程 w x + b = 0 wx+b=0 wx+b=0 对应于分离超平面 S S S,其中 w w w S S S的法向量, b b b S S S的截距。求解感知机,就是要解出 w w w b b b,得到能正确分离所有正负样本的超平面 S S S(见图1).

感知机策略

为找出正确的分离超平面、确定感知机模型参数,需要确定一个学习策略。在监督学习中,使用某种策略即是选用相应的损失函数。
考虑以在S划分下误分类点的总数作为损失函数,该函数可以自然地监督感知机的分类性能,但它不是参数 w w w b b b的连续可导函数,不易优化。如图4,当超平面在空间中由 S 1 S1 S1连续变化至 S 3 S3 S3时,相应的法向量 w w w也连续变化,而误分类点数量则是不连续的。
【机器学习教程】感知机详解_第5张图片

图4 误分类点个数不连续变化

为此感知机采用的损失函数为:误分类点到超平面 S S S的总距离,该函数对 w w w b b b连续可导。
单个点 x i x_i xi到超平面 S S S的距离为 − 1 ∥ w ∥ ∣ w x i + b ∣ -\frac{1}{\Vert w \Vert}\vert wx_i+b \vert w1wxi+b,
对于误分类点数据 ( x i , y i ) (x_i,y_i) (xi,yi),有 − y i ( w x i + b ) > 0 -y_i(wx_i+b)>0 yi(wxi+b)>0,因为 y i y_i yi w x i + b wx_i+b wxi+b 异号
设超平面 S S S的误分类集合为 M M M,则所有误分类点到超平面 S S S的总距离为 − 1 ∥ w ∥ ∑ x i ∈ M y i ( w x i + b ) -\frac{1}{\Vert w \Vert}\sum_{x_i\in M}y_i(wx_i+b) w1xiMyi(wxi+b)
不考虑式中的 − 1 ∥ w ∥ -\frac{1}{\Vert w \Vert} w1,即得到感知机学习的损失函数。

  • 损失函数
    给定训练集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},其中 x i ∈ X = R n x_i\in X=\R^n xiX=Rn, y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N y_i\in Y=\{-1,+1\},i=1,2,...,N yiY={1,+1},i=1,2,...,N. 感知机学习的损失函数为 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)

易知损失函数是非负的,误分类点越少,误分类点离超平面越近,损失函数值就越小。如果没有误分类点,则损失函数值时0.
感知机学习的策略是在假设空间中选取使损失函数取值最小的模型参数。

感知机学习算法

原始形式

目标:感知机学习算法的原始形式是求解最优化问题 m i n 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) minw,bL(w,b)=xiMyi(wxi+b)其中 M M M为误分类点的集合。

算法:误分类驱动的随机梯度下降法
首先选取初始超平面 w 0 , b 0 w_0,b_0 w0,b0,然后计算在该参数取值处的梯度,用梯度下降法不断的极小化目标函数。极小化过程中,不是一次使用 M M M中所有误分类点计算梯度,而是一次随机选取一个误分类点使其梯度下降。设误分类点集合 M M M是固定的,则损失函数的梯度为: ∇ w L ( w , b ) = − ∑ x i ∈ M y i x i \nabla_w L(w,b)=-\sum_{x_i\in M}y_ix_i wL(w,b)=xiMyixi ∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w,b)=-\sum_{x_i\in M}y_i bL(w,b)=xiMyi由于采用随机梯度下降,一次随机选取一个误分类点 ( x i , y i ) (x_i,y_i) (xi,yi), w , b w,b w,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\leq\eta\leq1) η0η1称为学习率。
整理称为算法形式如下:

  • 算法1
    输入:线性可分的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},其中 x i ∈ X = R n x_i\in X=\R^n xiX=Rn, y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N y_i\in Y=\{-1,+1\},i=1,2,...,N yiY={1,+1},i=1,2,...,N. 学习率 η ( 0 ≤ η ≤ 1 \eta(0\leq\eta\leq1 η0η1
    输出:参数 w , b w,b w,b,感知机模型 f ( x ) = s i g n ( w x + b ) f(x)=sign(wx+b) f(x)=sign(wx+b)
    (1)选取初值 w 0 , b 0 w_0,b_0 w0b0
    (2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
    (3)如果 y i ( w x i + b ) ≤ 0 y_i(wx_i+b)\leq0 yi(wxi+b)0 w ← w + η y i x i , b ← b + η y i w\leftarrow w+\eta y_ix_i, b\leftarrow b+\eta y_i ww+ηyixi,bb+ηyi(4)转至(2),直至训练集中没有误分类点。

每次根据 ( x i , y i ) (x_i,y_i) (xi,yi)调整 w , b w,b w,b时,分离超平面将向该误分类点移动,以减少该误分类点与超平面的距离,越过该误分类点使其正确分类。
感知机学习算法的收敛性有定理保证,这里不再详细阐述,有兴趣的读者可以查阅相关资料。

对偶形式

感知机学习算法的原始形式是每一步直接更新参数 w , b w,b w,b,经过n步达到收敛。对偶形式的基本想法是,将 w w w b b b表示为实例 x i x_i xi和标记 y i y_i yi的线性组合的形式,通过求解其系数而求得 w w w b b b.假设初值 w 0 , b 0 w_0,b_0 w0,b0均为0,对误分类点 ( 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,设收敛过程中,第 i i i个点共修改了 n i n_i ni次,则 w , b w,b w,b关于 ( x i , y i ) (x_i,y_i) (xi,yi)的增量分别是 α i y i x i \alpha_i y_ix_i αiyixi α i y i \alpha_iy_i αiyi,其中 α i = n i η \alpha_i=n_i\eta αi=niη.对N个样本点上 w , b w,b w,b的增量求和,有 w = ∑ i = 1 N α i y i x i w=\sum_{i=1}^N\alpha_iy_ix_i w=i=1Nαiyixi b = ∑ i = 1 N α i y i b=\sum_{i=1}^N\alpha_iy_i b=i=1Nαiyi从而感知机可以写成由系数 α i , b \alpha_i,b αi,b表示的形式
f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=sign(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b) f(x)=sign(j=1Nαjyjxjx+b),上述过程整理为算法2.

  • 算法2
    输入:线性可分的训练数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),...,(x_N,y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},其中 x i ∈ X = R n x_i\in X=\R^n xiX=Rn, y i ∈ Y = { − 1 , + 1 } , i = 1 , 2 , . . . , N y_i\in Y=\{-1,+1\},i=1,2,...,N yiY={1,+1},i=1,2,...,N. 学习率 η ( 0 ≤ η ≤ 1 ) \eta(0\leq\eta\leq1) η0η1
    输出:参数 α , b \alpha,b α,b,感知机模型 f ( x ) = s i g n ( ∑ j = 1 N α j y j x j ⋅ x + b ) f(x)=sign(\sum_{j=1}^N\alpha_jy_jx_j\cdot x+b) f(x)=sign(j=1Nαjyjxjx+b),其中 α = ( α 1 , α 2 , . . . , α N ) T \alpha=(\alpha_1,\alpha_2,...,\alpha_N)^T α=(α1,α2,...,αN)T
    (1)取初值 α ← 0 , b ← 0 \alpha \leftarrow0,b\leftarrow0 α0,b0
    (2)在训练集中选取数据 ( x i , y i ) (x_i,y_i) (xi,yi)
    (3)如果 y i ( ∑ j = 1 N α j y j x j ⋅ x i + b ) ≤ 0 y_i(\sum_{j=1}^N\alpha_jy_jx_j\cdot x_i+b)\leq0 yi(j=1Nαjyjxjxi+b)0 α i ← α i + η \alpha_i\leftarrow\alpha_i+\eta αiαi+η b ← b + η y i b\leftarrow b +\eta y_i bb+ηyi(4)转至(2)中直到没有误分类数据。
    对偶形式算法的特点是, α i \alpha_i αi每步更新差值固定, α i \alpha_i αi越大更新次数越多,意味着 ( x i , y i ) (x_i,y_i) (xi,yi)离分离超平面越近,对学习结果的影响也最大。
    对偶形式中训练实例仅以内积形式出现,可以预先将实例间的内积计算出来并存储为矩阵,即Gram矩阵。
    G = [ x i ⋅ x j ] N × N G=[x_i\cdot x_j]_{N\times N} G=[xixj]N×NGram矩阵是 N × N N\times N N×N的对称矩阵

感知机与其他算法

感知机模型简单、易学习,是基本的机器学习模型,很多机器学习模型是在感知机模型的基础上变化扩展而得到的。
感知机模型由于其简单,在应用时也有一定的局限,主要体现在以下几点。

  • 感知机只能处理线性可分的数据集,线性不可分的数据集会引起分离超平面的震荡而无法收敛。
  • 感知机是误分类驱动的模型,模型的解不唯一。离群点对结果影响很大。
  • 感知机的判别模型由符号函数给出,无法表示更复杂的非线性映射。

为解决以上的局限性,其他算法从不同方向对感知机模型进行了扩展。

感知机与支持向量机

  • 相同点
    感知机与支持
    向量机都是求解能正确划分样例的超平面

  • 不同点
    感知机是误分类驱动的,其损失函数来源于误分类点到分离超平面的距离之和。数据集线性可分时,能正确划分样例的超平面有无穷多个。
    支持向量机不仅要求正确划分正负样例,还要求正负样例间隔最大,在最大间隔约束下,划分超平面(的法向量)有唯一解。

【机器学习教程】感知机详解_第6张图片图5 感知机
【机器学习教程】感知机详解_第7张图片图6 支持向量机

感知机优化目标:
m i n 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) minw,bL(w,b)=xiMyi(wxi+b) 支持向量机优化目标: m a x w , b d {max}_{w,b} d maxw,bd

感知机与逻辑回归

感知机与逻辑回归都是判别模型,都是对线性运算的结果进行判别,区别是采用了不同判别方式。

  • 感知机用符号函数进行判别:
    w ⋅ x + b → f ( x ) = s i g n ( w ⋅ x + b ) w\cdot x+b \rightarrow f(x)=sign(w\cdot x+b) wx+bf(x)=sign(wx+b)
  • 逻辑回归用对数几率进行判别:
    w ⋅ x + b = l o g p 1 − p → p = 1 1 + e − ( w ⋅ x + b ) w\cdot x+b=log \frac{p}{1-p}\rightarrow p=\frac{1}{1+e^{-(w\cdot x+b)}} wx+b=log1ppp=1+e(wx+b)1
    如果把神经元看成是对线性输入做非线性变换并输出的算法部件,则感知机和逻辑回归可以看成是两种不同的神经元,即采用了不同的非线性变换。

感知机与神经网络

当把感知机看成单个神经元时,该神经元的堆叠就形成了神经网络。最常用的前馈神经网络就是感知机分层堆叠而形成的,也叫多层感知机MLP.感知机的激活函数是阶跃函数(符号函数):
f ( x ) = s i g n ( x ) = { 1 , x > 0 − 1 , x ≤ 0 f(x)=sign(x)=\begin{cases}1, x>0\\-1,x\leq0\end{cases} f(x)=sign(x)={1,x>01,x0
目前常用神经网络的激活函数是线性整流函数(ReLU):
f ( x ) = R e L U ( x ) = { x , x > 0 − 1 , x ≤ 0 f(x)=ReLU(x)=\begin{cases}x, x>0\\-1,x\leq0\end{cases} f(x)=ReLU(x)={x,x>01,x0

【机器学习教程】感知机详解_第8张图片图7 感知机
【机器学习教程】感知机详解_第9张图片图8 MLP(图中每个神经元相当于一个感知机)

关于感知机算法的理论部分小编就介绍这么多,它的实现可以使用常用机器学习开源库sklearn中的模块MLPClassifier来完成。感兴趣的读者不妨去试试哦。
【机器学习教程】感知机详解_第10张图片

你可能感兴趣的:(【机器学习教程】感知机详解)