雷竞技注册
技术文章

SIGMOID激活功能:多层erceptron神经网络中的激活

2019年12月25日经过罗伯特·凯

在本文中,我们将了解为什么我们需要一个通过梯度下降训练的神经网络的新激活函数。

欢迎各界罗伯特·凯米工程总监开雷竞技注册发的所有关于电路神经网络系列。您可以使用下面的指南赶上该系列:

  1. 如何使用神经网络执行分类:什么是Perceptron?
  2. 如何使用简单的Perceptron神经网络示例来对数据进行分类
  3. 如何训练基本的Perceptron神经网络
  4. 了解简单的神经网络培训
  5. 神经网络培训理论介绍
  6. 了解神经网络的学习率
  7. 高级机器学习与Multijayer Perceptron
  8. SIGMOID激活功能:多层erceptron神经网络中的激活
  9. 如何训练多层的感知者神经网络
  10. 了解多层情人的培训公式和背部经验
  11. 用于Python实现的神经网络架构
  12. 如何在Python中创建多层Perceptron神经网络
  13. 使用神经网络的信号处理:神经网络设计中的验证
  14. 用于神经网络的培训数据集:如何训练和验证Python神经网络

在本文中,您将了解激活函数,包括与单位步骤激活功能相关的限制以及如何在多层的Perceptron神经网络中为它们组成Sigmoid激活函数。

为什么单元步骤激活功能不适用于多层的感知者

到目前为止,我们的系列中,我们一直在使用单位步骤激活功能:

网络的计算节点概括了前一层传递的所有加权值,然后根据以下表达式将这些总和转换为一个或零:

\ [f(x)= \ begin {fise} 0&x <0 \\ 1&x \ geq 0 \结束{is} \]

但是,您可能已经注意到,在我的网络图中,激活函数的表示不是单位步骤。它更像是单位步骤的平滑,不相当垂直版本:

在我看来,平滑的版本更加视觉上吸引人,但这不是我选择它的原因。或者至少这不是唯一的原因。事实证明,单位步骤不是多层感知者的良好激活功能。

让我们了解为什么。

梯度下降,总和平方误差

总结方位错误是我们的错误功能,并通过梯度血淋于更新权重,要求我们发现错误函数的部分导数相对于我们要更新的权重。执行这种差异揭示了相对于重量的错误梯度由包括的表达式给出激活功能的衍生物

The unit step allows the calculations that occur within the node to be very simple (all you need is an if/else statement), but this benefit becomes meaningless in the context of gradient descent because the unit step is not differentiable—it’s not a continuous function, and the slope at the point where the output transitions from zero to one is infinity.

如果我们打算使用梯度下降训练神经网络,我们需要一个可分解的激活功能。由于单元步骤与生物神经元的开/关行为一致,并且在由人工神经元组成的系统中,考虑类似于单位步骤的激活功能但没有缺乏可差异性,因此有意义。我们需要看起来没有比Logistic Sigmoid函数更好。

SIGMOID激活功能

形容词“sigmoid”是指在两个方向上弯曲的东西。有各种符合统计函数,我们只对一个人感兴趣。它被称为逻辑函数,数学表达式相当简单:

\ [f(x)= \ frac {l} {1 + e ^ { - kx}} \]

常数L确定曲线的最大值,常数K会影响过渡的陡度。下面的曲线显示了L的不同值的逻辑函数的示例,并且以下绘图显示了k的不同值的曲线。

L = 1.5(蓝色),L = 1(橙色)和L = 0.5(绿色)的逻辑函数曲线。

k = 1.5(蓝色),k = 1(橙色)和k = 0.5(绿色)的逻辑函数曲线。

Logistic功能不是MLP中使用的唯一激活功能,但它非常常见并且具有多种优势:

  • 如上所述,物流激活是对单位步骤的优异改进,因为一般行为是等效的,但过渡区域中的平滑度确保该功能是连续的并且因此可分离。
  • 计算负担肯定超过了单位步骤,但对我来说仍然相当合理 - 只是一个指数运行,一个添加和一个部门。
  • 我们可以通过调整L和K参数轻松微调输入输出关系。但是,我认为神经网络通常使用标准逻辑函数,即,使用l = 1和k = 1。
  • 逻辑曲线高导数的形状在输出范围的中间和最大值和最小值附近的输出的低导数 - 可能会促进成功的培训。我无法在这些问题上申请权威专业知识,所以我会直接引用并行分布式处理预订由斯坦福大学提供:由于重量修改与激活函数的衍生物成比例,因此对于“尚未致力于打开或关闭”的节点,权重变化将更大,这可能是“[贡献]稳定性系统的学习。“

物流功能的衍生物

标准逻辑函数f(x)具有以下衍生物:

\ [f(x)= \ frac {1} {1 + e ^ { - x}} \ \ \ lightarrow \ \ \ f ^ \ prime(x)= \ frac {e ^ x} {(1 + e ^ x)^ 2} \]

However, if you have already calculated the output of the logistic function for a given input value, you don’t need to use the expression for the derivative, because it turns out that the derivative of the logistic function is related to the original logistic function as follows:

\ [f ^ \ prime(x)= f(x)(1-f(x))\]

结论

我希望你现在清楚地了解了物流Sigmoid函数是什么以及我们将它用于MultiDayer Perceptrons中的激活。逻辑函数无疑是有效的,我已成功使用它来设计神经网络。然而,由于隐藏层的数量增加,因此由于被称为消失的梯度问题而变得不太期望。也许我们将在未来的文章中探索消失的渐变问题和其他更高级的问题。

2评论
  • 学习Ninkun. 8月7日,2020年8月

    我认为f'(x)= f(x)(1-f(x))仅为标准物流函数,我可能是错误的,如果这是真的,请告诉我。是否有人知道更广泛的形式是什么,或者是(x)= f(x)(1-f(x))仍然适用?

    像。 回复
    • RK37. 2020年8月11日
      是的,f'(x)= f(x)(1-f(x))简化适用于标准物流功能,不一定是其他形式。我不想说它适用于标准物流功能,因为我必须做很多数学以验证该语句。但是,如果我们考虑将需要链规则的案例,我们可以说它不适用。有关详细信息,请参阅此讨论:https://math.stackexchange.com/questions/2378605/differentions-of-logistic-function
      像。 回复