机器学习基石1(ML基本概念和VC dimension)

article/2025/11/7 2:17:27

文章目录

  • 一、什么是机器学习?
  • 二、什么时候可以使用机器学习?
  • 三、感知机perceptron
  • 四、机器学习的输入形式
  • 五、机器真的可以学习吗?
  • 六、vc dimension


一、什么是机器学习?

 
其实第一个问题和第二个问题是穿插到一块儿回答的,首先机器学习要解决的是常规的if-else类编程无法解决的问题,也就是说我们的if-else无法涵盖到所有的情况(即,输入程序的数据分布是不可知的)。
 
有如下问题:

  1. 给定一个有向图的邻接矩阵,判断该有向图是不是DAG,该问题不需要使用机器学习求解,因为我们已经知道了DAG的定义,即我们有了输入数据的分布,根据定义就可以进行判断;
  2. 给定一张照片,判断照片中有没有包含一只猫,该问题不能使用常规编程进行解决,因为我们不知道一只猫的精确定义是什么,我们也没有这个世界上所有包含猫的照片(输入数据分布不可知),此时我们需要让机器学习一些判定是否包含猫的一些技能,需要使用机器学习求解该问题。

机器学习正式的定义如下图所示:
在这里插入图片描述
 
首先我们的目标是要寻找一个函数 f f f(目标函数target function),将我们的输入放入 f f f中,我们预期可以得到不错的输出,世界中的函数千千万,如何寻找这个函数 f f f是个难题。
 
我们现在手上有的只是一堆数据 D D D,这些数据是应用规则 f f f产生的(或许还会加上一些noise)。为了尽可能的减小我们寻找 f f f的难度,我们假设了一些可能会比较接近 f f f的函数集合叫做hypothesis set,使用设计好的算法 A A A和数据集 D D D,从hypothesis set中找到与我们预期最相符的函数 g g g,将它近似的当作 f f f。通常将hypothesis set和算法 A A A加到一块儿叫做模型,也有直接将hypothesis set叫做模型的。
 
所以机器学习的任务就是大海捞针,在哪片海捞由我们自己决定,怎么捞由我们自己决定,捞出来的针是不是我们想要的针,我们也不知道,只不过有霍夫丁不等式可以保证我们捞出来的针在概率上是我们想要的针。

 

二、什么时候可以使用机器学习?

 
第一个问题已经回答了when to use ML。

 

三、感知机perceptron

 
感知机是一个回答yes or no的线性二分类模型,是最简单的机器学习模型。感知机的任务目标是给定一堆数据,将这些数据正确的分割开的,感知机的hypothesis set中就是一堆线性的超平面。我们需要从中选择一个可以将现有数据分割开的平面。
 
感知机学习算法(perceptron learning algorithm/PLA)使用的策略是知错能改,首先随机初始化一个线性超平面,选择一个分类错误的点,让我们分类超平面以如下形式去调整:
w ( t + 1 ) = w t + y n x n w_{(t+1)}=w_t+y_nx_n w(t+1)=wt+ynxn
如此循环往复,直到所有点都分类正确。
对于线性可分的数据,最终我们是可以得到一个不错的分类超平面的,但是由于我们是随机选择错误分类的点,所以最终我们能得到的分类超平面是不唯一的。
关于感知机的另外一个版本见此感知机另外一种解释。
 

四、机器学习的输入形式

 
机器学习的输入无非就是特定长度的向量,每个样本用一个若干维的向量表示,只是这些向量以及每一维有没有明确的意义呢,答案是肯定的。
 
我们是为了将我们的输入进行数字化,才使用向量来表示输入的,因为要让机器可以处理,就必须是数字。
 
我们可以为向量的每一维赋予明确的意义,比如,描述一个人,就可以用性别,年龄,身高,体重,学历等一系列和任务相关的特征,将这些特征表示成数字的形式,比如,性别用0/1,年龄用正整数,身高用实数。像这种有明确意义的特征叫做concrete feature。
 
