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

从概率视角解析Logistic回归中的交叉熵损失函数

1. 从概率论到交叉熵理解Logistic回归的底层逻辑我第一次接触交叉熵损失函数时完全被这个看似复杂的公式吓到了。直到后来从概率论的角度重新审视它才发现这个设计简直精妙绝伦。让我们从一个简单的例子开始假设你正在玩一个猜硬币正反面的游戏每次猜测都有一定概率正确。如何衡量你的预测准确度这就是概率模型要解决的问题。在Logistic回归中我们实际上是在建立一个概率模型。给定输入特征x模型输出的是属于正类的概率P(y1|x)。这个概率通过sigmoid函数也叫Logistic函数映射到(0,1)区间def sigmoid(z): return 1 / (1 np.exp(-z))这个函数的形状非常特别——它将任何实数输入挤压到0和1之间正好符合概率的定义。当θᵀx0时概率正好是0.5随着θᵀx增大概率趋近于1减小则趋近于0。2. 交叉熵损失函数为什么它如此特别2.1 从最大似然估计到交叉熵交叉熵损失函数不是凭空捏造的它实际上源自统计学中的最大似然估计(MLE)思想。想象你在玩一个游戏给你一组参数θ你需要找到使观察到的数据最有可能发生的θ值。这就是MLE的核心思想。对于二分类问题我们可以写出似然函数 L(θ) ∏[hθ(xⁱ)]ʸⁱ [1-hθ(xⁱ)]¹⁻ʸⁱ取对数后因为对数函数单调递增且能化积为和 ℓ(θ) ∑[yⁱlog(hθ(xⁱ)) (1-yⁱ)log(1-hθ(xⁱ))]为了让这个对数似然最大化我们取其相反数并求平均就得到了交叉熵损失函数 J(θ) -1/m ∑[yⁱlog(hθ(xⁱ)) (1-yⁱ)log(1-hθ(xⁱ))]2.2 交叉熵的直观解释交叉熵衡量的是两个概率分布之间的差异。在分类问题中一个是真实分布y的0/1值一个是预测分布hθ(x)。当预测完全正确时交叉熵为0差异越大交叉熵值越大。举个例子假设真实y1如果预测hθ(x)0.9交叉熵≈0.105如果预测hθ(x)0.1交叉熵≈2.302可以看到当预测远离真实值时损失函数值急剧增大这对模型训练非常有利。3. 交叉熵求导为什么Logistic回归的梯度如此简洁3.1 一步步推导梯度公式让我们详细推导交叉熵损失函数对参数θⱼ的偏导数。这是理解Logistic回归训练过程的关键。从损失函数出发 J(θ) -1/m ∑[yⁱlog(hθ(xⁱ)) (1-yⁱ)log(1-hθ(xⁱ))]首先计算log(hθ(xⁱ))和log(1-hθ(xⁱ))的导数 ∂log(hθ(xⁱ))/∂θⱼ (1/hθ(xⁱ)) * ∂hθ(xⁱ)/∂θⱼ ∂log(1-hθ(xⁱ))/∂θⱼ (-1/(1-hθ(xⁱ))) * ∂hθ(xⁱ)/∂θⱼ而hθ(xⁱ) σ(θᵀxⁱ)其中σ是sigmoid函数有一个很好的性质 σ(z) σ(z)(1-σ(z))因此 ∂hθ(xⁱ)/∂θⱼ hθ(xⁱ)(1-hθ(xⁱ)) * xⱼⁱ将这些组合起来 ∂J(θ)/∂θⱼ -1/m ∑[yⁱ(1-hθ(xⁱ))xⱼⁱ - (1-yⁱ)hθ(xⁱ)xⱼⁱ] 1/m ∑[(hθ(xⁱ)-yⁱ)xⱼⁱ]这个结果出奇地简洁3.2 梯度公式的直观意义得到的梯度公式告诉我们 ∂J(θ)/∂θⱼ 1/m ∑(预测值 - 真实值) * 特征值这个形式有几个重要特点当预测完全正确时hθ(xⁱ)yⁱ梯度为0参数不再更新更新方向取决于误差的符号和大小每个特征对梯度的贡献与其值成正比这种线性形式的梯度使得Logistic回归的训练非常高效特别是配合优化算法如梯度下降时。4. 为什么交叉熵比平方误差更适合分类4.1 平方误差在分类问题中的缺陷初学者可能会问为什么不用更直观的平方误差损失让我们看看会发生什么。平方误差损失 J(θ) 1/2m ∑(hθ(xⁱ) - yⁱ)²求导后 ∂J(θ)/∂θⱼ 1/m ∑(hθ(xⁱ)-yⁱ) * hθ(xⁱ)(1-hθ(xⁱ)) * xⱼⁱ与交叉熵的梯度相比多了一个hθ(xⁱ)(1-hθ(xⁱ))项。这个项在hθ(xⁱ)接近0或1时会变得非常小导致梯度消失问题使得学习速度变慢。4.2 交叉熵的优势相比之下交叉熵损失梯度不会饱和即使预测非常错误也能保持较大的梯度训练过程更加稳定和快速与最大似然估计有理论联系对错误分类的惩罚更严厉在实际应用中我遇到过使用平方误差的Logistic回归模型训练速度明显慢于交叉熵的情况特别是在类别不平衡的数据集上。5. 实际应用中的技巧与注意事项5.1 数值稳定性问题在实现交叉熵损失时直接计算log(hθ(x))可能会遇到数值不稳定的问题特别是当hθ(x)接近0时。一个实用的技巧是使用log-sum-exp技巧def stable_cross_entropy(y, h): # 避免log(0)的情况 return -np.mean(y * np.log(np.clip(h, 1e-10, 1.0)) (1-y) * np.log(np.clip(1-h, 1e-10, 1.0)))5.2 正则化的考虑为了防止过拟合通常会加入L1或L2正则化项。例如L2正则化的交叉熵损失J(θ) -1/m ∑[yⁱlog(hθ(xⁱ)) (1-yⁱ)log(1-hθ(xⁱ))] λ/2m ∑θⱼ²这时的梯度变为 ∂J(θ)/∂θⱼ 1/m ∑(hθ(xⁱ)-yⁱ)xⱼⁱ λ/m θⱼ5.3 多分类问题的扩展虽然本文讨论的是二分类问题但交叉熵可以自然地扩展到多分类问题使用softmax函数。在多分类情况下交叉熵损失的形式类似只是需要对所有类别求和J(θ) -1/m ∑∑ yₖⁱlog(hθ(xⁱ)ₖ)其中k表示类别索引。这保持了与二分类情况下相似的良好性质。6. 从理论到实践一个完整的例子让我们用一个简单的Python实现来验证前面的理论。我们将使用NumPy手动实现Logistic回归import numpy as np class LogisticRegression: def __init__(self, lr0.01, num_iter100000, fit_interceptTrue): self.lr lr self.num_iter num_iter self.fit_intercept fit_intercept def __add_intercept(self, X): intercept np.ones((X.shape[0], 1)) return np.concatenate((intercept, X), axis1) def __sigmoid(self, z): return 1 / (1 np.exp(-z)) def __loss(self, h, y): return (-y * np.log(h) - (1 - y) * np.log(1 - h)).mean() def fit(self, X, y): if self.fit_intercept: X self.__add_intercept(X) self.theta np.zeros(X.shape[1]) for i in range(self.num_iter): z np.dot(X, self.theta) h self.__sigmoid(z) gradient np.dot(X.T, (h - y)) / y.size self.theta - self.lr * gradient def predict_prob(self, X): if self.fit_intercept: X self.__add_intercept(X) return self.__sigmoid(np.dot(X, self.theta)) def predict(self, X, threshold0.5): return self.predict_prob(X) threshold这个实现包含了我们讨论的所有关键要素sigmoid激活函数交叉熵损失计算梯度下降更新规则概率预测和分类决策在实际项目中你可能需要考虑更多细节如学习率调整、提前停止、特征缩放等但这个核心实现已经包含了Logistic回归的本质。理解交叉熵损失函数不仅对使用Logistic回归很重要对理解更复杂的神经网络模型也至关重要。现代深度学习中的分类任务几乎都使用交叉熵或其变体作为损失函数原因就在于它优秀的理论性质和实际表现。

