使用 sigmoid 函数有什么好处?

What are the benefits of using a sigmoid function?

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

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

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

Sigmoid 是一种 non-linear 激活函数,广泛用于逻辑回归和人工神经网络。如果,我们看看它的 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 之间,因此它的输出可以解释为特定 class.

概率

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

Sigmoid suffers from the problem of Vanishing Gradient. The gradients of the NN's output with respect to the parameters become so small, that the NN takes smaller steps towards the minima of the loss function and eventually stop learning.

此外,极大或极小的值被映射到四肢,即 0 或 1,这不会导致模型输出 w.r.t 参数(如权重和偏差)发生变化。

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

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

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

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

图片 Link : https://pasteboard.co/IgLjcYN.jpg