深度学习中的logit到底是什么?
1. 问题
在做深度学习的过程中,经常会碰到logit。这个和在学校学的概率有出入,因而想弄明白这到底是个什么参数。
2. 使用logit的原因
定义几率(odds)和 logit 函数的主要原因在于使用了线性空间转换,使得非线性的概率关系问题变成线性化。
- 将非线性的概率关系线性化,使得线性回归模型可以处理分类问题;
- 几率作为概率的一种解释方式,能提供直观的物理意义;
- Logit 函数的逆函数(sigmoid)确保了预测的概率值在 0 到 1 之间;
- 利于采用最大化似然估计方法来进行参数估计和模型优化。
3. 详细解释
通过这个定义,逻辑回归能够以一种线性方式处理分类问题,从而实现对概率的合理预测。
定义几率(odds)和logit函数的原因,是为了将二分类问题中的概率关系转化为一种线性的表示,使得回归模型能够处理概率预测。这种定义背后有几层考虑:
3.1. 解决非线性问题
在二分类问题中,概率 ( p ) 的值介于 0 到 1 之间,这本质上是非线性的。直接用线性回归模型预测概率会导致一些问题,因为线性模型可能会产生不在 ( [0, 1] ) 范围内的值。而使用对数几率的定义(log odds)可以将概率映射到整个实数范围(从 − ∞ -\infty −∞ 到 + ∞ +\infty +∞),这使得预测更加合理且线性化。
例如:
- 当事件发生的概率 ( p ) 接近 0 时,logit ln ( p 1 − p ) \ln\left(\frac{p}{1 - p}\right) ln(1−pp) 的值接近 − ∞ -\infty −∞;
- 当事件发生的概率 ( p ) 接近 1 时,logit 的值接近 + ∞ +\infty +∞。
通过这个映射,logit 函数能够将 ( p ) 的非线性变化线性化,适应回归模型的需求。
3.2. 可解释性
几率(odds)作为概率的一种替代表示,其物理含义非常直观。几率表示事件发生的相对可能性,比如:
- 如果某事件发生的概率 ( p = 0.75 ),那么几率 ( \frac{p}{1-p} = 3 ),意味着事件发生的可能性是其不发生的 3 倍。
- 如果 ( p = 0.5 ),几率为 1,表示事件发生与不发生的可能性相等。
通过对几率取对数(logit),我们能够将这类相对关系进一步转换为实数范围,且通过线性变化表达分类问题的复杂性。
3.3. 线性模型的适应性
逻辑回归中用 logit 函数的一个重要原因是:线性模型不能直接拟合非线性概率。假设我们有一个简单的线性模型:
y = β 0 + β 1 x 1 + ⋯ + β n x n y = \beta_0 + \beta_1 x_1 + \dots + \beta_n x_n y=β0+β1x1+⋯+βnxn
如果直接将 ( y ) 作为概率 ( p ),可能会出现模型预测出负的概率值,或者超过 1 的概率值,这显然是不合理的。因此,logit 函数通过这种对数变换,使得线性模型能够更合理地预测分类问题中的概率。
具体来说,逻辑回归模型是将预测变量通过线性回归来预测 logit:
ln ( p 1 − p ) = β 0 + β 1 x 1 + ⋯ + β n x n \ln\left(\frac{p}{1 - p}\right) = \beta_0 + \beta_1 x_1 + \dots + \beta_n x_n ln(1−pp)=β0+β1x1+⋯+βnxn
通过这种方式,logit 保证了预测的概率 ( p ) 始终在 0 和 1 之间。
3.4. Logit 的逆变换(Sigmoid 函数)
Logit 函数的逆变换是 sigmoid 函数,也称为 Logistic 函数:
p = 1 1 + e − ( β 0 + β 1 x 1 + ⋯ + β n x n ) p = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + \dots + \beta_n x_n)}} p=1+e−(β0+β1x1+⋯+βnxn)1
这使得最终得到的概率始终处于 0 到 1 之间,从而解决了线性回归无法处理的非线性问题。
补充材料: 4. 最大化似然估计
在逻辑回归中,我们通常采用最大化似然估计(Maximum Likelihood Estimation, MLE)来优化模型参数。logit 函数的定义使得用最大似然方法推导损失函数时更为方便,也保证了损失函数是凸函数,从而更容易进行优化求解。
4.1. 最大似然估计(MLE)的基本思想
最大似然估计的核心思想是:我们希望找到一组模型参数,使得观测数据在当前模型下的出现概率最大化。换句话说,我们希望估计出一组参数,能够最可能地解释数据。
对于逻辑回归,假设输入特征为 ( X ),输出为 ( y ),我们希望找到一组参数 β 0 , β 1 , . . . , β n \beta_0, \beta_1, ..., \beta_n β0,β1,...,βn 来预测 ( y ) 的概率 p(y|X) 。逻辑回归模型预测的是事件发生的概率 ( p ) 和不发生的概率 ( 1 - p ):
p ( y = 1 ∣ X ) = 1 1 + e − ( β 0 + β 1 x 1 + . . . + β n x n ) p(y=1|X) = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + ... + \beta_n x_n)}} p(y=1∣X)=1+e−(β0+β1x1+...+βnxn)1
这是通过逻辑回归模型的 sigmoid 函数(Logistic 函数)来得到的概率值。
4.2. 似然函数(Likelihood Function)
假设我们有一组训练数据 ( X 1 , y 1 ) , ( X 2 , y 2 ) , . . . , ( X n , y n ) (X_1, y_1), (X_2, y_2), ..., (X_n, y_n) (X1,y1),(X2,y2),...,(Xn,yn),每个样本 ( i ) 的输入是 X i X_i Xi,输出标签 y i y_i yi。我们可以构造似然函数,即模型参数使得整个数据集 ( X ) 产生的可能性:
L ( β ∣ X ) = ∏ i = 1 n p ( y i ∣ X i ) L(\beta|X) = \prod_{i=1}^{n} p(y_i|X_i) L(β∣X)=i=1∏np(yi∣Xi)
对于二分类问题,如果 y i = 1 y_i = 1 yi=1,那么 p ( y i ∣ X i ) p(y_i|X_i) p(yi∣Xi) 就是模型输出的概率 p;如果 y i = 0 y_i = 0 yi=0,则 p ( y i ∣ X i ) p(y_i|X_i) p(yi∣Xi) 是 1 − p 1 - p 1−p。
因此,似然函数可以写成:
L ( β ∣ X ) = ∏ i = 1 n p i y i ( 1 − p i ) ( 1 − y i ) L(\beta|X) = \prod_{i=1}^{n} p_i^{y_i} (1 - p_i)^{(1 - y_i)} L(β∣X)=i=1∏npiyi(1−pi)(1−yi)
其中, p i = 1 1 + e − ( β 0 + β 1 x 1 + . . . + β n x n ) p_i = \frac{1}{1 + e^{-(\beta_0 + \beta_1 x_1 + ... + \beta_n x_n)}} pi=1+e−(β0+β1x1+...+βnxn)1 是样本 i 的预测概率。
5.3. 取对数似然函数(Log-Likelihood)
为了方便计算,我们通常取似然函数的对数,称为对数似然函数(log-likelihood function):
log L ( β ∣ X ) = ∑ i = 1 n [ y i log p i + ( 1 − y i ) log ( 1 − p i ) ] \log L(\beta|X) = \sum_{i=1}^{n} [y_i \log p_i + (1 - y_i) \log (1 - p_i)] logL(β∣X)=i=1∑n[yilogpi+(1−yi)log(1−pi)]
这是因为对数运算可以将乘积转化为求和,使得计算更简单。这个对数似然函数是逻辑回归的目标函数,最大化这个对数似然函数相当于找到最优的参数 ( \beta ),使得模型最可能地解释数据。
5.4. 损失函数的推导
最大化对数似然函数等价于最小化负对数似然函数,因此我们可以定义损失函数为:
Loss ( β ) = − log L ( β ∣ X ) = − ∑ i = 1 n [ y i log p i + ( 1 − y i ) log ( 1 − p i ) ] \text{Loss}(\beta) = - \log L(\beta|X) = - \sum_{i=1}^{n} [y_i \log p_i + (1 - y_i) \log (1 - p_i)] Loss(β)=−logL(β∣X)=−i=1∑n[yilogpi+(1−yi)log(1−pi)]
这个负对数似然函数就是逻辑回归的交叉熵损失函数(cross-entropy loss)。它衡量的是模型预测的概率分布与真实分布之间的差异。
5.5. logit 函数的作用
logit 函数 logit ( p ) = ln ( p 1 − p ) \text{logit}(p) = \ln\left(\frac{p}{1-p}\right) logit(p)=ln(1−pp)在推导过程中起到了重要的作用,它将非线性的概率 ( p ) 转换成了可以用线性模型表示的 log odds。具体地:
- 我们通过线性回归模型来预测 logit 值 β 0 + β 1 x 1 + . . . + β n x n \beta_0 + \beta_1 x_1 + ... + \beta_n x_n β0+β1x1+...+βnxn,而这个 logit 值再通过 sigmoid 函数转化为概率。
- 这种转化让我们能够在线性空间内处理分类问题,同时最大化似然估计来优化模型参数。
5.6. 优化过程
通过最小化负对数似然函数(或等价地最大化对数似然函数),我们可以通过梯度下降等优化算法来找到最优的模型参数。
5.7 小结
logit 函数的定义(即对几率取对数)是为了将二分类问题中的非线性概率变换为线性形式,使得逻辑回归可以利用线性回归模型预测事件发生的概率。这个线性化的过程使得我们可以使用最大似然估计法推导出损失函数,即交叉熵损失。通过最小化这个损失函数,我们能够优化逻辑回归模型的参数,从而更好地拟合数据。
相关文章:
深度学习中的logit到底是什么?
1. 问题 在做深度学习的过程中,经常会碰到logit。这个和在学校学的概率有出入,因而想弄明白这到底是个什么参数。 2. 使用logit的原因 定义几率(odds)和 logit 函数的主要原因在于使用了线性空间转换,使得非线性的概…...
idea使用记录
文章目录 1、idea调出maven窗口2、跳转到指定行 1、idea调出maven窗口 首先尝试菜单栏View→Tool Windows→Maven,如果没有maven那很有可能是idea没有识别到这是一个maven项目,此时可以尝试在项目的pom文件上右击,选择“add as maven projec…...
Python - HTTP servers
python的http.server模块用于HTTP服务器的功能,这个模块是python标准库的一部分,不需要pip install。 使用前需要import: import http.server 然后就可以编辑代码,使用此模块提供的接口,实现http server相关功能。 除…...
内网Debian\Ubuntu服务器安装dep包,基于apt-rdepends下载相关依赖
文章目录 背景一、下载依赖二、拷贝到内网三、 使用dpkg安装可能会遇到的问题 背景 由于生产服务器是Debian\Ubuntu系统且在内网环境(不联网),需要使用拷贝deb格式的包使用dpkg的方式进行安装。所以,需要现在联网的环境中将所需的…...
大模型——如何实现超长多轮对话
在自然语言处理的领域中,多轮对话系统是构建智能化交互应用的关键。无论是聊天机器人、虚拟助手,还是客户服务系统,能够保持连贯的对话并记住上下文信息是用户体验的核心。然而,大规模语言模型(如GPT等)的对…...