相关文章:

从概率视角解析Logistic回归中的交叉熵损失函数

1. 从概率论到交叉熵:理解Logistic回归的底层逻辑 我第一次接触交叉熵损失函数时,完全被这个看似复杂的公式吓到了。直到后来从概率论的角度重新审视它,才发现这个设计简直精妙绝伦。让我们从一个简单的例子开始:假设你正在玩一个…...

【ROS2】SLAM建图成功,但是导航失败,加载地图报错Timed out waiting for transform from base_link to map to become availabl

背景 SLAM建图成功,但是使用命令ros2 launch nav2_bringup bringup_launch.py map:my_house.yaml use_sim_time:false 加载地图后,有报错打印 [component_container_isolated-1] [INFO] [1776087546.872633844] [global_costmap.global_costmap]: Checki…...

YOLO12模型在Web应用中的实时目标检测实现

YOLO12模型在Web应用中的实时目标检测实现 1. 引言 想象一下,你正在开发一个智能安防系统,需要实时分析摄像头画面中的行人、车辆和异常行为。或者你正在构建一个电商平台,希望自动识别用户上传的商品图片中的物品。传统方案需要将视频流发…...

基于Gradle 7.6与Spring Boot 3.0构建现代化Java 17微服务架构

1. 为什么选择Gradle 7.6 Spring Boot 3.0 Java 17组合 最近两年Java生态发生了翻天覆地的变化。作为一个经历过多个微服务项目的老兵,我发现这套技术组合正在成为企业级开发的新标准。Gradle 7.6带来的构建速度提升,Spring Boot 3.0对云原生的深度支持…...

