感知机(perceptron)

简介

感知机(Perceptron)由Rosenblatt在1957年提出,属于有监督学习,作为一种二分类的线性分类模型,它的目标是要将输入实例通过分离超平面将正负二类分离,并运用训练好的超平面模型预测新数据。

为何要学习这么“老”的感知机:

  1. 它是神经网络的基本单元。

  2. 与支持向量机有很多相通之处。

模型

定义:

感知机输入空间(特征空间) 为X \subseteq R^{n},输出空间为Y=\{+1,-1\}

从输入空间到输出空间的映射函数为f(x)=\operatorname{sign}(w \cdot x+b),其中w \in R^{n}b为常数

符号函数\operatorname{sign}(x)=\left\{\begin{array}{ll}+1, & x \geqslant 0 \\ -1, & x<0\end{array}\right.

感知机的几何解释:

线性方程w \cdot x+b=0对应于特征空间中的一个超平面S,其中 w 是超平面的法向量,b是超平面的截距。这个超平面将特征空间分为了两个部分。位于两部分的点(即特征向量)分别被分为正、负两类。S也被称之为分离超平面(separating hyperplane)。

通过这个2维图形就很容易理解感知机的作用了,利用已知数据找到一条能准确划分它们的线,并运用这条线来预测新数据。

需要注意的是几何解释的问题域是符号函数里的线性方程,如果训练数据是2维的,整个问题域需要用3维空间表示。

线性不可分问题

感知机只能处理线性可分问题,对于线性不可分问题需要多感知机--神经网络、非线性函数--支持向量机核技巧来处理。

策略

模型定义中,我们的未知量为wb。因此我们的目标就是要确定一个学习策略,即定义损失函数,并通过训练样本使其最小化来确定wb

感知机的思想是把误分类点到超平面S的总距离作为损失函数:

给定训练数据集T=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\},其中x_i为特征向量,y_i\in\{-1,1\}。任意点x_0到超平面S的距离公式为d=\frac{|w*x_0+b|}{||w||},其中||w||=\sqrt{w_1^2+w_2^2+...+w_n^2},即为L_2范数。

由于误分类点满足:y_i*(w*x_i+b)<0,即-y_i*(w*x_i+b)>0。因此误分类点x_i到超平面距离可转化为:-\frac{y_i*(w*x_i+b)}{||w||}

假设超平面S的误分类点集合为M,则误分类点到S的总距离为:-\frac{1}{||w||}\sum_{x_i \in M}{y_i*(w*x_i+b)}

式中\frac{1}{||w||}可以被忽略,因为感知机只需要得到正确分类,正确的超平面是个集合,感知机不关心这个集合里哪个更好,这种处理也会影响到迭代,但好的初值和学习率可以作为补偿,最主要的是忽略后可以简化计算,所以最终得到感知机的损失函数为:L(w,b)=-\sum_{x_i \in M}{y_i*(w*x_i+b)}

损失函数的另一个自然选择是误分类点的总数,但是,通过这种方式定义的损失函数对参数wb来说不是连续可导函数,不易于优化;通俗来说就是没有告诉机器如何更新超平面。

算法

感知机的求解过程实际上是上述损失函数的最优化问题,可以通过随机梯度下降法来求解。

任选一个超平面,然后用梯度下降法不断地极小化目标函数(损失函数)。极小化过程中一次随机选取一个误分类点使其梯度下降。

优化目标:min_{w,b}L(w,b)=-\sum_{x_i \in M}{y_i*(w*x_i+b)}

随机梯度(SGD)下降过程:

首先对w,b求偏导:\Delta_wL(w,b)=-\sum_{x_i \in M}{y_i*x_i}\Delta_bL(w,b)=-\sum_{x_i \in M}{y_i}

随机选取一个误分类点(x_i,y_i),对求解参数w,b进行更新:w\leftarrow w-\eta*(-y_i*x_i)=w+\eta*y_i*x_ib\leftarrow b-\eta*(-y_i)=b + \eta*y_i式中\eta(0\leq\eta\leq1)是步长,又称为学习率。

步骤流程:

(1) 初始化w_0,b_0

(2) 在训练集中选取数据(x_i,y_i)

(3) 若y_i*(w*x_i+b)<=0(误分类点),则进行参数更新:

w\leftarrow w+\eta*y_i*x_i

b\leftarrow b + \eta*y_i

(4) 转至(2),直到训练集没有误分类点。

对于线性方程组另一个容易想到的方法是最小二乘法,但在高维问题上此方法不易求解。

对偶形式

对偶形式是对算法的时间复杂度和空间复杂度的优化。

过程与原始形式相似;将要求解的参数w,b表示为x_i,y_i的线性组合形式,通过求解其系数从而求得w,b。 假设w_0,b_0=0,对于误分类点(x_i,y_i)通过w\leftarrow w+\eta*y_i*x_ib\leftarrow b + \eta*y_i进行更新。假设更新n次,则w,b关于(x_i,y_i)的增量分别是n_i*\eta*y_i*x_in_i*\eta*y_i。其中n_i 表示x_{i},y_{i}样本修改了n_{i}次。令\alpha_i =n_i * \etaw可表示成:w = \sum_{i=1}^{N}{\alpha_i*y_i*x_i}

误分类条件y_i*(\sum_{j=1}^{N}{\alpha_j*y_j*x_j}*x_i+b)\leq0,参数更新:\alpha_{i}\leftarrow\alpha_{i}+\eta,b\leftarrow b+\eta y_{i}

对偶中的训练集仅以内积形式出现。可以预先将训练集中实例间的内积计算出来并以矩阵的形式存储,这个矩阵就是所谓的Gram矩阵,需要时直接取用。

收敛性

结论:k \leq\left(\frac{R}{\gamma}\right)^{2}

其中,k为误分类次数, 即感知机算法的迭代次数。上式给出了迭代次数的上界。

\gamma=\min _{i}\left\{y_{i}\left(w_{o p t} \cdot x_{i}+b_{o p t}\right)\right\},已知数据集线性可分,则w_{o p t} \cdot x+b_{o p t}=0存在,

y_{i}\left(w_{o p t} \cdot x_{i}+b_{o p t}\right)>0,即\gamma是数据点x_{i}到超平面的最短距离。

R=\max _{1 \leq i \leq N}\left\|\hat{x}_{i}\right\|,表示离原点最远的数据点x_{i}的距离。

线性不可分判定

二维、三维图形是否重合,推广到多维。

待续......

学习率、初值选择

待续......

仿真

使用MathLabTool进行感知机仿真https://blog.youkuaiyun.com/xxyjskx1987/article/details/145545570

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值