在机器学习领域,尤其是Python环境下的回归和神经网络模型优化中,二元交叉熵(Binary Cross Entropy, BCE)扮演着至关重要的角色。通过理解BCE如何衡量预测和实际概率分布之间的差异,可以洞察如何提升模型在正类识别上的准确性。本文将探讨算法的应用、批量大小在训练中的重要性,以及支撑这一关键评估指标的数学基础。加入,一起揭开BCE背后的机制及其对模型优化的影响。
通过本文,将全面了解分类模型是什么,以及它与其他类型数据科学模型的区别。将学习不同类型的分类器及其在不同数据科学框架中的应用。熟悉流行的机器学习框架,如TensorFlow、Keras和PyTorch,了解它们如何促进模型构建和优化。学习梯度下降的原理及其在优化分类模型中的应用,包括逻辑回归。探索softmax函数及其在将模型预测转换为多类分类问题的预测概率中的应用。掌握使用NumPy进行机器学习中必要的数值运算,如处理张量和矩阵。了解对数函数在计算损失函数(如二元和分类交叉熵)中的重要性。理解KL散度及其在测量概率分布差异中的作用,帮助微调分类模型。学习如何处理不同类别数量的分类问题,以及这如何影响损失计算和模型训练。
二元分类问题是指需要根据特征将观测值归类到两个标签中的任意一个。例如,如果有一些图片,现在需要将它们分别放入“狗”和“猫”的堆栈中。在这里,正在解决一个二元分类问题。同样,如果一个机器学习模型正在识别邮件为“垃圾邮件”或“非垃圾邮件”,它正在进行二元分类,因为它将对象分为两类。
在深入对数损失之前,先了解一下什么是损失函数。想象一下,开发了一个机器学习模型,认为它成功地识别出了猫和狗,但怎么知道这是最好的结果呢?在这里,正在寻找可以用来优化模型性能的指标或函数。损失函数告诉模型在预测中的表现如何。如果模型预测接近实际值,损失将最小;如果预测与原始值完全不符,损失值将最大。
在数学上,损失可以表示为:
Loss = abs(Y_pred – Y_actual)
根据损失值,可以更新模型,直到获得最佳结果。在本文中,将特别关注二元交叉熵,也称为对数损失,这是用于二元分类问题的最常见损失函数。
二元交叉熵是机器学习和深度学习中用于衡量预测二元结果与实际二元标签之间差异的损失函数。它量化了概率分布之间的差异,通过惩罚不准确的预测来帮助模型训练。它广泛应用于二元分类等任务中,目标是将数据分类为两个类别。
二元交叉熵,也称为二元对数损失或二元交叉熵损失,是机器学习中常用的损失函数,特别是在二元分类问题中。它旨在衡量预测概率分布与数据集的真实二元标签之间的差异。
二元交叉熵将每个预测概率与实际类别输出进行比较,后者可以是0或1。然后计算一个分数,根据与预期值的距离对概率进行惩罚。这意味着预测值与实际值有多接近或多远。
让先得到二元交叉熵的正式定义:
二元交叉熵是校正预测概率的对数的负平均值。
现在,不用担心定义的细节,稍后会理解的。只看下面的例子。
在表格中,有三列:
现在可能有问题,校正概率是什么?它是特定观测值属于其原始类别的概率。如上图所示,ID6原本属于类别1,因此其预测概率和校正概率相同,即0.94。
另一方面,观测值ID8来自类别0。在这种情况下,预测概率即ID8属于类别1的概率是0.56,而校正概率意味着ID8属于类别0的概率是(1-预测概率)是0.44。同样的方式,将计算所有实例的校正概率。
现在将计算每个校正概率的对数值。使用对数值的原因是,对数值对预测概率和校正概率之间的小差异提供较小的惩罚。当差异较大时,惩罚将更高。
在这里,为所有校正概率计算了对数值。由于所有校正概率都在0和1之间,所有对数值都是负数。
为了补偿这个负值,将使用负平均值。
计算的校正概率的负平均值是0.214,这是对数损失或二元交叉熵。
进一步地,可以使用下面的公式计算对数损失,而不是计算校正概率。
BCE = – ( y * log(y_pred) + (1 – y) * log(1 – y_pred) )
这里是它的含义:
Multi-Class BCE = – Σ ( y_i * log(y_pred_i) )