机器学习算法 原理、实现与实践  —— 感知机

感知机(perceptron)是二分类的线性分类模型,输入为特征向量,输出为实例的类别,取值+1和-1。感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,引入了基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。

1. 感知机模型

假设输入空间(特征空间)是$\mathcal{X}\subset R^n$,输出空间是$\mathcal{Y}=\{-1,+1\}$。输入$x\in\mathcal{X}$表示实例的特征向量,对就于输入空间的点;输出$y\in\mathcal{Y}$表示实例的类别。由输入空间到输出空间的映射函数

$$f(x) = sign(w\cdot x+b)$$

称为感知机。其中,$w$和$b$为感知机的模型参数,$w\in R^n$叫作权值或权值向量,$b\in R$叫作偏置。$w\cdot x$表示内积。$sign$是符号函数,即

$$sign(x) = \begin{cases}+1, & x\ge0 \\  -1,& x < 0 \end{cases}$$

感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器,即函数集合$\{f|f(x) = w\cdot x+b\}$。

感知机有如下几何解释:线性方程

$$w\cdot x+b = 0$$

对应于特征空间$R^n$中的一个超平面S,其他$w$是超平面的法向量,$b$是超平面的截距。这个超平面将特征空间划分为两个部分。位于两部分的点(特征向量)分别被分为正、负两类。因此,超平面S称为分离超平面(separating hyperplane)。

感知机学习的任务可以描述为:由训练数据集(实例的特征向量及类别)

$$T={(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)}$$

其中$x_i\in\mathcal{X}=R^n,\ y_i\in\mathcal{Y}=\{-1,+1\},\ i=1,2,\dots,N$,求得感知机模型,即求得模型参数$w,b$。感知机预测,通过学习到的感知机模型,对于新的输入实例给出其对应的输出类别。

2. 感知机的学习策略

假设训练数据集是线性可分的,感知机学习的目标就是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面。为了找出这样的超平面,即确定感知机的模型模型参数$w,b$,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。

损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数$w,b$的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面S的总距离,这是感知机所采用的。为此,首先写出输入空间$R^n$中任一点$x_0$到超平面S的距离。

$$\frac{1}{||w||}|w\cdot x_i +b|$$

这里,$||w||$是$w$的$L_2$范数。

其次,对于误分类的数据$(x_i,y_i)$来说

$$-y_i(w\cdot x_i +b) > 0$$

成立。所以误分类点$x_i$到超平面S的距离转化为

$$ - \frac{1}{||w||}y_i(w\cdot x_i +b)$$

这样,假设超平面S的误分类点集合为$M$,那么所有误分类点到超平面S的总距离为

$$- \frac{1}{||w||}\sum_{x_i\in M}y_i(w\cdot x_i +b)$$

忽略前面的系数$1/||w||$,就得到感知机学习的损失函数。

给定训练数据集

$$T={(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)}$$

其中$x_i\in\mathcal{X}=R^n,\ y_i\in\mathcal{Y}=\{-1,+1\},\ i=1,2,\dots,N$。感知机$sign(w\cdot x +b)$学习的损失函数定义为

$$L(w,b) = -\sum_{x_i\in M}y_i(w\cdot x_i + b)$$

其中$M$为误分类点的集合。这个损失函数就是感知机学习的经验风险函数。感知机学习的策略就是在假设空间中选择使损失函数$L(w,b)$最小的模型参数。

3. 感知机学习算法

感知机学习问题转化为求解损失函数最优化问题,最优化的方法是随机梯度下降法。

感知机学习算法是误分类驱动的,具体采用随机梯度下降算法(stochastic gradient descent)。首先,任意选择一个超平面$w_0,b_0$,然后用梯度下降法不断地极小化目标函数。极小化过程中不是一次使$M$中所有误分类点的梯度下降,而是一次随机选择一个误分类点使其梯度下降。

假设误分类点集合$M$是固定的,那么损失函数$L(w,b)$的梯度由

$$\nabla_w L(w,b) = - \sum_{x_i\in M}y_i x_i$$

$$\nabla_bL(w,b) = -\sum_{x_i \in M}y_i$$

给出。

随机选择一个误分类点$(x_i,y_i)$,对$w,b$进行更新:

$$w \gets w+ \eta y_i x_i$$

$$b \gets b+\eta y_i$$

式中$\eta(0<\eta\le 1)$是步长,在机器学习中又称为学习率。这样通过迭代可以期待损失函数$L(w,b)$不断减小,直到为0.

这种学习算法直观上有如下解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整$w,b$的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面之间的距离,直到超平面越过该误分类点使其被正确分类。

4. 感知机学习算法的收敛性

(Novikoff)定理 设训练数据集为$T={(x_1,y_1),(x_2,y_2),\dots,(x_N,y_N)}$,其中$x_i\in\mathcal{X}=R^n,\ y_i\in\mathcal{Y}=\{-1,+1\},\ i=1,2,\dots,N$,则

1)存在满足条件$||\hat{w}_{opt}|| = 1$的超平面$\hat{w}_{opt}\cdot \hat{x} = w_{opt}\cdot x + b_{opt} = 0$将训练数据集完全正确分开;且存在$\gamma>0$,对所有的$i=1,2,\dots,N$

