当前位置: 首页 > news >正文

【感知机】感知机(perceptron)学习算法知识点汇总

机器学习——感知机

感知机(perceptron)是一种二分类的线性模型,属于判别模型,也称为线性二分类器。输入为实例的特征向量,输出为实例的类别(取+1和-1)。可以视为一种使用阶梯函数激活的人工神经元,例如通过梅尔频率倒谱系数(MFCC)对语音进行分类或通过图像的像素值对图像进行分类。 


目录

感知机模型

感知机的几何解释

数据集的线性可分性

感知机学习策略

感知机学习算法

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

感知机学习算法的对偶形式

算法的收敛性

感知机算法例题

感知机优缺点


感知机模型

定义 设输入空间(特征空间)\mathcal{X} \in \mathbb{R}^{n},输出空间\mathcal{Y}=\left \{ +1,-1 \right \}。输入x\in \mathcal{X}表示实例的特征向量,对应于输入空间的点,输出y\in\mathcal{Y}表示实例的类别,由输入空间到输出空间的函数f(x)=sign(w\cdot x+b)称为感知机

w,b为参数。w\in \mathbb{R}^{n}叫做权值或权值向量(weight vector),b叫作偏置(bias)

符号函数sign的功能是取某个数的符号

sign(x)=\left\{\begin{matrix}+1,x\geq 0 \\ -1,x<0 \end{matrix}\right.

感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器,即函数集合\left \{ f|f(x)=w\cdot x+b \right \}

感知机的几何解释

w\cdot x+b=0:对应特征空间\mathbb{R}^{n}中的一个超平面S,这个超平面将特征空间划分为两个部分,称为分离超平面(separating hyperplane)

b:超平面的截距

w:超平面的法向量

数据集的线性可分性

给定一个数据集T=\left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right \},其中x_i\in\mathbb{R}^{n},y_i\in\left \{ +1,-1 \right \},如果存在一个超平面w\cdot x+b=0,能够正确地划分所有正负实例点,则称数据集T为线性可分数据集(linearky separable data set),否则称其线性不可分.

感知机学习策略

假设训练数据集线性可分

学习目标:求得正确划分训练集中所有正负实例点的分离超平面

学习策略:1、确定一个损失函数。2、选取使损失函数最小的参数。


损失函数的选择:误分类点到分离超平面的距离

任一点x_0到超平面的距离公式\frac{1}{\left \| w \right \|}\left | w\cdot x_0+b \right |,其中\left \| w \right \|wL_2范数,

向量的L_2范数:向量各元素平方和的平方根

定理1:对于误分类数据(x_i,y_i),有y_i(w\cdot x_i+b)<0

从而由距离公式和定理1,得

误分类点x_i到超平面的距离公式-y_i\frac{1}{\left \| w \right \|} (w\cdot x_i+b ) 

实现了去掉绝对值的工作

所有误分类点到超平面的总距离- \frac{1}{\left \| w \right \|} \underset{x_i\in M}{\sum } y_i (w\cdot x_i+b ) ,M为误分类点集合

不必考虑\frac{1}{\left \| w \right \|},最终得到损失函数


损失函数L(w,b)=- \underset{x_i\in M}{\sum } y_i (w\cdot x_i+b ) 

一 个特定的样本点的损失函数:在误分类时是参数w,b的线性函数;在正确分类时是0。

因此,

 给定训练数据集T时,损失函数是w,b的连续可导函数

感知机学习算法

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

输入:训练数据集T=\left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N)\right \},其中x_i\in\mathbb{R}^{n},y_i\in\left \{ +1,-1 \right \},学习率\eta \left ( 0<\eta \leq 1 \right )

1.任意选取初值w_0,b_0

2.任意顺序遍历i,计算y_i (w\cdot x_i+b ),当y_i (w\cdot x_i+b )\leq 0,转到步骤3;若对任意iy_i (w\cdot x_i+b )> 0,转到输出

3. w\leftarrow w+\eta y_ix_i,   b\leftarrow b+\eta y_i,转到步骤2.

