【感知机】感知机(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)

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

感知机优缺点

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

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

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

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

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

相关文章

N叉树的后序遍历

1.题目 这道题是2024-2-19的签到题&#xff0c;题目难度为简单。 考察的知识点为DFS算法&#xff08;树的深度遍历&#xff09;。 题目链接&#xff1a;N叉树的后序遍历 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 后序遍历 。 n 叉树 在输入中按层序遍历进…

leetcode刷题-最接近的三位数之和

1.题目描述 2.解题思路 其实这个题目的解题思路&#xff0c;和昨天写的两个题目差不多&#xff0c;定义两个指针&#xff0c;进行排序&#xff0c;避免多次大量循环&#xff0c;减少时间复杂度。在上次的基础上进行了一个比较小的改动。 3.代码 class Solution:def threeSumCl…

swagger+javax/xml/bind/DatatypeConverter+aop各种问题

文章目录 一、No operations defined in spec!1.问题图片2.解决方法 二、java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter1.问题图片2.解决方法 三、AOP切点不够精确问题1.问题描述2.解决方案 总结 一、No operations defined in spec! 这是swagger报的错&…

代码随想录算法训练营 DAY20 | 二叉树(7)

一、LeetCode 530 二叉搜索树的最小绝对值 题目链接&#xff1a;530.二叉搜索树的最小绝对值https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 思路一&#xff1a;利用搜索二叉树的中序遍历结果为有序数组的性质&#xff0c;将遍历结果保存到数组中&#xf…

【Google SEO】SEO指标

SEO最难的事情之一就是&#xff1a; 你怎么知道你正在做的事情是否真的有效&#xff1f; 这是一个很难回答的问题。特别是因为SEO可能需要几个月的时间才能真正发挥作用。 好吧&#xff0c;今天您将确切地看到要跟踪的SEO指标。如何跟踪它们。以及如何加倍努力&#xff0c;为…

阿里云香港轻量应用服务器是什么线路?

阿里云香港轻量应用服务器是什么线路&#xff1f;不是cn2。 阿里云香港轻量服务器是cn2吗&#xff1f;香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器&#xff0c;通过mtr traceroute测试了一下&#xff0c;最后一跳是202.97开头的ip&#xff0c;1…

分库分表面试必背

一&#xff0c;背景 随着互联网的普及&#xff0c;使用人数和场景爆炸式增长&#xff0c;现在随便一个应用系统都可能达到数百万千万甚至更大数量级的数据。大量的数据带来了新的挑战&#xff0c;怎么快速完成增删改查的业务&#xff0c;是应用服务开发者最头痛的问题。面对这个…

Linux网络编程套接字

目录 认识端口号认识传输层协议TCP/UDP网络字节序socket编程接口实现简单的UDP网络程序实现远程执行服务器shell指令Windows套接字编写UDP实现一个简单的聊天室实现简单的TCP网络程序TCP实现一个中英互译程序守护进程原理 认识端口号 在进行网络通信的时候是不是我们两台机器…

grafana配置钉钉告警模版(一)

1、配置钉钉告警模版 创建钉钉告警模版&#xff0c;然后在创建钉钉告警时调用模版。 定义发送内容具体代码 my_text_alert_list 是模版名称后面再配置钉钉告警时需要调用。 {{/* 定义消息体片段 */}} {{ define "my_text_alert_list" }}{{ range . }}告警名称&…

SpringAop是什么?

简单介绍&#xff1a; AOP&#xff1a;Aspect Oriented Programming (面向切面编程、面向方面编程)&#xff0c;其实就是面向特定方法编程。 场景&#xff1a; 比如现在有一个需求&#xff0c;我要统计每一个业务方法的耗时时长&#xff0c; 我们只需在业务方法的前面获取一个…

srs 边缘集群

srs官方关于边缘集群的介绍&#xff1a; Edge Cluster | SRS 本篇分析一下边缘集群中上行边缘节点的处理逻辑。 关于上行的边缘节点&#xff1a; SRS对于上行边缘&#xff0c;采取直接代理方式&#xff0c;并没有采取边缘缓存方式。所谓边缘缓存方式&#xff0c;即推流到边…

操作系统概念

一、概念 任何计算机系统都包含一个基本的程序集合&#xff0c;称为操作系统(OS)。笼统的理解&#xff0c;操作系统包括&#xff1a; 内核&#xff08;进程管理&#xff0c;内存管理&#xff0c;文件管理&#xff0c;驱动管理&#xff09;其他程序&#xff08;例如函数库&…

区块链技术和Hyperledger Fabric介绍

1 区块链介绍 1.1 区块链技术形成 1.1.1 起源 在比特币诞生之时&#xff0c;技术专家们开始研究比特币的底层技术&#xff0c;并抽象提取出来&#xff0c;形成区块链技术&#xff0c;或者称分布式账本技术。 1.1.2 定义 简称BT&#xff08;Blockchain technology&#xff…

【递归】【后续遍历】【迭代】【队列】Leetcode 101 对称二叉树

【递归】【后续遍历】Leetcode 101 对称二叉树 解法一&#xff1a; 递归&#xff1a;后序遍历 左右中解法二&#xff1a; 迭代法&#xff0c;用了单端队列 ---------------&#x1f388;&#x1f388;对称二叉树 题目链接&#x1f388;&#x1f388;------------------- 解法一…

Eclipse - Code Templates

Eclipse - Code Templates References Window -> Preferences -> C/C -> Code Style -> Code Templates 配置默认代码模板&#xff0c;可以点击 Export 将自己配置好的 Code Templates 导出去&#xff0c;以便备份和共享。 References [1] Yongqiang Cheng, https…

Docker原理及概念相关

Docker最核心的组件 image&#xff1a;镜像&#xff0c;构建容器&#xff0c;也可以通过Dockerfile文本描述镜像的内容。 (我们将应用程序运行所需的环境&#xff0c;打包为镜像文件) Container&#xff1a;容器 (你的应用程序&#xff0c;就跑在容器中 ) 镜像仓库(dockerhub)(…

应急响应实战笔记02日志分析篇(5)

第5篇:MySQL日志分析 常见的数据库攻击包括弱口令、SQL注入、提升权限、窃取备份等。对数据库日志进行分析&#xff0c;可以发现攻击行为&#xff0c;进一步还原攻击场景及追溯攻击源。 0x01 Mysql日志分析 general query log能记录成功连接和每次执行的查询&#xff0c;我们…

《白话C++》第10章 STL和boost,Page84 shared_ptr示例使用,容器中的指针

容器中的指针在容器解体时经常忘了释放&#xff1f;指针存放在容器中多次&#xff0c;结果被重复释放&#xff1f;这个问题&#xff0c;通过std::shared_ptr都可以完美地解决&#xff1a; #include <iostream> #include <list> #include <vector> #include …

如何使用Net2FTP部署本地Web网站并实现远程文件共享

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

【DBeaver+mysql】如何在DBeaver中创建mysql服务的连接并新建数据库

一、创建步骤 1、下载安装mysql 8.0&#xff08;注意&#xff0c;安装过程会启动mysql服务&#xff0c;这才是能用命令行执行node处理sql语句的关键&#xff09; 下载地址&#xff1a;https://dev.mysql.com/downloads/file/?id526407 2、下载安装DBeaver数据库管理IDE 3、在…