首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

通过高效信息传播来提升深度神经网络的学习效率

雷锋网按:本文为 AI 研习社编译的技术博客,原标题为 Improving learning through efficient imformation propagation in Deep Neural Networks  , 作者为 Mirco Milletarì 。

翻译 | 李锋   整理 |  余杭

目前,前馈神经网络 (FFN) 已经得到了广泛的应用,尤其是在图像和语音识别上功能突出。尽管取得了这些经验上的成功,但对底层设计理论的理解仍然有限。在 FFN 中找到准确的层数和单元数需要反复试验,而不是一个非常明确的科学问题。同样的道理也适用于设计新颖的架构或对现有的架构进行优化。理解 FFN 的工作原理以及何时使用 FFN 是一个明确的任务,近期这项任务得到了科学界的广泛关注。

在这篇论文(目前同行评审)中,我们考虑了这个问题的特定方面,即信息如何通过网络来进行处理和传播以及信息如何与「激活函数」的选择联系在一起。在文章中,我将尝试使读者明白,像 sigmoid, tanh 等等激活函数不能用于 FNN 的隐层中,因为他们会导致严重的不一致性,最终减缓或阻止学习,最著名的是在回溯过程中梯度消失的问题。利用概率模型,我们证明了激活需要满足 a(x)=x sigmoid(beta x) 的形式,正如 Ramachandran 等人此前提出的,通过强化学习训练大规模的搜索算法。这种看似无害的差异在神经网络如何处理和传播信息隐藏了更深的含义,即是在上述提及的论文中被忽视的。

好在 a(x) 不受著名的梯度消失的问题的影响,因为后者通过简单的向前操作存在着一系列的错误。Hayou 等人在最近的一篇论文中也得出了同样的结论,文中从随机神经网络的角度研究了这个问题。

我将在文中讲述相关数学的一个类比和简单的维度论证。

信息通过随机门传送

思考一下概述的过程:我们想要将信息从一端传送到另一端。我们不能直接看到门,但我们知道消息在给定内容的情况下传输 (s=1) 或不传输 (s=0)。例如,门可以执行信息的第一次筛选来查看是否是垃圾邮件。由于我们不知道决策过程的细节,我们只能得到 s= 的概率。

一个类似神经元的门。 下标为 n 的输入信号 X 进入系统,与偏置量线性组合为 h。s 是突触结点的状态:它负责转换信号 s=1 还是 s=0。由于状态依赖于输入的特定表示形式,所以应该将其视为一个随机变量。

最终,我们对接收信息感兴趣,阅读信息内容并且将部分内容转发给别人。门转送信息的概率由 sigmoid 的激活值决定(如果我们用 s={-1,1} 编码,那就是 tanh),然而这不是信息本身而是信息是否是垃圾邮件的信任问题。如果我们只是想要知道是否是垃圾邮件,这是可行的,但我们想要准确知道信息的内容,这还远远不够。想象下你的门卫告诉你:「顺便告诉你,今天你收到了十封信件,其中 4 封是垃圾信件,我已经扔了。但剩余的 6 封可能是重要的……」这段话的用处有多大呢?

现在考虑一个更复杂的垃圾邮件过滤系统。我们认为这是必要的,因为垃圾邮件非常微妙,一个单独的门不能胜任分类垃圾邮件的工作。我们以有序的方式安排这些端口,那么一个端口的输出就是另外一个端口的输入。假设每个端口都设置了 sigmoid 函数:唯一能通过网络传输的是每个端口对信息是否是垃圾邮件的信任,而不是信息本身。的确,有一类算法类似于我刚才描述的信念传播 (BP)。如果每一层只有一个门,那么很明显,这个方法不会奏效:接收门不能判定出原始信息是否被正确地分类成垃圾信息有两个原因:第一,门不能读取原始信息,第二,它的未来决策只是基于一个意见。一种解决方式是收集更多的意见,即在同一层增加更多的门:现在我们可以通过监听多种意见来猜测出正确的解决方案。另一种解决方式是通过一定概率来将消息传送给下一层。很明显,这种方式要更有效得多,因为每个门都可以考虑到来自前一层的意见和消息本身,从而直接判定消息是否是垃圾邮件。

