深入理解交叉熵损失CrossEntropyLoss - 概率基础

2024-06-09 11:52

本文主要是介绍深入理解交叉熵损失CrossEntropyLoss - 概率基础,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

深入理解交叉熵损失CrossEntropyLoss - 概率基础

flyfish

独立同分布

  • 独立同分布(Independent and Identically Distributed, i.i.d.)是指一组随机变量是相互独立的,并且它们服从相同的概率分布。具体来说:

  • 独立:一个随机变量的取值不受其他随机变量的取值影响。

  • 同分布:所有随机变量都服从相同的概率分布。
    例如,在抛硬币实验中,每次抛硬币的结果(正面或反面)是独立的,并且每次抛硬币的概率分布是相同的(假设硬币是公平的,每次正面和反面的概率均为 0.5)。

在机器学习中,独立同分布的假设简化了许多模型的设计和分析,因为它确保了训练数据中的每个样本是独立的,并且所有样本来自同一个分布。

条件概率

条件概率(Conditional Probability)是指在已知某一事件发生的情况下,另一事件发生的概率。用符号表示为 P ( A ∣ B ) P(A | B) P(AB),表示在事件 B B B 发生的条件下,事件 A A A 发生的概率。

条件概率的计算公式为:

P ( A ∣ B ) = P ( A ∩ B ) P ( B ) P(A | B) = \frac{P(A \cap B)}{P(B)} P(AB)=P(B)P(AB)

其中, P ( A ∩ B ) P(A \cap B) P(AB) 是事件 A A A 和事件 B B B 同时发生的概率, P ( B ) P(B) P(B) 是事件 B B B 发生的概率。

联合概率

联合概率(Joint Probability)是指两个或多个事件同时发生的概率。对于事件 A A A 和事件 B B B,联合概率用 P ( A ∩ B ) P(A \cap B) P(AB) 表示。

例如,考虑抛两次硬币的实验,事件 A A A 表示第一次抛硬币结果为正面,事件 B B B 表示第二次抛硬币结果为正面。联合概率 P ( A ∩ B ) P(A \cap B) P(AB) 表示两次抛硬币结果都是正面的概率。

示例

以下是一个具体的示例来解释这些概念:

假设我们有一个袋子里有 3 个红球和 2 个蓝球,从袋子中随机抽取两个球。

  • 独立同分布:如果我们每次抽取后将球放回袋子中,那么每次抽取的结果是独立的,并且每次抽取的概率分布是相同的。每个球被抽到的概率都是 1/5。
  • 条件概率:如果我们不放回球,那么第一次抽取后,袋子里的球的数量发生变化。假设第一次抽取到红球(事件 A A A),则第二次抽取到蓝球(事件 B B B)的条件概率为: P ( B ∣ A ) = 2 4 = 0.5 P(B | A) = \frac{2}{4} = 0.5 P(BA)=42=0.5因为第一次抽取到红球后,袋子里剩下2个红球和2个蓝球,总共4个球,第二次抽取到蓝球的概率是 2/4。
  • 联合概率:假设我们关心的是第一次抽取到红球和第二次抽取到蓝球的联合概率(在不放回的情况下),可以通过乘法定理计算: P ( A ∩ B ) = P ( A ) ⋅ P ( B ∣ A ) = 3 5 ⋅ 2 4 = 0.3 P(A \cap B) = P(A) \cdot P(B | A) = \frac{3}{5} \cdot \frac{2}{4} = 0.3 P(AB)=P(A)P(BA)=5342=0.3第一次抽取到红球的概率是 3/5,第二次在剩下的球中抽到蓝球的条件概率是 2/4,联合概率是 0.3。

概率(Probability)和似然(Likelihood)的说明

概率(Probability)

  • 定义:概率是指某个事件发生的可能性。它是一个数值,取值范围在0到1之间,表示事件发生的程度。
  • 应用:概率用于描述随机事件的发生情况。在概率论中,我们通常关注事件的概率,如掷硬币时得到正面的概率。
  • 公式:假设 X X X 是一个随机变量,其取值为 x x x,则 P ( X = x ) P(X = x) P(X=x) 表示随机变量 X X X 取值为 x x x 的概率。
  • 例子:假设我们掷一枚均匀的硬币,得到正面的概率为0.5,表示 P ( 正面 ) = 0.5 P(\text{正面}) = 0.5 P(正面)=0.5

似然(Likelihood)

  • 定义:似然是指给定某个参数值下,观察到的数据出现的可能性。它不是直接衡量事件发生的概率,而是衡量在某个参数条件下数据的支持程度。
  • 应用:似然常用于参数估计中,如最大似然估计(Maximum Likelihood Estimation, MLE)。我们通过最大化似然来找到最可能产生观测数据的参数值。
  • 公式:假设 θ \theta θ 是参数, X X X 是观测数据,则似然函数 L ( θ ∣ X ) L(\theta | X) L(θX) 表示在参数 θ \theta θ 下观测到数据 X X X 的可能性。
  • 例子:假设我们有一个二项分布的随机变量,表示掷10次硬币得到3次正面的观测结果。似然函数 L ( p ∣ 数据 ) L(p | \text{数据}) L(p数据) 表示给定不同的正面概率 p p p 时,观测到3次正面的可能性。

