17-占领记忆,从更新权重开始——小而美的感知机

一个人和另一个人的相遇是很奇妙的。人生若只如初见,Wi全都是0。有的人之间自带化学反应,初次见面就噼里啪啦更新权重,经过激活函数得出——1:看你顺眼;-1:负分滚粗(原谅群主的简单粗暴)。所谓权重,深藏于生活的每个细节中。曾经看过一篇文章,说即使关系亲密的人之间也是自带评分表的:今天你做了一件事让我开心,score++;明天你惹到我让我不爽,score--。所以无论和关系多好的人相处我们都需要反省,不断调整自己的行为,且行且珍惜。机器学习也是有温度的,你可以把它看作一个活生生的人,感觉触角多且灵敏。所谓“学习”,不过是不断修正自己的错误,让自己长点记性,从而更好地与他人及外界相处。

今天介绍的是神经网络的最简单形式——感知机。它告诉我们一种朴素的生活哲学:不要怕犯错,有错就改,大错大改,小错小改,没错就可以休息了。想起多少个因为害怕犯错而裹足不前的时刻,才明白这样的哲学理解起来没问题,执行起来却不容易。人生真应该多一些adapt on the fly的勇气。

1什么是感知机

最简单形式的前馈神经网络,是一种二元线性分类器, 把矩阵上的输入x(实数值向量)映射到输出值 f(x)上(一个二元的值)。

感知机的几何解释是,线性方程 w*x+b=0 将特征空间划分为正负两个部分:

这个平面(2维时退化为直线)称为分离超平面。其中w是平面的法向量(关于平面法向量的证明可参考:https://www.zybang.com/question/9bf56901b08949c0660ae85cf4d3791a.html)。

2学习策略

核心:极小化损失函数。

如果训练集是可分的,感知机的学习目的是求得一个能将训练集正实例点和负实例点完全分开的分离超平面。为了找到这样一个平面(或超平面),即确定感知机模型参数w和b,我们采用的是损失函数,同时并将损失函数极小化。

对于损失函数的选择,我们采用的是误分类点到超平面的距离(可以自己推算一下,这里采用的是几何间距,就是点到直线的距离):

其中M为误分类的集合。这个损失函数就是感知机学习的经验风险函数。

【为什么不考虑,我想是因为平面方程w*x+b=0的系数可以按一定倍数缩放,且并不影响平面位置,我们可以选一个w为单位法向量的平面方程,这样就可以只关注了。】

可以看出,损失函数L(w,b)是非负的。如果没有误分类点,则损失函数的值为0,而且误分类点越少,误分类点距离超平面就越近,损失函数值就越小。同时,损失函数L(w,b)是连续可导的。

3学习算法

感知机学习转变成求解损失函数L(w,b)的最优化问题。最优化的方法是随机梯度下降法(stochastic gradient descent),这里采用的就是该方法。关于梯度下降的详细内容,参考wikipedia Gradient descent。下面给出一个简单的梯度下降的可视化图:

首先,任选一个超平面,然后使用梯度下降法不断地极小化目标函数:

极小化过程不是一次使M中所有误分类点的梯度下降,而是一次随机的选取一个误分类点使其梯度下降。使用的规则为

假设误分类点集合M是固定的,那么损失函数L(w,b)的梯度通过偏导计算:

然后,随机选取一个误分类点,根据上面的规则,计算新的w, b然后进行更新:

其中η是步长,大于0小于1,在统计学习中称之为学习率(learning rate)。这样,通过迭代可以期待损失函数L(w,b)不断减小,直至为0。

 

感知机学习算法原始形式:

解释:当一个实例点被误分类时,调整w,b,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面的距离,直至超越该点被正确分类。

这次我们学习了感知机的理论部分,下周会来点干货:如何在大名鼎鼎的鸢尾花数据集上训练一个感知机模型,来判断鸢尾花的种类。敬请期待:)

时间: 2024-10-01 02:39:13

17-占领记忆,从更新权重开始——小而美的感知机的相关文章

mysql_mssql_access_2017年最新手机号段归属地数据库(17年4月更新)360569记录

mysql,mssql,access 三种格式免费分享给大家,末尾有下载地址 2017年4月最新版手机号段归属地,也叫手机归属地数据库  共360569条记录,三种格式:MYSQL,MSSQL,access MDB格式 字段:手机号码前7位,省份,城市,区号,运营商,邮编 末尾如下: 360551 1899981 新疆 乌鲁木齐 中国电信 0991 830000360552 1899982 新疆 乌鲁木齐 中国电信 0991 830000360553 1899983 新疆 乌鲁木齐 中国电信 0

7.1-7.3个人日报

