隐藏层中激活函数的选择将控制网络模型对训练数据集的学习程度。输出层中激活函数的选择将定义模型可以做出的预测类型。
神经网络中的激活函数定义了输入的加权和如何从网络层中的一个或多个节点转换为输出。许多激活函数是非线性的,在层或网络设计中可能被称为“非线性”。非线性激活函数是首选,因为它们允许节点学习数据中更复杂的结构。
隐藏层
ReLU(整流线性单元)激活函数是当今最常用的隐藏层函数,因为它既易于实现又能有效克服其他先前流行的激活函数的限制,例如 Sigmoid 和谭。具体来说,它不太容易受到阻止深度模型训练的梯度消失的影响,尽管它可能会遇到其他问题,例如饱和或“死”单元。
sigmoid 和 tanh 函数的一个普遍问题是它们会饱和。这意味着对于 tanh 和 sigmoid,较大的值会捕捉到 1.0,而较小的值会捕捉到 -1 或 0。此外,这些函数仅对其输入中点附近的变化非常敏感,例如 sigmoid 为 0.5,tanh 为 0.0。
无论作为输入提供的节点的总激活是否包含有用信息,函数的有限灵敏度和饱和都会发生。一旦饱和,学习算法就很难继续调整权重以提高模型的性能。
由于校正后的线性单元几乎是线性的,因此它们保留了许多使线性模型易于使用基于梯度的方法进行优化的特性。它们还保留了许多使线性模型能够很好地泛化的属性。
由于整流后的函数对输入域的一半是线性的,而对另一半是非线性的,因此称为分段线性函数或铰链函数。但是,该函数仍然非常接近线性,即具有两个线性片段的分段线性函数。
外层
要考虑在输出层中使用的常见激活函数有:线性、逻辑(Sigmoid)和 Softmax。
- 线性激活函数也称为“恒等”(乘以 1.0)或“无激活”。这是因为线性激活函数不会以任何方式改变输入的加权和,而是直接返回值。
- softmax 函数输出一个总和为 1.0 的值向量,可以将其解释为类成员资格的概率。它与 argmax 函数有关,该函数为所有选项输出 0,为所选选项输出 1。 Softmax 是 argmax 的“更软”版本,它允许赢家通吃函数的概率输出。因此,函数的输入是一个实数值向量,输出是一个长度相同的向量,其值总和为 1.0,类似于概率。
根据您要解决的预测问题的类型为您的输出层选择激活函数。具体来说,被预测的变量的类型。
例如,您可以将预测问题分为两大类,预测分类变量(分类)和预测数值变量(回归)。
如果您的问题是回归问题,您应该使用线性激活函数。
如果您的问题是分类问题,那么分类问题主要分为三种类型,每种可能使用不同的激活函数。
预测概率不是回归问题;是分类。在所有分类情况下,您的模型将预测类别成员的概率(例如,示例属于每个类别的概率),您可以通过舍入(对于 sigmoid)或 argmax(对于 softmax)将其转换为清晰的类别标签。
如果有两个互斥类(二元分类),那么您的输出层将有一个节点,并且应该使用 sigmoid 激活函数。如果有两个以上互斥类(多类分类),那么您的输出层每个类将有一个节点,并且应该使用 softmax 激活。如果有两个或多个相互包含的类(多标签分类),那么您的输出层将为每个类有一个节点,并使用 sigmoid 激活函数。
- 二元分类:一个节点,sigmoid 激活。
- 多类分类:每个类一个节点,softmax 激活。
- 多标签分类:每个类一个节点,sigmoid 激活。
softmax 函数用作预测多项概率分布的神经网络模型的输出层中的激活函数。也就是说,softmax 被用作多类分类问题的激活函数,其中需要在两个以上的类标签上具有类成员资格。
该函数可以用作神经网络中隐藏层的激活函数,尽管这种情况不太常见。当模型内部需要在瓶颈或连接层选择或加权多个不同的输入时,可以使用它。
参考:machinelearningmastery.com