感知机(perceptron)是一种线性分类算法,通常用于二分类问题。感知机由Rosenblatt在1957年提出,是神经网络和支持向量机的基础。通过修改损失函数,它可以发展成支持向量机;通过多层堆叠,它可以发展成神经网络。因此,虽然现在已经不再广泛使用感知机模型了,但是了解它的原理还是有必要的。

先来举一个简单的例子。比如我们可以通过某个同学的智商和学习时间(特征)来预测其某一次的考试成绩(目标),如果考试成绩在60分以上即为及格,在60分以下为不及格。这和线性回归类似,只不过设定了一个阈值,使得其可以处理分类问题。

因此,我们定义:给定特征向量x=([x1,x2,...,xn])T以及每个特征的权重w=([w1,w2,...,wn])T,目标y共有正负两类。那么:

对于某个样本,如果其 wx > 阈值(threshold),那么将其分类到正类,记为y=+1;

如果其 wx < 阈值(threshold),那么将其分类到负类,记为y=-1;

(注:wx是特征向量和权重向量的点积/内积,wx=w1x1+w2x2+...+wnxn

也就是说,上式分为两种情况:wx - 阈值(threshold)> 0 或 wx - 阈值(threshold)< 0。我们可以将目标方程式简写成:y=sign(wx+b+),对y的估计就是

(注:sign是符号函数)

wx+b=0对应于特征空间中的一个超平面,用来分隔两个类别,其中w是超平面的法向量,b是超平面的截距。

(这里需要用到线性代数的知识点。如果一非零向量垂直于一平面,这个向量就叫做该平面的法线向量,简称法向量。假设在二维空间,一条直线可以由一个点和法向量确定。其点法式方程为。)

为了便于叙述,把b并入权重向量w,记作,特征向量则扩充为。这样我们可以把对y的估计写成:。(为了简便的缘故,下面还是都写成f(x)=sign(wx))

我们希望能找出这样一个超平面(当然在二维空间是找到一条直线),使得所有样本都能分类正确。那么应该怎么做呢?一个自然的想法就是先随意初始化一个超平面,如果出现分类错误的现象,那么我们再将原来的这个超平面进行修正,直至所有样本分类正确。从一定程度上讲,人类就是如此进行学习的,发现错误即改正,所以说感知机是一个知错能改的模型。

错误分为两种情况:

一种情况是错误地将正样本(y=+1)分类为负样本(y=-1)。此时,wx<0,即w与x的夹角大于90度,因此修正的方法是让夹角变小,可以把w向量减去x向量,也就是将w修正为w+yx。

另一种情况是错误地将负样本(y=-1)分类为正样本(y=+1)。此时,wx>0,即w与x的夹角小于90度,因此修正的方法是让夹角变大,可以把w向量加上x向量,也就是将w修正为w+yx。

    

可以看到,这两种情况下修正的方式都是相同的,因此,我们可以通过不断迭代,最终使超平面做到完全分类正确。我们将PLA(Perceptron Linear Algorithm,即线性感知机算法)简单总结如下:

1,初始化w

2,找出一个分类错误点

3,修正错误,假设迭代次数为t次(t=1,2,...),那么修正公式为:

4,直至没有分类错误点,返回最终的w

下面是台湾大学林轩田老师在《Machine Learning Foundation》中提到的示例,用来说明感知机算法。

首先,用原点到x1点的向量作为wt的初始值。

分类直线与wt垂直,可以看到,有一个点x3被分类错误,本来是正类,却被分到了负类,因此我们需要使wt与x3之间的夹角变小,wt更新为wt+1

不断修正,直至完全分类正确。

从另一个角度来看,我们只要确定了参数w,也就可以找到这个分离超平面。和其他机器学习模型类似,我们首先定义损失函数,然后转化为最优化问题,可以用梯度下降等方法不断迭代,最终学习到模型的参数。

我们很自然地会想到用错误分类点的总数来作为损失函数,也就是让错误分类点的总数最小:。但是根据林轩田老师所说,这是一个NP Hard问题,是无法解决的。

既然不能用错误分类点的总数作为损失函数,那么只能寻找其它表现形式。感知机算法选择将所有错误分类点距离分离超平面的总距离作为损失函数,也就是要让错误分类点距离超平面的总长度最小。

这个总长度是怎么来的呢?

首先,输入空间Rn中任意一点x0到超平面S的距离为:

对于错误分类点(xi,yi)来说:

因此,错误分类点xi到超平面S的距离可以写成:

假设超平面的错误分类点的集合为M,那么所有的错误分类点到超平面S的总距离为:
不考虑 ||w|| ,就得到感知机学习的损失函数:

(注:为什么不考虑 ||w|| ?因为感知机算法最终并不关心超平面离各点的距离有多少,只是关心最后是否已经完全分类正确,所以在最后才可以不考虑||w||。)

然后就是使用随机梯度下降法(SGD)不断极小化损失函数。损失函数L(w,b)的梯度由以下式子给出(对w,b分别求偏导):

随机选取一个误分类点(xi,yi),对w,b进行更新:

直至超平面能够完全分类正确,返回w,b。这和上面说的方法其实是一样的。

算法看起来很简单是吧?但是还有几个小细节我们需要考虑。

  • 分离超平面是否只有一个?显然,如果我们把上面林轩田老师示例里的这个分类直线稍微倾斜一点,新的直线也还是可以完全分类正确的。也就是说,感知机算法的解不止一个,这主要取决于w初始值和分类错误点的选择。
  • 使用感知机算法是否需要满足某种假设?由于感知机算法是线性分类器,因此数据必须线性可分(linear seperable),否则,感知机算法就无法找到一个完全分类正确的超平面,算法会一直迭代下去,不会停止。
  • 假如数据满足线性可分这一假设,那么是否经过T次迭代,感知机算法一定能停止呢?也就是说,感知机算法最后是否一定能收敛,会不会产生循环重复的问题。答案是会收敛。感知机算法收敛性的证明可见:http://txshi-mt.com/2017/08/03/NTUML-2-Learning-to-Answer-Yes-No/。
  • 我们现在知道感知机算法最终一定会停下来,但是多久会停呢?由于T和目标参数wf有关,而wf是未知的,因此我们不知道T最大是多少。

上面讨论的是数据完美线性可分的情况,那么如果数据线性不可分呢?现实中,很多时候都存在两个分类的数据混淆在一起的情况,PLA显然解决不了这样的问题。那么怎么办呢?其实只需把感知机算法稍微修改一下,找到一个犯错最少的超平面即可。具体的做法就是在寻找的过程中把最好的超平面记住(放在口袋里),因此这被称之为口袋算法(Pocket Algorithm)。

Pocket Algorithm简单总结如下:

1,初始化w,把w作为最好的解放入口袋

2,随机找出一个分类错误点

3,修正错误,假设迭代次数为t次(t=1,2,...),那么修正公式为:

4,如果wt+1比w犯的错误少,那么用wt+1替代w,放入口袋

5,经过t次迭代后停止,返回口袋里最终的结果

转载于:https://www.cnblogs.com/HuZihu/p/10745575.html

机器学习---感知机(Machine Learning Perceptron)相关推荐

  1. Coursera公开课笔记: 斯坦福大学机器学习第十一课“机器学习系统设计(Machine learning system design)”

    Coursera公开课笔记: 斯坦福大学机器学习第十一课"机器学习系统设计(Machine learning system design)" 斯坦福大学机器学习斯坦福大学机器学习第 ...

  2. Domain adaptation:连接机器学习(Machine Learning)与迁移学习(Transfer Learning)

    domain adaptation(域适配)是一个连接机器学习(machine learning)与迁移学习(transfer learning)的新领域.这一问题的提出在于从原始问题(对应一个 so ...

  3. 机器学习(Machine Learning)大家

    原文:http://blog.tianya.cn/blogger/post_read.asp?BlogID=272727&PostID=15814815 机器学习(Machine Learni ...

  4. 机器学习(Machine Learning)——深度学习(Deep Learning)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/abcjennifer/article/ ...

  5. [转载] 跟着吴恩达学机器学习(Machine Learning) on Coursera 第一天

    参考链接: Python线性回归的波士顿房屋Kaggle挑战 | 机器学习 Machine Learning 观看了吴恩达教授讲解的supervised and unsupervised learni ...

  6. Splunk机器学习应用(Machine Learning Toolkit)

    本文主要从 Splunk内置的命令和应用两个部分介绍了一些实用的机器学习的小诀窍,抛砖引玉,希望能和大家一起探讨如何让Splunk变得更加聪明. 1.概览 机器学习可以简单地看作一个从数据中自动分析获 ...

  7. 机器学习(Machine Learning)入门科普

    =======================国外==================== Machine Learning 大家(1):M. I. Jordan (http://www.cs.ber ...

  8. 机器学习(MACHINE LEARNING)Sklearn全高级使用(看不懂你来打我!)

    文章目录 1 正规化 Normalization 1.1 数据标准化 1.2 数据标准化对机器学习成效的影响 2 检验神经网络 (Evaluation) 2.1 误差曲线 2.2 准确度曲线 2.3 ...

  9. 机器学习(Machine Learning,ML)

    一.基本概述 人工智能大师Herb Simon对于学习是这样定义的: 学习:系统在不断重复的工作中对本身能力的增强或改进,使得系统在下一次执行相同任务或者类似任务(指的是具有相同分布的任务)时,比现在 ...

最新文章

  1. error: xxxx.o: Relocations in generic ELF (EM: 3)解决办法
  2. 自学习 与 无监督特征学习
  3. TCP/IP详解--第六章
  4. 5种JavaScript中常用的排序方法
  5. 如何高效地学习和工作:计算机行业人员出门便携装备推荐
  6. Android 节操视频播放器jiecaovideoplayer自定义播放音频使用:屏蔽全屏按钮,增加倒计时,当前时间/总时间
  7. 【C++学习笔记二】C++继承
  8. [性能测试] LoadRunner结果分析 – TPS
  9. 一些Chrome 调试小技巧汇总
  10. 22.C++- 继承与组合,protected访问级别
  11. 【BZOJ3143】游走,概率计算+高斯消元
  12. 使用DataBinding的Android SearchView示例教程
  13. linux运行多线程语句,linux多线程中使用system函数后时而程序崩溃,求助!!!...
  14. centos修改用户密码图形化
  15. Egret MovieClip2
  16. 七、torch.nn
  17. 计算机网络各层设备及作用
  18. 网易公司创始人兼CEO丁磊:独家版权偏离了传播的初衷,已陷入资本运作的怪圈...
  19. JAVA已知圆心经纬度和半径求圆周点的经纬度
  20. 网页整体放大/缩小的实现

热门文章

  1. gff文件用什么打开_GFF格式、psl格式、GBrowse介绍及其它可视化工具
  2. 电竞游戏耳机哪个好用?和平精英吃鸡耳机排行榜
  3. 国开电大中国近现代史纲要终结性考试一二三
  4. 全球著名IT公司名字的由来
  5. Soot中基础的数据结构
  6. 2021-01-28 英文写作中的“因此”
  7. jquery中单引号和双引号的问题
  8. 此处不允许使用特性 transaction-manager
  9. Oracle-SQL
  10. NFT及OpenSea交易背后的技术分享