机器学习任务多种多样,输入也不尽相同,有些输入无法给每一维赋予明确的解释,比如图像处理任务,通常都是用像素点的RGB值来作为特征,这叫做raw feature,当然同样的输入,可以表示成raw feature或concrete feature,合理即可,比如,minist手写数字识别的输入,可以用像素点表示,也可以通过定义数字的对称与否,高矮胖瘦来描述样本。
 
总之,言之成理的feature都可以用来描述样本,在这一点上feature的使用是比较灵活的。
 

五、机器真的可以学习吗?

 
机器学习是从已知的数据中学习规则,应用到未知的数据上,对未知数据进行判断。
既然如此,机器学习就是在做不可能的事情,因为我们不可能准确无误的掌握所有的数据,也就是说学习到的规则总有偏差。当不能对一件事一窥全貌的时候,就需要用到概率工具了。
 
假如有一个装了无数个黑白球的罐子,我们想知道其中白球的比例,但是又不可能知道罐子中总共有多少个黑球白球。一个看似合理的方法是,我们从罐子中取出来 N N N个球(我们可以数得清的一批球),数清楚这批球,计算这批球中白球的比例,似乎可以用这个比例代替真实的比例。有Hoeffding Inequality作为保证,
P ( ∣ 比 例 观察 − 比 例 真实 ∣ < ϵ ) ≥ 2 e x p ( − 2 ϵ 2 N ) P(|比例_{观察}-比例_{真实}|\lt\epsilon)\geq 2exp(-2\epsilon^2N) P(观察真实<ϵ)2exp(2ϵ2N)
N N N足够大, ϵ \epsilon ϵ也合适的时候我们说观察到的比例等于真实的比例,这种说法大概是正确的(Probably Approximately Correct / PAC)。
 
霍夫丁不等式告诉我们的是,面对一个数据量非常大,大到我们无法精确进行处理的时候,我们可以从这个大数据中进行多次i.i.d.采样,这样我们采样得到的数据集在一定程度上代表了那个原始的大数据。只要采样数据足够,关于大数据的各项特性,我们都可以通过采样数据进行估计。
 
将以上过程类比到机器学习,关于某个任务的所有数据被分成了两部分,一部分是我们已经有的训练数据,另一部分是我们无法获得的数据,我们现在从hypothesis set中找到了一个函数,在训练数据上获得了良好的表现,我们怎么确保这个函数在无法的验证的数据上也同样表现良好呢?Hoeffding Inequality comes to rescue。
 
所以只要霍夫丁不等式得到了满足,我们就只需要关注我们手上有的数据就行了,让这部分数据在模型上获得良好的表现即可。
 
总结一下:
假设 E i n E_{in} Ein是训练数据的表现误差, E o u t E_{out} Eout是得不到的数据的表现误差,一个良好的机器学习模型,需要做到:

  1. E i n E_{in} Ein足够小 (我们自己训练,并且模型的能力足够)
  2. E i n ≈ E o u t E_{in} \approx E_{out} EinEout(Hoeffding Inequality得到保证)
     

从另一种角度来说,通常通过合适的算法和迭代训练,我们可以将 E i n E_{in} Ein做的比较小,即训练数据上的模型表现不错,但是能否保证 E o u t E_{out} Eout也是这样的一个根本影响因素是,我们的训练数据是否具有代表性,即能否和整体数据保持分布一致或相近,比如,整体数据是黑球白球各1000个,做数据集大小为10的采样,很不幸,我刚好采样到一个数据集中10个球全是白球,这样的几率虽然相对较小,但是也是会发生的。这个采样毫无疑问是一个Bad data。
 
给定很多采样数据集和hypothesis set,有下表,
在这里插入图片描述
利用霍夫丁不等式进行推导如下:
在这里插入图片描述
由上述推导可得,如果 M M M是有限的,并且 N N N足够大,我们就能保证我们手上的不是Bad data,即 E i n E_{in} Ein E o u t E_{out} Eout比较接近。
 