$$y_i(\hat{w}_{opt}\cdot \hat{x}_i = y_i(w_{opt}\cdot x_i + b_{opt}) \ge \gamma$$

2)令$R = \max_{1\le i\le N}||\hat{x}_i||$,则感知机算法在训练数据集上的误分类次数$k$满足不等式

$$k \le \left(\frac{R}{\gamma}\right)^2$$

定理表明,误分类的次数$k$是有上界的,经过有限次搜索可以找到将训练数据完全正确分开的分离超平面。但是,感知机学习算法存在许多解,这些解既依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序。为了得到唯一的超平面,需要对分离超平面增加约束条件。

ML 06、感知机的更多相关文章

  1. [OpenCV] Samples 06: [ML] logistic regression

    logistic regression,这个算法只能解决简单的线性二分类,在众多的机器学习分类算法中并不出众,但它能被改进为多分类,并换了另外一个名字softmax, 这可是深度学习中响当当的分类算法 ...

  2. ML(2)--感知机

    案例银行办信用卡--获得感知机 我们到银行办信用卡时,银行并不是直接就给你办卡的,而是会根据你的一些个人信息.消费信息.个人信誉等指标综合考虑后,才会决定是否给你办卡(不像现在银行办信用卡有点随意). ...

  3. ML 感知机(Perceptrons)

    感知机 Perceptrons 学习Hinton神经网络公开课的学习笔记 https://class.coursera.org/neuralnets-2012-001 1 感知机历史 在19世纪60年 ...

  4. [ML] I'm back for Machine Learning

    Hi, Long time no see. Briefly, I plan to step into this new area, data analysis. In the past few yea ...

  5. ML面试1000题系列(1-20)

    本文总结ML面试常见的问题集 转载来源:https://blog.csdn.net/v_july_v/article/details/78121924 1.简要介绍SVM 全称是support vec ...

  6. lecture2-NN结构的主要类型的概述和感知机

    Hinton课程第二课 一.NN结构的主要类型的概述 这里的结构就是连接在一起的神经元.目前来说,在实际应用中最常见的NN就是前向NN,他是将数据传递给输入单元,通过隐藏层最后到输出层的单元:一个更有 ...

  7. 22----2013.06.29---HTML--html介绍.超链接和图片,表格,表单,表单标签,meta,复习当天内容

    01 HTML HTML :Hypertext Markup Language   超文本标记语言(类似于 裸奔的人.) 作用:向用户展示信息. CSS: Cascading 层叠样式表(类似于 人的 ...

  8. 利用Python实现一个感知机学习算法

    本文主要参考英文教材Python Machine Learning第二章.pdf文档下载链接: https://pan.baidu.com/s/1nuS07Qp 密码: gcb9. 本文主要内容包括利 ...

  9. 诗人般的机器学习,ML工作原理大揭秘

    诗人般的机器学习,ML工作原理大揭秘 https://mp.weixin.qq.com/s/7N96aPAM_M6t0rV0yMLKbg 选自arXiv 作者:Cassie Kozyrkov 机器之心 ...

随机推荐

  1. 如何准确高效的获取数据库新插入数据的主键id

    例如我们新建了一张表UserInformation,字段如下Id,为主键,自增,其它字段Name,Pwd,Email 然后我们来执行一个新增插入操作: insert into UserInformat ...

  2. 一个很详细的web.xml讲解

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app PUBLIC "- ...

  3. 08.01 签到! js 作用域

    js 作用域 : 1.js 没有块作用域 : for (var i = 0;i < 4; i++){ } alert(i) // i = 3 2.js 没有动态作用域: function f1( ...

  4. centos7下搭建git和gitlab版本库

    系统:centos7 安装依赖: yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-d ...

  5. the XMLHttpRequest Object

    Ajax的核心是XMLHttpRequest对象.XMLHttpRequest对象允许异步发送请求并且以文本的形式返回结果.发送什么样的请求(what),在服务器端怎样处理这个请求(how),返回什么 ...

  6. iOS UILocalNotification 每2周,每两个月提醒

    iOS 的UILocalNotification提醒提供了默认的重复频率,比如,一天,一个星期等等,但是对于非标准的频率,比如每,2周,每2个月,无法重复提醒. 我们的思路是在应用程序开始时,把即将发 ...

  7. MongoDB 副本集管理(不定时更新)

    简介: 前面介绍完了副本集的搭建.用户的管理.参数和日常操作的说明,那副本集搭建好该如何管理呢?现在来说明下副本集的日常查看和管理. 说明: 1)查看命令行参数:db.serverCmdLineOpt ...

  8. Divide and conquer:Drying(POJ 3104)

    烘干衣服 题目大意:主人公有一个烘干机,但是一次只能烘干一件衣服,每分钟失水k个单位的水量,自然烘干每分钟失水1个单位的水量(在烘干机不算自然烘干的那一个单位的水量),问你最少需要多长时间烘干衣服? ...

  9. SprignMVC+myBatis整合

    转载自:http://lydia-fly.iteye.com/blog/2153076 学习本节内容请先看"MyBatis的基本应用".地址:http://lydia-fly.it ...

  10. jquery中使用event.target的几点

    jquery中使用event.target的几点 1.this和event.target的区别: js中事件是会冒泡的,所以this是可以变化的,但event.target不会变化,它永远是直接接受事 ...