神经网络隐藏激活函数的选择

机器算法验证 机器学习 分类 神经网络
2022-03-27 18:40:44

我在其他地方读到过,一个人在 NN 中选择隐藏层激活函数应该基于一个人的需要,即如果您需要 -1 到 1 范围内的值,请使用 tanh 并使用 sigmoid 来表示 0 到 1 范围内的值。

我的问题是如何知道自己的需要是什么?它是基于输入层的范围,例如使用可以包含输入层全范围值的函数,还是以某种方式反映输入层的分布(高斯函数)?或者是需要问题/特定领域并且需要一个人的经验/判断来做出这个选择?还是只是“使用能够提供最佳交叉验证的最小训练误差的方法”?

3个回答

LeCun 在Efficient Backprop 4.4 节中讨论了这一点。动机类似于将输入归一化为零均值的动机(第 4.3 节)。tanh 激活函数的平均输出比 sigmoid 更可能接近零,sigmoid 的平均输出必须为正。

问题第一段中提到的需求与输出层激活函数有关,而不是隐藏层激活函数。输出范围从 0 到 1 很方便,因为这意味着它们可以直接表示概率。然而,IIRC,一个具有 tanh 输出层激活函数的网络可以简单地转换为一个具有逻辑输出层激活函数的网络,因此在实践中并不重要。

IIRC 在隐藏单元中使用 tanh 而不是逻辑激活函数的原因,即使用反向传播对权重所做的更改取决于隐藏层神经元的输出和激活函数的导数,因此使用逻辑激活您可以同时使两个函数都归零,这最终可能导致隐藏层单元冻结。

简而言之,将 tanh 用于隐藏层激活函数,选择输出层激活函数来对输出实施所需的约束(常见选择:线性 - 无约束,逻辑 - 输出位于 0 和 1 之间,指数 - 输出严格为正)。

您可以使用1.7159×tanh(x×(2/3))在隐藏层上。这个 sigmoid 的性质是它的最大二阶导数在1+1值,而它的渐近极限是[1.5,+1.5]. 这样,您的网络将在决策边界附近的点上更加准确。

为您的目的选择 sigmoid 的一般概念是根据规则选择一个,您的输出值在点的范围内,使 sigmoid 函数的二阶导数最大。