当前位置: 首页 > article >正文

机器学习和深度学习中的logit

系列博客目录


文章目录

  • 系列博客目录
  • 背景
  • 模型假设
  • 计算 logit
    • 逐步计算:
  • 解释 logit
  • 从 logit 转为概率
    • 进行逐步计算:
  • 分类决策
  • 总结


图像分类任务中,“logit” 是指模型在输出层的未经过激活函数(如 Softmax 或 Sigmoid)处理的原始输出值。下面通过一个具体的例子来说明 logit 的概念,以及它如何用于图像分类任务。

背景

假设我们有一个简单的图像分类任务,目标是对输入图像进行 3 类分类(例如,类别 A、类别 B 和类别 C)。神经网络模型的最后一层是一个全连接层,它输出 3 个 logit 值(每个类别对应一个 logit)。

这些 logit 值通常被解释为“未归一化的分数”,用于衡量输入图像属于某个类别的可能性大小。

模型假设

  1. 输入图像特征:假设经过卷积网络处理后,我们得到了特征向量 f = [ 0.5 , 0.8 , 1.2 ] \mathbf{f} = [0.5, 0.8, 1.2] f=[0.5,0.8,1.2]
  2. 最后一层权重和偏置
    • 权重矩阵 (W):
      W = [ 1.0 − 1.0 0.5 0.8 0.5 − 0.3 − 0.5 1.2 1.0 ] W = \begin{bmatrix} 1.0 & -1.0 & 0.5 \\ 0.8 & 0.5 & -0.3 \\ -0.5 & 1.2 & 1.0 \end{bmatrix} W= 1.00.80.51.00.51.20.50.31.0
    • 偏置向量 (b = [0.2, -0.1, 0.5])。

计算 logit

logit 值通过以下公式计算:
z = W ⋅ f + b \mathbf{z} = W \cdot \mathbf{f} + b z=Wf+b
其中:

  • z \mathbf{z} z 是 logit 值(模型的原始输出)。
  • W W W 是权重矩阵。
  • f \mathbf{f} f 是输入特征。
  • b b b 是偏置。

逐步计算:

  1. 点积计算

    • 对类别 A:
      z 1 = ( 1.0 ⋅ 0.5 ) + ( − 1.0 ⋅ 0.8 ) + ( 0.5 ⋅ 1.2 ) = 0.5 − 0.8 + 0.6 = 0.3 z_1 = (1.0 \cdot 0.5) + (-1.0 \cdot 0.8) + (0.5 \cdot 1.2) = 0.5 - 0.8 + 0.6 = 0.3 z1=(1.00.5)+(1.00.8)+(0.51.2)=0.50.8+0.6=0.3
    • 对类别 B:
      z 2 = ( 0.8 ⋅ 0.5 ) + ( 0.5 ⋅ 0.8 ) + ( − 0.3 ⋅ 1.2 ) = 0.4 + 0.4 − 0.36 = 0.44 z_2 = (0.8 \cdot 0.5) + (0.5 \cdot 0.8) + (-0.3 \cdot 1.2) = 0.4 + 0.4 - 0.36 = 0.44 z2=(0.80.5)+(0.50.8)+(0.31.2)=0.4+0.40.36=0.44
    • 对类别 C:
      z 3 = ( − 0.5 ⋅ 0.5 ) + ( 1.2 ⋅ 0.8 ) + ( 1.0 ⋅ 1.2 ) = − 0.25 + 0.96 + 1.2 = 1.91 z_3 = (-0.5 \cdot 0.5) + (1.2 \cdot 0.8) + (1.0 \cdot 1.2) = -0.25 + 0.96 + 1.2 = 1.91 z3=(0.50.5)+(1.20.8)+(1.01.2)=0.25+0.96+1.2=1.91
  2. 加上偏置

    • 对类别 A:
      z 1 = 0.3 + 0.2 = 0.5 z_1 = 0.3 + 0.2 = 0.5 z1=0.3+0.2=0.5
    • 对类别 B:
      z 2 = 0.44 − 0.1 = 0.34 z_2 = 0.44 - 0.1 = 0.34 z2=0.440.1=0.34
    • 对类别 C:
      z 3 = 1.91 + 0.5 = 2.41 z_3 = 1.91 + 0.5 = 2.41 z3=1.91+0.5=2.41

最终 logit 值为:
z = [ 0.5 , 0.34 , 2.41 ] \mathbf{z} = [0.5, 0.34, 2.41] z=[0.5,0.34,2.41]

解释 logit

这些 logit 值 [ 0.5 , 0.34 , 2.41 ] [0.5, 0.34, 2.41] [0.5,0.34,2.41] 表示模型对每个类别的未归一化预测分数:

  • 类别 A 的分数为 0.5 0.5 0.5
  • 类别 B 的分数为 0.34 0.34 0.34
  • 类别 C 的分数为 2.41 2.41 2.41

