首页 > 解决方案 > 为什么我们不应该在同一层使用多个激活函数?

问题描述

我是 ML 和神经网络的新手,主要通过 coursera 视频和一些 kaggle/github 在线学习。我见过的所有应用神经网络的例子或案例都有一个共同点——它们在与特定层相关的所有节点中使用特定类型的激活函数。

据我了解,每个节点都使用非线性激活函数来了解数据中的特定模式。如果是这样,为什么不使用多种类型的激活函数呢?

我确实找到了一个链接,它基本上说如果我们每层只使用一个激活函数,管理网络会更容易。还有其他好处吗?

标签: machine-learningneural-network

解决方案


激活函数的目的是将非线性引入神经网络。请参阅此答案以更深入地了解为什么我们的深度神经网络在没有非线性的情况下实际上不会很深。

激活函数通过控制神经元的输出来完成它们的工作。有时它们会像 ReLU 一样提供一个简单的阈值,可以编码如下:

if input > 0:
    return input
else:
    return 0

而在其他一些时候,它们会以更复杂的方式表现,例如tanh(x)sigmoid(x)。有关不同类型的激活的更多信息,请参阅此答案

我还想补充一点,我同意@Joe,激活函数不会学习特定的模式,它会影响神经网络学习多种模式的方式。每个激活函数对输出都有自己的影响。

因此,在单层中不使用多个激活函数的一个好处是其效果的可预测性。例如,我们知道ReLUSigmoid卷积滤波器的输出做了什么。但是我们现在的效果是它们的级联使用吗?顺便说一句,ReLU是先出现的,还是我们先使用Sigmoid更好?有关系吗?

如果我们想从激活函数的组合中受益,所有这些问题(可能还有更多)都需要用科学证据来回答。应该进行繁琐的实验和评估以获得一些有意义的结果。只有这样我们现在才知道将它们一起使用意味着什么,在那之后,也许会出现一种新型的激活函数,并且会有一个新的名称。


推荐阅读