接着上面推导结果中的 M M M N N N N N N没什么好说的,越大越好,但是 M M M呢,它代表hypothesis set中备选函数的数量,如果 M M M太小,Bad data的概率虽然变小了,但是备选空间也小了,我们可能选不到很合适的函数,如果 M M M太大,备选空间是足够大了,Bad data的概率就变大了。我们需要一个合适大小的 M M M,再来看Bad data概率的推导公式,union bound的地方把所有项加起来有点粗暴,因为hypothesis set中两个备选函数之间是有可能有交集的,这样子的话最终 M M M也许并没有想象中那么大。
 
考虑感知机分类的情形,我们的hypothesis set中虽然看似包含了无数个线性超平面,但是实际有效的超平面个数是有限的,当有1个点要分类的时候,有效超平面只有两个,要么将这个点判断为正,要么判断为负,有2个点,3个点,4个点的情形也类似,如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
情况似乎有所明朗,在4个点的情况中,有效超平面的个数已经小于 2 4 2^4 24了(4这个点被称为break point)。 M M M似乎可以得到简化,既然如此,针对不同的hypothesis set,不同的数据集大小(即不同的任务,不同的模型),我们是否可以找到一个上限,而且是多项式上限,而非指数级别的上限,答案是肯定的,这样的上限是存在的,证明过程见林轩田老师的机器学习基石。
如此一来,只要我们的hypothesis set存在break point,并且数据集足够大, E i n E_{in} Ein E o u t E_{out} Eout很接近就可以在概率上得到保证。最后有公式如下:
在这里插入图片描述
在这里插入图片描述

 

六、vc dimension

上文中提到,“在4个点的情况中,有效超平面的个数已经小于 2 4 2^4 24了”,这里的4被称为break point,而vc dimension就是break point-1,对于上面的情形来说就是3,但是我们关于vc dimension的说明并不是计算,而是希望理解vc dimension的含义。
 
在二元分类的情况下,vc dimension等于hypothesis set的参数数量,比如2维感知机,有3个参数(包含2个权重决定分割线的斜率和1个截距)。vc dimension是hypothesis set能力或者自由度的一种指标,vc dimension越大,说明hypothesis set中包含了更广泛的函数,以致于我们可以在这个很大的hypothesis set中找到我们想要的函数(在训练数据上表现好的函数)。
 
我们在上面的表述都是在说坏事情( E i n E_{in} Ein E o u t E_{out} Eout相隔很大)发生的概率,我们尝试找到一个多项式的上限约束坏事情发生的概率。现在我们看霍夫丁不等式的一个变形:
在这里插入图片描述
可以看到,影响 E i n E_{in} Ein E o u t E_{out} Eout之间差距的因素很多,有 N N N,vc dimension, δ \delta δ,我们现在看vc dimension对公式的影响,vc dimension越大,模型能力越强, E i n E_{in} Ein会更小,但是后面那个复杂的一项也会同时变大,会有如下一个常见的趋势:
在这里插入图片描述
即,vc dimension并不是越大(模型能力越强)越好,模型能力太强会过拟合。
 
再来看数据集大小 N N N E i n E_{in} Ein E o u t E_{out} Eout之间差距的影响,直觉上数据量肯定越多越好,但是实际过程中,可靠数据的取得是很困难的,所以理论上为了保证机器学习的可靠性,所需的数据量和vc dimension有如下关系:
 
在这里插入图片描述
 
之所以theory和practice之间有如此大的差距,是因为我们上面推导的不等式上限是很宽松的,它涵盖了各种hypothesis set,各种数据集大小,各种机器学习算法,各种目标函数。


http://chatgpt.dhexx.cn/article/fUxxJb9D.shtml

相关文章

Wireshark抓包数据

首先官网下载Wireshark&#xff0c;下载好后&#xff0c;用浏览器打开桂林生活网&#xff0c;无需注册&#xff0c;输入账号密码。 打开Wireshark&#xff0c;用命令提示符查看本机ip 在Wireshark的过滤搜索中输入ip10.34.152.44&#xff0c;找到http类型的数据查看&#xff0…