大数据面试-笔试SQL
一个表table: c_id u_id score;用SQL计算每个班级top5学生的平均分(腾讯) select class_id,avg(score) as score_avg from (select *,row_number() over(partition by class_id order by score desc) as score_rank from table ) t1 where t…...

希尔排序和直接插入排序
因为排序这些比较复杂点我就分几期给大家来讲~~~ 直接插入排序 直接插入排序是一种简单的排序算法,主要用于对少量数据进行排序。其基本思想是将待排序的元素逐个插入到已经排好序的部分中,从而形成一个有序序列。 具体步骤如下: 初始化&…...

IDEA 配置 Git 详解
本文将介绍在IntelliJ IDEA 中如何配置Git 没有安装配置 Git 的可以参考我的这篇文章:安装配置 Git 一、操作环境及准备 1.win 10 2.已安装且配置了Git 3.有Gitee账户 4.安装了IntelliJ IDEA 2023.2.1 5.全程联网 二、配置步骤 2.1 配置git 1.采用全局设置&…...
Docker 部署 Redis 监控系统实战:Redis Exporter 与 Prometheus 完整配置指南
Docker 部署 Redis 监控系统实战:Redis Exporter 与 Prometheus 完整配置指南 文章目录 Docker 部署 Redis 监控系统实战:Redis Exporter 与 Prometheus 完整配置指南一 缓存简述二 redis exporter 部署三 环境变量配置四 修改文件权限五 验证 exporter …...