输出w,b;感知机f(x)=sign(w\cdot x+ b)

算法采用随机梯度下降法(stochastic gradient descent):

首先任意选取一个超平面,然后用梯度下降法极小化损失函数。极小化过程不是一次使所有误分类点的梯度下降,而是每次随机选取一个误分类点使其梯度下降。

设误分类点集合M固定,损失函数L(w,b)=- \underset{x_i\in M}{\sum } y_i (w\cdot x_i+b )的梯度为:

\bigtriangledown_wL(w,b)=-\underset{x_1\in M}{\sum}y_ix_i

\bigtriangledown_bL(w,b)=-\underset{x_1\in M}{\sum}y_i

对某点(x_i,y_i)w的梯度-y_ix_i是增大的方向,故w\leftarrow w+\eta y_ix_i使损失函数减少。

算法理解:当一个实例点被误分类时,则调整w,b的值,使分类超平面向该误分类点的一侧移动,减少该误分类点与超平面的距离,直至超平面越过该误分类点使其被正确分类

感知机学习算法的对偶形式

感知机学习算法的原始形式和对偶形式与支特向量机学习算法的原始形式和对偶形式相对应

输入:训练数据集T=\left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N)\right \},其中x_i\in\mathbb{R}^{n},y_i\in\left \{ +1,-1 \right \},学习率\eta \left ( 0<\eta \leq 1 \right )

1.\alpha \leftarrow 0,b\leftarrow 0其中\alpha =(\alpha _1,\alpha _2,...,\alpha _n)^{T}

2.任意顺序遍历i,计算y_i (\sum_{j=1}^{N} \alpha _jy_jx_j\cdot x+ b),当y_i (\sum_{j=1}^{N} \alpha _jy_jx_j\cdot x+ b)\leq 0,转到步骤3;若对任意i​​​​​​​,y_i (w\cdot x_i+b )> 0,转到输出

3. \alpha_i\leftarrow \alpha_i+\eta,   b\leftarrow b+\eta y_i,转到步骤2

输出\alpha ,b;感知机f(x)=sign(\sum_{j=1}^{N} \alpha _jy_jx_j\cdot x+ b)

对偶形式的基本想法:将wb表示为实例x_i和标记y_i的线性组合的形式,通过求解其系数来求解wb

基于原始形式,可设 w_0=0,b_0=0,则迭代n次后,设第I个实例点由于误分而更新的次数为n_i,令\alpha_i=n_i\eta,有w=\sum_{i=1}^{N}\alpha_iy_ix_i,b=\sum_{i=1}^{N}\alpha_iy_i

注意:实例点更新次数越多,意味着它离分离超平面越近,意味着越难分类。这样的实例点对于学习结果的影响最大。

Gram矩阵:对偶形式中的训练实例仅以内积的形式出现,将实例间的内积计算出来并以矩阵的形式储存,G=[x_i\cdot x_j]_{N\times N},称为Gram矩阵

算法的收敛性

算法原始形式收敛:意味着经过有限次迭代可得到一个将训练数据集完全正确划分的分离超平面

为便于推导,记\hat{w}=(w^{T},b)^{T},扩充输入向量,记\hat{x}=(x^{T},1)^{T},则有\hat{w}\in\mathbb{R}^{n+1},\hat{x}\in\mathbb{R}^{n+1}\hat{w}\cdot\hat{x}=w\cdot x+b

(Novikoff)定理 设训练集T=\left \{ (x_1,y_1),(x_2,y_2),...,(x_N,y_N) \right \}线性可分,其中x_i\in\mathbb{R}^{n},y_i\in\left \{ +1,-1 \right \},则:

(1)存在满足\left \| \hat{w} \right \|=1的超平面\hat{w}\cdot\hat{x}=w\cdot x+b=0将训练数据集完全正确分开,且存在\gamma >0,对所有i=1,2,...,N,

y_i(\hat{w}\cdot\hat{x})=y_i(w\cdot x_i+b)\geq \gamma

