理解神经网络的数学原理(四)多层感知机(MLP)与二叉空间分割树(BSP Tree)

news2024/11/16 11:36:12

概述

最近发现了一个传统算法,非常适合描述多层感知机(Multi-Layer Perceptron,MLP)的模型逻辑,其算法逻辑也非常清晰简单,所以在这里再对比一下,方便大家更容易理解多层感知机的内容,这篇文章不会写复杂的数学公式。想从数学方面去更多的理解多层感知机的内容可以查看往期的文章。

二叉空间分割树

什么是二叉空间分割(Binary Space Partitioning)?它是一种通过使用超平面(Hyperplane)作为划分工具,递归地将空间细分为两个凸集的方法。而生成的数据结构是一个二叉树,即二叉空间分割树。它是由Fuch和Kedem在1980年首先提出的。它的基本思想是基于这样一个事实,任何超平面都可以将空间分割成两个半空间。如果我们在任何半空间中也有一个超平面,它会进一步将此半空间分割为更小的两个子空间。我们可以将这一过程一直进行下去,将子空间分割得越来越小,直到达到终止条件构造成一颗二叉树。其算法逻辑如下:

1、整个空间被表示为根节点。

2、通过选择分离超平面来划分空间,整个空间被划分为两个子空间Front和Back,在根节点下方表示为B和F。
3、这两个子空间还包含多个节点,因此需要再次细分子空间,即再次使用超平面(红线)将子空间再次细分,这里产生了4个子空间。

4、这个过程需要在划分的每个子空间中递归重复,以最终构造完整的二叉树,其中每个叶节点都可被区分(即子空间不能再次被细分,如左侧不能再分割出更多的独立五角心)。

整体来说,二叉空间分割树(BSP Tree)是非常简单且常用的算法,运行逻辑也很清晰。其应用范围也是非常多的尤其在3D渲染上,感兴趣的可以搜索关于二叉空间分割树的内容深入了解,或者更多的细节及代码也可以参考下文的链接。

多层感知机

理解了二叉空间分割树,其实也就理解了多层感知机的模型逻辑,他们在运行的核心逻辑上是没有区别的。有区别是空间划分的数量及实现这种逻辑的方式。两者空间划分的数量是不同的,多层感知机构造的不是二叉树,而是多叉树,因为多层感知机的每一层都会将空间划分为大于等于2个子空间。实现方式也会有差异,这是必然的,因为多层感知机是学习算法,多层感知机是通过节点权重构造的多个分离超平面来划分空间的。

如上图,三个超平面将空间划分为6个子空间,这种属于比较巧合的情况,实际上三个超平面在隐藏层一般会将二维空间划分为7个子空间。

递归的在子空间内再次划分子空间,如上图R1这个子空间被再次划分为了6个子空间,而递归的次数是由多层感知机的层数决定的,层越多递归次数越多,那么划分的子空间一般会更多。

上图中为了简洁只画了一个子空间R1的情况,实际是每个子空间都和R1一样被划分,当然每个子空间区域划分的所使用的超平面一般是不同的。

而反向传播算法(Back propagation)的本质就是求这样的递归逻辑下超平面组合的全局最优解,也就是如何通过优化各层放置超平面的位置使得分类(回归)误差最小化。

总结

这篇文章只简单概述模型逻辑,即说明二叉空间分割树的算法逻辑和多层感知机是完全一致的。至于多层感知机的超平面从何而来,这个以前的文章已经说明了,每个隐藏节点都会构造一个超平面,分类层也会构造一个或多个超平面,如果不排斥数学的话可以查看往期的文章。当然本文多层感知机隐藏层使用的ReLU激活函数,其他激活函数性质没这么好所以没怎么研究。

参考:

  1. Binary Space Partitioning Trees
  2. Binary Space Partitioning Tree Tutorial

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

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

相关文章

手写Docker之认识NameSpace、CGroups、Union file system

