【问题标题】:What are the benefits of using a sigmoid function?使用 sigmoid 函数有什么好处?
【发布时间】:2019-10-12 14:10:51
【问题描述】:

我正在涉足神经网络,并从一些基本的感知器开始。在一个视频中,这个人正在解释如何制造一台可以“学习”如何区分两个数组的机器。他解释了训练过程,但只是将他所有的输入和权重推入了 sigmoid 函数。我对 sigmoid 函数做了一些研究,想知道为什么它会被用于机器学习,以及程序员为什么用它来测试他们的输入。

【问题讨论】:

  • 我认为这不适合 SO。你可以试试Data ScienceAI
  • sigmoid 将可能非常大的值标准化到边界,例如 0-1,同时失去太大值的差异但保持较小。如果您需要标准化某些东西但没有最大值,请使用它
  • 你在 youtube 上查看 3Blue1Brown 的频道了吗?

标签: python math machine-learning sigmoid


【解决方案1】:

此函数的工作是使数字介于 0 和 1 之间,通常用于有监督的分类问题。例如在标签只有两个的二元监督分类问题中(例如下图),那么一个数据与其他数据相距甚远,对分隔线的影响太大。

但是当我们使用 Sigmoid 函数时,我们可以看到远离其他数据的数据不会对分隔符产生太大影响。

此功能还可以显示概率。例如,如果您有一个新数据要预测,那么您可以使用该行并查看该数据属于某个标签的可能性有多大。 (看图更好理解)

图片链接:https://pasteboard.co/IgLjcYN.jpg

【讨论】:

    【解决方案2】:

    Sigmoid 是一种非线性激活函数,广泛用于逻辑回归和人工神经网络。如果,我们看看它的 Python 实现,

    import math
    
    def sigmoid( x ):
        return 1 / ( 1 + math.exp( -x )) 
    

    如果输入为负,则输出将小于 0.5。如果输入为正,则输出大于 0.5。

    在机器学习中的用途:

    在机器学习中,如果我们倾向于学习某些特征和二元特征之间的关系,那么我们会在输出层(产生输出)使用 sigmoid 函数。因为输出介于0和1,我们可以设置一个决策边界,判断标签是0还是1。

    此外,它们还用于人工神经网络的隐藏层。 Sigmoid 根据其输入(来自前一层)产生激活,然后乘以后续层的权重以产生进一步的激活。如果 Sigmoid 截获更大的正值,它会给出1 的完全饱和触发。在较小的负值的情况下,产生 0 的触发。因此,它会根据阈值生成激活值。

    此外,由于输出介于 0 和 1 之间,因此可以将其输出解释为 特定类的概率

    Sigmoid 的一些特殊问题(以及用 ReLU 替代):

    Sigmoid 存在梯度消失的问题。渐变 NN 的输出相对于参数变得如此之小, NN 朝着损失的最小值迈出了更小的步幅 发挥作用并最终停止学习。

    此外,极大或极小的值被映射到极值,即 0 或 1,这不会导致模型输出与权重和偏差等参数无关。

    通过使用不会压缩输入(如 sigmoid)的 ReLU 解决了这个问题,因此梯度消失问题得到了解决。

    【讨论】:

      【解决方案3】:

      Sigmoid 是可能的激活函数之一。激活函数的目的是将任何大小的所有可能值压缩到同一范围内。

      这是一篇好文章 - https://towardsdatascience.com/activation-functions-neural-networks-1cbd9f8d91d6

      【讨论】:

        猜你喜欢
        • 2012-05-22
        • 2020-05-08
        • 1970-01-01
        • 1970-01-01
        • 2021-02-20
        • 2014-03-14
        • 2019-08-23
        • 2023-02-10
        • 2022-12-17
        相关资源
        最近更新 更多