Wireshark抓包数据分析

文章目录 准备数据链路层实作一 熟悉 Ethernet 帧结构实作二 了解子网内/外通信时的 MAC 地址实作三 掌握 ARP 解析过程 网络层实作一 熟悉 IP 包结构实作二 IP 包的分段与重组实作三 考察 TTL 事件 传输层实作一 熟悉 TCP 和 UDP 段结构实作二 分析 TCP 建立和释放连接 应用层…

网络数据包分析与抓取

多年的网络数据包分析与抓取经验&#xff0c;闲话少说&#xff0c;上干货。先列举数据包的种类&#xff1a;1、Http数据包&#xff1b;2、UDP数据包&#xff1b;3、TCP数据包&#xff1b;4、ARP数据包&#xff1b;其实数据包的概念是很泛的&#xff0c;在软件可逆领域&#xff…

如何进行数据的抓包

抓包 抓包就是对网络传输中发送与接收的数据包进行截获、重发、编辑、转存等操作。 前提&#xff1a;抓取的数据包是从网卡设备中进行抓取的&#xff1b; win wiresharkLinux tcpdump命令 从上图我们就可以了解到tcpdump就是我们使用的一个工具&#xff1b; 我们在使用它时有…

WireShark基本抓包数据分析

WireShark抓包数据分析&#xff1a; 1、TCP报文格式 源端口、目的端口&#xff1a;16位长。标识出远端和本地的端口号。 顺序号&#xff1a;32位长。表明了发送的数据报的顺序。 确认号&#xff1a;32位长。希望收到的下一个数据报的序列号。 TCP协议数据报头DE 头长&#xff…

网络抓包及分析

今天我们主要来讲一下网络抓包的教程&#xff0c;我们用WireShark来说明 我们先说明下抓包工具界面 我们现在本地机子上用上面两个比较多 上面是抓无线网卡&#xff0c;就是你访问外网的包 下面是抓环回地址 &#xff0c;就是你访问127.0.0.1或localhost的包 我们抓上面WLAN…

Wireshark数据抓包分析之UDP协议

目录 预备知识1.UDP协议概述2.什么是UDP协议3.UDP协议的特点 实验目的实验环境实验步骤一1.配置TCP&UDP测试工具2.配置服务器端3.配置客户端4.获取UDP数据包 实验步骤二1.UDP首部格式2.分析UDP数据包 预备知识 1.UDP协议概述 UDP是User Datagram Protocol&#xff08;用户…

常见的几种网络抓包及协议分析工具

常见的几种网络抓包及协议分析工具 引言 网络工程师必备技能-抓取网络数据。 在本篇博客中&#xff0c;我们将集中记下几个问题进行探讨&#xff1a; 如何抓取电脑本机发送/接收的网络数据&#xff1f;如何在主机 A 上抓取 主机 B 上的网络数据&#xff1f;如何使用第三方设…

WireShark抓包分析

简述&#xff1a;本文介绍了抓包数据含义&#xff0c;有TCP报文、Http报文、DNS报文。如有错误&#xff0c;欢迎指正。 1、TCP报文 TCP&#xff1a;&#xff08;TCP是面向连接的通信协议&#xff0c;通过三次握手建立连接&#xff0c;通讯完成时要拆除连接&#xff0c;由于TCP …

抓包分析数据(Charles以及HttpCanary)

在开发小程序时&#xff0c;我们经常需要检查线上的请求&#xff0c;但是小程序并没有提供这方面的入口&#xff0c;本文为大家详细说一下我工作中使用到的关于抓包的经验&#xff0c;包括pc配合手机以及直接用手机抓包 一.pc配合手机实现抓包&#xff08;Charles&#xff09;…

wireshark抓包分析TCP数据包