(2)令R=\underset{1\leq i\leq N }{max}\left \| \hat{x_i} \right \|,则感知机学习算法在训练数据集上的误分类次数k满足不等式

k\leq (\frac{R}{\gamma })^{2}

定理表明,当训练数据集线性可分时,经过有限次搜索可以找到将训练数据集完全正确分开的超平面,即算法的原始形式收敛。

感知机算法例题

例1 训练数据集如图所示,正实例点为x_1=(3,3)^{T},x_2=(4,3)^{T},负实例点为x_3=(1,1)^{T},试用感知机算法原始形式求感知机模型,令w=(w^{(1)},w^{(2)})^{T},x=(x^{(1)},x^{(2)})^{T}

解答:

(1)建模最优化问题:\underset{w,b}{min}L(w,b)= - \underset{x_i\in M}{\sum } y_i (w\cdot x_i+b )

(2)取初值w_0=0,b_0=0\eta =1 

(3)按x_1,x_2,x_3顺序,对x_1=(3,3)^{T},y_1(w\cdot x1+b )= 0,则x_1为误分类点。更新w,b

w_1=w_0+y_1x_1=(3,3)^{T},b_1=b_0+\eta y_1=1

得到线性模型:w_1\cdot x+b_1=3x^{(1)}+3x^{(2)}+1=0

(4)重新选取,对x_1,x_2y_i(w_1\cdot x_i+b_1)>0,则均为正确分类点,不更新w,b

x_3=(1,1)^{T}y_3(w_1\cdot x_3+b_1)< 0,则x_3为误分类点,更新w,b

w_2=w_1+y_3x_3=(2,2)^{T},b_2=b_1+\eta y_3=0​​​​​​​

得到线性模型:w_2\cdot x+b_2=2x^{(1)}+2x^{(2)}=0

(5)由此不断迭代

(6)直到w_7=(1,1)^{T},b_7=-3​​​​​​​

线性模型:w_7\cdot x+b_7=x^{(1)}+x^{(2)}-3=0

对所有数据点y_i(w_1\cdot x_i+b_1)>0,则确定分离超平面:x^{(1)}+x^{(2)}-3=0

感知机模型f(x)=sign(x^{(1)}+x^{(2)}-3)

分离超平面x^{(1)}+x^{(2)}-3=0是按照x_1,x_3,x_3,x_3,x_1,x_3,x_3的取点顺序得到的

例1如果更换取点顺序为x_1,x_3,x_3,x_3,x_2,x_3,x_3,x_3,x_1,x_3,x_3,得到的分离超平面为:

2x^{(1)}+x^{(2)}-5=0

由此,可知结论:感知机算法采用不同的初值或选取不同的误分类点顺序,解可以不同

例2 训练数据集如图所示,正实例点为x_1=(3,3)^{T},x_2=(4,3)^{T},负实例点为x_3=(1,1)^{T},试用感知机算法对偶形式求感知机模型,令w=(w^{(1)},w^{(2)})^{T},x=(x^{(1)},x^{(2)})^{T}

解答:

(1)取\alpha_1=0,i=1,2,3,b=0,\eta =1;

(2)计算Gram矩阵

G=\begin{bmatrix} 18 & 21 &6 \\ 21& 25&7 \\ 6 & 7 & 2 \end{bmatrix}

(3)误分条件

y_i (\sum_{j=1}^{N} \alpha _jy_jx_j\cdot x+ b)\leq 0

(4)参数更新

\alpha_i\leftarrow \alpha_i+1,b\leftarrow b+y_i

(5)迭代

(6)最终得到

w=\alpha_1x_1+\alpha_2x_2+\alpha_3x_3=2x_1+0x_2+5x_3=(1,1)^{T}

b=-3

则,分离超平面:x^{(1)}+x^{(2)}-3=0

感知机模型:f(x)=sign(x^{(1)}+x^{(2)}-3)

与原始形式一致,感知机学习算法的对偶形式迭代收敛,且存在多个解

感知机优缺点

优点:简单、易于实现、运行速度快

缺点:仅处理线性可分问题,面对多类别多分类问题需要多个分类器导致训练成本增加