高级算法设计与分析-MaxFlow网络流基础知识
MaxFlow网络流 1 网络流基础概念 source:源点 sink:终点 Flow:流量 capacity:容量 Residual:残量 Residual Network:残量网络 Augmenting path:增广路径,表示从源点 s 到终点 t 不包含环的路径 Bottleneck capacity:瓶颈容量 2 最大流 2.1 基础概念 2.2 增广路算法 …...

Java项目实战II基于Java+Spring Boot+MySQL的桂林旅游景点导游平台(源码+数据库+文档)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者 一、前言 桂林,以其独特的喀斯特地貌、秀美的自然风光闻名遐迩,每年吸引着无数国内外游…...
C语言-输入输出
实验一:编写一个输出两行自定义字符的 C 程序 一、实验目的 熟悉 C 语言的基本结构和语法。掌握 printf() 函数的使用方法。了解在 Code::Blocks 中编写、编译和运行程序的过程。 二、实验内容 编写一个 C 程序,要求输出两行字符,内容自定…...
如何在GitHub上传自己的项目?(一文看懂,每一步的操作和解决常见错误的方法)
目录 步骤一:准备 Git 环境 1. 安装 Git 2. 配置 Git 步骤二:在 GitHub 创建一个新的仓库 1. 登录到你的 GitHub 账号。 2. 点击右上角的 号,然后选择 New repository。 3. 填写以下信息: 步骤三:将本地项目上…...