1、直接从TCP的三次握手开始说起 三次握手就是客户与服务器建立连接的过程 客户向服务器发送SYN&#xff08;SEQx&#xff09;报文&#xff0c;然后就会进入SYN_SEND状态服务器收到SYN报文之后&#xff0c;回应一个SYN&#xff08;SEQy&#xff09;ACK&#xff08;ACKx1&…

wireshark抓ping数据包以及简单分析

目录 相关知识 1.Ping原理 2.ICMP报文协议 3.wireshark 一、wireshark抓数据包 二、报文分析 三、总结 相关知识 1.Ping原理 Ping是一句DOS 命令&#xff0c;一般用于检测网络通与不通 &#xff0c;也叫时延&#xff0c;其值越大&#xff0c;速度越慢 PING (Packet Inte…

wireshark抓包数据:理解与分析

注明&#xff1a;本文为原创文章&#xff0c;转载请注明出处。参考文章见本文末尾。 wireshark是一个非常好用的抓包工具&#xff0c;本文根据平时抓包经验&#xff0c;对之前wireshark抓包的一些常见知识点进行了整理。 有不当之处&#xff0c;欢迎指正 1.SYN&#xff0c;F…

WireShark抓包后数据分析

在分析数据之前&#xff0c;我们先了解一下我们传输数据的结构体系&#xff0c;如下图&#xff1a; 这是两种体系&#xff0c;我们常用的一般都是TCP/IP体系结构。 TCP/IP体系架构分析 不难发现&#xff0c;TCP/IP体系中包含着很多我们熟悉的协议&#xff0c;比如说&#xff1…

Wireshark --> 抓包(网络分析)工具

前言 贴一张wireshark抓包的总图&#xff0c;便于理解分析网络分层 ​ 为了让大家更容易「看得见」 TCP&#xff0c;我搭建不少测试环境&#xff0c;并且数据包抓很多次&#xff0c;花费了不少时间&#xff0c;才抓到比较容易分析的数据包。 接下来丢包、乱序、超时重传、…

Wireshark抓包工具使用以及数据包分析

多年之后&#xff0c;愿你有清风与烈酒&#xff0c;也有人是你的归途。 打开Wireshark抓包工具开始抓包会看到如下展开内容&#xff1a; 这里我是对wlan进行抓包&#xff0c;192.168.2.112是我当前wifi的ip地址。 点击某个包&#xff0c;可以查看具体内容&#xff0c;差不多刚…

使用wireshark抓网络报文(抓包)并分析其中数据

如何使用wireshark抓网络报文&#xff08;抓包&#xff09; 1、 物理层数据帧2、 数据链路层以太网帧头部信息3、 互联网层 IP 包头部信息4、 传输层 TCP 数据段头部信息 本文包内容分析转载自下午茶的芬芳&#xff0c;感谢作者的分享。 网络下载好wireshark打开软件按下开始捕…

wireshark抓包分析数据怎么看 wireshark使用教程

大家都知道Wireshark是非常流行且知名的网络抓包数据分析工具&#xff0c;可以截取各种网络数据包&#xff0c;并显示数据包详细信息&#xff0c;常用于开发测试过程各种问题定位、网络故障排查等情况。但是很多网友不清楚如何使用Wireshark抓包看数据&#xff0c;下面IT备忘录…

Wireshark网络抓包分析

目录 1. 以太网协议头(数据链路层) -- 14byte 2. IP数据头(网络层) -- 20byte 3. ARP抓包分析 3.1 ARP介绍 3.2 报文格式 3.3 抓包分析 3.3.1 先arp -d把arp表清空。 3.3.2 过滤ARP协议的数据包 3.3.3 Ping 目标IP 3.3.4 第一个数据包请求分析 3.3.5 第二个数据包应…

利用python简单分析抓包数据

利用python简单分析抓包数据 wireshark的数据 先读一行看看长啥样 import json data_file rE:\download\data.json with open(data_file,r,encodingutf8) as f:data_list json.loads(f.read())print(data_list[0])用格式化工具看 完整代码&最终结果 import jsondata_…