有啥简单的神经网络万有逼近定理证明方法

这个问题其实蛮有价值,神经网络初学者在刚接触神经网络时如果知道神经网络的万有逼近性质的话就会对神经网络方法产生很强的信心。万有逼近意味着神经网络具有任意的表示能力,有很多花哨有趣的论文的创新点也是基于此:比如说用神经网络学习复杂的多元量子系统来获取信息,笔者之前做的用神经网络预测随机数生成 Learning from Pseudo-Randomness With an Artificial Neural Network。遗憾的是,现在神经网络万有逼近的证明相当于是存在式的,对我们实际在用神经网络进行参数优化初值设定并没有太大指导意义。所以对于我们来说,最重要的是知道有这么一回事儿以及知道为什么这个证明是构造式的。
命题是说:一个含有单独隐含层的神经网络结构,给定充分的神经元,那么这个神经网络可以以任意精度逼近任意函数。证明的给出有两篇关键论文(Cybenko 1989和Hornik 1989,在google scholar 上键入这样的关键词出来的引用最高的文章就是了)Cybenko的论文实际上给出了证明的基本idea,不过他是用sigmoid函数做的,比较特殊。Hornik的文章证明了更加一般的结论,引用也比前者高。这两篇文章都非常好也非常数学,用了很多实变函数的知识。现在的很多论文都是这样,用很华丽完备但又晦涩的数学语言说明一个简单的原理,原理藏在这些数学语言里面不易被发现,阅读的门槛很高,读起来相当费力。我读这两篇论文也被绕晕了,最后找到了一个通俗易懂的硕士论文,才慢慢明白。这个硕士论文应该是通俗易懂了哈哈
有啥简单的神经网络万有逼近定理证明方法

以下的证明是根据单变量函数来的,只求达意,不求精确。证明的第一步是先承认这样一个事实:以如下的样条函数已经它的平移放缩形式组合在一起可以任意精度逼近任意一个函数,
有啥简单的神经网络万有逼近定理证明方法

如图所示:因为样条可以任意窄,间隔很细的话是可以在这个很细的区间里与函数值保持一个很好的精度,有点像微积分里算曲线所包围面积的想法,所以不难理解
有啥简单的神经网络万有逼近定理证明方法

第二步是:样条函数的形状可以由两个threshold函数相减所得到(当然这两个threshold函数要有错位),由此可以推出:threshold函数的平移放大互相的组合也可以逼近任意函数,类似于B导出C,而A导出B,所以A也能导出C
有啥简单的神经网络万有逼近定理证明方法

第三步是:单个神经元的作用函数在权重等于无穷的极限情况下可以变形为threshold函数:
【有啥简单的神经网络万有逼近定理证明方法】 有啥简单的神经网络万有逼近定理证明方法

phi可以是常用的sigmoid函数,i是第i个神经元,omega是输出层的运算。可以看到当a_i的绝对值趋于无穷的时候,sigmoid函数就变形为以-b_i/a_i为threshold的threshold函数了。因而可以得出神经网络是万有逼近器这一结论。
可以看出:这个证明其实是存在式的,真实情况下的权重是不可能是无穷的,那到底神经网络是怎么逼近和学习的呢?Who knows?
原载于微信订阅号:纯真学者出神入化:RPIBMEPhD
请多多支持呀

■网友
Neural networks and deep learning这个链接里面给了一个可视化的展示。其实证明的整个思路非常清晰:为了逼近任意的连续函数,我们只需要能在极小的区间,产生任意大小的凸起就可以了(最终我们可以把所有这样的小区间拼接在一起,就得到所需的函数)。--------------------------考虑一个单一输入,单一输出的三层网络。假设中间隐藏层的 activation function 为 sigmoid,输出层为线性。首先,我们可以观察到,隐藏层任一 neuron 的输出,都可以逼近阶跃函数。


推荐阅读