神经网络为什么可以拟合任何函数(神经网络会过拟合吗)

大家好,神经网络为什么可以拟合任何函数相信很多的网友都不是很明白,包括神经网络会过拟合吗也是一样,不过没有关系,接下来就来为大家分享关于神经网络为什么可以拟合任何函数和神经网络会过拟合吗的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

在当今科技飞速发展的时代,人工智能已经成为了一个热门话题。而深度学习,作为人工智能的一个重要分支,已经取得了令人瞩目的成果。其中,神经网络作为一种强大的学习模型,在各个领域都展现出了强大的能力。为什么神经网络可以拟合任何函数呢?接下来,就让我来为大家揭开这个神秘的面纱。

神经网络简介

让我们先来了解一下神经网络的基本概念。神经网络是一种模拟人脑神经元结构的计算模型,通过神经元之间的连接和传递信息,实现对数据的处理和识别。神经网络由多个层次组成,包括输入层、隐藏层和输出层。每一层都包含大量的神经元,它们通过加权连接形成一个复杂的网络结构。

拟合函数的原理

神经网络是如何实现拟合任何函数的呢?这主要归功于以下几个因素:

1. 非线性激活函数

(表1:常见的激活函数及其特点

激活函数 形式 特点
Sigmoid 1/(1+e^x) 输出范围在0到1之间,适合二分类问题
ReLU max(0,x) 非线性,可以加快训练速度
Tanh tanh(x) 输出范围在-1到1之间,对称性较好
Softmax e^x/Σe^x 将输入转换为概率分布

从表1中可以看出,激活函数具有非线性特性,这使得神经网络能够学习到复杂的非线性关系。

2. 多层结构

神经网络的多层结构使得它能够处理高维数据。通过隐藏层的学习,神经网络可以逐步提取特征,实现对输入数据的抽象和表达。

3. 可调参数

神经网络中的参数(如权重和偏置)可以通过训练过程进行调整。这使得神经网络具有很高的灵活性,能够适应不同的数据分布和问题。

拟合函数的能力

神经网络到底能够拟合哪些函数呢?下面我们通过几个例子来展示神经网络的能力。

1. 线性函数

对于线性函数,神经网络可以通过单层感知机(线性模型)进行拟合。

(图1:线性函数的拟合结果

从图1中可以看出,神经网络能够很好地拟合线性函数。

2. 非线性函数

对于非线性函数,神经网络同样能够进行拟合。例如,以下是非线性函数的拟合结果:

(图2:非线性函数的拟合结果

从图2中可以看出,神经网络能够很好地拟合非线性函数。

3. 复杂函数

神经网络甚至可以拟合复杂的函数。例如,以下是一个复杂函数的拟合结果:

(图3:复杂函数的拟合结果

从图3中可以看出,神经网络能够很好地拟合复杂函数。

总结

神经网络之所以能够拟合任何函数,主要归功于非线性激活函数、多层结构和可调参数等因素。这使得神经网络具有很高的灵活性和强大的学习能力。在实际应用中,我们还需要对神经网络进行优化和调整,以达到最佳的性能。

在人工智能飞速发展的今天,神经网络作为一种强大的学习模型,已经取得了举世瞩目的成果。相信在不久的将来,神经网络将会在更多领域发挥重要作用,为我们的生活带来更多便利。

神经网络为什么是个万能函数拟合器

神经网络之所以被视为万能函数拟合器,主要得益于其强大的学习能力和通用近似定理的支撑。

一、通用近似定理通用近似定理是神经网络能够拟合任意函数的理论基础。该定理表明,一个具有单层隐藏层且隐藏层神经元足够多的前馈神经网络,能够以任意精度逼近任意连续函数。这意味着,只要给定足够的神经元和适当的训练,神经网络就能够学习到任何复杂的函数关系。

具体来说,通用近似定理证明了以下两点:

非线性激活函数:神经网络中的非线性激活函数(如ReLU、sigmoid等)使得神经网络能够表示非线性关系,这是拟合复杂函数的关键。足够多的神经元:随着隐藏层神经元数量的增加,神经网络的表示能力逐渐增强,能够逼近的函数空间也越来越大。二、神经网络拟合任意函数的例子以下通过一个简单的全连接神经网络例子来说明其如何拟合任意函数:

网络结构:假设有一个全连接神经网络,包含一个隐藏层,该隐藏层有m个神经元,输出层使用线性激活函数(权重为1,偏置为0)。隐层输出:隐层的输出可以表示为输入向量x与权重矩阵w的乘积加上偏置b,然后通过非线性激活函数进行变换。整个神经网络输出:最终输出是隐层输出与输出层权重的乘积(在这里,输出层权重为1,偏置为0,因此直接等于隐层输出之和)。通过公式推导,我们可以发现,当隐藏层神经元足够多时,这个神经网络的输出可以逼近任意连续函数。具体来说,可以将神经网络的输出表示为一系列非线性函数的线性组合,这些非线性函数由隐藏层的神经元和激活函数决定。通过调整权重和偏置,可以改变这些非线性函数的形状和位置,从而逼近目标函数。

三、神经网络结构对能力的影响纵向(每层神经元个数):增加每层神经元的个数可以提高神经网络的表示能力,使其能够逼近更复杂的函数。但是,过多的神经元也可能导致过拟合和训练困难。横向(隐层个数):增加隐层的个数同样可以增强神经网络的表示能力。但是,与增加每层神经元个数相比,增加隐层个数通常会导致更高的计算复杂度和更长的训练时间。此外,过深的网络也可能导致梯度消失或梯度爆炸等问题。因此,在设计神经网络时,需要根据具体任务和数据集的特点来选择合适的网络结构,以达到最佳的性能和效率。

四、结论综上所述,神经网络之所以被视为万能函数拟合器,是因为其强大的学习能力和通用近似定理的支撑。通过调整网络结构和参数,神经网络可以逼近任意连续函数,从而在各种任务中取得优异的性能。然而,这也并不意味着神经网络可以无条件地拟合任意函数,其性能还受到数据质量、训练算法、网络结构等多种因素的影响。因此,在实际应用中,需要综合考虑各种因素来设计和优化神经网络。

(注:上图展示了一个全连接神经网络的结构示例,用于说明神经网络如何通过调整权重和偏置来逼近目标函数。)

为什么神经网络能以任意精度拟合任意复杂度的函数

在开始之前,我们先来看一下维基百科给出的万能近似定理(Universal approximation theorem)描述:

Universal approximation theorem(Hornik et al., 1989;Cybenko, 1989)定理表明:前馈神经网络,只需具备单层隐含层和有限个神经单元,就能以任意精度拟合任意复杂度的函数。这是个已经被证明的定理。下面我们用一种轻松的方式解释,为什么神经网络(理论上)可以拟合任何函数?

看过《神偷奶爸》这部电影的同学都知道,小黄人( Minions)非常喜欢吃香蕉。不过,现在它只有12个苹果,但它对苹果不感兴趣,想着如果谁能用香蕉换它的苹果就好了。不经意间,它发现了一个神奇的小屋。

小黄人向神奇小屋的窗户里放进一个苹果,神奇小屋什么也不会给它。小黄人又尝试向小屋的窗户里放进5个苹果,神奇小屋突然吐出16个香蕉!这下小黄人可高兴坏了。然后,小黄人又尝试扔给神奇小屋6个苹果,神奇小屋又吐出来20个香蕉。

现在,小黄人的12个苹果用完了,它抱着换来的香蕉想:如果我给它3个苹果,小屋会吐出来多少香蕉呢?

这是一道小学题(找规律),如何解答?

你可能脱口而出,8个香蕉!!OK,好吧,说明你的智商可以学习AI这么高深的学科了~

如何使用机器学习的步骤解答这道小学生做的题目呢(你可能觉得这是杀鸡用了宰牛刀)。

我们使用变量 x表示扔给神奇小屋的苹果数量(输入input),使用变量ŷ表示神奇小屋吐出来的香蕉数量(输出Output),那么我们就得到了一个数据集(Data set):

我们的目标是,构建一个数学模型(Model),使得该模型满足数据集的隐含规律。即,向模型输入 x的值,模型会输出对应的ŷ值。

小学生应该学过一元函数(y= wx+ b)。既然是小学题目,那么使用比较简单的函数应该就能模拟数据集的规律。所以我们定义了一个一元一次函数模型:

那么问题来了,我们怎样才能确定函数的两个参数w,b?

聪明的你可能又会脱口而出,是y= 4x+(-4)!!OK,你再次证明了你的智商已经超过小学生或者初中生。

但是小黄人没有你那么聪明,它只能猜。如果w=1, b=0,结果会是怎样?

很明显,模型的输出(预测)值 y与实际数据集中的真实值ŷ相差很大。小黄人不满意,又随机猜了一次。w=2,b=2,结果又是怎样呢?

嗯,这次模型的输出值 y与数据集中的真实值ŷ相差似乎不那么大了。小黄人就想,这两个候选模型,哪一个更好呢(更能模拟数据集中的规律)?如何将”更好“量化?

于是,我们引出损失函数(lost function)的概念。

将预测值 y与真实值ŷ之间的差值平方和,作为“更好”的一种量化。损失函数越小,即,预测值与真实值之间的差值越小,说明参数w,b越能模拟数据集中的规律。

有了损失函数,我们来看一看,上面两个候选模型的损失函数值各是多少。

模型 y= 2x+ 2的损失函数值L(2,2)= 68,小于L(1,0)= 318,所以候选模型y= 2x+ 2胜出。

小黄人是一个追求极致的人。损失函数值68虽然小于318,但是它还是很大呀,有没有其他参数w,b使得损失函数L(w,b)的值比68还小。

所以,我们又引出了优化器(Optimizer)的概念。

想办法找出使得损失函数值L(w,b)最小的参数w,b。由于小黄人没有学过梯度下降法(一种凸函数优化算法,不懂也没关系,现在用不到),所以它只能使用….”随机尝试法“。

小黄人从参数w=2,b=2,开始,以步长为1进行随机尝试。即,在“加一减一”的范围内,尝试坐标点(2,2)周围的四个点:(3,2)、(2,3)、(1,2)、(1,1)。结果发现,在点(3,2)处,损失函数值小于其他三个点和原先点处的损失值。

所以,小黄人发现了一个更好的候选模型 y= 3x+ 2,其损失函数值为26,比68小的多。小黄人,很兴奋,用同样的方式又开始了尝试。以此类推,它接着发现了L(3,1)=17、L(3,0)=14两个坐标点。然而,在点(3,0)周围的尝试,都没有发现比14更小的损失函数值。

这样就结束了吗?

高智商的你,一定能想到,在点(4,-4)处,损失函数值最小:L(4,-4)=0。但是,用上述尝试方法并不能找到坐标点(4,-4)。

问题出在了哪儿?是初始点选择的问题。

小黄人发现,如果从坐标点(-2,-4)开始上述方式的尝试,最终会找到使得损失函数最小的(4,-4)点。如果深入研究,将涉及到最优搜索问题,超出本片文章的范围。

我们当前只需知道,能够通过最优方法(如,最小二乘法),找到使得损失函数最小的模型参数w,b。

上面这个故事就是线性回归??

我们需要给出一个稍微严谨点的定义,来说明什么是线性回归。下面是《机器学习》(周志华著)中给出的一句话:

将这句话对应到我们的模型中。模型函数 y= 4x- 4就是句中学得的“线性模型”。然后,在我们的故事中,不是尽可能准确地预测真实值输出标记,而是百分百预测了真实值输出标记….损失函数值能够达到最小0。

其实,没那么简单……我们稍微扩展一下。

有一天,小黄人发现,如果给神奇小屋1个苹果、2个香蕉、3个梨,神奇小屋就会吐给它一只猫咪~喵喵喵~。真的太神奇了。。。。

这时,模型函数不再是简单的一元函数,而是三元函数,有三个输入变量(x1, x2, x3),和4个参数(w1, w2, w3, b)需要优化。我们将这种情况称之为“多元线性回归(multivariate linear regression)”。其实这是图像识别的原型模型,我们不再深入探讨。

当小黄人发现了神奇小屋交换香蕉的规律后,非常非常高兴。它又找来了好多苹果,准备和神奇小屋交换香蕉。可是….生活就是这样。在你最得意的时候,往往会给你浇一盆凉水。

(注,这里将之前的数据集调整了一下,由x=1,5,6改为x=1,2,3。方便画图啦)

小黄人又尝试给神奇小屋4个和5个苹果,结果分别得到9个和10个香蕉。似乎哪里有点不对??!如果按照之前发现的规律,应该分别得到12和20个香蕉呀。小黄人,百思不得其解。

这时,神奇小屋吐出来一张纸条,上面写着:如果你扔进来的苹果太多,我给你的香蕉将会减少。小黄人,有点郁闷。

如果按照之前一元函数的方式建模,将会得到如下函数模型。

你可能比小黄人聪明多了,一眼就看出来上面的模型函数好像不太合适。损失函数永远取不到最小值0。

如果模型函数是这样就好了,那么对应的损失函数值将会取到最小值0。可是,这好像是两个模型函数。一山不容二虎,能不能将这两个函数合成一个函数。

这时,你又脱口而出,分段函数!!事实证明,你的智商已经达到高中生水平。

当 x< 3时,s1等于1,s2等于0,函数 y= 4x- 4;

当 x>= 3时,s1等于0,s2等于1,函数 y=1x+ 5;

这才是完美的组合函数。

那么,问题又来了。s1和s2是什么?怎么确定?

如果把s2看成函数,那么理想情况下,应该是这样的阶跃函数。

然而阶跃函数具有不连续、不光滑等不太好的性质。

这时,小黄人悠悠地说,我好像见过一个跟这个函数有点像的连续函数,叫Sigmoid函数。

看到这个Sigmoid函数后,你很生气。对着小黄人说:人笨就少说话,这个函数和阶跃函数,哪里相像了,差的也太远吧!!怎么看怎么不像。

小黄人:你给变量t一个参数不就行了,改成σ(1000t)。(抠鼻)

如果不仔细看,几乎看不出在纵轴0到1之间,有个非常陡峭的曲线。你顿时无语,对小黄人刮目相看。

当 x= 0.1时,s=σ(100)≈ 1;

当 x=- 0.1时,s=σ(100)≈ 0;

稍微对这个Sigmoid函数做些调整,就能得到我们需要的各种阶跃函数。

这样的话,我们就得到了新的模型函数,y=(4x- 4)σ(-1000x+ 3000)+(1x+ 5)σ(1000x- 3000);

如,当 x= 4时, y=(12)σ(-1000)+(9)σ(1000)= 12*0+ 9*1= 9,与数据集相符。

在这个过程中,小黄人还是有功劳的,提出了激活函数的概念。

下面我们看一下稍微严谨点的逻辑回归定义。

这一句话就够了。在第一节中我们已经学习线性回归模型 y= wx+ b。观察图,能够发现,逻辑回归其实就是在线性回归的结果上在再使用一次激活函数 y=σ(wx+ b)。线性回归模型(y= wx+ b)的预测值y可以是一个任意实数{-∞,∞},而逻辑回归模型(y=σ(wx+ b))的预测值y只能是{0, 1}之间的实数。如果能够搞明白线性回归与逻辑回归的联系,说明你已经掌握两者的本质含义。

小黄人想,虽然给的香蕉数量少了些,最起码小屋吐出来的香蕉比扔进去的苹果多嘛。于是,小黄人又尝试向神奇小屋里扔进去了7个和9个苹果。

结果,神奇小屋两次都只返还出来10个香蕉。这下小黄人傻眼了。

虽然小黄人在其他事情上比较笨,但是只要与香蕉相关,它可精明的多。刚刚5个苹果就能换10个香蕉,现在9个苹果才能换10个香蕉!!明显自己吃亏了。但是,它又非常不喜欢吃苹果,只能强忍怨气,攒着一股劲,一定要把里面的规律找出来。

经过之前的套路,机智的你,一定能想到解决办法。

对,就是这样。将数据集分成三块,分别构建线性模型函数,然后利用激活函数,组合起来。

问题再次出现。

当 x< 3时,s1=σ(-1000x+ 3000)= 1,其他情况为0;

当 x>= 5时,s3=σ(1000x- 5000)= 1,其他情况为0;

当 3<= x< 5时,s2=??

不知道聪明的你有没有注意到,函数 s1和 s3都是以 x作为未知变量。如果我们转换一下思路,将 s2看成是 s1和 s3的二元函数。即,s2是否等于1或0,由 s1和 s2的值决定。

s2=σ(-1000s1- 1000s2+ 500)

虽然得到的香蕉数目不再增加,但是这么复杂的问题都能解决掉(使用线性回归和逻辑回归相结合,对数据集建模),小黄人还是有点小高兴。反正它手里还有些苹果,于是它又尝试向神奇小屋里丢进去了10、11、12个苹果。结果…小黄人崩溃了!!

神奇小屋传出来纸条说:做人不能贪得无厌,要见好就收,知足常乐。小黄人崩溃了。现在只留下一个未被解决的难题—-怎么对数据集进行建模。

即使你很聪明,似乎也只能解决其中的两步。

取 s1=σ(-1000x+ 3000),即,当 x< 3时,s1= 0;

取 s4=σ(1000x- 9000),即,当 x>= 9时,s4= 0;

那么 s1和 s2该如何确定?

根据之前的经验,你大致可以确定s1和s2应该由s1和s4的值确定。

后续……

假设现在我们有许多数据集,

梳理一下流程

重点来了

免喷声明:本文借鉴(chao xi)牛津大学xDeepMind自然语言处理公开课

可以输出拟合函数的神经网络框架

sigmoid函数的值域就在(0,1)内,所以你的输出结果肯定在0到1之间;至于能否拟合是zhi要看情况的;

如果原来可以拟合,那么更换输出函数也可以,不过效果是否好就不敢保证了,虽然signoid做了一个同胚变换,但样本毕竟不是真的在一个连续函数上,有时候误差会导致变换时效果变差。

大脑的智慧就是一种非线性现象。人工神经元处于激活或抑制二种不同的状态,这种行为在数学上表现为一种非线性关系。具有阈值的神经元构成的网络具有更好的性能,可以提高容错性和存储容量。

扩展资料:

(1)非线性:非线性关系是自然界的普遍特性。大脑的智慧就是一种非线性现象。人工神经元处于激活或抑制二种不同的状态,这种行为在数学上表现为一种非线性关系。具有阈值的神经元构成的网络具有更好的性能,可以提高容错性和存储容量。

(2)非局限性:一个神经网络通常由多个神经元广泛连接而成。一个系统的整体行为不仅取决于单个神经元的特征,而且可能主要由单元之间的相互作用、相互连接所决定。通过单元之间的大量连接模拟大脑的非局限性。联想记忆是非局限性的典型例子。

参考资料来源:百度百科-人工神经网络

关于神经网络为什么可以拟合任何函数的内容到此结束,希望对大家有所帮助。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享