1.人工智能算法初探——感知机全解(原始形式and对偶形式)

2023-11-08

感知机(perceptron)是1957年由Rosenblatt提出,是神经网络与支持向量机的基础。感知机是二分类的线性可分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1两个值。感知机只能应用到线性可分的数据集当中,对于线性不可分的问题感知机无法解决,其原理其实很简单:在特征空间中找到一个超平面将两类样本划分到超平面两侧,实现样品种类的划分。

1.感知机模型

假设输入空间是\chi \subseteq R^n,输出空间是\gamma =\begin{Bmatrix} +1,-1\\ \end{Bmatrix},输入x\subseteq \chi表示实例的特征向量,对于输入空间的点,输出y\subseteq \gamma表示实例的类别,感知机模型可以如下形式:

其中w和b为感知机的参数,w为权重(weight),b为偏置(bias),w\cdot x是w与x的内积,sign为符号函数,如下

 其函数形式如下图所示:

感知机是一种线性分类器,属于判别模型。感知机有如下的几何解释:

线性方程w\cdot x+b=0对应于特征空间的一个超平面S,其中w是超平面的法向量,b是超平面的截距,这个超平面将特征空间划分为两个部分,位于超平面两侧的点被分为+1、-1两类。因此,超平面S称为分离超平面,如下图所示:

2.感知机学习策略 

2.1感知机的线性可分性

对于给定数据集T,如果存在超平面S:w\cdot x+b=0能够将数据集的正负实例完全正确地划分到超平面两侧,即对所有实例存在:y_{i}(w\cdotx+b)>0,则称数据集T是线性可分数据集;否则,称数据集T线性不可分。

2.2感知机学习策略

假设数据集是线性可分的,我们需要找到一个超平面将数据集完美划分,而超平面受参数w和b控制,因此我们需要找到合适的w和b使超平面完美划分两类数据。如何找到这两个合适的参数呢,这就要用到我们前面说的损失函数,将损失函数作为评价标准,极小化损失函数

损失函数的选择也是一个问题,对于这个问题我们最自然的选择就是选择误分点数作为损失函数,但是由于这个损失函数对w和b这两个参数不是可导的,导致后面无法优化w和b两个参数,因此不选择使用。针对感知机问题常选用的损失函数是误分点到超平面的距离。          

下面给出输入空间R^n中一点到超平面的距离:

这里||w||是w的L2范数(平方和再开方)。

其次上面已经提到了对于所有正确分类的点都有y_{i}(w\cdotx+b)>0,那么对于误分点自然存在:y_{i}(w\cdotx+b)>0因此误分点到超平面的距离是:

则所有误分点到超平面的距离和为:

忽略1/||w||,就得到感知机的损失函数(1/||w||是一个常数,并不影响,可以直接忽略):

可以看出损失函数是对全部误分点到超平面距离求和,是非负的,当点全部正确分类时,损失函数为0,误分类点越少,损失函数越少。                                              

3感知机学习算法    

根据上面的推导可以得到感知机学习问题转化为求解上述损失函数的最优化问题,最优化的方式是通过随机梯度下降法,感知机学习算法包括原始形式和对偶形式两种。

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

感知机学习算法的损失函数如下:

损失函数为所有误分点到超平面的距离,下面我们采用随机梯度下降法最优化w和b两个参数。具体过程如下:

(1)随机选取初值w_{0}b_{0}

(2)选取训练数据中一组数据(x_{i},y_{i});

(3)如果y_{i}(w\cdot x_{i}+b)\leqslant 0,求解损失函数对两个参数的梯度:\triangledown _{w}L(w,b)=-\sum y_{i}x_{i}\triangledown _{w}L(w,b)=-\sum y_{i},对w和b进行更新:

(4)转至(2),直至训练集中没有误分点。                                                                                                                                   以上便是感知机算法原始形式的实现过程。                                                                                                                                      

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

首先介绍一下对偶:对偶规划(dual programming)一类线性规划问题,指由原线性规划问题按如下对称规律构成的新线性规划问题:若原问题(P)为maxz=CTX,满足{AX≤b,x≤0 },则对称的新问题(D)为minw=yTb,满足{yTA≥c,y≥0 },这里y为m维列向量,新问题(D)称为原线性规划的对偶规划。

简单的将对偶形式就是将原始问题不好求解的问题转化问另一种方便求解的形式。

感知机算法中的对偶形式的基本思想是,将w和b表示为实例x_{i}y_{i}的线性组合的形式,通过求解其系数而求得w和b。

