Softmax 激活函数的工作原理?

2025 年 2 月 3 日 | 阅读 9 分钟

引言

在机器学习和深度学习的背景下,激活函数在开发神经网络以帮助它们做出复杂决策和生成预测时非常有益。Softmax 激活函数在类别互斥的问题中尤其常用。在本文中,作者旨在仔细研究 Softmax 函数、它的工作原理、用途以及它在人工智能领域的意义。

Softmax 函数

Softmax 函数通常应用于神经网络的最后一层以用于分类问题,它将原始输出分数或 logits 转换为概率。它通过指数化每个输出,然后将这些值除以所有输出的总指数来做到这一点。此步骤使输出值能够被归一化到 (0,1) 范围内并加起来等于一,从而使其值成为概率。

Softmax 函数的数学表达式如下:

假设有一个原始分数或“logits”的向量 z = [z1, z2, ... zn];每个元素的 Softmax 函数 σ(z) 是。

How Softmax Activation Function Works

说明

这里,e 是自然对数的底,分母中的求和是输入向量的所有 zj 元素的总和。此公式使得返回的值成为介于 0 和 1 之间的概率,并且总和为 1。

在神经网络框架中对(0-9)手写数字进行分类的背景下,Softmax 函数的作用是将最后一层的计算转换为每个数字类别的有意义的概率。

输入: Softmax 积极地作用于实数元素的向量 z,这些元素是神经网络最后一层的输出。

指数化: z 中的每个元素都使用数学常数 e 进行指数化。Sigmoid 分类器通过 z 的指数化以及数学常数 e(约 2.718)来影响给定的方程。这种转换确保所有值都取正号。

归一化: 然后将这些除以向量 z 中所有指数化元素的总和。此归一化步骤确保结果值形成概率分布,其中所有概率的总和等于一。这是概率解释输出的一个必要条件。

这使得神经网络能够给出概率输出,考虑到对于许多任务,例如图像分类,有必要估计每个可能输出(在此例中为数字)的发生概率。

Softmax 函数的属性

输出范围: Softmax 函数确保其输出值经过归一化,位于 0 和 1 之间,这指的是概率。

概率总和: 重要的是,Softmax 函数产生的计算总量在任何给定时间都等于 1。由于此属性,Softmax 非常适合将原始分数转换为概率分布。

可解释性: 因此,Softmax 提高了神经网络输出的可解释性,因为它将原始输出转换为概率。这种变化有助于更好地分析网络产生的输出,尤其是在分类等活动中,这些活动不允许区分具有相似特征的两个或多个类别。

Softmax 激活的应用

Softmax 激活可应用于所有涉及多个类别的问​​题,例如图像分类、文本分类和推荐系统。由于它有助于快速管理多个类别,因此它是机器学习模型中的重要工具。例如,在需要从图像中对水果进行排序的神经网络中,Softmax 确保分配给每个类别(即苹果、橙子、香蕉)的概率之和为 1。

Python 中 Softmax 的实现

代码

在此示例中

  • z 是来自神经网络最后一层的概率或 logits 的向量。
  • Softmax 通过对每个元素进行指数化并除以 z 中所有元素指数的总和来对 z 的条目应用 Softmax,从而使结果值成为概率。
  • 在 Softmax 的背景下,此实现演示了在尝试将神经网络输出转换为可解释的概率分布时如何实际应用此过程,这在解决多类分类问题时很有用。

与其他激活函数的比较

与 Sigmoid 函数 ReLU 或 ReLU(用于隐藏层进行二元分类或注入非线性)不同,Softmax 函数应用于 MLP 的输出层以用于多类分类问题。

  1. Sigmoid 函数
    • 用途: 主要用于二元分类任务和隐藏层。
    • 输出范围:接下来使用将输入值映射到 0,1 范围的函数,或对称映射到 -1,1,但在这里仅为 0,1。
    • 限制: 它不保证输出值的总和等于 1,这对于需要概率的多类分类来说是理想的。
  2. ReLU(整流线性单元)
    • 用途:最常用于网络的隐藏层,以处理非负值,从而摆脱梯度消失问题。
    • 输出范围:如果输入大于零,则直接输出输入值;否则,输出零。
    • 限制:ReLU 不输出概率值,因此不能用于分类问题的输出层。
  3. Softmax 函数
    • 用途: 通常应用于输出层,当机器学习问题类型为多类时。
    • 输出范围:将模型的输出(通常是原始分数(logits)的形式)转换为 0 到 1 的似然度。
    • 优点:它保证所有输出概率的总和等于 1,因此可以用于解释结果作为不同类别的概率。

Softmax 实战:多类分类

Softmax 函数在多类分类问题中非常有用,在这些问题中,输入 x 理论上可以属于任何指定的类别。以下是其应用的一些实际示例:

图像识别

  • 示例:将图像分类为物体、动物或场景。
  • 用例:可以将图像分类为特定类别,该类别可以是猫、狗或汽车。使用 Softmax 函数有助于理解每个类别的可能性,从而对网络的决策进行适当的解释。例如,它可能给出图像是猫的概率为 0.7,是狗的概率为 0.3。

垃圾邮件检测

  • 示例:将电子邮件评估为垃圾邮件或非垃圾邮件。
  • 用例: Softmax 函数可以预测每个类别的概率,从而帮助网络确定电子邮件是垃圾邮件还是非垃圾邮件的概率。

情绪分析

  • 示例:将文本划分为描述其为正面、负面或中性的区域。
  • 用例: Softmax 函数为情绪提供了一个概率方面,例如 60% 的正面情绪,25% 的中性情绪和 15% 的负面情绪。

在这里,Softmax 函数接收神经网络的实值分数,并将它们转换为概率分布。正是这种概率解释使其能够与网络的预测一起工作,因此 Softmax 在所有多类分类问题中都是必不可少的部分。

使用 Softmax 的优点

Softmax 激活函数的一些优点使其在许多神经网络应用中最为可取,包括:以下是一些关键优势:

概率分布

  • Softmax 层接收原始输出分数并将其充分转换为恰当的类别概率分布。
  • 这可以用来检查网络在其预测结果上的置信度,除了提供易于解释的结果。

可解释性

  • 出于这个非常原因,概率比原始输出值更容易解释和解释。
  • 上述提高的可解释性有助于更好地评估、识别问题和从神经网络的输出中进行决策。

数值稳定性

  • 值得一提的是,Softmax 函数在数值上是稳定的,这在神经网络的训练中非常有用。
  • 其稳定性还减少了计算期间的溢出或下溢等问题,从而在训练期间产生更准确的结果。

因此,本文表明 Softmax 函数是多类分类问题领域中的一个有用工具,因为它在提高神经网络模型的性能、可理解性和稳定性方面具有这些优势。

Softmax 激活函数教程

Softmax 函数实现分步教程

步骤 1:获取并加载所需的库

对于数值计算和数据绘图,需要安装 NumPy 和 Matplotlib 这两个库。确保您对这些库有足够的了解。Python 拥有执行数值计算的库,NumPy 是其中之一,而 Matplotlib 用于数据绘图。

步骤 2:导入库

为您的脚本或笔记本加载依赖项。对于任何需要数值计算的计算,请使用 NumPy,对于图形表示,请使用 Matplotlib。

步骤 3:使用 Softmax 函数

Softmax 函数将神经网络的输出(即类别上的概率分布)从 logits 空间映射出来。这对于分类类问题特别有帮助,因为它有助于计算另一数据实例属于给定类别的概率。

步骤 4:学习如何建立独立的 Logits 集

解释 logits 集是什么,知道它们是模型输出的结果分数。出于某些原因,这些 logits 需要转换为概率。

步骤 5:应用 Softmax 函数

接下来,将上面定义的 Softmax 函数应用于 logits 以将其转换为概率。

步骤 6:可视化

以下结果的可视化可能有助于理解将信息视为企业评估资源的概念。

为了弄清楚 Softmax 函数的工作原理,请使用 Matplotlib 绘制该段的 logits 和生成的概率。这有助于了解从原始分数到概率的转变。

代码

输出

Probabilities: [0.65900114 0.24243297 0.09856589]
How Softmax Activation Function Works

挑战与注意事项

虽然 Softmax 激活函数在多类分类任务中非常强大,但也有几个挑战和注意事项需要牢记:

  • 数据集不平衡:在数据集不平衡的情况下使用 Softmax 时,一个缺点是 Softmax 会产生倾向于多数类别的非均匀概率。这会导致效率降低,并使用重采样、类别加权或数据增强等各种方法来解决。
  • 数值稳定性:尽管 Softmax 函数非常健壮,但如果 logits 非常大或非常小,它可能会出现数值稳定性问题。因此,有必要通过加法或减法应用 Softmax 来帮助克服溢出或下溢问题,例如在指数化之前减去最大 logits。
  • 可解释性与校准:从上面的解释可以清楚地看出,Softmax 输出通常不是可靠的概率,实际上可能过于自信。在某些情况下,需要使用 Platt 缩放或等度回归来使预测概率成为真正的似然度。
  • 大型模型的复杂性:Softmax 计算的主要问题是它可能非常耗时,尤其是在处理具有许多输出类别的大型神经网络时。可能需要实施分层 Softmax 或采样技术等一些优化技术来保持效率。

结论

Softmax 函数是神经网络用于多类分类任务的重要组成部分。它将原始分数转换为概率预测,增强了网络输出的可解释性。随着深度学习的不断发展,Softmax 函数将继续是一个基石,为神经网络的原始计算与可解释概率的世界之间架起桥梁。