感知机模型

news2024/11/15 20:00:52

1. 提出问题

问题:有一组训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) } T=\{(x_1,y_1), (x_2,y_2), \ldots ,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中 x i ∈ X = R n x_i\in\mathcal{X}=R^n xiX=Rn y i ∈ Y = { + 1 , − 1 } y_i\in\mathcal{Y}=\{+1,-1\} yiY={+1,1} i = 1 , 2 , … , N i=1,2,\ldots,N i=1,2,,N,求一个超平面 S S S 使其能够完全将 y i = + 1 y_i=+1 yi=+1 y i = − 1 y_i=-1 yi=1 的点分开。

2. 感知机及其损失函数

一个线性平面的方程为 y = w ⋅ x + b y=w\cdot x+b y=wx+b,要将 y i = + 1 y_i=+1 yi=+1 y i = − 1 y_i=-1 yi=1 的点分开则需要让求解方程的的因变量为 ± 1 \pm 1 ±1,所以需要一个sign函数,sign函数的表达式为:

s i g n ( x ) = { + 1 − 1 … … … … … … … … … … … … … … … … ( 2.1 ) sign(x)=\begin{cases} +1\\ -1 \end{cases}\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.1) sign(x)={+11…………………………………………(2.1)

所以求解方程为:

f ( x ) = s i g n ( w ⋅ x + b ) … … … … … … … … … … … … … … ( 2.2 ) f(x)=sign(w\cdot x+b)\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.2) f(x)=sign(wx+b)……………………………………(2.2)

这个求解方程即被称为感知机。要求解这个方程只需要确定 w w w b b b 的值,为了确定参数值,就需要定义一个损失函数并将损失函数及小化。

在这里插入图片描述

感知机所用的损失函数为误分类点到超平面 S S S 的总距离。首先写出空间 R n R^n Rn 中任意一点 x 0 x_0 x0 到超平面 S S S 的距离:

1 ∣ ∣ w ∣ ∣ ∣ w ⋅ x 0 + b ∣ … … … … … … … … … … … … … … … ( 2.3 ) \frac{1}{||w||}|w\cdot x_0+b|\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.3) ∣∣w∣∣1wx0+b………………………………………(2.3)

这里 ∣ ∣ w ∣ ∣ ||w|| ∣∣w∣∣ w w w L 2 L_2 L2 范数。

对于误分类的数据 ( x i , y i ) (x_i,y_i) (xi,yi) 来说, − y i ( w i ⋅ x i + b ) > 0 -y_i(w_i\cdot x_i + b)>0 yi(wixi+b)>0 成立。因为当 w ⋅ x i + b > 0 w\cdot x_i+b>0 wxi+b>0 时, y i = − 1 y_i=-1 yi=1,而当 w ⋅ x i + b < 0 w\cdot x_i+b<0 wxi+b<0 时, y i = + 1 y_i=+1 yi=+1 ,因此,误分类点 x i x_i xi 到超平面 S S S 的距离是:

− 1 ∣ ∣ w ∣ ∣ y i ( w ⋅ x i + b ) … … … … … … … … … … … … … ( 2.4 ) -\frac{1}{||w||}y_i(w\cdot x_i+b)\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.4) ∣∣w∣∣1yi(wxi+b)…………………………………(2.4)

这样,假设超平面 S S S 的误分类点集合为 M M M ,那么所有误分类点到超平面 S S S 的总距离为:

− 1 ∣ ∣ w ∣ ∣ ∑ x i ∈ M y i ( w ⋅ x i + b ) … … … … … … … … … … ( 2.5 ) -\frac{1}{||w||}\sum_{x_i\in M} y_i(w\cdot x_i+b)\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(2.5) ∣∣w∣∣1xiMyi(wxi+b)…………………………(2.5)

不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1 ,就得到感知机学习的损失函数。

给定训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1),(x_2,y_2),\dots,(x_N, y_N)} T=(x1,y1),(x2,y2),,(xN,yN),其中, x i ∈ X = R n x_i\in \mathcal{X}=R^n xiX=Rn y i ∈ Y = { + 1 , − 1 } y_i\in \mathcal{Y}=\{+1, -1\} yiY={+1,1} i = 1 , 2 , … , N i=1,2,\dots,N i=1,2,,N . 感知机 s i g n ( w ⋅ x + b ) sign(w\cdot x+b) sign(wx+b) 学习的损失函数定义为:

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

其中 M M M 为误分类点的集合,这个损失函数就是感知机学习的经验风险函数。

3. 求解

