我见过的应用神经网络的所有示例或案例都有一个共同点——它们在属于特定层的所有节点中使用特定类型的激活函数。
据我了解,每个节点都使用非线性激活函数来了解数据中的特定模式。如果是这样,为什么不使用多种类型的激活函数呢?
我确实找到了一个链接,它基本上说,如果我们每层只使用一个激活函数,管理网络会更容易。还有什么好处吗?
激活函数的目的是将“非线性”引入神经网络。请参阅此答案,以更多地了解为什么我们的深度神经网络在没有非线性的情况下实际上不会是深。 激活函数通过控制神经元的输出来完成其工作。有时它们会像 ReLU 一样提供一个简单的阈值,可以编码如下:
if input > 0:
return input
else:
return 0
有时它们的行为方式更复杂,例如
tanh(x)
或
sigmoid(x)
。有关不同类型激活的更多信息,请参阅此answer。 我还想补充一点,我同意@Joe,激活函数不会学习特定模式
,它会影响神经网络学习多种模式的方式。每个激活函数对输出都有自己的影响。 因此,不在单层中使用多个激活函数的好处之一是其效果的可预测性。例如,我们知道
ReLU或 Sigmoid 对卷积滤波器的输出做了什么。但我们现在看到它们级联使用的效果了吗?顺便说一句,是先使用 ReLU,还是先使用 Sigmoid 更好?有关系吗? 如果我们想从激活函数的组合中受益,所有这些问题(也许还有更多)都需要用科学证据来回答。应该进行繁琐的实验和评估才能得到一些有意义的结果。只有这样我们才会知道将它们一起使用意味着什么,之后,也许会出现一种新型的激活函数,并且会有一个新的名称。