二分类交叉熵与多分类交叉熵详解及实例计算

二分类交叉熵与多分类交叉熵详解及实例计算



文章目录


引言

在机器学习和深度学习中,交叉熵损失函数是衡量分类模型预测概率与真实标签之间差异的一种重要方法。本文将详细介绍二分类交叉熵和多分类交叉熵的定义、应用场景以及如何结合激活函数进行实例计算。

二分类交叉熵

定义

二分类交叉熵(Binary Cross Entropy, BCE)通常用于只有两个类别的分类问题。它的目的是最小化模型预测概率与实际标签之间的差异。

应用场景

假设我们正在构建一个模型来预测电子邮件是否为垃圾邮件(spam)。这里有两个类别:"是垃圾邮件"(标记为1)和"不是垃圾邮件"(标记为0)。

输出格式

  • 对于每个样本,模型输出一个介于0到1之间的实数,表示属于正类的概率。

标签格式

  • 标签是单个值,通常为0或1,其中0表示负类,1表示正类。

激活函数

  • 输出层通常使用Sigmoid激活函数,因为它可以将输出压缩到[0, 1]区间内,表示概率。

Sigmoid激活函数

Sigmoid函数的定义如下:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1

其中 z z z 是模型的原始输出。

公式

BCE ( y , y ^ ) = − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] \text{BCE}(y, \hat{y}) = -[y \log(\hat{y}) + (1-y) \log(1-\hat{y})] BCE(y,y^)=−[ylog(y^)+(1−y)log(1−y^)]

  • 其中 y y y 是实际标签(0 或 1), y ^ \hat{y} y^ 是模型预测的概率。

实例计算

假设模型的原始输出为1.5,经过Sigmoid激活函数后得到的预测概率为0.8,即预测该邮件为垃圾邮件的概率为80%。如果实际标签是1(确实是垃圾邮件),则二分类交叉熵损失计算如下:

  1. 计算Sigmoid激活函数的输出:
    y ^ = σ ( 1.5 ) = 1 1 + e − 1.5 ≈ 0.81757 \hat{y} = \sigma(1.5) = \frac{1}{1 + e^{-1.5}} \approx 0.81757 y^=σ(1.5)=1+e−1.51≈0.81757

  2. 计算二分类交叉熵损失:
    BCE ( y , y ^ ) = − [ 1 ⋅ log ⁡ ( 0.81757 ) + ( 1 − 1 ) ⋅ log ⁡ ( 1 − 0.81757 ) ] ≈ − log ⁡ ( 0.81757 ) ≈ 0.20136 \text{BCE}(y, \hat{y}) = -[1 \cdot \log(0.81757) + (1-1) \cdot \log(1-0.81757)] \approx -\log(0.81757) \approx 0.20136 BCE(y,y^)=−[1⋅log(0.81757)+(1−1)⋅log(1−0.81757)]≈−log(0.81757)≈0.20136

多分类交叉熵

定义

多分类交叉熵(Categorical Cross Entropy, CE)适用于三个或更多类别的分类任务。它的目标也是最小化模型预测概率与实际标签之间的差异。

应用场景

假设我们正在构建一个图像分类器,它可以识别三种不同的动物:猫、狗和兔子。

输出格式

  • 对于每个样本,模型输出一个向量,表示每个类别的预测概率。

标签格式

  • 标签是一组one-hot编码向量,其中只有一个元素为1,表示实际类别,其余元素均为0。

激活函数

  • 输出层通常使用Softmax激活函数,它将输出转换为概率分布,所有类别概率之和为1。

Softmax激活函数

Softmax函数的定义如下:
softmax ( z ) i = e z i ∑ j = 1 C e z j \text{softmax}(z)i = \frac{e^{z_i}}{\sum{j=1}^{C} e^{z_j}} softmax(z)i=∑j=1Cezjezi

其中 z z z 是模型的原始输出向量, i i i 表示类别索引。

公式

CE ( y , y ^ ) = − ∑ c = 1 C y c log ⁡ ( y ^ c ) \text{CE}(y, \hat{y}) = -\sum_{c=1}^{C} y_c \log(\hat{y}_c) CE(y,y^)=−c=1∑Cyclog(y^c)

  • 其中 C C C 是类别的数量, y c y_c yc 是实际标签的one-hot编码向量, y ^ c \hat{y}_c y^c 是模型预测的概率向量。

