paint-brush
交叉熵、对数损失和困惑度:可能性的不同方面经过@artemborin
68,082 讀數
68,082 讀數

交叉熵、对数损失和困惑度:可能性的不同方面

经过 Artem5m2023/09/15
Read on Terminal Reader

太長; 讀書

机器学习的核心是创建准确预测的模型。评估指标提供了一种衡量模型效率的方法,使我们能够根据性能结果改进甚至切换算法。
featured image - 交叉熵、对数损失和困惑度:可能性的不同方面
Artem HackerNoon profile picture
0-item

机器学习的核心是创建准确预测的模型。评估指标提供了一种衡量模型效率的方法,使我们能够根据性能结果改进甚至切换算法。


“可能性”的概念是许多这些指标的核心。它衡量模型的预测与观测数据的一致性。因此,它在模型训练和评估中发挥着关键作用。


例如,具有较高似然性的模型表明在给定模型的假设下观察到的数据更有可能出现。


TensorFlow 和 PyTorch 等技术工具经常使用基于可能性的指标,尤其是在分类或序列预测等任务中。这些工具配备了针对这些指标量身定制的功能和库,使模型评估任务变得容易且高效。


了解可能性及其相关指标对于机器学习领域的任何人都至关重要。它使我们能够形成模型评估和改进的基础。


下面,我们将仔细研究三个关键评估指标,了解它们在机器学习中的工作原理和相互关系。

交叉熵

交叉熵评估两组概率之间的方差,通常将真实数据模式与模型的预测结果并列。在数学上,对于离散分布pq ,交叉熵H(p, q)由下式给出:

H(p, q) = -\sum p(x) \log(q(x))


其中p(x)是事件x发生的真实概率, q(x)是根据模型估计的同一事件的概率。


它主要应用于分类问题,特别是在输出可以属于多个类的情况下。使用它是因为它可以清楚地衡量模型的预测与实际结果的偏差程度。交叉熵越低,模型的预测与真实值越吻合。


有几个软件库可以处理涉及交叉熵的计算。尤其:

  • TensorFlow 。这个开源框架提供了像tf.nn.softmax_cross_entropy_with_logits这样的函数,可以直接计算分类问题的交叉熵。


  • 火炬。它提供了与torch.nn.CrossEntropyLoss等函数类似的功能,适用于多类分类任务。


  • Scikit 学习。虽然主要以其机器学习算法而闻名,但它还提供了使用log_loss函数计算对数损失的实用程序,这与交叉熵密切相关。

对数损失

对数损失是对数损失的缩写,通过惩罚错误分类来衡量分类器的准确性。对于具有真实标签y和预测概率p的二元分类,对数损失由下式给出:

L(y, p) = -y \log(p) - (1 - y) \log(1 - p)


本质上,对数损失是真实标签与二元分类问题的预测之间的交叉熵。当扩展到多类分类时,对数损失会对每个类的交叉熵值进行求和,使这两个指标密切相关。


它主要应用于二元和多类分类问题。它的优势在于能够根据预测与真实标签的偏差程度来量化预测的不确定性。


完美模型的对数损失为 0,但实际上,值往往大于此值。


许多软件库允许我们计算对数损失:


Scikit 学习。作为广泛使用的机器学习库,scikit-learn 提供了log_loss函数,适用于二分类和多类分类场景。


TensorFlow 和 PyTorch。虽然这些框架主要关注神经网络和深度学习,但在使用交叉熵损失函数进行分类任务时,它们本质上会计算对数损失。


LightGBM 和 XGBoost。这些梯度提升框架以其在表格数据竞赛中的高性能而闻名,还包含计算对数损失的功能,这在评估分类挑战中的模型性能时特别有用。

困惑

这是概率分布或概率模型预测样本的程度的度量。


给出者:

Perplexity(P) = 2^{H(P)}

其中H(P)是分布P的交叉熵,困惑度有效地表示模型认为在每个决策点拥有的加权平均选择数。


在交叉熵的背景下,较高的交叉熵值对应于较高的困惑度,表明模型的预测更加不确定。


Perplexity 最显着的应用是在语言模型中,它衡量模型预测单词序列的效果。困惑度较低的模型被认为是优越的,因为它意味着更少的平均分支因子,或者更简单地说,它对序列中的下一个单词更加确定。


除了语言模型之外,困惑度也可以是其他概率模型中的相关度量,其中序列或分布的预测质量至关重要。


有几种工具和平台有助于计算和解释复杂度:

NLTK 。自然语言工具包提供了用于构建概率语言模型的实用程序,并计算评估这些模型的困惑度。


TensorFlow 和 PyTorch。对于基于深度学习的语言模型,这两个框架都提供了计算交叉熵的功能,然后可以使用上面的公式将其转换为困惑度。


根西姆。 Gensim 主要以主题建模而闻名,它还包含计算困惑度的方法,在评估生成的主题的一致性时特别有用。

共同点和不同点

交叉熵、对数损失和困惑度都是植根于信息论和概率建模的指标。它们的主要目的是评估预测的质量,无论是分类还是概率分布估计。高层次上:

  • 交叉熵衡量真实分布与预测分布之间的差异。


  • 对数损失是交叉熵的一个特定实例,专门针对二元或多类分类场景而定制。


  • 困惑度源自交叉熵,衡量概率模型的不确定性,主要应用于评估序列预测。


作为一种通用度量,交叉熵非常适合目标是逼近或匹配特定概率分布的问题。它在多类分类任务中表现出色。示例包括图像分类,其中每个图像可能属于多个类别之一,或者根据患者的症状预测患者可能患有的疾病类型。


对数损失专为分类而设计,成为二元和多类问题的首选指标,严重惩罚自信的错误预测。它的优势在于它对精确概率预测的敏感性。


例如,在垃圾邮件检测(垃圾邮件或非垃圾邮件)、客户流失预测(将流失或不会流失)或预测给定交易是否存在欺诈方面。


最后,困惑度主要用于语言建模,用于评估模型预测序列的效果。较低的值表示模型的顺序预测更加确定。它可用于文本生成任务、机器翻译或语音识别,其中模型预测序列中的下一个单词或短语。


虽然所有三个指标都涉及评估概率模型,但它们的适用性根据任务的性质而有所不同:分布匹配、分类或序列预测。


经验丰富的机器学习专业人员会选择最适合任务的指标,以确保对模型性能进行最信息丰富的评估。

结论

认识到交叉熵、对数损失和困惑度等评估指标的细微差别会直接影响机器学习项目中的明智决策。这些指标中的每一个都有其独特的特征和用途,在很大程度上影响着预测模型的精度和可信度。


在 ML 中,使用 TensorFlow、Scikit-learn 和 NLTK 等平台可以更轻松地计算指标并改进模型评估。始终确保所选指标与项目目标一致,以获得最佳结果。


当然,按照您习惯的方式应用众所周知的工具很容易,但真正理解它们最终可能会更有益。不断学习,并为您面临的每项任务选择正确的指标。