你可能会因此以下几个方面争论:在监督学习框架中,我们在训练阶段给出答案。即使我们只给出一个置信水平,我们仍然可以通过迭代的方式来达到目的。这里有两个注意事项:第一,这可能是一个缓慢的过程,第二,这种方法存在一个基本的数学问题。我很快将会给出解释,但我首先要说的是,当使用 ReLu 时不存在上述问题;事实上这个函数传递的不是概率而是消息本身!ReLu 的问题是,只有门完全确定信息不是垃圾邮件时才会传送;这意味着我们可能会拒绝接收一个实际上很重要的消息,因为我们对最初的决定过于自信。

那么如何使线性整流函数(ReLu)更灵活呢?这里我将使用一个快捷方式(可以在论文中找到正式的推导),将 ReLu 改写为:

其中,最后一个函数是单位阶跃函数,仅当 x> 0 时取值不为零。在物理学中,该函数与 S 型函数(称为费米-狄拉克分布)有关

其中 β 是与系统噪声相关的因素,而在物理学中它与温度成反比(温度就像噪声一样!)。这种激活类似于通过系统传播的信息流。它不仅传输正确的数量,而且还额外提供了我们需要的灵活性。如果你想知道如何验证这些断言,请查看下面的技术细节。

确保维度正确

最后来看另一个支持上面讨论的信息流图的简单论证。你可能记得物理课上有很多数量都附带了一个物理「维度」。在下文中,我将像物理学家常做的一样使用术语「维度」,用以指称用来衡量一定数量的单位。事实上,说我喝了一个水并没有多大意义;通常我们需要增加「升」或「杯」等单位。前者是标准度量,而后者总是可以涉及前者,例如,一杯水约为 240 毫升(或更多,这取决于杯子的大小!)。

我们输入进神经网络的不同特征也具有维度,例如,公寓的大小(平方米),价格(美元/欧元等),像素的亮度(坎德拉)等等……在数字世界中,我们可以使用标准信息单位:比特。确保计算结果维度正确通常是首先要检查的。这一基本步骤似乎经常被忽视。考虑我们感兴趣的情况,一个带有S形激活函数的前馈神经网络;这在下面以简化的形式展现。 想象一下,所有输入X都是以比特为单位测量的,那么第一层中的每个单元接收具有比特维度的输入。

「婴儿网络」,以显示维度不匹配。

这些量的线性组合仍然具有比特维数。我们现在将 h 输入 S 型「非线性」函数,这实际上是一个概率(见上图),因此必须是无维度的。因此,我们需要引入维数 [1/比特] 的常数,使得 a=sigmoid(β h)是无维度的。这个常数在机器学习应用中经常被设置,大家几乎忘记了它的存在!如果你懂一点统计力学,你会发现β是温度的倒数(以玻尔兹曼常数为单位),但这里它只是一个噪声的度量(参考之前的讨论)。

我们现在进入第二层;如果遵循深度学习的标准过程,我们将 S 型激活函数输入进新单位,即 m1 是 a1 和 a2 的线性组合。如果你到目前为止没有走神,现在应该会发现这个问题:新的输入(a)是无量纲的!采用线性组合,你仍然可以获得无量纲数量(m1)。现在出现了真正的问题:S 型函数仍然需要无量纲,这意味着比例常数 β 也需要无量纲!因此,在一层中,我们以位为单位测量信息和噪音,并且之后的层中所有内容都是无量纲的!这种维度不一致是出现问题的信号!在论文中我们说明了这个简单的错误导致了梯度消失的问题!不言而喻,ReLu 和 ESP 都不会遇到这个问题,因此不会有梯度消失!然而,ReLu 遇到了我们之前讨论的问题,另见下面的技术说明以获得更好的解释。

我希望你明白的是,如果我们想要通过深度神经网络获得快速可靠的结果,还有许多简单的细节需要修改。像这里描述的小错误会导致网络复杂度增加,最终导致性能变差。建立神经网络要遵循明确的设计原则而不是试错,就可以降低复杂度,并能帮助我们更好理解系统是如何以及何时工作的。

如果你对数学与细节感兴趣,请查看这里。另外,你也可以在我的GitHub 页面上找到代码和运行结果。

号外号外~

一个专注于

AI技术发展和AI工程师成长的求知求职社区

诞生啦!

欢迎大家访问以下链接或者扫码体验

https://club.leiphone.com/page/home

雷锋网雷锋网

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180731C11TYI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券