给定训练数据集 T = ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x N , y N ) T={(x_1,y_1),(x_2,y_2),\dots,(x_N, y_N)} T=(x1,y1),(x2,y2),,(xN,yN),其中, x i ∈ X = R n x_i\in \mathcal{X}=R^n xiX=Rn y i ∈ Y = { + 1 , − 1 } y_i\in \mathcal{Y}=\{+1, -1\} yiY={+1,1} i = 1 , 2 , … , N i=1,2,\dots,N i=1,2,,N ,求参数 w , b w, b w,b ,使其为以下损失函数极小化问题的解:

m i n w . b L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) … … … … … ( 3.1 ) min_{w.b}L(w,b)=-\sum_{x_i\in M}y_i(w\cdot x_i+b)\dots\dots\dots\dots\dots(3.1) minw.bL(w,b)=xiMyi(wxi+b)……………(3.1)

其中 M M M 为误分类点的集合。

采用随机梯度下降法来求解。首先,任意选取一个超平面 w 0 , b 0 w_0,b_0 w0,b0,然后用随机梯度下降法不断地极小化目标函数,极小化的过程中不是一次使 M M M 中所有误分类点的梯度下降,而是一次随机选取一个误分类点使其梯度下降。

假设误分类点集合 M M M 是固定的,那么损失函数 L ( w , b ) L(w,b) L(w,b) 的梯度由:

∇ w L ( w , b ) = − ∑ x i ∈ M y i x i \nabla_wL(w,b)=-\sum_{x_i\in M}y_ix_i wL(w,b)=xiMyixi

∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_bL(w,b)=-\sum_{x_i\in M}y_i bL(w,b)=xiMyi

给出.

随机选取一个误分类点 ( x i , y i ) (x_i,y_i) (xi,yi) ,对 w , b w,b w,b 进行更新:

w ← w + η y i x i … … … … … … … … … … … … … … ( 3.2 ) w\gets w+\eta y_ix_i\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(3.2) ww+ηyixi……………………………………(3.2)

b ← b + η y i … … … … … … … … … … … … … … … ( 3.3 ) b\gets b+\eta y_i\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots\dots(3.3) bb+ηyi………………………………………(3.3)

式中 η ( 0 < η ≤ 1 ) \eta(0<\eta\leq1) η(0<η1) 是步长,在统计学系中又称为学习率. 这样,通过迭代可以期待损失函数 L ( w , b ) L(w,b) L(w,b) 不断减小,直到为0.

4. 例子

如下图所示的训练数据集,其正实例点是 x 1 = ( 3 , 3 ) T x_1=(3, 3)^T x1=(3,3)T x 2 = ( 4 , 3 ) T x_2=(4,3)^T x2=(4,3)T,负实例点是 x 3 = ( 1 , 1 ) T x_3=(1, 1)^T x3=(1,1)T,试用感知机学习算法的原始形式求感知机模型 f ( x ) = s i g n ( w ⋅ x + b ) f(x)=sign(w\cdot x+b) f(x)=sign(wx+b). 这里 w = ( w ( 1 ) , w ( 2 ) ) T w=(w^{(1)},w^{(2)})^T w=(w(1),w(2))T x = ( x ( 1 ) , x ( 2 ) ) T x=(x^{(1)},x^{(2)})^T x=(x(1),x(2))T.

在这里插入图片描述

解:

最优化问题为:

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

用第3节的方式求解 w , b w, b w,b,设学习率 η = 1 \eta=1 η=1.

(1)取初值 w 0 = 0 , b 0 = 0 w_0=0, b_0=0 w0=0,b0=0
(2)对 x 1 = ( 3 , 3 ) T x_1=(3,3)^T x1=(3,3)T y 1 ( w 0 ⋅ x 1 + b 0 ) = 0 y_1(w_0\cdot x_1+b_0)=0 y1(w0x1+b0)=0,未能=被正确分类,更新 w , b w,b w,b

w 1 = w 0 + y 1 x 1 = ( 3 , 3 ) T , b 1 = b 0 + y 1 = 1 w_1=w_0+y_1x_1=(3,3)^T, b_1=b_0+y_1=1 w1=w0+y1x1=(3,3)T,b1=b0+y1=1

得到线性模型

w 1 ⋅ x + b 1 = 3 x ( 1 ) + 3 x ( 2 ) + 1 w_1\cdot x+b_1=3x^{(1)}+3x^{(2)}+1 w1x+b1=3x(1)+3x(2)+1

(3)对 x 1 , x 2 x_1,x_2 x1,x2,显然, y 1 ( w 1 ⋅ x 1 + b 1 ) > 0 y_1(w_1\cdot x_1+b_1)>0 y1(w1x1+b1)>0,被正确分类,不修改 w , b w,b w,b
x 3 = ( 1 , 1 ) T , y 3 ( w 1 ⋅ x 3 + b 1 ) < 0 x_3=(1,1)^T,y_3(w_1\cdot x_3+b_1) < 0 x3=(1,1)Ty3(w1x3+b1)<0,被误分类,更新 w , b w, b w,b.

