文档章节

最简单易懂的感知机教程:从理论到实践(附代码)

Airship
 Airship
发布于 2017/06/13 09:30
字数 1114
阅读 18
收藏 0

时间 2017-06-12 16:30:00  雷锋网

原文  https://www.leiphone.com/news/201706/FEz9czQa8TMPGyqr.html

主题 技术

雷锋网按:本文作者 甄冉冉 ,原文载于作者 个人博客 ,雷锋网已获授权。

什么是感知机

感知机是二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取+1和-1)。

感知机目的在求一个可以将实例分开的超平面,为了求它,我们用到基于误分类的损失函数和梯度下降的优化策略。

感知机模型

比如x表示n维的数据,y表示数据的类别。则感知机公式可表示为:

f(x) = sign(wx + b)

其中w,b为模型参数,w为权值,b为偏置。wx表示w,x的内积。这里sign是激励函数:

sign(x)

该感知机超平面的线性方程为:

w*x + b = 0

它的几何意义是:

该平面(w1x1 + w2x2 + b= 0)距离在轴上的坐标为:

(0 , -b/w2)

(-b/w1 , 0)

(后面的代码会用到,这里提前说明下。)

这里再说明其他的一点知识并证明下 w为什么是超平面的法向量:

这里再补充点超平面的知识:

超平面分离定理是应用凸集到最优化理论中的重要结果,这个结果在最优化理论中有重要的位置。所谓两个凸集分离,直观地看是指两个凸集合没有交叉和重合的部分,因此可以用一张超平面将两者隔在两边。

回归正题:

我们将大于0的分为+1类,小于0的分为-1类。有些比如大于0的判断为-1类或者相反则就产生了损失,刚开始第一反应就是用误分类点的数目越少作为损失函数,但是这样的损失函数的w, b并不是连续可导,无法进行优化。

于是我们想转到另一种选择,就是误分类点到超平面的距离越短越好。距离公式如下:

如果忘记距离公式给你个提示:

而我们知道每一个误分类点都满足-yi(wx+b)>0

因为当我们数据点正确值为+1的时候,你误分类了,那么你判断为-1,则算出来(wx0+b)<0,所以满足-yi(w*x+b)>0

当数据点是正确值为-1的时候,你误分类了,那么你判断为+1,则算出来(wx0+b>0),所以满足-yi(wx+b)>0

则我们可以将绝对值符号去掉,得到误分类点的距离为:

因为你知道,所以可以直接将绝对值去掉。那么可以得到总距离为:

不考虑w范数分之一(考虑和不考虑结果都一样,经过实验证明),我们可以得到损失函数为:

其中M为误分类点的数目。

当我们已经有了一个目标是最小化损失函数,如下图:

我们就可以用常用的梯度下降方法来进行更新,对w,b参数分别进行求偏导可得:

那么我们任意初始化w,b之后,碰到误分类点时,采取的权值更新为w,b分别为:

整理下整个过程(比如二维平面):

a.选定初值w1,w2,b (相当于初始化了一个超平面)

b.在训练集中选取数据(xi,yi)(任意抽取数据点,判断是否所有数据点判断完成没有误分累点了,如果没有了,直接结束算法,如果还有进入c)

c.如果yi(w*xi+b)<0(说明是误分类点,就需要更新参数)

那么进行参数更新!更新方式如下:

其中η为学习率在0-1之间。

代码讲解

初始化数据

循环迭代更新

雷锋网 (公众号:雷锋网) 相关阅读:

感知机:从原理到训练

知错能改的感知机(Perceptron)

开发者专场 | 英伟达深度学习学院现场授课

英伟达 DLI 高级工程师现场指导,理论结合实践,一举入门深度学习!

课程链接:http://www.mooc.ai/course/90

雷锋网版权文章,未经授权禁止转载。详情见 转载须知 。

本文转载自:http://www.tuicool.com/articles/ryEFRb2

Airship
粉丝 46
博文 1070
码字总数 21664
作品 0
南京
高级程序员
私信 提问
深度学习笔记1:利用numpy从零搭建一个神经网络

欢迎关注天善智能,我们是专注于商业智能BI,人工智能AI,大数据分析与挖掘领域的垂直社区,学习,问答、求职一站式搞定! 对商业智能BI、大数据分析挖掘、机器学习,python,R等数据领域感兴...

天善智能
2018/07/12
0
0
简单易懂的讲解深度学习(入门系列之五)

5.1 网之初,感知机 我们知道,《三字经》里开篇第一句就是:“人之初,性本善”。那么对于神经网络来说,这句话就要改为:“网之初,感知机”。感知机( Perceptrons ),基本上来说,是一切...

EdisonGzq
2017/07/04
0
0
《统计学习方法》python代码资料

分享一则资料,《统计学习方法》的python实现代码。 《统计学习方法》是李航的一本书,是比较基础经典的一本书,书中更多的是对基础传统机器学习的理论介绍,没有任何代码,这算是对代码的补...

我i智能
2018/12/23
0
0
支持向量机学习笔记--原理篇(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014688145/article/details/52906162 支持向量机学习笔记–原理篇(一) 前言 初步学习机器学习给我最大的感...

Demon的黑与白
2016/10/23
0
0
(zhuan) 深度学习全网最全学习资料汇总之模型介绍篇

This blog from : http://weibo.com/ttarticle/p/show?id=2309351000224077630868614681&u=5070353058&m=4077873754872790&cu=5070353058 深度学习全网最全学习资料汇总之模型介绍篇 雷锋网 ......

wangxiaocvpr
2017/02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部