【简博士统计学习方法】第2章:3. 感知机——学习算法之原始形式:算法解说

3. 感知机——学习算法之原始形式:算法解说

3.1 学习问题

  • 给定训练数据集
    T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2),(xN,yN)}
    其中 x i ∈ X ⊆ R n , Y I ∈ Y = { + 1 , − 1 } x_i\in\mathcal{X}\subseteq\mathbb{R}^n,Y_I\in\mathcal{Y}=\{+1,-1\} xiXRn,YIY={+1,1} + 1 +1 +1代表的是正类点, − 1 -1 1代表的是负类点, N N N为样本数。
  • 损失函数
    L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w, b)=-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right) L(w,b)=xiMyi(wxi+b)
    其中, M M M代表所有误分类点的集合。其中 w ⋅ x i w\cdot x_i wxi代表向量的内积运算。
  • 模型参数估计
    arg ⁡ min ⁡ w , b L ( w , b ) \underset{w, b}{\arg \min } L(w, b) w,bargminL(w,b)
    也就是寻找使损失函数 L L L最小的参数 w w w b b b.

【注】参数估计是统计学中的一个重要概念,它指的是通过样本数据来推测总体(整个群体)中某些未知的特征值(比如平均值、方差等)的过程。简单来说,参数估计就是通过已有的数据来推测你关心的某些未知值。

3.2 原始形式:随机梯度下降法

3.2.1 随机梯度下降与批量梯度下降法

我们选取随机梯度下降法进行迭代计算。

  • 损失函数
    L ( w , b ) = − ∑ x i ∈ M y i ( w ⋅ x i + b ) L(w, b)=-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right) L(w,b)=xiMyi(wxi+b)
  • 梯度(对 L L L求偏导):
    ∇ w L ( w , b ) = − ∑ x i ∈ M y i x i ; ∇ b L ( w , b ) = − ∑ x i ∈ M y i \nabla_{w} L(w, b)=-\sum_{x_{i} \in M} y_{i} x_{i} ; \quad \nabla_{b} L(w, b)=-\sum_{x_{i} \in M} y_{i} wL(w,b)=xiMyixi;bL(w,b)=xiMyi
  • 参数更新
    • 批量梯度下降法(Batch Gradient Descent):每次迭代时使用所有误分类点来进行参数更新。
      w ← w + η ∑ x i ∈ M y i x i ; b ← b + η ∑ x i ∈ M y i w \leftarrow w+\eta \sum_{x_{i} \in M} y_{i} x_{i} ; \quad b \leftarrow b+\eta \sum_{x_{i} \in M} y_{i} ww+ηxiMyixi;bb+ηxiMyi
      其中, η ( 0 < η ⩽ 1 ) \eta(0<\eta\leqslant1) η(0<η1)代表步长
    • 随机梯度下降法(Stochastic Gradient Descent):每次随机选取一个误分类点。
      w ← w + η y i x i ; b ← b + η y i w \leftarrow w+\eta y_{i} x_{i} ; \quad b \leftarrow b+\eta y_{i} ww+ηyixi;bb+ηyi
      相比较批量梯度下降法,它每一轮迭代的速度都会快一些。这是感知机算法用的选择参数更新的方法。