在例题的实际操作中可以发现,感知机学习算法存在许多解,这些解既依赖于初值的选择,也依赖于选代过程中误分类点的选择顺序。而为了得到唯一的超平面,需要对分离超平面增加约束条件,这就涉及到了线性支持向量机的想法。

相关文章:

【感知机】感知机(perceptron)学习算法知识点汇总

机器学习——感知机 感知机(perceptron)是一种二分类的线性模型&#xff0c;属于判别模型&#xff0c;也称为线性二分类器。输入为实例的特征向量&#xff0c;输出为实例的类别(取1和-1)。可以视为一种使用阶梯函数激活的人工神经元,例如通过梅尔频率倒谱系数&#xff08;MFCC…...

蓝桥杯:C++二分算法

在基本算法中&#xff0c;二分法的应用非常广泛&#xff0c;它是一种思路简单、编程容易、效率极高的算法。蓝桥杯软件类大赛中需要应用二分法的题目很常见。 二分法有整数二分和实数二分两种应用场景 二分法的概念 二分法的概念很简单&#xff0c;每次把搜索范围缩小为上一…...

Leetcode刷题笔记题解(C++):83. 删除排序链表中的重复元素

思路&#xff1a;链表相关的问题建议就是画图去解决&#xff0c;虽然理解起来很容易&#xff0c;但就是写代码写不出来有时候&#xff0c;依次去遍历第二节点如果与前一个节点相等则跳过&#xff0c;不相等则遍历第三个节点 /*** Definition for singly-linked list.* struct …...

@ 代码随想录算法训练营第8周(C语言)|Day56(动态规划)

代码随想录算法训练营第8周&#xff08;C语言&#xff09;|Day56&#xff08;动态规划&#xff09; Day56、动态规划&#xff08;包含题目 ● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组 &#xff09; 300.最长递增子序列 题目描述 给你一个整数…...

C# OpenCvSharp DNN Image Retouching

目录 介绍 模型 项目 效果 代码 下载 C# OpenCvSharp DNN Image Retouching 介绍 github地址&#xff1a;https://github.com/hejingwenhejingwen/CSRNet (ECCV 2020) Conditional Sequential Modulation for Efficient Global Image Retouching 模型 Model Properti…...

通过Docker Compose的方式在Docker中安装Maven环境

目前可以说 Docker 已经是在开发部署中成为主流&#xff0c;所以我们很多环境和工具都会安装在 Docker 容器中&#xff0c;Maven 环境是 SpringBoot 项目中最常用的依赖管理工具。当我们使用自动运维工具如 Ansible、Chef 、Puppet、Walle、Spug等&#xff09;管理和部署 Maven…...

Python实现线性逻辑回归和非线性逻辑回归

线性逻辑回归 # -*- coding: utf-8 -*- """ Created on 2024.2.20author: rubyw """import matplotlib.pyplot as plt import numpy as np from sklearn.metrics import classification_report from sklearn import preprocessing from sklearn…...

【软考】软件维护

目录 一、说明二、正确性维护三、适应性维护四、完善性维护五、预防性维护 一、说明 1.软件维护主要是根据需求变化或硬件环境的变化对应用程序进行部分或全部修改 2.修改时应充分利用源程序&#xff0c;修改后要填写程序修改登记表&#xff0c;并在程度变更通知书上写明新旧程…...

突破性创新:OpenAI推出Sora视频模型,预示视频制作技术的未来已到来!

一、前言 此页面上的所有视频均由 Sora 直接生成&#xff0c;未经修改。 OpenAI - Sora is an AI model that can create realistic and imaginative scenes from text instructions. 2024 年 2 月 16 日&#xff0c;OpenAI 发布 AI 视频模型 Sora&#xff0c;60 秒的一镜到底…...

【Web前端笔记10】CSS3新特性

10 CSS3新特性 &#xff11;、圆角 &#xff12;、阴影 &#xff08;&#xff11;&#xff09;盒阴影 &#xff13;、背景渐变 &#xff08;&#xff11;&#xff09;线性渐变&#xff08;主要掌握这种就可&#xff09; &#xff08;&#xff12;&#xff09;径向渐变 &…...