时间 7.1-7.3 今日内容 更新甘特图进度 解决用户拉伸界面而造成的窗口不美观问题 解决新版本文件在编辑UI时造成的代码丢失问题.已将丢失代码的功能重现 解决了先前的消息窗口文字无法改色问题 所遇问题 1.修改UI后源代码报错 2.必须修改字体后才能更改文字大小和颜色 3.先前的消息窗口无法改色问题 解决方案 1.Netbeans的图形设计模式中会根据设计出Form文件更改对应界面类的java文件源代码.若窗口中创建没有的控件,先前在对应java文件中为对应名称控件书写的代码将被Netbea

JDBC连接数据库(MySql)步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。

主要内容:  JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能. 把十一个功能都放在一起. 一.JDBC连接数据库(编辑)步骤(主要有六个步骤).  1.注册驱动: Class.formName("com.mysql.jdbc.Driver");  2.获取连接:(1) param1:  要连接数据库的url-----> String url="jdbc:mysql:/

JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能

主要内容:  JDBC连接数据库步骤. 一个简单详细的查询数据的例子. 封装连接数据库,释放数据库连接方法. 实现查询,插入,删除,更新等十一个处理数据库信息的功能.(包括事务处理,批量更新等) 把十一个功能都放在一起. 安装下载的数据库驱动程序jar包,不同的数据库需要不同的驱动程序(这本该是第一步,但是由于属于安装类,所以我们放在最后) 一.JDBC连接数据库(编辑)步骤(主要有六个步骤).  1.注册驱动: Class.forName("com.mysql.jdbc.Driver"

2017年6月装机员系统更新(已打勒索病毒补丁)

■ 本系统采纳几十位经验丰富的装机人员经验和建议,系统稳定,快速,预装软件更加适合完美■ 系统精简适当(装机人员可以把光盘目录下的GHO.GHO文件复制到U盘用PE安装)■ 海量驱动,以自由天空的驱动包为基础,经过整理,更完美的兼容目前硬件.■ 实现第一到桌面安装网卡驱动,解决部署时网络组建卡死现象.■ 支持笔记本隐藏分区的恢复,支持Sata光驱.等... 本系统集成自由天空E驱动v7.17.303.2版更新IE为IE12集成Microsoft .NET Framework 4 WinXP下载

8636 跳格子(dfs+记忆化搜索)

8636 跳格子 该题有题解 时间限制:2457MS  内存限制:1000K提交次数:139 通过次数:46 题型: 编程题   语言: G++;GCC Description 地上有一个n*m 的数字格子,每个格子有一个坐标(i,j)(其中1<=i<=n , 1<=j<=m),规定左上角为(0,0), 右下角为(n,m),你要从最左端的一列的任意位置开始跳到最右边格子外. 下面两条你跳的时候的约束规则: 一.因为你的力气有限,每次只能跳一定的距离.给定一个k 为你的弹跳力,则从(

Ado.net[登录,增删改查,Get传值,全选,不选,批量删除,批量更新,添加]

[虽然说,开发的时候,我们可以使用各种框架,ado.net作为底层的东西,作为一个合格的程序员,在出问题的时候我们还是要知道如何调试] 一.增删改查 cmd.ExecuteReader();执行查询,所有sql语句的查询都用这个方法;       cmd.ExecuteNonQuery();执行所有sql语句的增删改都用这个方法; 1 <div> 2 <table> 3 <tr> 4 <td> 用户名:</td> 5 <td> 6 &

Html2canvas - 项目中遇到的那些坑点汇总(更新中...)

水平居中的元素截图后向左跑偏 明明是水平居中的代码,截图出来的会偏左,结构是左图片右文字,有时候是图片自己跑到最左边,有时候是整体偏左一点点 这个问题也不是经常遇到,场景是父div元素text-align=center;内部两个子元素设为display:inline-block的模式.然后画图就会出现左边的div偏左靠或直接在左边的情况. 问题未解决,出现时也没研究因为啥,等有时间的时候就不出现了... 靠背景图露脸的dom们会有底线 截图时,如果有一个dom元素是用背景图填充的,里边没有任何结

nice -n 10 bash 和 chrt 10 bash 和 echo -17 &gt; /proc/PID/oom_score_adj

进程优先级起作用的方式从发明以来基本没有什么变化,无论是只有一个cpu的时代,还是多核cpu时代,都是通过控制进程占用cpu时间的长短来实现的. 就是说在同一个调度周期中,优先级高的进程占用的时间长些,而优先级低的进程占用的短些. 请大家真的不要混淆了系统中的这两个概念:nice(NI)和priority(PR),他们有着千丝万缕的关系,但对于当前的Linux系统来说,它们并不是同一个概念. 什么是NICE值? NICE值应该是熟悉Linux/UNIX的人很了解的概念了,它是反应一个进程“优先级