在上面原始形式中,我们通过梯度下降算法对w和b进行更新:

经过n次更新后,w和b关于(xi,yi)的增量分别为axiyi和ayi,这里的a_{i}=n_{i}\eta,不难看出最后学习到的w和b分别可以表示为:

下面给出感知机对偶形式的算法过程:

(1)a=0,b=0;

(2)选取训练集中的数据(xi,yi);

(3)如果存在y_{i}(\sum{a_{j}y_{j}x_{j}\cdot x_{i}+b})\leqslant 0,则进行跟新:

(4)转至(2)直至没有误分类数据。

对偶形式中的孙连实例仅仅以内积的形式出现,因此为了方便,可以预先将训练集中实例间的内积计算出来,并以矩阵形式存储起来,这个矩阵就是所谓的Gram矩阵:

以上就是对感知机算法的全部内容的讲解,这个算是对算法讲解的第一篇文章,打字辛苦,希望大家能够喜欢并支持一下~

下一篇文章将给出感知机的实现程序,有需要的小伙伴可以去取~

每天进步一点点~

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1.人工智能算法初探——感知机全解(原始形式and对偶形式) 的相关文章

  • 将区间映射到更小的区间的算法

    我尝试搜索 但由于问题的性质 我无法找到满意的内容 我的问题如下 我试图将 0 到 2000 范围内的数字 尽管理想情况下上限是可调的 映射到 10 到 100 范围内的更小的区间 上限将映射 2000 gt 100 和下限也是如此 除此之
  • 如何使用哈希表在最小堆上实现 O(1) 删除

    在某处阅读以下声明 可以使用附加的哈希表来快速删除 最小堆 问题 gt 如何组合priority queue and unordered map这样我就可以实现上面的想法了 include
  • 如何选择部分密集数据集的均匀分布子集?

    P是一个 n d 矩阵 持有nd 维样本 P某些地区的密度是其他地区的几倍 我想选择一个子集P其中任意样本对之间的距离大于d0 并且我需要将其传播到整个区域 所有样本都具有相同的优先级 无需优化任何内容 例如覆盖面积或成对距离之和 这是执行
  • O(mn) 比 O((m+n)^2) 更好吗?

    算法的输入是m and n 我的算法的时间复杂度是O mn 我有一个时间复杂度为的基准算法O m n 我的实现在时间复杂度方面是否优于基准 许多评论者和回答者希望只考虑以下情况 m n或者至少当它们通过一个常数因子相关时 这不是它的工作原理
  • 在 O(n) 时间内运行的指数乘法算法?

    我正在读一本算法教科书 我被这个问题难住了 假设我们要计算值 x y 其中 x 和 y 为正数 分别具有 m 和 n 位的整数 解决该问题的一种方法是执行 y 1 乘以 x 你能给出一个仅使用 O n 乘法步骤的更有效的算法吗 这会是一个分
  • 如何找到最长的回文子序列(不是它的长度)

    我想找出字符串中最长的回文子序列 我到处都找到了找出子序列长度的算法 并声明该算法也可以扩展以返回子序列 但我没有找到如何实现的 有人能解释一下我怎样才能得到序列吗 既然你提到了链接最长回文子序列 http www geeksforgeek
  • Java:使用indexOf方法根据另一个数组对数组进行排序

    我想根据另一个数组 索引 的排序顺序迭代两个数组 A B 在本例中为 10 34 32 21 String A a b c d String B e f g h int indexes 10 34 32 21 为这里的坏例子道歉 我已经更新
  • 以一定角度遍历二维数组

    通常我们按行或列遍历数组 但这里我想以角度遍历它 我会尝试解释我的意思 因此 假设角度是 45 度 那么它会搜索为 0 0 then 0 1 1 0 then 0 2 1 1 2 0 等等 抱歉 无法上传图像 因为我是新用户 不允许这样做
  • Bellman-Ford 算法检测什么?负重还是负循环?

    如果给定一个图 现在我们要从源头计算最短路径 现在 如果一条边具有负权重 但在到达目的地时有边到后边返回到该边 我的意思是如果没有循环 那么我们就没有负循环 但是here http en wikipedia org wiki Bellman
  • 用于插入/删除/排名/选择查询的最佳数据结构/算法

    到目前为止 我知道像AVL树和红黑树这样的自平衡BST可以在O log n 次内完成这些操作 然而 要使用这些结构 我们必须自己实现AVL树或RB树 我听说有一个算法 实现这四个操作而不使用自平衡 BST 有了我们自己定义的结构 我们就需要
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 如何计算两个ip之间的主机数量? C#

    我有两个ip 1 1 1 1 1 2 4 4 4 4 显然这只是一个例子 这是一个动态计算器 如果子网掩码不相关 我如何计算所述 ip 之间的主机数量 要计算 理论 IP 地址的数量 您需要将每个 IP 地址转换为其 32 位整数格式 这实
  • Java:如何实现3和?

    我正在研究 3 Sum 来自己实现它 并遇到了以下规则的实现 给定一个由 n 个整数组成的数组 S S 中是否存在满足 a b c 0 的元素 a b c 查找数组中所有总和为零的唯一三元组 注意 三元组 a b c 中的元素必须按非降序排
  • cordova 使用什么 js“引擎”?

    Cordova 使用什么 JS 引擎 它是特定于平台的还是跨所有平台的一个标准 意味着 iOS 的 safari 和 Android 的 chrome 以及 Windows 可能的 IE 标准 或者跨所有平台的 Cordova JS 引擎
  • C 中的菱形数组排序

    我有以下 C 语言作业 我基本上需要一种方法而不是解决方案 我们有一个 13 x 13 的数组 在数组中 我们有一个需要考虑的菱形形状 该菱形之外的所有内容都初始化为 1 不重要 下面的 5 x 5 数组示例 x x 1 x x x 2 2
  • Python 给定 k 个分区的整数分区

    我正在尝试寻找或开发Python 的整数分区代码 仅供参考 整数分区将给定整数 n 表示为小于 n 的整数之和 例如 整数5可以表示为4 1 3 2 3 1 1 2 2 1 2 1 1 1 1 1 1 1 1 我为此找到了许多解决方案 ht
  • 使用FFT算法计算

    给定在平面上的点 1 0 2 0 n 0 上发现的一组 n 个粒子电荷载流子 在 i 0 点发现的粒子电荷记为 Qi 作用在粒子上的力由以下公式给出 C is a Coulomb s constant 给出一个算法来计算 Fi 对于总复杂度
  • 如何在给定目标索引数组的情况下对数组进行就地排序?

    你如何对给定的数组进行排序arr in place给定目标索引数组ind 例如 var arr A B C D E F var ind 4 0 5 2 1 3 rearrange arr ind console log arr gt B E
  • 通过分布式数据库聚合作业优化网络带宽

    我有一个分布式 联合数据库 结构如下 数据库分布在三个地理位置 节点 每个节点集群有多个数据库 关系数据库是 PostgreSQL MySQL Oracle 和 MS SQL Server 的混合体 非关系数据库是 MongoDB 或 Ca
  • Codility 钉板

    尝试了解 Codility NailingPlanks 的解决方案 问题链接 https app codility com programmers lessons 14 binary search algorithm nailing pla

