如何选择激活功能?


13

我根据需要的输出和已知的激活函数的属性为输出层选择激活函数。例如,当我处理概率时,我选择了S型函数;当我处理正值时,我选择了一个ReLU;当我处理一般值时,我选择了一个线性函数。

在隐藏层中,我使用泄漏的ReLU来避免死亡的神经元,而不是ReLU和tanh而不是乙状结肠。当然,我不会在隐藏单位中使用线性函数。

但是,在隐藏层中对它们的选择主要是由于反复试验。

在某些情况下,哪种激活功能可能会起作用,是否有任何经验法则?尽可能将情况称为“ 情境”:它可能是指该层的深度,NN的深度,该层的神经元数量,我们选择的优化程序,其输入特征的数量。到该NN的应用等

他/她的答案中,cantordust指的是我未提及的其他激活功能,例如ELU和SELU。此信息非常受欢迎。但是,我发现激活功能越多,对于在隐藏层中使用的功能的选择我就越感到困惑。而且我不认为掷硬币是选择激活功能的好方法。

Answers:


10

在我看来,您已经了解了ReLU和S状假体的缺点(就普通ReLU而言,就像死神经元一样)。我建议您查看ELU(指数线性单位)和SELU(ELU的自规范化版本)。在一些温和的假设下,后者具有自我归一化的良好特性,从而减轻了梯度消失和爆炸的问题。另外,它们传播归一化-即,它们保证下一层的输入将具有零均值和单位方差。

编辑:


推荐一个适用于所有用例的激活功能将非常困难(尽管我相信SELU的设计使其可以在几乎所有输入的情况下做正确的事情)。有很多考虑因素-计算导数有多难(如果可以微分!),用您选择的AF收敛的网络有多快,它有多平滑,它是否满足通用逼近定理的条件,是否它保留标准化,依此类推。您可能会或可能不会在意其中的任何一个。

最重要的是,没有为隐藏层选择激活功能的通用规则。就我个人而言,我喜欢使用sigmoid(特别是tanh),因为它们的边界很好并且计算速度非常快,但最重要的是因为它们适用于我的用例。其他人建议如果您的网络无法学习,请对输入层和隐藏层使用泄漏的ReLU作为入门功能。您甚至可以混合并匹配激活函数,以开发出适合于特殊应用的神经网络。

在一天结束时,您可能会得到与对激活功能的正确选择的人一样多的意见,因此简短的答案应该是:从当天的AF开始(泄漏的ReLU / SELU?)如果您的网络难以学习任何内容,请按照其他AF的顺序进行操作,以降低受欢迎程度。


1
是的,我忘记了标准化的传播。谢谢你的提醒。但是,这个问题仍然没有答案。有规则或其他选择,我应该在隐藏层中放置哪些激活功能?为简单起见,我只谈论完全连接的层。我不想让卷积,池化等使这个话题复杂化
。– gvgramazio

@gvgramazio我编辑了答案,希望它现在会更有用。
cantordust

通过编辑,我认为您已经回答了我的问题,并提供了感兴趣的链接(尤其是关于mix and match的链接)。不幸的是,这不是我想听到的答案。我将让我的问题再开放几天。如果没有人提供更好的答案,我会标记您的答案为已接受。
gvgramazio

-1

我不知道您正在使用哪种神经网络。但是,在处理递归神经网络时,还应该考虑tanh激活函数。为什么要避免爆炸梯度问题,因为例如tanh函数受限于RELU函数的差。


在问题中,我说我不仅使用ReLU,而且还使用tanh和Sigmoid。另外,为简单起见,我通常指的是经典的隐藏式全连接层。如果您认为我们正在处理递归神经网络这一事实对于激活函数的选择很重要,请说明原因。爆炸/消失现象也可能发生在非递归神经网络中。
gvgramazio
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.