感知器算法

news2024/10/3 10:31:53

感知器算法原理说明

感知器是一种二分类的线性分类算法,其原理基于神经元的工作原理。感知器将输入数据通过加权求和的方式映射到一个输出,然后根据输出的结果进行分类。

具体来说,给定一个训练集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) D={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)} D=(x1,y1),(x2,y2),...,(xn,yn),其中 x i x_i xi 是一个 m m m 维向量,表示第 i i i 个样本的特征, y i ∈ − 1 , 1 y_i\in {-1,1} yi1,1 是该样本的标签。感知器的目标是找到一个权重向量 w w w,使得对于所有样本 ( x i , y i ) (x_i,y_i) (xi,yi),有:

在这里插入图片描述

其中 w ⋅ x i w\cdot x_i wxi 表示 w w w x i x_i xi 的内积, b b b 是一个常数,称为偏置项。上述式子可以简化为:

y i ( w ⋅ x i + b ) > 0 y_i(w\cdot x_i+b)>0 yi(wxi+b)>0

即对于正确分类的样本,其预测值与真实值之积大于零。

感知器的训练过程是一个迭代的过程,每次迭代通过更新权重向量 w w w 和偏置项 b b b 来逐步提高模型的准确率。具体来说,在每一轮迭代中,从训练集中选取一个错分类的样本 ( x i , y i ) (x_i,y_i) (xi,yi),然后按以下公式更新 w w w b b b

w = w + η y i x i w=w+\eta y_ix_i w=w+ηyixi

b = b + η y i b=b+\eta y_i b=b+ηyi

其中 η \eta η 是学习率,控制着每次更新的步长。这个过程会一直重复,直到所有样本都被正确分类或达到预设的迭代次数。

需要注意的是,感知器算法只能处理线性可分的数据集。如果数据集不是线性可分的,算法会一直迭代下去而无法停止。此外,感知器还存在多个权重向量和偏置项的解,因此不同的初始权重和偏置可能会导致不同的结果。

感知器算法公式推导

感知器算法的公式推导可以从定义开始,假设我们有一个二分类的数据集 D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) D={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)} D=(x1,y1),(x2,y2),...,(xn,yn),其中 x i x_i xi 是一个 m m m 维向量,表示第 i i i 个样本的特征, y i ∈ − 1 , 1 y_i\in {-1,1} yi1,1 是该样本的标签。我们的目标是找到一个超平面 w ⋅ x + b = 0 w\cdot x+b=0 wx+b=0 将数据集分为两类。

假设我们已经得到了一个权重向量 w w w 和偏置项 b b b,我们可以将其代入超平面方程中,得到样本 x i x_i xi 距离超平面的距离:

∣ w ⋅ x i + b ∣ ∣ w ∣ \frac{|w\cdot x_i+b|}{|w|} wwxi+b

其中 ∣ w ∣ |w| w 表示向量 w w w 的模长。我们希望距离正确分类的样本越远越好,因此可以定义感知器的损失函数为:

L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b) L(w,b)=xiMyi(wxi+b)

其中 M M M 是被错误分类的样本集合。对于正确分类的样本, y i ( w ⋅ x i + b ) > 0 y_i(w\cdot x_i+b)>0 yi(wxi+b)>0,所以损失函数取值为负数。而对于错误分类的样本, y i ( w ⋅ x i + b ) < 0 y_i(w\cdot x_i+b)<0 yi(wxi+b)<0,损失函数取值为正数。我们的目标是最小化损失函数,使得所有样本都被正确分类。

接下来,我们使用随机梯度下降算法来优化损失函数。在每次迭代中,我们随机选择一个错误分类的样本 ( x i , y i ) (x_i,y_i) (xi,yi),然后按照以下公式更新 w w w b b b

w = w + η y i x i w=w+\eta y_ix_i w=w+ηyixi

b = b + η y i b=b+\eta y_i b=b+ηyi

其中 η \eta η 是学习率,控制着每次更新的步长。这个过程会一直重复,直到所有样本都被正确分类或达到预设的迭代次数。

可以证明,如果数据集是线性可分的,那么感知器算法一定会收敛,得到一个能够将数据集分为两类的超平面。但如果数据集不是线性可分的,算法会一直迭代下去而无法停止。此外,感知器还存在多个权重向量和偏置项的解,因此不同的初始权重和偏置可能会导致不同的结果。

下面我们来推导感知器算法的更新公式。首先定义一个样本点 ( x i , y i ) (x_i, y_i) (xi,yi) 的损失函数为:

L i ( w , b ) = − y i ( w ⋅ x i + b ) L_i(w,b)=-y_i(w\cdot x_i+b) Li(w,b)=yi(wxi+b)