数据结构_day1
目录 大纲 1.数据结构基础知识 1.1 什么是数据结构 1.2 数据 1.3 逻辑结构 1.4 存储结构 1.4.1 顺序存储 1.4.2 链式存储 1.4.3 索引存储结构 1.4.4 散列存储 1.5 操作 2.算法基础知识 2.1 什么是算法 2.2 算法的设计 2.3 算法的特性 2.4 评价算法的好坏 大纲 数据结构、算法(理…...
c# using 声明进行资源管理
在 C# 8 中,using 声明引入了一种新的语法,称为 using 声明,它使得开发人员在处理资源时的代码更加简洁和清晰。主要的变化包括 使用声明 和 使用上下文(using declaration) 的引入。 使用语句的简化 在 C# 8 中&…...

Kafka之基本概念
1、Kafka是什么? Kafka是由Scala语言开发的一个多分区、多副本,基于Zookeeper集群协调的系统。 那这个所谓的系统又是什么系统呢? 回答这个问题要从发展的角度来看:起初Kafka的定位是分布式消息系统。但是目前它的定位是一个分布…...
倪师学习笔记-天纪-斗数简介
一、学习过程 学习->验证->思考 二、算命方法 算命方法特点铁板神数适合核对六亲子平法准确度一般紫微斗数天文地理融合最好,批六亲不准,配合相可以提升准确率 三、果 天地人三者一起影响果,天时地利人和促成成功1/31/31/31算命部…...

Python酷库之旅-第三方库Pandas(143)
目录 一、用法精讲 646、pandas.Timestamp.is_quarter_start属性 646-1、语法 646-2、参数 646-3、功能 646-4、返回值 646-5、说明 646-6、用法 646-6-1、数据准备 646-6-2、代码示例 646-6-3、结果输出 647、pandas.Timestamp.is_year_end属性 647-1、语法 647…...
细说QT各种线程锁的特点和用法
文章目录 QMutex特点用法QReadWriteLock特点用法QSemaphore特点用法QWaitCondition特点用法在Qt框架中,提供了多种线程同步机制,包括互斥锁(Mutex)、读写锁(Read-Write Lock)、信号量(Semaphore)和条件变量(Wait Conditions)。这些机制用于处理多线程编程中的数据一致性和线程…...

Caffeine+Redis两级缓存架构
CaffeineRedis两级缓存架构 在高性能的服务项目中,我们一般会将一些热点数据存储到 Redis这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。在提升访问速度的同时,也能降低数据库的压力。 但是在一些场景下单纯使用 Redis 的分布…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...