概率和似然的比较

相似点
  1. 数值范围:都在0到1之间,表示某种可能性。
  2. 函数形式:在计算上,概率和似然有时会使用相同的形式。比如,对于离散分布的概率质量函数和似然函数,形式上可能一致。
不同点
  1. 用途
  • 概率:用于描述和预测随机事件的发生情况。它关注的是在已知参数的情况下,某个事件发生的可能性。
  • 似然:用于估计参数,关注的是在已知数据的情况下,某个参数值的合理性。
  1. 变量
  • 概率:固定参数,变量是随机事件。我们关心的是在特定参数下事件发生的概率。
  • 似然:固定观测数据,变量是参数。我们关心的是给定观测数据下,参数值的可能性。
  1. 符号和表示
  • 概率 P ( X = x ∣ θ ) P(X = x | \theta) P(X=xθ),表示在参数 θ \theta θ 下随机变量 X X X 取值为 x x x 的概率。
  • 似然 L ( θ ∣ X = x ) L(\theta | X = x) L(θX=x),表示在观测数据 X = x X = x X=x 下参数 θ \theta θ 的似然。

具体例子

掷硬币的概率

假设掷一枚均匀硬币(参数 p = 0.5 p = 0.5 p=0.5),计算掷三次得到两次正面的概率:

P ( X = 2 ∣ p = 0.5 ) = ( 3 2 ) ( 0.5 ) 2 ( 0.5 ) 1 = 3 ⋅ 0.25 = 0.375 P(X = 2 | p = 0.5) = \binom{3}{2} (0.5)^2 (0.5)^1 = 3 \cdot 0.25 = 0.375 P(X=2∣p=0.5)=(23)(0.5)2(0.5)1=30.25=0.375

掷硬币的似然

假设我们观测到三次掷硬币中有两次正面(数据 X = 2 X = 2 X=2),计算不同正面概率 p p p 下的似然:

L ( p ∣ X = 2 ) = ( 3 2 ) p 2 ( 1 − p ) 1 = 3 p 2 ( 1 − p ) L(p | X = 2) = \binom{3}{2} p^2 (1 - p)^1 = 3p^2(1 - p) L(pX=2)=(23)p2(1p)1=3p2(1p)

此时,似然函数 L ( p ) = 3 p 2 ( 1 − p ) L(p) = 3p^2(1 - p) L(p)=3p2(1p) 描述了不同 p p p 值下,观测到两次正面的可能性。

  • 概率:在已知参数的情况下,描述事件发生的可能性。
  • 似然:在已知数据的情况下,描述参数值的可能性。
  • 应用:概率用于预测和描述随机现象,似然用于参数估计和模型拟合。

似然(Likelihood)

似然是在给定数据下,参数对数据的适应程度。具体来说,假设我们有数据集 X = { x 1 , x 2 , … , x n } \mathbf{X} = \{x_1, x_2, \ldots, x_n\} X={x1,x2,,xn} 和对应的标签 Y = { y 1 , y 2 , … , y n } \mathbf{Y} = \{y_1, y_2, \ldots, y_n\} Y={y1,y2,,yn},以及一个模型 P ( Y ∣ X ; θ ) P(Y | X; \theta) P(YX;θ),其中 θ \theta θ 是模型的参数。似然函数 L ( θ ) L(\theta) L(θ) 定义为在给定数据集 X \mathbf{X} X 和标签 Y \mathbf{Y} Y 下,模型参数 θ \theta θ 的联合概率:

L ( θ ) = P ( Y ∣ X ; θ ) L(\theta) = P(\mathbf{Y} | \mathbf{X}; \theta) L(θ)=P(YX;θ)

对于独立同分布(i.i.d.)的数据集,这个联合概率可以写成每个样本的条件概率的乘积:

L ( θ ) = ∏ i = 1 n P ( y i ∣ x i ; θ ) L(\theta) = \prod_{i=1}^n P(y_i | x_i; \theta) L(θ)=i=1nP(yixi;θ)

最大似然估计(MLE)

最大似然估计是通过优化似然函数来寻找最优参数 θ \theta θ,使得在给定数据下,数据出现的概率最大。换句话说,MLE 是寻找参数 θ \theta θ 使得似然函数达到最大值:

θ ^ MLE = arg ⁡ max ⁡ θ L ( θ ) \hat{\theta}_{\text{MLE}} = \arg \max_{\theta} L(\theta) θ^MLE=argmaxθL(θ)

在实际操作中,由于乘积形式的似然函数在计算上可能会导致数值下溢,因此通常使用对数似然(Log-Likelihood),将乘积转换为和,从而简化计算:

log ⁡ L ( θ ) = ∑ i = 1 n log ⁡ P ( y i ∣ x i ; θ ) \log L(\theta) = \sum_{i=1}^n \log P(y_i | x_i; \theta) logL(θ)=i=1nlogP(yixi;θ)

