Sigmoid 激活如何在多类分类问题中发挥作用

数据挖掘 机器学习 神经网络 深度学习 多类分类 激活函数
2021-10-11 06:24:51

我知道对于多个类的问题,我们通常使用 softmax,但我们也可以使用 sigmoid 吗?我试图在输出层用 sigmoid 实现数字分类,它有效。我不明白它是如何工作的?

4个回答

如果你的任务是一种标签互斥的分类,每个输入只有一个标签,你必须使用Softmax. 如果您的分类任务的输入具有多个标签作为输入,则您的类不是互斥的,您可以将Sigmoid其用于每个输出。对于前一种情况,应选择最大值的输出条目作为输出。对于后一种情况,对于每个类,您都有一个属于最后一个 sigmoid 的激活值。如果每次激活都超过0.5您可以说输入中存在该条目。

softmax() 将为您提供概率分布,这意味着所有输出的总和为 1。而 sigmoid() 将确保神经元的输出值在 0 到 1 之间。

在数字分类和 sigmoid() 的情况下,您将输出 0 到 1 之间的 10 个输出神经元。然后,您可以取其中最大的一个并将其分类为该数字。

@bharath chandra Softmax 函数永远不会给出 3 作为输出。它将始终输出 0 和 1 之间的实数值。Sigmoid 函数也给出 0 和 1 之间的输出。不同之处在于,在前者中,所有输出的总和将等于 1(由于互斥性质),而在后一种情况下,所有输出的总和不一定等于 1(由于独立性)。

对于初学者:您可以阅读这个quora 答案,它解释了 Sigmoid 激活和 softmax 概率的优缺点。为了包容性,在撰写本文时有 6 个答案。 Sigmoid 与 Softmax

答案亮点

  • 如果你看到 Softmax 的函数,所有 softmax 单元的总和应该是 1。在 sigmoid 中它不是真的必要。

  • 在二元分类中,sigmoid 和 softmax 函数是相同的,而在多类分类中我们使用 Softmax 函数。

  • 如果您使用的是 one-hot 编码,那么我强烈建议您使用 Softmax。

我注意到的:据我所知 >> Softmax 是我们样本空间中各种可能类别(多类别)的概率分布。并且在通过 one-hot 编码将任何内容传递给 softmax 激活层之前,必须提前预定义所有类。例如 NLP 中的标记化和词干化以使数据同质化。

对于非初学者:在Keras 官方页面上, softmax文档给出如下:

softmax

keras.activations.softmax(x, axis=-1)

Softmax activation function.

Arguments

    x: Input tensor.
    axis: Integer, axis along which the softmax normalization is applied.

Returns

Tensor, output of softmax transformation.

Raises

    ValueError: In case dim(x) == 1.

而对于Sigmoid,给出如下:

sigmoid

keras.activations.sigmoid(x)

Sigmoid activation function.

Arguments

    x: Input tensor.

Returns

The sigmoid activation: 1 / (1 + exp(-x)).