关于NameSpace Linux NameSpace主要是kernel中用于隔离系统资源的功能,而docker就是基于NameSpace去隔离系统资源达到容器化的效果 以下案例均以该代码进行举例: package mainimport ("fmt""os""os/exec""syscall&…

【C++】mapsetmultimapmultiset使用说明

文章目录 关联式容器键值对pair的定义(键值对) 树形结构的关联式容器Set -> 排序去重Set的文档介绍Set的使用:set的构造set的迭代器set的容量set修改操作API接口总结: multiset -> 排序 可重复lower_bound&&upper_bound mapmap的模板参数说明map的构造map的迭代…

毕业季,各互联网大厂急缺这类 Python 人才!

又快到了应届毕业生找工作的季节了,一大波大厂高薪岗位陆续开放,想拿 Offer、升职加薪的你准备得怎么样了? 今年的招聘力度可以说是近几年最大,比如字节跳动旗下的大力教育,高调宣布:“未来 4 个月&#x…

最新整理Java面试八股文,大厂必备神器

在看这篇文章之前,我想我们需要先搞明白八股文是什么??? 明清科举考试的一种文体,也称制义、制艺、时文、八比文。八股文章就四书五经取题,内容必须用古人的语气,绝对不允许自由发挥&#xff0…

记录--axios和loading不得不说的故事

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 loading的展示和取消可以说是每个前端对接口的时候都要关心的一个问题。这篇文章将要帮你解决的就是如何结合axios更加简洁的处理loading展示与取消的逻辑。 首先在我们平时处理业务的时候loading一般…

OpenAI 重磅发布 ChatGPT iOS 客户端!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 今天凌晨,OpenAI 正式发布了 iOS 客户端! 这代表你可以直接在 iPhone 和 iPad 上直接使用 ChatGPT 进行聊天了。 该客户端基于 Whisper 开源模型,集成了…

用排列组合来编码通信(七)——《我的5/4张牌的预言》

早点关注我,精彩不错过! 从《5张牌的预言》开始,前面介绍了3个拓展思路,分别从引入额外信息解放选牌(Eigens value),引入正反信息来编码(ups and downs),继续…

从零开始学架构——可扩展架构模式

可扩展架构模式的基本思想和模式 软件系统与硬件和建筑系统最大的差异在于软件是可扩展的,一个硬件生产出来后就不会再进行改变、一个建筑完工后也不会再改变其整体结构 例如,一颗 CPU 生产出来后装到一台 PC 机上,不会再返回工厂进行加工以…

从零玩转前后端加解密之SM2-sm2

title: 从零玩转前后端加解密之SM2 date: 2022-08-21 19:42:00.907 updated: 2023-03-30 13:28:48.866 url: https://www.yby6.com/archives/sm2 categories: - 加密算法 - 从零玩转系列 tags: - 加密算法 - sm2 前言 SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥…

工业互联网UWB定位系统源码,支持自定义开发

工厂人员定位系统,采用UWB定位技术,通过在厂区内部署一定数量的定位基站,以及为人员、车辆、物资佩戴标签卡的形式,实时获取人员精确位置,精度高达10cm。 文末获取联系 工厂人员定位系统可实现物资/车辆实时定位&#…

不同厂家对讲机耳塞耳挂/领夹型988对讲机如何写频改频点/频率能互相通信

988型号都是很多厂家代工出来的,代工出来默认的频点都不一样,有可能买回来的2个不同厂家生产的对讲机,这样它们要能通讯,必须要同频点才能互通,它一般出厂设定16个频道,长按+和-键来切换频道。 需要用到typeC 的写频线,其实是用CH430芯片的usb写频线,可以找厂家要写频线…

编程语言中,循环变量通常都用 i?你知道为什么吗?

01 前天,我在朋友圈发了一个问题: 为什么编程中,循环变量通常都是用 i ? 没想到,回复的人这么多!要连翻好几页。 这个问题,有 2/3 的人回答正确,有少部分人知道,但是不太确定。 习惯…

Hadoop基础学习---2、Hadoop概述

1、Hadoop概述 1.1 Hadoop是什么? 1、Hadoop是一个又Apache基金会所开发的分布式系统基础架构。 2、主要解决海量数据的存储和海量数据的分析计算。 3、广义上来说,Hadoop通常是指一个更广泛的概念——Hadoop生态圈。 1.2 Hadoop 优势(4高…

六级备考28天|CET-6|翻译井冈山|2021年12月|8:20~9:40+ ~10:17

目录 四级翻译5篇必练真题 六级翻译5篇必练真题 井冈山 四级翻译5篇必练真题 ①2023年3月一卷①自驾游 ②2022年 12月一卷③立秋 ③2022年6月一卷①拔苗助长 ④2021年 12月一卷②大运河 ⑤2021年6月一卷③普洱茶 六级翻译5篇必练真题 ①2023年3月一卷②郑和下西洋 ②2022年…

微服务多模块:Springboot+Security+Redis+Gateway+OpenFeign+Nacos+JWT (附源码)仅需一招,520彻底拿捏你

可能有些人会觉得这篇似曾相识,没错,这篇是由原文章进行二次开发的。 前阵子有些事情,但最近看到评论区说原文章最后实现的是单模块的验证,由于过去太久也懒得验证,所以重新写了一个完整的可以跑得动的一个。 OK&#…

nvidia-smi 失效解决

服务器重启后,跑模型发现: RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_locationtorch.device(cpu) to ma…

Linux常用命令——hping3命令

在线Linux命令查询工具 hping3 测试网络及主机的安全 补充说明 hping是用于生成和解析TCPIP协议数据包的开源工具。创作者是Salvatore Sanfilippo。目前最新版是hping3,支持使用tcl脚本自动化地调用其API。hping是安全审计、防火墙测试等工作的标配工具。hping优…

【开源项目】Nepxion Aquarius实现分布式锁、缓存、ID生成、限速的源码解读

项目地址 项目地址 https://toscode.gitee.com/nepxion/Aquarius 项目介绍 Nepxion Aquarius是一款基于Redis Zookeeper的分布式应用组件集合,包含分布式锁,缓存,ID生成器,限速限流器。它采用Nepxion Matrix AOP框架进行切面架构…

天工开物 #6 Git 分支管理与版本发布

Git 版本管理系统由 Linux 的作者 Linus Torvalds 于 2005 年创造,至今不到二十年。 起初,Git 用于 Linux Kernel 的协同开发,用于替代不再提供免费许可的 BitKeeper 软件。随后,这一提供轻量级分支的分布式版本管理系统得到了开源…

产品经理被气的脸都绿了!

见字如面,我是军哥! 本来今天不想发文了,想躺平一下,毕竟今天周五了嘛。 可是今天早上一位买了我《技术人核心能力》的程序员学员发来私信,说他给产品经理上了一课,声称产品经理当时脸都绿了,并…