《神经网络和深度学习》系列文章三十四:多个输入变量
出处: Michael Nielsen的《Neural Network and Deep Learning》,点击末尾“阅读原文”即可查看英文原文。
声明:我们将在每周四连载该书的中文翻译。
本节译者:朱小虎 、张广宇。转载已获得译者授权,禁止二次转载。
使用神经网络识别手写数字
反向传播算法是如何工作的
改进神经网络的学习方法
神经网络可以计算任何函数的可视化证明
两个预先声明
一个输入和一个输出的普遍性
多个输入变量
S型神经元的延伸
修补阶跃函数
结论
为什么深度神经网络的训练是困难的
深度学习
让我们把结果扩展到有很多个输入变量的情况下。这听上去挺复杂,但是所有我们需的概念都可以在两个输入的情况下被理解。所以让我们处理两个输入的情况。
我们从考虑当一个神经元有两个输入会发生什么开始:
这里,我们有输入
正如你能看到的,在
正如我们前面讨论的那样,随着输入权重变大,输出接近一个阶跃函数。不同的是,现在的阶跃函数是在三个维度。也如以前一样,我们可以通过改变偏置的位置来移动阶跃点的位置。阶跃点的实际位置是
让我们用阶跃点位置作为参数重绘上面的阶跃函数:
这里,我们假设
再一次,神经元上的数字是阶跃点,在这个情况下数字上的小
试着改变高度
另外,试着改变与顶部隐藏神经元相关的阶跃点
我们已经解决了如何制造一个
这看上去和前面的网络一模一样!唯一的明显改变的是在我们的隐藏神经元上现在标记有一个小的
让我们考虑当我们叠加两个凹凸函数时会发生什么,一个沿
为了简化图形,我丢掉了权重为
试着改变参数
我们构建的有点像是一个塔型函数:
如果我们能构建这样的塔型函数,那么我们能使用它们来近似任意的函数,仅仅通过在不通位置累加许多不同高度的塔:
当然,我们还没有解决如何构建一个塔型函数。我们已经构建的看起来像一个中心塔,高度为
但是我们能制造一个塔型函数。记得前面我们看到神经元能被用来实现一个 {if-then-else} 的声明:
if input >= threshold: output 1else: output 0
这是一个只有单个输入的神经元。我们想要的是将一个类似的想法应用到隐藏神经元的组合输出:
if combined output from hidden neurons >= threshold: output 1else: output 0
如果我们选择适当的阈值。比如,
你能明白怎么做吗?试着用下面的网络做实验来解决。请注意,我们现在正在绘制整个网络的输出,而不是只从隐藏层的加权输出。这意味着我们增加了一个偏置项到隐藏层的加权输出,并应用 S 型函数。你能找到
在初始参数时,输出看起来像一个前面图形在它的塔型和高原上的平坦的版本。为了得到期望的行为,我们增加参数
这是它看起来的样子,我们使用
甚至对于这个相对适中的
让我们尝试将两个这样的网络组合在一起,来计算两个不同的塔型函数。为了使这两个子网络更清楚,我把它们放在如下所示的分开的方形区域:每个方块计算一个塔型函数,使用上面描述的技术。右边的图上显示了第二个隐藏层的加权输出,即,它是一个加权组合的塔型函数。
尤其你能看到通过修改最终层的权重能改变输出塔型的高度。同样的想法可以用在计算我们想要的任意多的塔型。我们也可以让它们变得任意细,任意高。结果,我们可以确保第二个隐藏层的加权输出近似与任意期望的二元函数:
尤其通过使第二个隐藏层的加权输出为
超过两个变量的函数会怎样?
让我们试试三个变量
这里,
这个网络计算这样一个函数,当三个条件满足时:
通过组合许多个这样的网络我们能得到任意多的塔型,如此可近似一个任意的三元函数。对于
好了,所以现在我们知道如何用神经网络来近似一个多元的实值函数。对于
问题
我们已经看到如何使用具有两个隐藏层的网络来近似一个任意函数。你能否找到一个证明,证明只有一个隐藏层是可行的?作为一个提示,试着在只有两个输入变量的情况下工作,并证明:
可以得到一个不仅仅在
和 方向,而是在一个任意方向上的阶跃函数; 可以通过累加许多的源自(1)的结构,近似出一个塔型的函数,其形状是圆的,而不是方的;
使用这些圆形塔,可以近似一个任意函数。
“哈工大SCIR”公众号
编辑部:郭江,李家琦,徐俊,李忠阳,俞霖霖
本期编辑:徐俊
长按下图并点击 “识别图中二维码”,即可关注哈尔滨工业大学社会计算与信息检索研究中心微信公共号:”哈工大SCIR” 。点击左下角“阅读原文”,即可查看原文。