w 2 = w 1 + y 3 x 3 = ( 2 , 2 ) T , b 2 = b 1 + y 3 = 0 w_2=w_1+y_3x_3=(2,2)^T, b_2=b_1+y_3=0 w2=w1+y3x3=(2,2)T,b2=b1+y3=0

得到线性模型

w 2 ⋅ x + b 2 = 2 x ( 1 ) + 2 x ( 2 ) w_2\cdot x+b_2=2x^{(1)}+2x^{(2)} w2x+b2=2x(1)+2x(2)

如此继续下去,直到

w 7 = ( 1 , 1 ) T , b 7 = − 3 w_7=(1,1)^T, b_7=-3 w7=(1,1)T,b7=3

w 7 ⋅ x + b 7 = x ( 1 ) + x ( 2 ) − 3 w_7\cdot x+b_7=x^{(1)}+x^{(2)}-3 w7x+b7=x(1)+x(2)3

对所有数据点 y i ( w 7 ⋅ x i + b 7 ) > 0 y_i(w_7\cdot x_i+b_7) > 0 yi(w7xi+b7)>0,没有误分类点,损失函数达到极小

分离超平面为:

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

感知机模型为:

f ( x ) = s i g n ( x ( 1 ) + x ( 2 ) − 3 ) f(x)=sign(x^{(1)}+x^{(2)}-3) f(x)=sign(x(1)+x(2)3)

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

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

相关文章

Redis【实战篇】---- UV统计

Redis【实战篇】---- UV统计 1. UV统计 - HyperLogLog2. UV统计 - 测试百万数据的统计 1. UV统计 - HyperLogLog 首先我们搞懂两个概念&#xff1a; UV&#xff1a;全称Unique Visitor&#xff0c;也叫独立访客量&#xff0c;是指通过互联网访问、浏览这个网页的自然人。1天内…

Linux信号机制

转自&#xff1a;深入理解Linux信号机制(1.0)_城中之城的博客-CSDN博客 一、信号机制概览 相信大家对信号并不陌生&#xff0c;很多人都用过kill命令或者CtrlC组合键杀死过进程&#xff0c;或者遇到过程序因为收到SIGSEGV信号而崩溃的。而对信号的基本原理&#xff0c;估计很…

DenseNet算法实战

DenseNet算法实战 文章目录 DenseNet算法实战[TOC](文章目录) 前言一、设计理念二、网络结构1.DenseNet网络结构2. DenseBlock Transition结构3. DenseBlock 非线性结构 三、代码实现1. 导入相关的包2. DenseBlock 内部结构3. DenseBlock 模块4. Transition 层5. 最后实现Dens…

23款奔驰S400商务型加装原厂前排座椅通风系统,夏天必备的功能

通风座椅的主动通风功能可以迅速将座椅表面温度降至适宜程度&#xff0c;从而确保最佳座椅舒适性。该功能启用后&#xff0c;车内空气透过打孔皮饰座套被吸入座椅内部&#xff0c;持续时间为 8 分钟。然后&#xff0c;风扇会自动改变旋转方向&#xff0c;将更凉爽的环境空气从座…

TIA博途_封装FB或FC块时将未分配参数的管脚隐藏的具体方法示例

TIA博途_封装FB或FC块时将未分配参数的管脚隐藏的具体方法示例 如下图所示&#xff0c;在某个项目中添加一个模拟量平均值滤波FB块&#xff0c;FB块的输入输出接口如图中所示&#xff0c; FB块编写完成后&#xff0c;在OB1中调用该FB块&#xff0c;可以看到需要配置的相关管脚…

Melon库运用——数组篇

头文件片段 // mln_array.hstruct mln_array_attr {void *pool; // 自定义内存池结构指针array_pool_alloc_handler pool_alloc; // 自定义内存池分配函数指针array_pool_free_handler pool_free; // 自定义内存池释放函数指针array_free …

Linux编译器--gcc/g++的使用

1.gcc/g的作用 gcc/g就是将写好的c/c的代码经过预编译/编译/汇编/链接生成可执行程序的过程&#xff0c;这个过程就是编译器的作用。 PS:由于c支持c语言的语法&#xff0c;gcc和g的操作差不多&#xff0c;在这里只讲gcc的使用方法。 2.gcc如何完成 格式 gcc [选项] 要编译的文…

函数指针数组:更高效的代码实现方式——指针进阶(二)

