多层感知机(MLP)与二叉空间分割树(BSP Tree)的关系

概述

最近发现了一个传统算法,非常适合描述多层感知机(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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值