解锁QQ音乐加密音频:qmc-decoder全面解决方案指南

解锁QQ音乐加密音频:qmc-decoder全面解决方案指南 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 还在为QQ音乐下载的加密音频文件无法在其他播放器或设备上播放…...

TinyML实战:手把手教你用C++和TensorFlow Lite Micro构建一个正弦波预测器

TinyML实战:用C和TensorFlow Lite Micro构建正弦波预测器的完整指南 在嵌入式AI的世界里,TinyML正掀起一场革命。想象一下,在一个只有指甲盖大小的微控制器上运行机器学习模型,实时预测正弦波数值——这正是我们将要探索的奇妙旅…...

避开开关电源的坑:AP值计算中3个易错点实测复盘

避开开关电源的坑:AP值计算中3个易错点实测复盘 在开关电源设计中,AP值(Area Product)作为磁芯选择的核心参数,直接关系到变压器的功率处理能力和整体效率。然而,即使经验丰富的工程师,在实际项…...

Wan2.1 VAE开发实战:集成至微信小程序实现前端AI绘图

Wan2.1 VAE开发实战:集成至微信小程序实现前端AI绘图 最近在捣鼓AI绘图应用,发现很多开发者把模型部署在服务器上,然后做个网页端就完事了。但说实话,现在大家更习惯用手机,如果能直接在微信小程序里玩AI绘图&#xf…...

从零构建可验证知识表示层:2024最新AIAgent架构白皮书核心章节精译(含OWL2+SHACL+Prolog混合推理原型代码)