实例计算

假设模型的原始输出向量为 [ 1.0 , 2.0 , 0.5 ] [1.0, 2.0, 0.5] [1.0,2.0,0.5],经过Softmax激活函数后得到的预测概率向量为 [ 0.2 , 0.5 , 0.3 ] [0.2, 0.5, 0.3] [0.2,0.5,0.3],即预测这张图片为猫的概率为20%,为狗的概率为50%,为兔子的概率为30%。如果实际标签是狗(one-hot编码为[0, 1, 0]),则多分类交叉熵损失计算如下:

  1. 计算Softmax激活函数的输出:
    y ^ = softmax ( [ 1.0 , 2.0 , 0.5 ] ) \hat{y} = \text{softmax}([1.0, 2.0, 0.5]) y^=softmax([1.0,2.0,0.5])
    y ^ = [ e 1.0 e 1.0 + e 2.0 + e 0.5 , e 2.0 e 1.0 + e 2.0 + e 0.5 , e 0.5 e 1.0 + e 2.0 + e 0.5 ] ≈ [ 0.24473 , 0.53966 , 0.21561 ] \hat{y} = \left[\frac{e^{1.0}}{e^{1.0} + e^{2.0} + e^{0.5}}, \frac{e^{2.0}}{e^{1.0} + e^{2.0} + e^{0.5}}, \frac{e^{0.5}}{e^{1.0} + e^{2.0} + e^{0.5}}\right] \approx [0.24473, 0.53966, 0.21561] y^=[e1.0+e2.0+e0.5e1.0,e1.0+e2.0+e0.5e2.0,e1.0+e2.0+e0.5e0.5]≈[0.24473,0.53966,0.21561]

  2. 计算多分类交叉熵损失:
    CE ( y , y ^ ) = − [ 0 ⋅ log ⁡ ( 0.24473 ) + 1 ⋅ log ⁡ ( 0.53966 ) + 0 ⋅ log ⁡ ( 0.21561 ) ] = − log ⁡ ( 0.53966 ) ≈ 0.61886 \text{CE}(y, \hat{y}) = -\left[ 0 \cdot \log(0.24473) + 1 \cdot \log(0.53966) + 0 \cdot \log(0.21561) \right] = -\log(0.53966) \approx 0.61886 CE(y,y^)=−[0⋅log(0.24473)+1⋅log(0.53966)+0⋅log(0.21561)]=−log(0.53966)≈0.61886

小结

  • 二分类交叉熵常用于只有两个类别的分类问题,输出层使用Sigmoid激活函数。
  • 多分类交叉熵用于三个或更多类别的分类问题,输出层使用Softmax激活函数。
  • 输出格式:二分类交叉熵通常接收一个标量作为输入,而多分类交叉熵接收一个向量。
  • 标签格式:二分类中标签通常是单个值(0或1),而在多分类中标签是one-hot编码向量。
  • 应用场景:二分类适用于只有两类的情况,多分类适用于三个或更多
相关推荐
Chef_Chen6 分钟前
从0开始学习机器学习--Day22--优化总结以及误差作业(上)
人工智能·学习·机器学习
Mr.简锋11 分钟前
opencv常用api
人工智能·opencv·计算机视觉
DevinLGT40 分钟前
6Pin Type-C Pin脚定义:【图文讲解】
人工智能·单片机·嵌入式硬件
宋一诺3344 分钟前
机器学习—高级优化方法
人工智能·机器学习
龙的爹23331 小时前
论文 | The Capacity for Moral Self-Correction in LargeLanguage Models
人工智能·深度学习·机器学习·语言模型·自然语言处理·prompt
Mr.简锋1 小时前
opencv视频读写
人工智能·opencv·音视频
Baihai_IDP1 小时前
「混合专家模型」可视化指南:A Visual Guide to MoE
人工智能·llm·aigc
寰宇视讯2 小时前
“津彩嘉年,洽通天下” 2024中国天津投资贸易洽谈会火热启动 首届津彩生活嘉年华重磅来袭!
大数据·人工智能·生活
Light602 小时前
低代码牵手 AI 接口:开启智能化开发新征程
人工智能·python·深度学习·低代码·链表·线性回归
墨绿色的摆渡人2 小时前
用 Python 从零开始创建神经网络(六):优化(Optimization)介绍
人工智能·python·深度学习·神经网络