思考起源
刚接触AI for science的时候,和AI方向的朋友聊的第一个感兴趣的问题是:“为什么神经网络能够逼近任何函数?”
在我的知识库里,如果要逼近一个函数,那用多项式逼近,或者基于数学物理方法的其他方法。但是朋友说,“神经网络就是一个逼近函数的工具。” 这句话让我好奇心爆炸,查了各种资料,但是总是觉得没有完全的理解。直到今天听了一个课程,感觉讲到了点上,觉得算是理解了本质原因,在这里分享一下。
分享内容来自于李宏毅老师的机器学习,出处:
https://blog.csdn.net/zzh516451964zzh/article/details/123212671?spm=1001.2014.3001.5506
“神经网络逼近任意函数”的关键点是什么?
我的理解就是激活函数。
任何函数,不论函数本身的表达有多复杂,形状有多奇特,都可以被分成很多段,每一段曲线都可以使用一个函数表示,这些分段函数加起来就可以表示我们的函数本身。如下图所示:
基于上述思想,接下来就要定义分段函数,这里引入机器学习的激活函数的概念。激活函数其实就这些分段函数,如下图所示,如果我们想要拟合红色的线段,那么我们可以把其分为不同的蓝色线段加和。如果观察这些蓝色线段的设计,会发现他们其实是在红色线段的拐点处,产生一个突然的上升或者下降,而在没有达到拐点的时候,他们就会处于一个平稳的不影响整体曲线变化的值。那么这种在某些阈值内的设计好的有上升和下降趋势的分段函数曲线,就是激活函数。
所以说,激活函数原来就是神经网络能够拟合任意曲线的关键。通过激活/关闭不同位置的分段函数,最终我们就能逼近任意想要的曲线了。
使用如下表达式表示这个激活函数呢,主要可以控制其斜率,高度等信息。
我想接下来这个图说明了关键,输入的feature(即x1,x2,x3),在通过weight,bias调节为分段函数后,由激活函数决定什么时候参与加和,通过调节最终逼近目标函数y。而深度学习网路会有不止一层,最终逼近的神经网络是由更多复杂的分段函数最后逼近的。