LabVIEW荧光显微镜下微管运动仿真系统开发

LabVIEW荧光显微镜下微管运动仿真系统开发 在生物医学研究中&#xff0c;对微管运动的观察和分析至关重要。介绍了一个基于LabVIEW的仿真系统&#xff0c;模拟荧光显微镜下微管的运动过程。该系统提供了一个高效、可靠的工具&#xff0c;用于研究微管与运动蛋白&#xff08;如…...

【Java面试】MQ(Message Queue)消息队列

目录 一、MQ介绍二、MQ的使用1应用解耦2异步处理3流量削峰4日志处理5消息通讯三、使用 MQ 的缺陷1.系统可用性降低:2.系统复杂性变高3.一致性问题四、常用的 MQActiveMQ:RabbitMQ:RocketMQ:Kafka:五、如何保证MQ的高可用?ActiveMQ:RabbitMQ:RocketMQ:Kafka:六、如何保…...

【安卓基础1】初识Android

&#x1f3c6;作者简介&#xff1a;|康有为| &#xff0c;大四在读&#xff0c;目前在小米安卓实习&#xff0c;毕业入职。 &#x1f3c6;安卓学习资料推荐&#xff1a; 视频&#xff1a;b站搜动脑学院 视频链接 &#xff08;他们的视频后面一部分没再更新&#xff0c;看看前面…...

08-静态pod(了解即可,不重要)

我们都知道&#xff0c;pod是kubelet创建的&#xff0c;那么创建的流程是什么呐&#xff1f; 此时我们需要了解我们k8s中config.yaml配置文件了&#xff1b; 他的存放路径&#xff1a;【/var/lib/kubelet/config.yaml】 一、查看静态pod的路径 [rootk8s231 ~]# vim /var/lib…...

PROBIS铂思金融破产后续:ASIC牌照已注销

2024年1月31日&#xff0c;PROBIS铂思金融的澳大利亚ASIC牌照 (AFSL 338241) 被注销《差价合约经纪商PROBIS宣布破产&#xff0c;澳大利亚金融服务牌照遭暂停》&#xff0c;这也就意味着&#xff0c;PROBIS铂思金融目前已经没有任何金融牌照。 值得注意的是&#xff0c;时至今日…...

数字世界的探索者:计算机相关专业电影精选推荐

目录 推荐计算机专业必看的几部电影 《黑客帝国》 《社交网络》 《乔布斯传》 《心灵捕手》 《源代码》 《盗梦空间》 《头号玩家》 《我是谁&#xff1a;没有绝对安全的系统》 《战争游戏》(WarGames) 《模仿游戏》(The Imitation Game) 《硅谷》(Silicon Valley) …...

Spring Boot项目中TaskDecorator的应用实践

一、前言 TaskDecorator是一个执行回调方法的装饰器&#xff0c;主要应用于传递上下文&#xff0c;或者提供任务的监控/统计信息&#xff0c;可以用于处理子线程与主线程间数据传递的问题。 二、开发示例 1.自定义TaskDecorator import org.springframework.core.task.Task…...

511. 游戏玩法分析 I

文章目录 题意思路代码 题意 题目链接 统计每个用户第一次登陆平台时间 思路 代码 select player_id, min(event_date) as first_login from Activity group by player_id;...

大模型训练流程(三)奖励模型

为什么需要奖励模型 因为指令微调后的模型输出可能不符合人类偏好&#xff0c;所以需要利用强化学习优化模型&#xff0c;而奖励模型是强化学习的关键一步&#xff0c;所以需要训练奖励模型。 1.模型输出可能不符合人类偏好 上一篇讲的SFT只是将预训练模型中的知识给引导出来…...

替换if...else的锦囊妙计

