前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解机器学习之感知机理论与实践

详解机器学习之感知机理论与实践

作者头像
zenRRan
发布2018-04-16 10:40:17
7890
发布2018-04-16 10:40:17
举报

阅读大概需要5分钟

上期回顾

详解机器学习之the Learning Problem

导读

本章讲的是让他机器学习说yes/no,目录分为:

  1. 感知机假设集合
  2. 感知机学习算法(PLA)
  3. 确保数据集线性可分
  4. 非线性可分数据
  5. 实践代码与效果

Perceptron Hypothesis Set

我们还以是否给办理信用卡为例,上面是客户的信息。

x是上面的客户信息向量,每一个维度对应一个权重w,w理解为这个维度的重要性。这个我们设定一个阈值,客户的每个信息*权重超过了阈值则就给办理,否则不给办理。

其中

我们简化下,将+1设为good,-1设为bad。因为权重*x求和-阈值是一个数,经过sign函数,如果大于0就返回+1,小于0就返回-1,来判断。

我们再来简化下这个公式:

这里的阈值可以看做是*+1的一个变量,将+1看做已知的向量元素x,即:

然后就可以合并:

最终变为两个向量的内积形式。

那么我们的h长什么样子呢?我们在二维上用图表示:

其中:

(x1,x2)为平面上的点

label y为已知,平面上表示为o为+1,x为-1

假设h集合,为平面上的很多线,在线的两边分别为正的,负的。

在数学上,这个叫做线性分类器linear classifiers。

Perceptron Algorithm Learning(PLA)

我们知道集合h里面有我们想要的最终g,但是h集合里面有太多的选择了,我们怎么也不能一个一个选吧?比如上面的二维分类中的h集合里是所有的平面的线条,但是我们怎么也不能一个一个拿来试试吧。我们要想人一样的,想做下试试,再根据错误反馈慢慢调整。

比如下面这条线,我们能不能稍微弄动下,把正确的包含进来呢?

方法如下:

对于每条数据(x,y)来说,如果发现通过通过函数返回值和label y不一样,那么我们就更新,怎么更新呢?

当y=+1时,所得的内积后的值为负数,那代表w和x的夹角太大了,要缩小下,通过公式:

将新的w更新到w和x之间。

当y=-1时,所得的内积后的值为正数,那代表w和x的夹角太小了,要扩大下,通过公式:

将新的w更新到w和x之外。

直到没有错误为止,停止更新,返回w向量即可。

一句话表示这个简单的算法:

知错能改,善莫大焉。

这里有个我拓展个知识:

向量w是该二维平面的法向量:

其实向量w是n维超平面的法向量,因为上图是二维的,所以超平面是一条线。

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

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

Guarantee of PLA

我们的数据必须是能用一条线(或者一个平面)分开,我们叫这个为线性可分linear separable,如图:

线性可分

线性不可分

Non-Separable Data

像这种线性不可分的怎么办呢?这个其实很简单,找犯错误最小的就行。公式为:

可是。。这个是个NP-hard问题,而NP-hard问题是直接难倒计算机界的一大难题,至今未解。所以,这样最佳的分割线还是找不到的。

以上图片(除了纸上的推导)来自台大林轩田机器学习基石视频

代码实践

初始化数据

显示的正常分类结果为:

循环迭代更新

每日托福单词

notion n.概念,观念

protein n. 蛋白质

norm n.标准,规范

politic adj.精明的,有策略的

contain v. 抑制,控制

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深度学习自然语言处理 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档