3.2.2 原始形式:算法

  • 输入:训练集
    T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) ⋯ , ( x N , y N ) } T=\left\{\left(x_{1}, y_{1}\right),\left(x_{2}, y_{2}\right) \cdots,\left(x_{N}, y_{N}\right)\right\} T={(x1,y1),(x2,y2),(xN,yN)}
    其中, x i ∈ X ⊆ R n , Y I ∈ Y = { + 1 , − 1 } x_i\in\mathcal{X}\subseteq\mathbb{R}^n,Y_I\in\mathcal{Y}=\{+1,-1\} xiXRn,YIY={+1,1},步长 η ( 0 < η ⩽ 1 ) \eta(0<\eta\leqslant 1) η(0<η1)
  • 输出 w , b w,b w,b;感知机模型 f ( x ) = sign ( w ⋅ x + b ) f(x)=\text{sign}(w\cdot x+b) f(x)=sign(wx+b)
  • 算法步骤
    (1)选取初始值 w 0 , b 0 w_0,b_0 w0,b0,即下图中蓝色的直线代表初始的分离超平面;
    (2)于训练集中随机选取数据 ( x i , y i ) (x_i,y_i) (xi,yi),图中没有分类到正确类的点都是误分类点,比如蓝色线为例,有一个点没有在蓝色直线上方,这就是误分类点;
    (3)若 y i ( w ⋅ x i + b ) ⩽ 0 y_i(w\cdot x_i+b)\leqslant 0 yi(wxi+b)0 w ← w + η y i x i ; b ← b + η y i w \leftarrow w+\eta y_{i} x_{i} ; \quad b \leftarrow b+\eta y_{i} ww+ηyixi;bb+ηyi;(正类点代入后是正的,负类点代入和,因为符合方程,所以也是正的,只有错误分类点代入后是负的)
    (4)转到(2),直到训练集中没有误分类点。

    最后得到一个橙色的线将所有的样本点随机分类。

3.3 例题分析

  • 输入:训练集:
    T = { ( x 1 , + 1 ) , ( x 2 , + 1 ) , ( x 3 , − 1 ) } T=\left\{\left(x_{1},+1\right),\left(x_{2},+1\right),\left(x_{3},-1\right)\right\} T={(x1,+1),(x2,+1),(x3,1)}
    其中, x 1 = { 3 , 3 } T , x 2 = ( 4 , 3 ) T , x 3 = ( 1 , 1 ) T x_1=\{3,3\}^{T},x_2=(4,3)^{T},x_3=(1,1)^{T} x1={3,3}T,x2=(4,3)T,x3=(1,1)T,假设 η = 1 \eta=1 η=1,也就是训练集中有三个样本,其中 x 1 , x 2 x_1,x_2 x1,x2是正类点样本, x 3 x_3 x3是负类点样本。
  • 输出 w , b w,b w,b;感知机模型 f ( x ) = sign ( w ⋅ x + b ) f(x)=\text{sign}(w\cdot x+b) f(x)=sign(wx+b)

  • 学习问题:通过使下面的损失函数来求得相应的参数 w , b w,b w,b.
    arg ⁡ min ⁡ w , b L ( w , b ) = arg ⁡ min ⁡ w , b [ − ∑ x i ∈ M y i ( w ⋅ x i + b ) ] \underset{w, b}{\arg \min } L(w, b)=\underset{w, b}{\arg \min }\left[-\sum_{x_{i} \in M} y_{i}\left(w \cdot x_{i}+b\right)\right] w,bargminL(w,b)=w,bargmin[xiMyi(wxi+b)]

(1)选取初始值 w 0 = ( 0 , 0 ) T , b 0 = 0 w_0=(0,0)^{T},b_0=0 w0=(0,0)T,b0=0
(2)对于点 x 1 x_1 x1,有:
y 1 ( w 0 ⋅ x 1 + b 0 ) = ± 1 × ( ( 0 , 0 ) T ⋅ ( 3 , 3 ) T + 0 ) = 0 y_1(w_0\cdot x_1+b_0)=\pm 1\times((0,0)^{T}\cdot (3,3)^{T}+0)=0 y1(w0x1+b0)=±1×((0,0)T(3,3)T+0)=0
- 更新参数
w 1 = w 0 + η y 1 x 1 = ( 3 , 3 ) T , b 1 = b 0 + η y 1 = 1 w_{1}=w_{0}+\eta y_{1} x_{1}=(3,3)^{T}, \quad b_{1}=b_{0}+\eta y_{1}=1 w1=w0+ηy1x1=(3,3)T,b1=b0+ηy1=1
- 模型
w 1 ⋅ x + b = 3 x ( 1 ) + 3 x ( 2 ) + 1 w_{1} \cdot x+b=3 x^{(1)}+3 x^{(2)}+1 w1x+b=3x(1)+3x(2)+1

