【发布时间】:2020-07-28 01:28:55
【问题描述】:
我是 ML 和神经网络方面的新手,主要通过 coursera 视频和一些 kaggle/github 在线学习。我看到的所有应用神经网络的示例或案例都有一个共同点——它们在与特定层相关的所有节点中使用特定类型的激活函数。
据我了解,每个节点都使用非线性激活函数来了解数据中的特定模式。如果是这样,为什么不使用多种类型的激活函数?
我确实找到了一个link,它基本上说如果我们每层只使用一个激活函数,管理网络会更容易。还有其他好处吗?
【问题讨论】:
-
我不会说激活函数学习“特定模式”。我认为整个网络学会以最小的损失完成任务,虽然有时特定的激活函数很重要,特别是对于输出层,但很多时候不同的激活函数具有相似的性能,所以我怀疑在单个中使用多个激活函数层只是没有值得花时间编写代码的好处,但我还没有读到任何人尝试这样做。
-
@Joe 不是激活函数,而是节点本身不是从模式中学到东西吗?
-
视情况而定。我认为,如果你建立一个像自动编码器这样的网络,带有瓶颈层,那么你可以让瓶颈层中的每个节点代表某个潜在空间中的一个独立组件,就像一个主组件,但非线性。然而,总的来说,我认为神经网络通常是黑盒模型——不是很容易解释,但它们很有效。
-
有时我们想要一个特定的激活函数,比如当我们想要对概率分布建模时,我们使用 softmax 作为输出,输出中的每个节点都是特定类的概率。然而,通用逼近定理表明,几乎所有 Lebesgue 可积函数都可以通过仅使用 ReLU 激活函数的足够深的网络进行任意逼近。
标签: machine-learning neural-network