如果这个样本点被正确分类,即 y i ( w ⋅ x i + b ) > 0 y_i(w\cdot x_i+b)>0 yi(wxi+b)>0,那么这个样本点的损失函数为0。如果这个样本点被错误分类,即 y i ( w ⋅ x i + b ) ≤ 0 y_i(w\cdot x_i+b)\leq 0 yi(wxi+b)0,那么这个样本点的损失函数就是 − y i ( w ⋅ x i + b ) -y_i(w\cdot x_i+b) yi(wxi+b)

为了最小化感知器的损失函数,我们需要对所有被错误分类的样本点 ( x i , y i ) (x_i, y_i) (xi,yi) 更新权重 w w w 和偏置 b b b。假设当前迭代到第 t t t 次,我们选取的样本点为 ( x i , y i ) (x_i, y_i) (xi,yi),那么在这次迭代中,我们需要将 w w w b b b 更新为:

w t + 1 = w t + η y i x i w_{t+1} = w_t + \eta y_i x_i wt+1=wt+ηyixi

b t + 1 = b t + η y i b_{t+1} = b_t + \eta y_i bt+1=bt+ηyi

其中, η \eta η 是学习率, w t w_t wt b t b_t bt 是上一次迭代得到的权重和偏置。这个更新规则的含义是:如果一个样本点 ( x i , y i ) (x_i, y_i) (xi,yi) 被错误分类,那么我们就沿着它的负梯度方向更新权重和偏置,使得这个样本点离超平面更近,从而使得它被正确分类。

在实际应用中,感知器算法往往需要多次迭代才能得到较好的结果。我们可以设置一个最大迭代次数或者一个阈值,当达到这个条件时就停止迭代。在每次迭代中,我们可以随机选取一个错误分类的样本点来更新权重和偏置,或者按照顺序遍历所有的样本点来更新权重和偏置。无论是哪种更新方式,最终的结果都是将数据集分为两类的超平面。

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

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

相关文章

研报精选230308

目录 【行业230308东吴证券】电力设备行业深度报告&#xff1a;氢能深度&#xff1a;绿氢&#xff0c;第四次能源革命的载体【个股230308安信证券_沪光股份】优秀的民营汽车线束供应商&#xff0c;行业国产化替代空间广阔【行业230308中原证券】食品饮料行业2月月报&#xff1a…

银行数字化转型导师坚鹏:数字化转型为什么需要致良知与知行合一

在银行数字化转型过程中&#xff0c;特别需要致良知与知行合一哲学思想的指导。 知中有行&#xff0c;行中有知&#xff1b;行极而知&#xff0c;知极而行&#xff1b;知行无端&#xff0c;知行无始。知与行是一件事&#xff0c;做事与培养本体&#xff08;修心&#xff09;也是…

手动集成Tencent SDK遇到的坑!!!

手动集成的原因 由于腾讯未把Tencent SDK上传到Github中&#xff0c;所以我们不能通过Cocoapods的方式集成&#xff0c;只能通过官方下载其SDK手动集成。 Tencent SDK手动集成步骤 1.访问腾讯开放平台SDK下载界面&#xff0c;找到并下载iOS_SDK_V3.5.1。&#xff08;目前最新…

数组(四)-- LC[167] 两数之和-有序数组

1 两数之和 1.1 题目描述 题目链接&#xff1a;https://leetcode.cn/problems/two-sum/description/ 1.2 求解思路 1. 暴力枚举 最容易想到的方法是枚举数组中的每一个数 x&#xff0c;寻找数组中是否存在 target - x 参考代码 class Solution(object):def twoSum(self, n…

Nginx学习(3)—— 反向代理、负载均衡、动静分离、URLRewrite、防盗链

文章目录网关、代理与反向代理Nginx的反向代理配置基于反向代理的负载均衡的配置负载均衡策略负载均衡权重相关配置&#xff08;weight&#xff09;动静分离Nginx配置动静分离URL-rewrite伪静态配置负载均衡URL-rewrite防盗链网关、代理与反向代理 什么是反向代理&#xff1a;…

在linux上部署Java项目

在Linux部署Java环境 要是想要部署java web程序,首先要配置环境 jdk tomcat mysql 安装jdk 推荐的方法是使用yum直接安装openjdk(开源的,与官方的jdk功能差不多),目前使用的最多的就是jdk8系列 yum list | grep jdk 在源上搜索所有关于jdk的文件 devel表示development的意思…

3.8多线程

案例一-线程安全的单例模式(面试)是一种设计模式,设计模式针对写代码时的一些常见场景给出一些经典解决方案单例模式的两种典型实现饿汉模式懒汉模式饿汉的单例模式:比较着急去进行创建实例懒汉的单例模式,是不太着急创建实例,,只是在用的时候,才真正创建这个是类对象,也就是.c…

【C++修炼之路】26.C++11(语法糖)

每一个不曾起舞的日子都是对生命的辜负 C11C11(语法糖)本节目标一.C11简介二.统一的列表初始化2.1 {}初始化2.2 std::initializer_list三.声明3.1 auto3.2 decltype3.3 nullptr四.总结C11(语法糖) 本节目标 C11简介 列表初始化 变量类型推导 一.C11简介 在2003年C标准委员…

