最近在上CMU深度学习系统算法与实现的在线课程,里面有一页PPT讲解了为什么两层网络能够拟合任意函数。
神经网络由于强大的拟合能力以及数据驱动的方式,被广泛运用到不同的领域。但是为什么神经网络有这么强的拟合能力,我还一直没有深究过,只知道是线性和非线性的叠加。闲话不多说
首先这个问题在1D情况,如图所示。对于任意的平滑函数,在封闭集合D范围内,我们都可以构建两层网络,让D内任意的数据的误差小于,显然如果误差越小,网络的节点就需要越高
简单证明如下
在封闭集合D中采样密集的数据点。我们能够构造2层网络通过所有的这些数据点(后面会详细证明),并且网络是分段的线性函数,同时被拟合的函数是连续函数,通过采样尽量多的点实现无线的逼近。
首先说明网络为什么是分段线性。2层网络结构如下图所示,其中x是一维向量,W1,W2是网络权重,这里非线性函数选择RELU,
可以简化为
函数可以由,线性组合叠加,
,
形状如图所示
由于relu存在引入了非线性,当你尝试用分段函数去表示的时候,你就会发现,我们实现下面的效果,
每个数据点可以拟合一个分段,从而实现对所有集合的拟合