《Neural Networks and Deep Learning》读书笔记第四篇
本章其实和前面章节的关联性不大,所以大可将本章作为小短文来阅读,当然基本的深度学习基础还是要有的。
主要介绍了神经⽹络拥有的⼀种普遍性,比如说不管目标函数是怎样的,神经网络总是能够对任何可能的输入,其值(或者说近似值)是网络的输出,哪怕是多输入和多输出也是如此,我们大可直接得出一个结论:
不论我们想要计算什么样的函数,我们都确信存在⼀个神经⽹络(多层)可以计算它
试想以下这种普遍性代表着什么,我觉得代表着做更多可能的事情(将其看做计算一种函数):
-
比如将中文翻译成英文
-
比如根据⼀个 mp4 视频⽂件⽣成⼀个描述电影情节并讨论表演质量的问题
-
...
现实往往是残酷的,我们知道有这个网络存在,比如中文翻译成英文的网络,通常情况下想得往往不可得,网络在那里,但更可能我们得不到,怎么办?
前面我们知道,我们通过学习算法来拟合函数,学习算法和普遍性的结合是⼀种有趣的混合,直到现在,本书⼀直是着重谈学习算法,到了本章,我们来看看普遍性,看看它究竟意味着什么。
两个预先声明
在解释为何普遍性定理成⽴前,关于神经⽹络可以计算任何函数有两个预先声明需要注意一下:
-
这句话不是说⼀个⽹络可以被⽤来准确地计算任何函数,而是说,我们可以获得尽可能好的⼀个近似,通过增加隐藏元的数量,我们可以提升近似的精度,同时对于目标精度,我们需要确定精度范围:,其中
-
按照上⾯的⽅式近似的函数类其实是连续函数,如果函数不是连续的,也就是会有突然、极陡的跳跃,那么⼀般来说⽆法使⽤⼀个神经⽹络进⾏近似,这并不意外,因为神经⽹络计算的就是输⼊的连续函数
普遍性定理的表述:包含⼀个隐藏层的神经⽹络可以被⽤来按照任意给定的精度来近似任何连续函数
接下来的内容会使⽤有两个隐藏层的⽹络来证明这个结果的弱化版本,在问题中会简要介绍如何通过⼀些微调把这个解释适应于只使⽤⼀个隐藏层的⽹络并给出证明。
一个输入和一个输出的普遍性
先从一个简单的函数(即只有一个输入和一个输出)开始,我们将利用神经网络来近似这个连续函数:
第一章我们就探讨过多层感知机实现异或,这次同样的,我们加入一个隐藏层就可以让函数舞动起来,比如下面这个有一个隐藏层、两个隐藏神经元的网络:
第一步,暂时只考虑顶层的神经元,第一章也讲过 S 型神经元,所以输出范围类似上图右上角,重点看看这个 S 型函数,前面已经说过:
其中:,参见右上角的图,让我们考虑一下几个情况:
-
当不变,逐渐增加的情况下,输出会在原来的基础上变大,图像会相对向左边运动,因为没变,所以图像形状不会变
-
上述情况让键减小,图像会右移,同样图像形状不变
-
当不变,减小,很显然,图像的
陡峭
程度会下降,反之亦然
下图是书中给出的图示:
其实我们完全可以自己绘制这个过程,利用<