感知机(Perceptron)

文章目录

    • 1. 感知机模型
    • 2. 感知机学习策略
    • 3. 感知机学习算法
      • 3.1 原始形式
      • 3.2 算法收敛性
      • 3.3 对偶形式
    • 4. 基于感知机Perceptron的鸢尾花分类实践

感知机(perceptron)是 二类分类的线性分类模型

  • 输入:实例的特征向量
  • 输出:实例的类别,取 +1 和 -1 二值
  • 感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面,属于判别模型
  • 旨在求出将训练数据进行线性划分的分离超平面,为此,导入基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。
  • 感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式。
  • 预测:对新的输入进行分类

感知机1957年由Rosenblatt(罗森布拉特)提出,是神经网络与支持向量机的基础。

1. 感知机模型

感知机定义:

  • 输入空间:X⊆Rn\mathcal X \subseteq \mathbf R^nXRn
  • 输出空间:Y={+1,−1}\mathcal Y = \{+1,-1\}Y={+1,1}
  • x∈Xx \in \mathcal XxX 特征实例,y∈Yy \in \mathcal YyY 表示实例类别
  • 输入到输出的函数:f(x)=sign(ω⋅x+b)f(x) = sign (\omega \cdot x+b)f(x)=sign(ωx+b)
  • 参数:ω\omegaω 权重向量,bbb 偏置
  • sign 是符号函数:sign(x)={+1,x≥0−1,x<0sign(x)=\left\{ \begin{aligned} +1, \quad x \geq 0\\ -1, \quad x < 0 \end{aligned} \right. sign(x)={+1,x01,x<0
  • 感知机是线性分类模型,判别模型
  • 几何解释:ω⋅x+b=0\omega \cdot x+b = 0ωx+b=0 对应 n 维空间的一个超平面,ω\omegaω 是其法向量,bbb 为其截距,将点(特征向量)分位正负两类
    在这里插入图片描述

2. 感知机学习策略

  • 如果存在一个超平面将所有实例正确的分在平面两侧,称线性可分数据集,否则线性不可分
  • 策略:定义损失函数(误分类点到超平面 S 的总距离),并极小化它

  • 任意一点 x0x_0x0 到超平面 SSS 的距离: 1∣∣ω∣∣2∣ω⋅x0+b∣\frac{1}{||\omega||_2}|\omega \cdot x_0 + b|ω21ωx0+b∣∣ω∣∣2||\omega||_2ω2ω\omegaωL2L_2L2 范数

  • 所有误分类的点记得集合为 MMM,不考虑分母范数,错误的点 yi(ω⋅xi+b)<0y_i(\omega \cdot x_i +b) < 0yi(ωxi+b)<0,取距离为正,则感知机的损失函数(经验风险函数)为:
    L(ω,b)=−∑xi∈Myi(ω⋅xi+b)\color{red}L(\omega,b) = -\sum\limits_{x_i \in M} y_i(\omega \cdot x_i +b)L(ω,b)=xiMyi(ωxi+b)

  • 选择使上面损失函数最小的模型参数 ω,b\omega,bω,b

3. 感知机学习算法

3.1 原始形式

损失函数的最优化问题:随机梯度下降法

  • 损失函数的梯度:
    ∇ωL(ω,b)=−∑xi∈Myixi∇bL(ω,b)=−∑xi∈Myi\nabla_\omega L(\omega,b) = -\sum\limits_{x_i \in M} y_ix_i \\ \quad\\ \nabla_b L(\omega,b) = -\sum\limits_{x_i \in M} y_i ωL(ω,b)=xiMyixibL(ω,b)=xiMyi

  • 给定 η(0<η≤1)\eta (0< \eta \leq 1)η(0<η1) 步长(学习率)

  • 目标:输出 ω,b\omega,bω,b,感知机模型 f(x)=sign(ω⋅x+b)f(x) = sign(\omega \cdot x+b)f(x)=sign(ωx+b)
    1.选取初值 ω0,b0\omega_0,b_0ω0,b0
    2.在训练集中选取数据 (xi,yi)(x_i,y_i)(xi,yi)
    3.如果 yi(ω⋅xi+b)≤0y_i(\omega \cdot x_i+b) \leq 0yi(ωxi+b)0,
    ω←ω+ηyixib←b+ηyi\omega \leftarrow \omega+\eta y_ix_i\\ b \leftarrow b+\eta y_iωω+ηyixibb+ηyi
    4.转到2,直到没有误分类点

  • 感知机采用不同的初值或选取不同的误分类点,解可以不同

3.2 算法收敛性

算法收敛性证明:(略)

结论:

  • 误分类次数 k 有上界,有限次搜索可以找到将训练数据完全正确分开的超平面。
  • 当训练数据集线性可分时,感知机学习算法原始形式迭代是收敛的。
  • 感知机学习算法存在许多解,既依赖于初值,也依赖于迭代过程中误分类点的选择顺序。为了得到唯一的超平面,需要对分离超平面增加约束条件。这就是第7章将要讲的线性支持向量机的想法。
  • 当训练集线性不可分时,感知机学习算法不收敛,迭代结果会发生震荡。

3.3 对偶形式

基本想法:将 ω,b\omega,bω,b 表示成实例 xix_ixi 和标记 yiy_iyi 的线性组合形式。

  • 经过 n 次修改 ω,b\omega,bω,bω,b\omega,bω,b 关于 (xi,yi)(x_i,y_i)(xi,yi) 的增量分别是 αiyixi,αiyi\alpha_iy_ix_i, \alpha_iy_iαiyixi,αiyi,这里 αi=niη\alpha_i = n_i\etaαi=niη

  • 最后学到的 ω,b\omega,bω,b 可表示成:
    ω=∑i=1Nαiyixib=∑i=1Nαiyi\omega = \sum\limits_{i=1}^N \alpha_iy_ix_i\\ \quad \\ b=\sum\limits_{i=1}^N \alpha_iy_iω=i=1Nαiyixib=i=1Nαiyi

  • η=1\eta = 1η=1 时,αi\alpha_iαi 表示第 iii 个实例点由于误分类进行更新的次数,次数越多,意味着它距离分离超平面越近,很难正确分类,这样的实例对学习结果影响很大


目标:求 α,b\alpha,bα,b,感知机模型 f(x)=sign(∑j=1Nαjyjxj⋅x+b)f(x) = sign \bigg( \sum\limits_{j=1}^N \alpha_jy_jx_j \cdot x+b\bigg)f(x)=sign(j=1Nαjyjxjx+b),其中 α=(α1,α2,...,αN)T\alpha = (\alpha_1,\alpha_2,...,\alpha_N)^Tα=(α1,α2,...,αN)T

  1. α=0,b=0\alpha = 0, b =0α=0,b=0
  2. 选取训练集数据 (xi,yi)(x_i,y_i)(xi,yi)
  3. 如果 yi(∑j=1Nαjyjxj⋅xi+b)≤0y_i \bigg( \sum\limits_{j=1}^N \alpha_jy_jx_j \cdot x_i+b\bigg) \leq 0yi(j=1Nαjyjxjxi+b)0
    αi←αi+ηb←b+ηyi\alpha_i \leftarrow \alpha_i+ \eta \\ \quad\\ b \leftarrow b+ \eta y_iαiαi+ηbb+ηyi
    4.转至2,直到没有误分数据
  • 对偶形式可以预先将训练集中的实例间的内积计算存储在矩阵中,称为 Gram 矩阵 G=[xi⋅xj]N×N\mathbf G = [x_i \cdot x_j]_{N \times N}G=[xixj]N×N

4. 基于感知机Perceptron的鸢尾花分类实践

请查阅链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477209.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果5G芯片研发失败,冲上热搜

文 | 科小编源 | 科技每日推送多年来&#xff0c;iPhone的信号问题&#xff0c;一直被大家诟病。苹果也一直尝试自研5G芯片来解决&#xff0c;但最新消息显示&#xff0c;苹果再次失败了。6月28日&#xff0c;有“地表最强苹果剧透师”之称的郭明錤&#xff0c;在推特上爆料&am…

Spring Boot多数据源配置与使用

之前在介绍使用JdbcTemplate和Spring-data-jpa时&#xff0c;都使用了单数据源。在单数据源的情况下&#xff0c;Spring Boot的配置非常简单&#xff0c;只需要在application.properties文件中配置连接参数即可。但是往往随着业务量发展&#xff0c;我们通常会进行数据库拆分或…

基于感知机Perceptron的鸢尾花分类实践

文章目录1. 感知机简介2. 编写感知机实践2.1 数据处理2.2 编写感知机类2.3 多参数组合运行3. sklearn 感知机实践4. 附完整代码本文将使用感知机模型&#xff0c;对鸢尾花进行分类&#xff0c;并调整参数&#xff0c;对比分类效率。1. 感知机简介 感知机&#xff08;perceptro…

大火的扩散模型终于杀到了NLP领域

从2020年的初出茅庐&#xff0c;到2021年的日趋火热&#xff0c;再到2022年的大放异彩&#xff0c;扩散模型(Diffusion Models) 正在人工智能学术界和工业界获取越来越多的关注。如果还不是特别了解扩散模型的朋友&#xff0c;可以阅读卖萌屋的几篇历史推文《扩散模型在图像生成…

Spring Boot中使用Spring-data-jpa让数据访问更简单、更优雅

在上一篇Spring中使用JdbcTemplate访问数据库 中介绍了一种基本的数据访问方式&#xff0c;结合构建RESTful API和使用Thymeleaf模板引擎渲染Web视图的内容就已经可以完成App服务端和Web站点的开发任务了。 然而&#xff0c;在实际开发过程中&#xff0c;对数据库的操作无非就…

AI终于攻陷了数学领域!高数考试超过普通博士??

文 | 梦晨 丰色 发自 凹非寺源 | 量子位高数考不好&#xff0c;不知道是多少人的噩梦。如果说你高数考得还不如AI好&#xff0c;是不是就更难以接受了&#xff1f;没错&#xff0c;来自OpenAI的Codex已经在MIT的7门高数课程题目中正确率达到81.1%&#xff0c;妥妥的MIT本科生水…

十年内就能实现通用人工智能?先把组合泛化研究明白吧!

文 | Albert Yang编 | 白鹡鸰"乌鸦为什么像写字台&#xff1f;"因为它们都能produce a few notes &#xff08;鸟叫/笔记&#xff09;&#xff0c;因为乌鸦和写字台都是思想与记忆的象征&#xff08;北欧神话&#xff09;&#xff0c;又或者因为&#xff0c;这本身就…

LeetCode 1366. 通过投票对团队排名(自定义排序)

1. 题目 现在有一个特殊的排名系统&#xff0c;依据参赛团队在投票人心中的次序进行排名&#xff0c;每个投票者都需要按从高到低的顺序对参与排名的所有团队进行排位。 排名规则如下&#xff1a; 参赛团队的排名次序依照其所获「排位第一」的票的多少决定。如果存在多个团队…

Spring Boot中使用JdbcTemplate访问数据库

之前介绍了很多Web层的例子&#xff0c;包括构建RESTful API、使用Thymeleaf模板引擎渲染Web视图&#xff0c;但是这些内容还不足以构建一个动态的应用。通常我们做App也好&#xff0c;做Web应用也好&#xff0c;都需要内容&#xff0c;而内容通常存储于各种类型的数据库&#…

LeetCode 1367. 二叉树中的列表(双重递归)

1. 题目 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。 如果在二叉树中&#xff0c;存在一条一直向下的路径&#xff0c;且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值&#xff0c;那么请你返回 True &#xff0c;否则返回 False 。 一直向…

Spring Boot构建RESTful API与单元测试

首先&#xff0c;回顾并详细说明一下在快速入门中使用的Controller、RestController、RequestMapping注解。如果您对Spring MVC不熟悉并且还没有尝试过快速入门案例&#xff0c;建议先看一下快速入门的内容。 Controller&#xff1a;修饰class&#xff0c;用来创建处理http请…

推荐系统用户反馈延迟新解法!阿里提出CVR无偏估计算法

文 | Shona在广告、电商场景中&#xff0c;流式样本通常只会在一个较短的窗口采样用户的行为&#xff0c;但用户从点击到转化的时间窗口可能很长&#xff0c;比如逛淘宝时&#xff0c;点击一件商品后可能在其他平台对比很久后才会下单&#xff0c;这导致在流式样本采样的时间窗…

LeetCode 1368. 使网格图至少有一条有效路径的最小代价(BFS最短路径,难)

1. 题目 给你一个 m x n 的网格图 grid 。 grid 中每个格子都有一个数字&#xff0c;对应着从该格子出发下一步走的方向。 grid[i][j] 中的数字可能为以下几种情况&#xff1a; 1 &#xff0c;下一步往右走&#xff0c;也就是你会从 grid[i][j] 走到 grid[i][j 1]2 &#xf…

Spring Boot工程结构推荐

今天看了一位简书上朋友发来的工程&#xff0c;于是想到应该要写这么一篇。前人总结的最佳实践案例可以帮助我们免去很多不必要的麻烦。花点时间来看一下本文&#xff0c;绝对物超所值。 工程结构&#xff08;最佳实践&#xff09; Spring Boot框架本身并没有对工程结构有特别…

GPT-3写了一篇论文

文 | Pine 发自 凹非寺源 | 量子位咦&#xff1f;这篇论文有点不对劲&#xff0c;第一作者看起来不像是人类的名字&#xff1a;一作的署名GPT-3&#xff0c;所属单位OpenAI。是的&#xff01;你没看错&#xff0c;GPT-3写了一篇关于自己的论文。此前&#xff0c;GPT-3已经撰写过…

程序员面试金典 - 面试题 02.03. 删除中间节点

1. 题目 实现一种算法&#xff0c;删除单向链表中间的某个节点&#xff08;除了第一个和最后一个节点&#xff0c;不一定是中间节点&#xff09;&#xff0c;假定你只能访问该节点。 示例&#xff1a; 输入&#xff1a;单向链表a->b->c->d->e->f中的节点c 结果…

Spring Boot开发Web应用

Spring Boot快速入门中我们完成了一个简单的RESTful Service&#xff0c;体验了快速开发的特性。在留言中也有朋友提到如何把处理结果渲染到页面上。那么本篇就在上篇基础上介绍一下如何进行Web应用的开发。 静态资源访问 在我们开发Web应用的时候&#xff0c;需要引用大量的j…

双塔模型的最强出装,谷歌又开始玩起“老古董”了?

文 | 兔子酱双塔模型已经证明在搜索和问答任务中是非常有效的建模方法&#xff0c;理论和业务落地已相当成熟。双塔根据参数共享程度不同&#xff0c;通常会归纳成两类&#xff1a;Simese dual encoder和Asymmetric dual encoder&#xff0c;前者参数结构完全对称&#xff0c;后…

LintCode解题目录

看见 LintCode 的代码能力测试CAT&#xff08;Coding Ability Test&#xff09;挺好&#xff0c;有倒计时&#xff0c;挺有面试紧迫感。做个记录。 另有本人 LeetCode解题目录、《程序员面试金典》解题目录、《剑指Offer》解题目录 我的 LintCode 主页 75 / 1505 算法问题 …

BERTopic:NLP主题模型的未来!

文| ZenMoore编| 小轶以前我一直以为&#xff0c;主题建模(提取文档的主题词)这种机器学习时代就开始研究的基础工具&#xff0c;现在肯定已经到头了&#xff0c;虽然...有时效果可能不是那么让人满意。但突然看到一则推文&#xff1a;“彻底疯了&#xff01;不需要预先清洗数据…