目录 前言 一、又臭又长的if...else 二、消除if...else的锦囊妙计 1、使用注解 2、动态拼接名称 3、模板方法判断 4.策略工厂模式 5.责任链模式 6、其他的消除if...else的方法 1.根据不同的数字返回不同的字符串 2.集合中的判断 3.简单的判断 4.spring中的判断 原文…...

新建一个flask项目

在Flask中创建一个新的项目&#xff0c;您可以遵循以下步骤&#xff1a; 确保您已经安装了Python环境。如果还未安装Flask&#xff0c;可以通过pip来安装&#xff1a; pip install flask创建一个新的文件夹作为您的项目文件夹&#xff0c;例如myflaskapp&#xff1a; mkdir …...

【Linux 内核源码分析】物理内存组织结构

多处理器系统两种体系结构&#xff1a; 非一致内存访问&#xff08;Non-Uniform Memory Access&#xff0c;NUMA&#xff09;&#xff1a;这种体系结构下&#xff0c;内存被划分成多个内存节点&#xff0c;每个节点由不同的处理器访问。访问一个内存节点所需的时间取决于处理器…...

力扣日记2.21-【回溯算法篇】46. 全排列

力扣日记&#xff1a;【回溯算法篇】46. 全排列 日期&#xff1a;2023.2.21 参考&#xff1a;代码随想录、力扣 46. 全排列 题目描述 难度&#xff1a;中等 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&…...

[AIGC] Kafka 消费者的实现原理

在 Kafka 中&#xff0c;消费者通过订阅主题来消费数据。每个消费者都属于一个消费者组&#xff0c;消费者组中的多个消费者可以共同消费一个主题&#xff0c;实现分布式消费。每个消费者都会维护自己的偏移量&#xff0c;用于记录已经读取到的消息位置。消费者可以选择手动提交…...

Dubbo框架admin搭建

Dubbo服务监控平台&#xff0c;dubbo-admin是图形化的服务管理界面&#xff0c;从服务注册中心获取所有的提供者和消费者的配置。 dubbo-admin是前后端分离的项目&#xff0c;前端使用Vue&#xff0c;后端使用springboot。因此&#xff0c;前端需要nodejs环境&#xff0c;后端需…...

Linux 内存top命令详解

通过top命令可以监控当前机器的内存实时使用情况&#xff0c;该命令的参数解释如下&#xff1a; 第一行 15:30:14 —— 当前系统时间 up 1167 days, 5:02 —— 系统已经运行的时长&#xff0c;格式为时:分 1 users ——当前有1个用户登录系统 load average: 0.00, 0.01, 0.05…...

OCP使用CLI创建和构建应用

文章目录 环境登录创建project赋予查看权限部署第一个image创建route检查pod扩展应用 部署一个Python应用连接数据库创建secret加载数据并显示国家公园地图 清理参考 环境 RHEL 9.3Red Hat OpenShift Local 2.32 登录 通过 crc console --credentials 可以查看登录信息&…...

Chrome关闭时出现弹窗runtime error c++R6052,且无法关闭

环境&#xff1a; Chrome 版本121 Win10专业版 问题描述&#xff1a; Chrome关闭时出现弹窗runtime error cR6052&#xff0c;且无法关闭 解决方案&#xff1a; 1.任务管理器打开&#xff0c;强制结束进程 2.再次打开谷歌浏览器&#xff0c;打开设置关于Chrome&#xff0…...

【动态规划专栏】专题二:路径问题--------6.地下城游戏

本专栏内容为&#xff1a;算法学习专栏&#xff0c;分为优选算法专栏&#xff0c;贪心算法专栏&#xff0c;动态规划专栏以及递归&#xff0c;搜索与回溯算法专栏四部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小…...

flink operator 1.7 更换日志框架log4j 到logback

更换日志框架 flink 1.18 1 消除基础flink框架log4j 添加logback jar 1-1 log4j log4j-1.2-api-2.17.1.jar log4j-api-2.17.1.jar log4j-core-2.17.1.jar log4j-slf4j-impl-2.17.1.jar 1-2 logback logback-core-1.2.3.jar logback-classic-1.2.3.jar slf4j-api-1.7.25.jar2 …...