随机推荐

  • 公开数据集下载地址

    这里写目录标题 一 目标检测 分割数据集 1 COCO 数据集 COCO2014 COCO2017 2 PASCAL VOC数据集 voc2007数据集 voc 2012数据集 二 自动驾驶数据集 1 BDD100K 数据集 2 Nusce
  • STM32单片机示例:多个定时器同步触发启动

    文章目录 前言 基础说明 关键配置与代码 其它补充 示例链接 前言 多个定时器同步触发启动是一种比较实用的功能 这里将对此做个示例说明 基础说明 该示例演示通过一个TIM使能时同步触发使能另一个TIM 本例中使用TIM1作为主机 使用TIM
  • Linux主机测评

    安全计算环境 一 身份鉴别 a 应对登录的用户进行身份标识和身份鉴别 身份标识具有唯一性 身份鉴别信息具有复杂度要求并定期更换 此项部分符合 在root权限下查看有关用户的配置文件 1 通过etc password检查身份标识 看是否有没有
  • qq windows版客户端0day复现——远程代码执行(七夕小礼物)

    ps 本文章仅用来分享 请勿将文章内的相关技术用于非法目的 请勿将文章内的相关技术用于非法目的 请勿将文章内的相关技术用于非法目的 如有非法行为与本文章作者无任何关系 一切行为以遵守 中华人民共和国网络安全法 为前提 今天hw貌似爆了挺多劲
  • R语言 集成算法(Bagging算法和Adaboot算法)

    关注微信公共号 小程在线 关注CSDN博客 程志伟的博客 R版本 3 6 1 adaboost包 提供Bagging函数和Adaboot函数 gt setwd G R语言 大三下半年 数据挖掘 R语言实战 gt data read csv
  • 实现登录功能之拦截器和导航守卫的使用

    需求 本次主要通过SpringSecurity jwt vue实现简易的登录Demo 实现的功能 主要写Demo过程中记录关于拦截器和导航守卫的使用 环境 nodejs v14 16 1 vue 2 9 6 npm 6 14 12 webp
  • 【求助】ERROR: No matching distribution found for python-gssapi==0.6.4怎么解决

    Collecting python gssapi 0 6 4 Using cached https pypi tuna tsinghua edu cn packages a4 9e 648b4e85235097edcee561c986f70
  • 数据结构-时间复杂度

    一 常数操作 常见固定时间的操作 1 常见算术运算 2 位运算 gt gt gt gt gt lt lt 等 3 赋值 比较 自增 自减 4 数组寻址 可以通过计算偏移量直接获取第N位置的内容 对比链表寻址 是没有办法直接计算得到第N位置的
  • c# 进程的创建与撤销

    1 创建进程 using System using System Diagnostics using System ComponentModel namespace MyProcessSample class MyProcess publi
  • C++(11):线程局部变量thread_local

    多线程中 每个线程都拥有自己的栈空间 但是对于全局变量 静态变量以及堆上空间 是共享于多个线程间的 这可以有效的在多个线程间共享数据 但也是多线程竞争的主要来源 include
  • 浅谈人工智能与伦理道德

    人工智能技术简介 人 工 智 能 技 术 简 称 AI ArtificialIntelligence AI作为一门学科 于1956 年问世 是由 人工智能之父 麦卡锡 McCartney 及一批数学家 信息学家 心理学家 神经生理学家 计算
  • Android 调试桥(adb)安装、配置、使用

    一 安装 1 官网 https developer android com studio command line adb 2 下载 3 解压 二 配置环境 在安装完成之后 将android的adb工具所在目录加入环境变量里面 1 在终端中
  • neo4j--Cypher索引、约束、统计

    Cypher索引 约束 统计 1 索引 1 1创建索引 使用CREATE INDEX ON可以在拥有某个标签的所有节点的某个属性上创建索引 注意 索引是在后台创建 并不能立刻就生效 CREATE INDEX ON Person name 本
  • 已知路由器R1的路由表如表4-12所示。试画出各网络和必要的路由器的连接拓扑,标注出必要的IP地址和接口。对不能确定的情况应当指明。

    姐 注意点 1 下一跳地址即代表路由器
  • 对xml内数据的操作(xml生成、增删改查)

    接口 package com baozupo gzl severce import org dom4j Document import com baozupo gzl bean Froms public interface XMLUtils
  • 服务器架设了网站还能架设游戏吗,可以在云服务器里架设游戏吗

    可以在云服务器里架设游戏吗 内容精选 换一换 标签是弹性云服务器的标识 为弹性云服务器添加标签 可以方便用户识别和管理拥有的弹性云服务器资源 您可以在创建弹性云服务器时添加标签 也可以在弹性云服务器创建完成后 在云服务器的详情页添加标签 您
  • No.14新一代信息技术

    新一代信息技术产业包括 加快建设宽带 泛在 融合 安全的信息忘了基础设施 推动新一代移动通信 下一代互联网核心设备和智能终端的研发及产业化 加快推进三网融合 促进物联网 云计算的研发和示范应用 大数据 云计算 互联网 物联网 智慧城市等是新
  • Android 数据库增删改查

    文章目录 一 案例演示 二 实现步骤 1 activity main xml 2 MainActivity java 3 UserDao java 4 User java 5 SQLiteOpenHelper java 一 案例演示 二 实
  • 关于laravel开发实战的一些小技巧

    在目前的 web开发中 主流的框架有很多 例如 Spring Boot Spring Cloud MyBatis Golang Ruby on Rails等 这些框架都各有其特点 但也都存在一些共同的问题 比如稳定性差 开发效率低等 在我看
  • 1.人工智能算法初探——感知机全解(原始形式and对偶形式)

    感知机 perceptron 是1957年由Rosenblatt提出 是神经网络与支持向量机的基础 感知机是二分类的线性可分类模型 其输入为实例的特征向量 输出为实例的类别 取 1和 1两个值 感知机只能应用到线性可分的数据集当中 对于线性