第一章:可验证知识表示层的架构定位与核心价值 2026奇点智能技术大会(https://ml-summit.org) 可验证知识表示层(Verifiable Knowledge Representation Layer, VKRL)是现代可信AI系统中承上启下的关键抽象层,位于数据采集层与推理…...

Mission Planner/QGC连不上Pixhawk?可能是固件签名在捣鬼(附ArduCopter稳定版固件下载)

Mission Planner/QGC连接Pixhawk失败的深度排查与解决方案 当你的无人机开发工作正进行到关键时刻,地面站却突然无法识别Pixhawk飞控,这种"幽灵串口"现象确实令人抓狂。作为一名经历过多次类似问题的开发者,我理解这种挫败感——明…...

双NPN三极管恒流源电路设计与性能优化

1. 双NPN三极管恒流源电路基础解析 第一次接触恒流源电路时,我也被这个"电流稳定器"的概念深深吸引。想象一下,就像给水管装上智能阀门,无论水压如何变化,出水流量始终保持恒定。双NPN三极管组成的恒流源电路&#xff0…...

低成本ROS小车传感器融合实战:用MPU6050和模拟里程计搞定robot_pose_ekf

低成本ROS小车传感器融合实战:用MPU6050和模拟里程计实现精准定位 在机器人开发领域,定位精度往往决定了整个系统的上限。传统方案依赖昂贵的编码器和高端IMU,但今天我要分享的是一种完全不同的思路——如何用不到200元的硬件预算&#xff0c…...

LaTeX投稿IEEE期刊,编辑让我改排版?别慌,这份单栏+双倍行距+行号配置指南帮你搞定

LaTeX投稿IEEE期刊排版急救指南:单栏、双倍行距与行号配置实战 收到期刊编辑的格式修改意见时,那种"明明内容没问题却卡在排版细节"的焦虑感,每个科研人都深有体会。上周我刚帮同事处理完一份被要求"单栏双倍行距行号"的…...

别再只用基础API了!手把手教你用OnlyOffice Connector实现文档自动批注与事件监听

解锁OnlyOffice Connector高阶玩法:从自动化批注到智能事件流处理 当大多数开发者还在用基础API处理文档时,OnlyOffice Connector早已为深度集成准备好了全套武器库。想象一下这样的场景:法务团队上传的合同能自动标记风险条款,销…...

AIAgent异常处理不是加个retry就行!20年架构老兵用217次线上故障复盘,验证这6类错误必须分层隔离

第一章:AIAgent异常处理不是加个retry就行! 2026奇点智能技术大会(https://ml-summit.org) AI Agent 的异常处理常被简化为“套一层 retry 逻辑”,但这种做法在真实生产环境中极易引发级联失败、状态不一致与语义漂移。当 Agent 在多步骤任务…...

微信小程序ECharts图表Canvas层级覆盖问题:从原理到实战解决方案

1. 微信小程序ECharts图表Canvas层级问题解析 第一次在小程序里用ECharts做数据可视化时,我就被这个坑绊倒了——明明设置了z-index,为什么滚动页面时图表还是会盖住弹窗和导航栏?后来才发现,这是微信小程序原生组件的"特权&…...

Godot游戏资源解包终极指南:一键提取PCK文件所有资产

Godot游戏资源解包终极指南:一键提取PCK文件所有资产 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 想要探索Godot游戏中的精美资源却无从下手?面对神秘的PCK文件格式感到困…...

Flux Sea Studio 在网络安全领域的创新应用:生成钓鱼演练场景图

Flux Sea Studio 在网络安全领域的创新应用:生成钓鱼演练场景图 最近和几个做企业安全的朋友聊天,他们都在头疼一件事:员工安全意识培训。传统的PPT讲解、看视频,效果越来越差。尤其是钓鱼邮件演练,市面上能找到的“钓…...

# 发散创新:基于CQRS模式的高并发订单系统架构设计与实现在现代分布式系统中,**读写分离**和**性能优化**是绕

发散创新:基于CQRS模式的高并发订单系统架构设计与实现 在现代分布式系统中,读写分离和性能优化是绕不开的核心命题。传统的单体架构在面对海量请求时逐渐暴露出瓶颈,而 CQRS(Command Query Responsibility Segregation&#xff0…...

iOS客户端应用开发深度解析:基于Flutter和Swift的技术实践

在移动应用开发领域,iOS平台因其高性能、安全性和用户体验而备受青睐。随着跨平台框架的兴起,Flutter和Swift成为开发iOS应用的核心工具。本文基于iOS客户端应用开发的职位描述,深入探讨Flutter和Swift在iOS开发中的应用、iOS核心原理(如消息机制、内存管理、UI渲染、多线程…...

Financial and Tax Quotation

Financial and Tax Quotation 财税...

LaTeX 参考文献管理与样式定制的终极实践

1. 从零开始构建你的文献数据库 写论文最头疼的莫过于整理参考文献,而LaTeX的.bib文件就像个智能文献管家。我刚开始用LaTeX时,手动输入了30多篇文献的.bib条目,结果发现作者名大小写不统一、期刊缩写格式混乱,最后排版出来惨不忍…...

如何用MelonLoader实现Unity游戏模组开发的终极跨平台方案

如何用MelonLoader实现Unity游戏模组开发的终极跨平台方案 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 你是否曾为Unity游戏…...

FontViewOK:字体预览与对比的轻量级解决方案

在日常办公或设计工作中,你是否曾为选择合适的字体而烦恼?Word里字体列表很长,但每种字体到底长什么样,只能一个一个点开看;想对比几种字体效果,要来回切换;或者你需要打印一份字体样式表&#…...

Oracle VM VirtualBox虚拟机网络配置实战:从零搭建可通信的Linux环境

1. 为什么需要配置VirtualBox虚拟机网络? 刚装好的VirtualBox虚拟机就像一台没有插网线的新电脑,虽然系统跑起来了,但根本没法上网。我刚开始用VirtualBox时就踩过这个坑——装完CentOS系统后,发现既ping不通百度,也连…...

5分钟精通百度网盘提取码智能获取:baidupankey完全使用指南

5分钟精通百度网盘提取码智能获取:baidupankey完全使用指南 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 还在为百度网盘分享链接的提取码而烦恼吗?每次遇到需要密码的资源都要四处搜索,浪…...

LinkSwift网盘直链下载助手:告别龟速下载的终极解决方案

LinkSwift网盘直链下载助手:告别龟速下载的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...

告别手动大气校正!用Google Earth Engine直接调用Landsat C2 L2地表反射率数据的完整指南

告别手动大气校正!用Google Earth Engine直接调用Landsat C2 L2地表反射率数据的完整指南 如果你曾经为了计算NDVI或地表温度而花费数小时处理原始Landsat数据,那么这篇文章将彻底改变你的工作流程。想象一下:无需下载数十GB的原始数据&#…...

基于X11的机器人图形界面远程调试实战指南

1. 为什么需要X11远程调试机器人图形界面 做机器人开发的朋友们应该都遇到过这样的场景:你正坐在工位上调试代码,突然需要查看机器人上rviz的可视化效果。这时候常规操作是跑过去接显示器,或者用远程桌面连上去看。但前者太麻烦,后…...

Python FastAPI 异步架构设计

Python FastAPI 异步架构设计:高性能Web开发新选择 在当今高并发的互联网应用中,异步编程已成为提升性能的关键技术。Python的FastAPI框架凭借其现代化的异步架构设计,迅速成为开发者构建高效API的首选工具。它基于Starlette和Pydantic&…...