(3)对于点 x 1 x_1 x1,有
y 1 ( w 1 ⋅ x 1 + b 1 ) = + 1 × ( 3 x 1 ( 1 ) + 3 x 1 ( 2 ) + 1 ) = 19 > 0 y_{1}\left(w_{1} \cdot x_{1}+b_{1}\right)=+1 \times\left(3 x_{1}^{(1)}+3 x_{1}^{(2)}+1\right)=19>0 y1(w1x1+b1)=+1×(3x1(1)+3x1(2)+1)=19>0
所以 x 1 x_1 x1分类正确。
对于点 x 2 x_2 x2,有
y 2 ( w 1 ⋅ x 2 + b 1 ) = + 1 × ( 3 x 2 ( 1 ) + 3 x 2 ( 2 ) + 1 ) = 22 > 0 y_{2}\left(w_{1} \cdot x_{2}+b_{1}\right)=+1 \times\left(3 x_{2}^{(1)}+3 x_{2}^{(2)}+1\right)=22>0 y2(w1x2+b1)=+1×(3x2(1)+3x2(2)+1)=22>0
所以 x 2 x_2 x2分类正确。
对于点 x 3 x_3 x3,有
y 3 ( w 1 ⋅ x 3 + b 1 ) = − 1 × ( 3 x 3 ( 1 ) + 3 x 3 ( 2 ) + 1 ) = − 7 < 0 y_{3}\left(w_{1} \cdot x_{3}+b_{1}\right)=-1 \times\left(3 x_{3}^{(1)}+3 x_{3}^{(2)}+1\right)=-7<0 y3(w1x3+b1)=1×(3x3(1)+3x3(2)+1)=7<0
所以 x 3 x_3 x3是误分类点。
- 更新参数,利用误分类点 x 3 x_3 x3进行参数更新。
w 2 = w 1 + η y 3 x 3 = ( 2 , 2 ) T , b 2 = b 1 + η y 3 = 0 w_{2}=w_{1}+\eta y_{3} x_{3}=(2,2)^{T}, \quad b_{2}=b_{1}+\eta 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}=2 x^{(1)}+2 x^{(2)} w2x+b2=2x(1)+2x(2)

(4)重复以上步骤,直到没有误分类点:

迭代到第7次之后就没有误分类点了。

  • 得到参数
    w 7 = ( 1 , 1 ) T , b 7 = − 3 w_{7}=(1,1)^{T}, \quad 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

  • 结果

    • 分离超平面:
      x ( 1 ) + x ( 2 ) − 3 = 0 x^{(1)}+x^{(2)}-3=0 x(1)+x(2)3=0
    • 感知机模型:
      f ( x ) = sign ⁡ ( x ( 1 ) + x ( 2 ) − 3 ) f(x)=\operatorname{sign}\left(x^{(1)}+x^{(2)}-3\right) f(x)=sign(x(1)+x(2)3)
    • 若误分类点依次取 x 1 , x 3 , x 3 , x 3 , x 1 , x 3 , x 3 x_1,x_3,x_3,x_3,x_1,x_3,x_3 x1,x3,x3,x3,x1,x3,x3,可以得到分离超平面。
      x ( 1 ) + x ( 2 ) − 3 = 0 x^{(1)}+x^{(2)}-3=0 x(1)+x(2)3=0
    • 若误分类点依次取 x 1 , x 3 , x 3 , x 3 , x 2 , x 3 , x 3 , x 3 , x 1 , x 3 , x 3 x_{1}, x_{3}, x_{3}, x_{3}, x_{2}, x_{3}, x_{3}, x_{3}, x_{1}, x_{3}, x_{3} x1,x3,x3,x3,x2,x3,x3,x3,x1,x3,x3,可以得到分离超平面:
      2 x ( 1 ) + x ( 2 ) − 5 = 0 2 x^{(1)}+x^{(2)}-5=0 2x(1)+x(2)5=0