这些分数尚未转换为概率,因此不能直接用于分类决策。

从 logit 转为概率

logit 值可以通过 Softmax 激活函数 转换为概率分布:
Softmax ( z i ) = exp ⁡ ( z i ) ∑ j = 1 3 exp ⁡ ( z j ) \text{Softmax}(z_i) = \frac{\exp(z_i)}{\sum_{j=1}^3 \exp(z_j)} Softmax(zi)=j=13exp(zj)exp(zi)

进行逐步计算:

  1. 计算每个类别的指数值

    • 对类别 A:
      exp ⁡ ( 0.5 ) ≈ 1.65 \exp(0.5) \approx 1.65 exp(0.5)1.65
    • 对类别 B:
      exp ⁡ ( 0.34 ) ≈ 1.41 \exp(0.34) \approx 1.41 exp(0.34)1.41
    • 对类别 C:
      exp ⁡ ( 2.41 ) ≈ 11.14 \exp(2.41) \approx 11.14 exp(2.41)11.14
  2. 计算指数值的总和
    ∑ j = 1 3 exp ⁡ ( z j ) = 1.65 + 1.41 + 11.14 = 14.2 \sum_{j=1}^3 \exp(z_j) = 1.65 + 1.41 + 11.14 = 14.2 j=13exp(zj)=1.65+1.41+11.14=14.2

  3. 计算每个类别的概率

    • 对类别 A:
      P ( A ) = exp ⁡ ( 0.5 ) 14.2 = 1.65 14.2 ≈ 0.116 P(A) = \frac{\exp(0.5)}{14.2} = \frac{1.65}{14.2} \approx 0.116 P(A)=14.2exp(0.5)=14.21.650.116
    • 对类别 B:
      P ( B ) = exp ⁡ ( 0.34 ) 14.2 = 1.41 14.2 ≈ 0.099 P(B) = \frac{\exp(0.34)}{14.2} = \frac{1.41}{14.2} \approx 0.099 P(B)=14.2exp(0.34)=14.21.410.099
    • 对类别 C:
      P ( C ) = exp ⁡ ( 2.41 ) 14.2 = 11.14 14.2 ≈ 0.785 P(C) = \frac{\exp(2.41)}{14.2} = \frac{11.14}{14.2} \approx 0.785 P(C)=14.2exp(2.41)=14.211.140.785

最终概率分布为:
P = [ 0.116 , 0.099 , 0.785 ] P = [0.116, 0.099, 0.785] P=[0.116,0.099,0.785]

分类决策

根据 Softmax 的输出概率,类别 C 的概率最大 ( P ( C ) = 0.785 P(C) = 0.785 P(C)=0.785),因此模型将输入图像分类为类别 C。

总结

  1. logit 值是模型在最后一层的原始输出值,未经过激活函数处理。例如,本例中的 logit 值为 [ 0.5 , 0.34 , 2.41 ] [0.5, 0.34, 2.41] [0.5,0.34,2.41]
  2. logit 值可以通过 Softmax 函数 转换为概率分布,用于分类任务。
  3. 通过计算,最终概率分布为 [ 0.116 , 0.099 , 0.785 ] [0.116, 0.099, 0.785] [0.116,0.099,0.785],模型将图像分类为类别 C。

http://www.kler.cn/a/403775.html

相关文章:

  • 解决Docker环境变量的配置的通用方法
  • 项目部署问题bug记录(长期更新)
  • 【Golang】协程
  • C# Postman或者PostApi调试前端webapi接口发送带有request/body/head信息
  • Android ROM开发 编译阶段设置预置文件或者文件夹的权限
  • 基于SpringBoot的“网上书城管理系统”的设计与实现(源码+数据库+文档+PPT)
  • Debezium日常分享系列之:Debezium Engine
  • 性能优化(二):ANR
  • 如何使用 Docker Compose 安装 WireGuard UI
  • Linux·线程控制
  • Unity3D 移动端如何高效实现冲击波扭曲效果详解
  • PostgreSQL提取JSON格式的数据(包含提取list指定索引数据)
  • 虚拟存储器管理(深入理解计算机系统期末周突击笔记)
  • pyinstall 打包Django程序
  • 探索设计模式:原型模式
  • MyBatis 入门学习总结
  • 【Failed to resolve import “fsevents“ 】解决方案
  • Android Studio 构建报错 “Installed Build Tools revision 3x.0.0 is corrupted“
  • JSON 数组
  • Python小游戏28——水果忍者
  • Jetson AGX Orin v4l2 cuda 视频解码
  • 共享单车管理系统项目学习实战
  • PC上浏览器是如何查询DNS 缓存的?
  • 激光slam学习笔记5---ubuntu2004部署运行fastlivo踩坑记录
  • 联通大数据面试题及参考答案
  • Android 源码编译资料集