最大化对数似然:

θ ^ MLE = arg ⁡ max ⁡ θ ∑ i = 1 n log ⁡ P ( y i ∣ x i ; θ ) \hat{\theta}_{\text{MLE}} = \arg \max_{\theta} \sum_{i=1}^n \log P(y_i | x_i; \theta) θ^MLE=argmaxθi=1nlogP(yixi;θ)

具体例子:分类模型中的应用

在分类模型中,假设我们有一个模型输出的 logits,经过 softmax 或 log-softmax 处理后得到类别的概率分布(或 log 概率分布)。NLLLoss(负对数似然损失)则衡量模型预测的 log 概率与真实标签之间的差异。

似然和最大似然估计在 NLLLoss 中的体现:
  • 似然:在分类任务中,对于每个样本,模型预测其属于某个类别的概率,即 P ( y i ∣ x i ; θ ) P(y_i | x_i; \theta) P(yixi;θ)。似然函数是所有样本的联合概率。
  • NLLLoss:负对数似然损失计算的是负的对数似然,即: NLLLoss = − ∑ i = 1 n log ⁡ P ( y i ∣ x i ; θ ) \text{NLLLoss} = -\sum_{i=1}^n \log P(y_i | x_i; \theta) NLLLoss=i=1nlogP(yixi;θ)
    在训练模型时,通过最小化 NLLLoss,实际上是在最大化对数似然,从而找到最优参数 θ \theta θ,即进行最大似然估计。
    在统计学和概率论中,似然(Likelihood) 是用来衡量某个模型参数在给定数据下的可能性的概念。具体到机器学习和深度学习中的分类任务,似然可以理解为模型参数下数据(或标签)出现的概率。

负对数似然(Negative Log-Likelihood)

负对数似然(Negative Log-Likelihood,简称 NLL)损失函数通过对似然函数取对数并加上负号得到。NLL 在深度学习中的常用形式是通过 LogSoftmax 和 NLLLoss 组合来计算。其目标是最大化数据在模型参数下的似然,即最小化负对数似然。

负对数似然损失函数

在分类任务中,假设我们有模型预测的 log 概率 log ⁡ P ( y ∣ x ) \log P(y | x) logP(yx),即模型输出经过 LogSoftmax 处理后的结果。负对数似然损失函数 NLLLoss \text{NLLLoss} NLLLoss 的公式如下:
NLLLoss = − 1 N ∑ i = 1 N log ⁡ P ( y i ∣ x i ) \text{NLLLoss} = -\frac{1}{N} \sum_{i=1}^N \log P(y_i | x_i) NLLLoss=N1i=1NlogP(yixi)
其中 N N N 是样本数, log ⁡ P ( y i ∣ x i ) \log P(y_i | x_i) logP(yixi) 是第 i i i 个样本真实类别的 log 概率。

使用示例

下面是一个结合 LogSoftmax 和 NLLLoss 的具体例子:

import torch
import torch.nn as nn# 假设我们有一个包含3个类别的模型输出 logits
logits = torch.tensor([[2.0, 1.0, 0.1]])# 将 logits 转换为 log 概率
log_softmax = nn.LogSoftmax(dim=1)
log_probs = log_softmax(logits)# 真实标签
labels = torch.tensor([0])# 定义负对数似然损失函数
nll_loss = nn.NLLLoss()
loss = nll_loss(log_probs, labels)print("Log-Softmax output:", log_probs)
print("NLLLoss:", loss)
Log-Softmax output: tensor([[-0.4170, -1.4170, -2.3170]])
NLLLoss: tensor(0.4170)

在这个示例中:

  1. logits 是模型输出的未归一化得分。
  2. 使用 nn.LogSoftmax 将 logits 转换为 log 概率。
  3. 使用 nn.NLLLoss 计算真实标签与预测 log 概率之间的损失。

这篇关于深入理解交叉熵损失CrossEntropyLoss - 概率基础的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045103

相关文章

Java并发编程必备之Synchronized关键字深入解析

《Java并发编程必备之Synchronized关键字深入解析》本文我们深入探索了Java中的Synchronized关键字,包括其互斥性和可重入性的特性,文章详细介绍了Synchronized的三种... 目录一、前言二、Synchronized关键字2.1 Synchronized的特性1. 互斥2.

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

一文带你深入了解Python中的GeneratorExit异常处理

《一文带你深入了解Python中的GeneratorExit异常处理》GeneratorExit是Python内置的异常,当生成器或协程被强制关闭时,Python解释器会向其发送这个异常,下面我们来看... 目录GeneratorExit:协程世界的死亡通知书什么是GeneratorExit实际中的问题案例

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

深入解析Spring TransactionTemplate 高级用法(示例代码)

《深入解析SpringTransactionTemplate高级用法(示例代码)》TransactionTemplate是Spring框架中一个强大的工具,它允许开发者以编程方式控制事务,通过... 目录1. TransactionTemplate 的核心概念2. 核心接口和类3. TransactionT

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件