信息收集-

url&#xff1a; https://en.wikipedia.org:443/wiki/hypertext_Transfer_Protocol?id123#HTTP/1.1_response_messages https&#xff1a;协议 en.wikipedia.org&#xff1a;域名 443&#xff1a;端口 wiki/hypertext_Transfer_Protocol&#xff1a;文件路径 id123&…

Unity 混合操作(Blending)

渲染图形时&#xff0c;在执行所有着色器并应用所有纹理后&#xff0c;像素将写入到屏幕。这些像素与已有像素的组合方式由 Blend 命令控制。用于生成透明对象。《Unity Shader入门精要》大致解释&#xff1a;片元通过了模板测试和深度测试之后&#xff0c;会进行混合步骤。如果…

三、SpringMVC的拦截器

1. SpringMVC的拦截器 针对请求和响应进行的额外的处理.在请求和响应的过程中添加预处理,后处理和最终处理. 2. 拦截器的应用场景 1、日志记录&#xff1a;记录请求信息的日志 2、权限检查&#xff0c;如登录检查 3、性能检测&#xff1a;检测方法的执行时间 3. 拦截器执行的…

调用一个函数时发生了什么?

欢迎来到 Claffic 的博客 &#x1f49e;&#x1f49e;&#x1f49e; 前言&#xff1a; 用C语言写代码&#xff0c;如果一个工程相对复杂时&#xff0c;我们往往会采取封装函数的方式。在主函数中调用函数 这一看似简单的过程&#xff0c;实际上有很多不宜观察的细节&#xff0…

计算机组成原理|第三章(笔记)

目录第三章 系统总线3.1 总线的基本概念3.2 总线的分类3.2.1 片内总线3.2.2 系统总线3.2.3 通信总线3.3 总线特性及性能指标3.3.1 总线的特性3.3.2 总线性能指标3.4 总线结构3.4.1 单总线结构3.4.2 多总线结构3.4.3 总线结构举例3.5 总线控制3.5.1 总线判优控制3.5.2 总线通信控…

ALG和STUN

目录 ALG 应用层网关讲解 Client1使用FTP主动模式建立FTP Client1使用FTP被动模式建立FTP STUN讲解 ALG 应用层网关讲解 用来替换应用层信息 Client1使用FTP主动模式建立FTP 主动模式&#xff1a;服务器收到客户端发来的请求FTP的地址和端口 服务器使用20端口直接向客户端建…

webpack dll 提升构建速度

DLL&#xff0c;动态链接库&#xff08;Dynamic Link Library 或者 Dynamic-link Library&#xff09;&#xff0c;由微软公司提出。目的是为了节约应用程序所需的磁盘和内存空间。 在一个传统的非共享库中&#xff0c;如果两个程序调用同一个子程序&#xff0c;就会出现两份那…

Redis-6集群

文章目录前言Redis集群原理搭建Redis集群集群拓展后记前言 前两期介绍和搭建了Redis的主从复制架构和哨兵模式&#xff0c;虽然哨兵模式能够实现自动故障转移主备切换&#xff0c;一定程度上提高了系统的容错性 但这两种架构模式都不能解决单节点的并发压力和物理上线的问题&…

行测-判断推理-图形推理-样式规律-空间重构-立体拼合

有凸必有凹&#xff0c;排除A CD显然不对选BA和4能组成长方体B和3能组成长方体C和1能组成长方体选D这两个东西应该在同一侧&#xff0c;排除A C中间应该要由凸起&#xff0c;排除D选B图1向左旋转90图2逆时针旋转90选A

内网环境解决SSL证书问题

本来这个没什么好写的&#xff0c;但是坑实在有点多&#xff0c;不得不写个文章记录下来。 创建证书看这里&#xff01;&#xff01;&#xff01; 很多知识点要结合这个页面内容来看。 创建证书已经看过相关文章&#xff0c;然后用unity跑的时候发现连不上&#xff0c;完全没…

【Go】基于VS Code配置Go语言环境

教程 1. 安装go环境 打开官网&#xff1a;https://go.dev/dl/&#xff0c;找到对应系统的环境文件。 安装完成后软件会自动把路径添加到环境变量&#xff0c;可以在命令行中检验一下 2. 在VS Code中安装必要的插件 这一步我理解的就是提供语法高亮和代码提示 3. 打开一个路…

基于智能边缘和云计算的数字经济服务细粒度任务调度机制

数字经济被各国视为推动经济增长的必然选择&#xff0c;为经济高质量发展提供了新机遇、新路径。对于中国市场而言&#xff0c;云计算背后的强大基础是数字经济不可阻挡的发展趋势。在数字经济中&#xff0c;云作为基础设施成为构建数字经济金字塔的基础。为缓解数字经济服务器…