【注】采用不同的误分类点顺序,所得到的解是不同的,随机选取的误分类点导致结果也具有一定的随机性。

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

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

相关文章

Browser-Use Web UI:浏览器自动化与AI的完美结合

Browser-Use Web UI:浏览器自动化与AI的完美结合 前言简介一、克隆项目二、安装与环境配置1. Python版本要求2. 安装依赖3. 安装 Playwright4. 配置环境变量(非必要步骤)三、启动 WebUI四、配置1. Agent设置2. 大模型设置3. 浏览器相关设置4. 运行 Agent结语前言 Web UI是在…

C# XPTable 日期字段处理(XPTable控件使用说明十三)

1、SQLite数据库定义为日期类型 2、XPtable中日期字段定义与显示 //显示时间表columnModel1.Columns.Clear();columnModel1.Columns.Add(new NumberColumn("id", 30));NumberColumn numberColumn new NumberColumn("次数", 50);numberColumn.Maximum 100…

笔记本电脑 选购 回收 特权模式使用 指南

笔记本电脑 factor 无线网卡&#xff1a;有些笔记本无法检测到特定频段的信息&#xff0c;会导致连不上校园网 sudo iwlist wlp2s0 scan | grep Frequency > net.txt cat net.txt>表示用终端输出覆盖后续文件&#xff0c;>>表示添加到后续文件的末尾 一种更简…

openCvSharp 计算机视觉图片找茬

一、安装包 <PackageReference Include"OpenCvSharp4" Version"4.10.0.20241108" /> <PackageReference Include"OpenCvSharp4.runtime.win" Version"4.10.0.20241108" /> 二、准备两张图片 三、编写代码 using OpenCv…

基于Python的社交音乐分享平台

基于Python的社交音乐分享平台是一个集成了音乐分享、社交互动以及个性化推荐等多功能于一体的综合性平台。 一、平台概述 该平台利用Python的强大功能和高效开发特性&#xff0c;结合前端技术如HTML、CSS、JavaScript以及前端框架如Vue.js或React&#xff0c;共同构建了一个…

潜力巨大但道路曲折的量子计算

近一年来&#xff0c;由于工作的原因参观访问了一些量子产业园&#xff0c;接触了量子加密计算机、量子云计算等非常炫酷的概念性产品&#xff0c;这与自己一直认为的“量子技术仍然处于实验室研究阶段”的基本判断与认知产生了强烈的冲突&#xff0c;一刹那间&#xff0c;心中…

互联网全景消息(10)之Kafka深度剖析(中)

一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…

21、Transformer Masked loss原理精讲及其PyTorch逐行实现

