激活函数在神经网络(NN)中引入非线性,将原始输入转换为有意义的输出。没有非线性,神经网络就是一个线性回归模型,简单地将一个神经元的结果传递给另一个神经元。激活函数允许神经网络通过决定哪些神经元对决策至关重要并激活它们传递到下一层来学习复杂模式。
Softmax激活函数 最常见于神经网络的输出层。它对于多类分类很有帮助,因为它输出一个代表类可能性的概率向量。Softmax通过将原始输入转换为概率分布,弥补了神经网络原始输出与有意义的置信度分数之间的差距。这些概率或置信度分数使其成为现实世界机器学习问题中至关重要的激活函数。
本文将讨论Softmax激活函数,它的应用、挑战以及提高性能的技巧。
什么是Softmax? Softmax函数或归一化指数函数,是一种流行的多类分类激活函数。与其他如Sigmoid这样的激活函数限于单类用例不同,Softmax可以处理多个标签。Softmax将神经网络的对数几率或原始输出缩放成一个概率数组。在概率数组中,每个概率代表每个类标签存在的可能性,并且数组的总和为1。具有最高概率的类被神经网络选为最终预测。
Softmax激活函数的公式是:f(xi) = e^xi / Σj e^xj
其中:
x = 来自神经网络前一层的原始输出向量
i = 类别 i 的概率
e = 2.718
将对数几率缩放为总和为1的概率增强了模型预测的可解释性。这些概率可以被解释为置信度分数,强制执行一个决策,其中模型选择具有最高概率的类。
Softmax的可视化 考虑到数学公式,Softmax函数按照以下步骤将对数几率转换为概率:
计算原始向量中每个条目的指数,这表示神经网络的输出层向量。较高的分数在指数化后变得更加突出,而较低的分数进一步最小化,指示哪些分数被激活。
将每个条目的指数除以所有条目指数的总和。这将指数化值归一化为概率。
归一化后的值代表每个类的概率。这些被排列成一个向量,代表最终的Softmax输出。
在Python中实现Softmax激活 在Python中实现Softmax函数是直接的。让我们看看我们如何在TensorFlow和PyTorch中分别实现它:
TensorFlow中的Softmax激活函数 在TensorFlow中,实现Softmax激活就像定义输出层并使用Softmax激活一样简单:
上述代码片段定义了以下内容:
num_classes: 你数据集中的类别数量。
hidden_layer_output: 前一层的输出(在大多数情况下是最后的隐藏层)。
activation="softmax": 指定模型使用Softmax作为激活函数。
另外,TensorFlow中的nn.softmax函数允许更直接的控制:
其中:
logits: 最后隐藏层的输出。
axis=-1: 指定在最后一个维度应用Softmax。
PyTorch中的Softmax激活函数 类似于TensorFlow,PyTorch提供了一个Softmax函数,实现简单:
其中:
logits: 最后隐藏层的输出。
dim=1: 指定在最后一个维度应用Softmax。
也可以使用nn.Softmax函数在PyTorch中创建一个专门的Softmax层:
其中:
dim=1: 指定沿维度1应用Softmax。
Softmax在人工智能(AI)中的应用 Softmax是现实世界多类机器学习问题中流行的激活函数。其中一些包括:
图像分类 神经网络在图像分类中表现出色,分析并将图像归类为预定义的类别。Softmax函数在这个过程中发挥着至关重要的作用,根据其学习结果为每个类别分配概率。具有最高概率的类别被选为模型的最终输出。
例如,考虑一个在其最后一层使用Softmax的卷积神经网络(CNN)。任务是将图像分类为“猫”、“狗”和“兔子”。假设为每个类别分配的概率为[0.728, 0.268, 0.004]。在这种情况下,“猫”被赋予了最高的概率,因此它将是最终输出。
情感分析 Twitter情感分析是Softmax函数的一个著名应用。此外,最近出现了AI标题分析器,用于识别标题是积极的、消极的还是中性的。Softmax激活函数在幕后使这成为可能。
语音识别 AI聊天机器人必须准确地从预定义的选项中识别用户的单词,并据此制定响应。因此,模型分析输入音频并为每个可能的单词生成分数。然后,Softmax函数为每个选项分配概率。
挑战和最佳实践 事先考虑激活函数的挑战可以确保准确和高效的分类。采取预防措施将提高模型的准确性。虽然Softmax是多类分类的稳健激活函数,但它也有其局限性。然而,我们可以通过遵循最佳实践并确保高效性能来减轻这些局限性。
不平衡数据集 一个类的数量超过其他类的不平衡数据集会误导Softmax激活。这导致多数类获得更高的概率,即使情况并非如此。
最佳实践 从多数类中移除一些记录或通过过采样少数类来复制一些记录,从而实现平衡的数据集。重罚分类错误的成本函数可以促使模型学习少数类并实现准确的概率。
数值不稳定性 当对数几率很大时,它们的指数可能产生非常大的数字。相反,当对数几率非常小的时候,它们的指数可能接近零。这些可能导致溢出错误和不准确的概率分布,以及数值不稳定性。
最佳实践 将数据规范化到一致的规模可以防止数值不稳定性。Log-Softmax函数也可以用来缓解溢出错误的挑战。它通过计算Softmax输出的对数,将它们转换为较小的数字。
结论
由于其简单性和可解释性,Softmax激活函数被广泛使用。它通过为数据集中的每个类分配概率来指导准确的决策,使最高概率的类适合作为输出。
Softmax是AI分类中的基本构建块,使各种应用中可靠的决策成为可能。虽然存在最佳实践来应对任何工具的挑战,但总是存在权衡。理解其功能和最佳实践允许进行适当的权衡,并最大限度地利用它。
在现实世界的项目中使用它,并尝试其应用,以获得更深入的理解。
技术干货
向量嵌入简介:它们是什么以及如何使用它们
理解向量嵌入以及何时以及如何使用它们。探索使用Milvus和Zilliz Cloud向量数据库的现实世界应用。
2024-07-26技术干货
使用向量搜索更好地理解计算机视觉数据
一个关键的挑战是如何为正确的模型策划更好的数据以获得改进的结果。由于模型的复杂性和数据的高维度,有很多微调、粗暴的力量尝试和在黑暗中的试错,这消耗了创新的资源。
2024-07-26技术干货
Voyage AI 嵌入和重排器用于搜索和 RAG
进入 RAG(检索增强生成),它优化了大型语言模型的输出,提供了查询的上下文。Zilliz 和 Voyage AI 合作,使构建 RAG 管道变得简单,我们将在文章后面看到。Voyage AI 提供特定领域的定制嵌入模型和用于搜索的重排器。我们将在本文中讨论其中的一些。
2024-07-26