目录 前言 一、函数指针 什么是函数指针 函数指针的使用 二、函数指针数组 什么是函数指针数组 函数指针数组的使用 三、指向函数指针数组的指针 总结 前言 当谈到C语言的高级特性时&#xff0c;函数指针和函数指针数组通常是最常见的话题之一。虽然这些概念可能会让初…

java面试题(24)

1、重写equals&#xff08;&#xff09;方法的原则 1、对称性&#xff1a; 如果x.equals&#xff08;y&#xff09;返回是“true”&#xff0c;那么y.equals&#xff08;x&#xff09;也应该返回是 “true”。 2、自反性&#xff1a; x.equals&#xff08;x&#xff09;必须…

【动态规划】第N个泰波那契数

&#x1f4ed;从这里开始&#xff0c;我们要开始学习动态规划辣。之后的动态规划有关的文章都是按照这个逻辑来写&#xff0c;首先来介绍一下基本逻辑。 &#x1f9c0;(1)题目解析&#xff1a;就是分析题目&#xff0c;读懂题目想让我们实现的功能 &#x1f9c0;(2)算法原理&…

linux 创建一个线程的基础开销探讨

测试代码 测试方法比较笨&#xff0c;每修改一次线程数&#xff0c;就重新编译一次&#xff0c;再运行。在程序运行过程中&#xff0c;查看到进程 pid&#xff0c;然后通过以下命令查看进程的运行状态信息输出到以线程数为名字的日志文件中&#xff0c;最后用 vimdiff 对比文件…

LVS负载均衡集群之LVS-DR部署

目录 一、lVS-DR集群概述 二、LVS-DR数据包流向分析 四、LVS-DR特性 五、DR模式 LVS负载均衡群集部 5.0配置虚拟 IP 地址&#xff08;VIP 192.168.14.180&#xff09; 5.1.配置负载调度器(192.168.14.101) 5.2部署共享存储&#xff08;NFS服务器&#xff1a;192.168.14.10…

7-3打怪升级(25分)【Floyd、dijkstra】【2021 RoboCom 世界机器人开发者大赛-本科组(初赛)】

考点&#xff1a;Floyd&#xff0c;dijkstra变式&#xff08;记录路径&#xff0c;多优先级&#xff09; 7-3 打怪升级 (25分) 很多游戏都有打怪升级的环节&#xff0c;玩家需要打败一系列怪兽去赢取成就和徽章。这里我们考虑一种简单的打怪升级游戏&#xff0c;游戏规则是&am…

数据在计算机中的存储——【C语言】

在前面的博客中&#xff0c;我们已经学习了C语言的数据类型&#xff0c;先让我们回顾一下C语言中有哪些数据类型。 目录 C语言的基本内置类型 类型的基本归类 整型在内存中的存储 原码、反码、补码 存储中的大小端 练习 浮点型在内存中的存储 浮点数的存储规则 对引例问…

【算法与数据结构】20、LeetCode有效的括号

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;括号匹配是使用栈解决的经典问题。做这道题首先要分析什么时候括号不匹配。1、右括号多余 ( { [ ] } )…

动态规划之96 不同的二叉搜索树(第7道)

题目&#xff1a; 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例&#xff1a; 递推关系的推导&#xff1a; n3时&#xff0c;如上图所示。 当1为头结点的时候&#x…

C#学习之路-常量

C# 常量 常量是固定值&#xff0c;程序执行期间不会改变。常量可以是任何基本数据类型&#xff0c;比如整数常量、浮点常量、字符常量或者字符串常量&#xff0c;还有枚举常量。 常量可以被当作常规的变量&#xff0c;只是它们的值在定义后不能被修改。 整数常量 整数常量可…

Mybatis-Plus查询

Mybatis-Plus Mybatis-Plus条件查询的书写方法 1.条件查询 直接new QueryQuery<>创建对象&#xff0c;然后再wrappee.eq(“数据库列表”,“匹配值”)创建条件就可以。 其中&#xff0c;基本查询&#xff1a;eq表示相等&#xff1b;gt表示大于&#xff1b;lt表示小于&a…

[Vue3]学习笔记-provide 与 inject

作用&#xff1a;实现祖与后代组件间通信 套路&#xff1a;父组件有一个 provide 选项来提供数据&#xff0c;后代组件有一个 inject 选项来开始使用这些数据 具体写法&#xff1a; 祖组件中&#xff1a; setup(){......let car reactive({name:奔驰,price:40万})provide(…

Leetcode刷题(Week1)——宽(深)度优先遍历专题

刷题时间&#xff1a; 2019/04/04 – 2019/04/07 主播&#xff1a;yxc(闫雪灿) 视频链接&#xff1a; https://www.bilibili.com/video/av32546525?fromsearch&seid14001345623296049881 题号题目链接127Word Ladderhttps://leetcode.com/problems/word-ladder/131Palind…