1. Transformer结构图 2. python import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_printoptions(precision3, sci_modeFalse)if __name__ "__main__":run_code 0batch_size 2seq_length 3vocab_size 4logits torch.randn(batch…

Agentless:OpenAI 采用的非代理框架

不需要代理库来解决复杂的业务问题。Agentless 是OpenAI采用的非代理框架&#xff0c;用于在 o3 的 SWE Bench 上实现最高精度。SWE-bench 是 github的真实软件工程问题基准。Agentless 遵循简单的三阶段流程&#xff1a;本地化、修复和补丁验证&#xff1a; 1 ⃣生成存储库的…

【前端动效】原生js实现拖拽排课效果

目录 1. 效果展示 2. 效果分析 2.1 关键点 2.2 实现方法 3. 代码实现 3.1 html部分 3.2 css部分 3.3 js部分 3.4 完整代码 4. 总结 1. 效果展示 如图所示&#xff0c;页面左侧有一个包含不同课程&#xff08;如语文、数学等&#xff09;的列表&#xff0c;页面右侧…

给DevOps加点料:融入安全性的DevSecOps

从前&#xff0c;安全防护只是特定团队的责任&#xff0c;在开发的最后阶段才会介入。当开发周期长达数月、甚至数年时&#xff0c;这样做没什么问题&#xff1b;但是现在&#xff0c;这种做法现在已经行不通了。 采用 DevOps 可以有效推进快速频繁的开发周期&#xff08;有时…

CTFshow—文件包含

Web78-81 Web78 这题是最基础的文件包含&#xff0c;直接?fileflag.php是不行的&#xff0c;不知道为啥&#xff0c;直接用下面我们之前在命令执行讲过的payload即可。 ?filephp://filter/readconvert.base64-encode/resourceflag.php Web79 这题是过滤了php&#xff0c;…

年度技术突破奖|中兴微电子引领汽车芯片新变革

随着以中央计算区域控制为代表的新一代整车电子架构逐步成为行业主流&#xff0c;车企在电动化与智能化之后&#xff0c;正迎来以架构创新为核心的新一轮技术竞争。中央计算SoC&#xff0c;作为支撑智驾和智舱高算力需求的核心组件&#xff0c;已成为汽车电子市场的重要新增量。…

交响曲-24-3-单细胞CNV分析及聚类

CNV概述 小于1kb是常见的插入、移位、缺失等的变异 人体内包含<10% 的正常CNV&#xff0c;我们的染色体数是两倍体&#xff0c;正常情况下&#xff0c;只有一条染色体表达&#xff0c;另一条沉默&#xff0c;当表达的那条染色体发生CNV之后&#xff0c;表达数量就会成倍增加…

Cline(原Claude Dev)开源的IDE AI插件,如何搭配OpenRouter实现cursor功能,Cline怎么使用

Cline&#xff08;原Claude Dev&#xff09;是一个开源的IDE AI插件&#xff0c;可以使用你的命令行界面和编辑器的人工智能助手。 你可以直接在VS Code编辑器进行安装。如果你使用过Cursor AI IDE的话&#xff0c;可以尝试最新发布的Cline3.1版本。 在OpenRouter上&#xff0…

单片机-定时器中断

1、相关知识 振荡周期1/12us; //振荡周期又称 S周期或时钟周期&#xff08;晶振周期或外加振荡周期&#xff09;。 状态周期1/6us; 机器周期1us; 指令周期1~4us; ①51单片机有两组定时器/计数器&#xff0c;因为既可以定时&#xff0c;又可以计数&#xff0c;故称之为定时器…

1-1 电场基本概念

目录&#xff1a; 目录 目录&#xff1a; 1.0 电荷守恒定律 2.0 互斥与相吸 3.0 电场的概念 4.0 库伦定律 5.0 矢量的概念 1.0 电荷守恒定律 电荷守恒定律是物理学中的一个基本原理&#xff0c;它指出在一个封闭系统内&#xff0c;电荷的总量是保持不变的。这意味着电荷既…

3BB学习transformer日记,attention原理

将单词数字化——方向代表语义 每一个单词可以对应到高维空间的一个向量&#xff0c;这个向量叫嵌入向量。以三维为例&#xff0c;女人-男人叔叔-婶婶&#xff08;四个都是向量&#xff09;&#xff0c;可以这么理解&#xff0c;”男人“这个词的意思转化成”女人“这个词的意…

【硬件介绍】Type-C接口详解

一、Type-C接口概述 Type-C接口特点&#xff1a;以其独特的扁头设计和无需区分正反两面的便捷性而广受欢迎。这种设计大大提高了用户的使用体验&#xff0c;避免了传统USB接口需要多次尝试才能正确插入的问题。Type-C接口内部结构&#xff1a;内部上下两排引脚的设计虽然可能不…

qt 快捷功能 快速生成 setter getter 构造函数 父类虚函数重写 成员函数实现 代码框架 查看父类及父类中的虚函数

qt 快速生成 setter getter 构造函数 父类虚函数重写 成员函数实现 代码框架 1、找到要实现的头文件 2、鼠标移动到在头文件中的类定义的类名上&#xff0c;右键进行选择。 这是插入父类虚函数(父类虚函数重写) 选项弹出来的结果。可以查看到所有父类及父类中的所有的虚函数