(初稿)通用近似定理(universal approximation theorem)——多层感知机为什么能够解决非线性分类问题的本质原因

首先,上定理!
我们在这里不给出严格的数学定义,仅是简单地定性叙述通用近似定理的内容,
通用近似定理:一个包含足够多隐含层神经元的多层前馈网络,能以任意精度逼近任意预定的连续函数
实际上的原理是,多层感知机引入了非线性的激活函数,在增加隐藏层神经元个数的情况下可以得到一个非线性函数,从而解决了非线性分类问题

一开始,探索这个问题的出发点是我一直不理解多层感知机为什么能完成分类任务,多层感知机它是在做什么?(因为我发现不论是CNN还是transformer都涉及到了这个问题,这两个模型在中间部分或者最后输出的时候都用到了多层感知机(线性层)这个模型,但是我不明白它们为什么都要过一个线性层,进一步讲,也就是不明白多层感知机的作用是什么,所以去探索多层感知机是很自然的事情了)

因为在CNN和transformer这两个模型的学习过程中我认识到多层感知机是可以完成分类任务的,进一步的学习过程中我了解到多层感知机相比于单层感知机来说能完成非线性分类任务,然后我就去查,什么是非线性分类任务,这是我看的两篇文章:
理解线性可分和线性不可分与机器学习什么叫线性模型
手撸机器学习算法 - 非线性问题

我的直觉告诉我,搞明白了为什么多层感知机能解决非线性分类问题,多层感知机做了什么就可以解决非线性分类问题了?这是基于什么原理的? 就可以搞清深度学习大体上的构建框架了, 就可以理解深度学习那些模型的构建,因为这些模型的处理思路(注意我不是说设计思路)其实是大差不差的。

我看了很多文章和视频,了解到很多观点,
在学习的过程中了解到了通用近似定理,(附加一些我看过的通用近似定理的文章或者笔记链接(从上到下按照对我思维影响的重要程度排列):
通用近似定理
在理解通用近似定理之前,你可能都不会理解神经网络
直观理解万能近似定理(Universal Approximation theorem)
通用近似定理(学习笔记)
本来还想去看它的证明情况的,但是涉及到的数学太多太深了,看不懂,就作罢,当成个结论记住了,然后,这篇文章对我的思考产生关键的启发:
多层神经网络的两个定理(如何用感知机解决线性不可分问题)
看到这篇文章的 第8张 图片,我的直觉联想是,就像我们用正多边形的边长之和来拟合圆的周长一样,直线越多,那么拟合出来的图形就越接近一条曲线,给出足够多的直线(也就是隐藏层神经元),那么不就可以拟合到任意给定精度的任意函数了吗,或者说我们不就可以给出任意形状的决策边界了吗?我想,这应该就是通用近似定理所想表达的含义吧

首先来看,对于第二个分类问题,必须要用一条曲线边界,也就是一个非线性函数才能把这两类点区分开,我所知道的,单层感知机是线性分类器,但是多层感知机却可以解决这个分类问题,所以我猜测,多层感知机肯定具备了非线性特征,才能支持它完成这个分类任务的,接下来的问题就是:多层感知机做了什么才具备了非线性特征?或者说是谁给了多层感知机解决非线性分类问题的能力?

首先看一下单层感知机能完成的任务以及它的不足,由下图,问题是:给出一个关于 x 1 \mathbf{x_{1}} x1 x 2 \mathbf{x_{2}} x2 的线性函数,将下面这些点分为两类
这很简单,我们只需要画一条直线就可以了,也就是说我们可以用 一个 线性函数 将这些点分成两类,这样的函数是有很多种的,下图就是其中的一种分法。
在这里插入图片描述
那么问题再进一步,换一种情况: 如何给出一个关于 x 1 \mathbf{x_{1}} x1 x 2 \mathbf{x_{2}} x2 的线性函数,将下面这些点分成两类?
我们可以看到,无论是怎么样做,都无法在只画一条直线的情况下(也就是说,无法通过一个线性函数)将这两类点很好地分开,那怎么办呢?
多层感知机的解决思路是:使用多个线性函数,它们合起来,共同构成了一个非线性函数,我们使用这个新的非线性函数作为决策边界进行分类,就可以解决这一分类问题了,具体的,我们按照多层感知机的构造流程来说明这个非线性函数是怎么构建起来的:
在这里插入图片描述

为什么要给出不同的权重参数?答:它其实是在规划不同的决策边界,决策边界可以理解为不同的取值区域,我们要划分出来一个非线性的区域,使得区域内外的取值不同,多层感知机完成了这一任务,它本质上就是一个函数。

激活函数在分类问题中是对经过线性变换后的输入进行了非线性修饰,给出了非线性决策边界,

按照这种理解的话,我们其实构建的是一个只有一个输出的多层感知机就可以完成分类任务,而在《动手学深度学习》这本书中面对一个三分类问题,是构建了一个有三个输出的多层感知机模型,这是为什么呢

确实这个问题很好,在George Cybenko提出通用近似定理的初期,便认为神经网络可以拟合任意函数的原因是使用了simoid函数,而不是神经网络本身的性质,但是后续证明给出的结论却恰恰相反,能拟合任意函数,就是神经网络本身的性质,(准确来说是隐藏层的神经元),具体见下面这段话:
“1989 年,George Cybenko 最早提出并证明了单一隐藏层、任意宽度、并使用 S 函数作为激励函数的前馈神经网络的通用近似定理。两年后 1991 年,Kurt Hornik 研究发现,激活函数的选择不是关键,前馈神经网络的多层神经层及多神经元架构才是使神经网络有成为通用逼近器的关键。”

下面这篇文章的数学推导部分说得很好,如果神经网络每层之间没有激活函数的作用,只有线性变换(也就是权重相乘之和再加上各自的偏置),那么一层和多层的神经网络是没有区别的,本质上都是只进行了一次线性变换。
理解激活函数在神经网络模型构建中的作用
那我们最终得到的输出y关于输入x1x2的模型始终都只是一个线性模型,在二维空间下是一条线,在三维空间下是一个平面。

那么,最后的问题来了,多层感知机分别是怎么完成分类任务和回归任务的呢?

总结一下收获吧:我很喜欢通过看文章看博客,去了解对同一个问题不同角度的理解,然后综合一下,整理出我对这个问题的认识和理解,然后从0到1地构建出解决问题的思路和剖析过程,如果说看文献也是这样的话,我会非常喜欢看文献来学习的。

  • 15
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值