【漫话机器学习系列】093.代价函数和损失函数(Cost and Loss Functions)

代价函数和损失函数(Cost and Loss Functions)详解
1. 引言
在机器学习和深度学习领域,代价函数(Cost Function)和损失函数(Loss Function)是核心概念,它们决定了模型的优化方向。在训练过程中,我们希望找到一个最优的模型参数,使得预测误差最小,而这个优化过程正是通过最小化代价函数或损失函数来完成的。
在这篇文章中,我们将深入探讨代价函数和损失函数的概念、数学定义、常见类型、优化方法及其在实际应用中的重要性。
2. 代价函数和损失函数的概念
从概念上来说,损失函数(Loss Function)和代价函数(Cost Function)有细微的区别:
- 损失函数(Loss Function):用于衡量单个样本的预测误差,即单个数据点的误差大小。
- 代价函数(Cost Function):用于衡量整个数据集的平均误差,即所有样本的损失函数的平均值或总和。
从数学上看,假设有 m 个训练样本,每个样本的损失函数为 ,那么代价函数可以定义为:
其中:
是代价函数,表示整个数据集的平均损失;
是损失函数,计算单个样本的误差;
- θ 是模型的参数;
是真实值,
是模型预测值;
- m 是训练样本的数量。
简单来说,损失函数是针对单个样本的误差计算,而代价函数是所有样本损失的平均或总和。
3. 常见的损失函数和代价函数
不同类型的任务需要不同的损失函数,常见的损失函数可以分为回归问题和分类问题两大类。
3.1 回归问题中的损失函数
回归问题的目标是预测一个连续值,常见的损失函数包括:
(1)均方误差(Mean Squared Error, MSE)
- 计算真实值和预测值的平方误差,并取均值。
- 优点:对较大误差有较强的惩罚作用,有助于优化。
- 缺点:对异常值(outliers)较敏感,因为平方操作会放大大误差的影响。
(2)均方根误差(Root Mean Squared Error, RMSE)
- RMSE 是 MSE 的平方根,使得误差的单位与目标值相同,便于解释。
(3)平均绝对误差(Mean Absolute Error, MAE)
- 计算真实值与预测值的绝对误差,并取均值。
- 优点:对异常值不敏感。
- 缺点:损失函数不可微分(在 0 点处),可能会影响梯度下降优化。
(4)Huber 损失
- 结合了 MSE 和 MAE 的优点,对小误差使用 MSE,对大误差使用 MAE,减少对异常值的敏感性。
3.2 分类问题中的损失函数
分类问题的目标是预测一个类别标签,常见的损失函数包括:
(1)交叉熵损失(Cross Entropy Loss)
对于二分类问题(如 0/1 预测),交叉熵损失定义为:
- 作用:衡量真实类别分布和预测类别分布之间的差距。
- 优点:适用于概率预测问题,能有效地推动模型进行优化。
对于多分类问题(Softmax 作为输出层),交叉熵损失可扩展为:
其中 k 是类别数。
(2)Hinge 损失(用于 SVM)
- 适用于 SVM(支持向量机),鼓励正确分类的样本有较大的分类边界。
4. 代价函数的优化
在训练机器学习模型时,我们的目标是最小化代价函数,从而找到最优的模型参数 θ。
4.1 梯度下降(Gradient Descent)
- 计算代价函数对模型参数的梯度,然后更新参数:
其中 α 是学习率。
4.2 Adam 优化器
- 结合了动量(Momentum)和RMSProp的优点,能够自适应调整学习率,提高收敛速度。
4.3 牛顿法
- 适用于二阶可微的代价函数,计算 Hessian 矩阵来进行优化,但计算代价较大。
5. 结论
- 损失函数衡量单个样本的误差,代价函数是所有样本损失的平均值。
- 不同任务(回归 vs 分类)有不同的损失函数,选择合适的损失函数对模型的效果至关重要。
- 最小化代价函数是训练机器学习模型的核心目标,优化方法包括梯度下降、Adam 等。
理解并正确使用损失函数和代价函数,是训练高效、稳定模型的关键。
相关文章:
【漫话机器学习系列】093.代价函数和损失函数(Cost and Loss Functions)
代价函数和损失函数(Cost and Loss Functions)详解 1. 引言 在机器学习和深度学习领域,代价函数(Cost Function)和损失函数(Loss Function)是核心概念,它们决定了模型的优化方向。…...
Android 13 上通过修改 AOSP 拦截 SystemUI 音量调节事件
定位关键代码SystemUI 的音量调节逻辑主要集中在以下类中: VolumeDialogController.java:负责与 AudioService 交互。 VolumeDialogImpl.java:处理 UI 交互事件(如按钮点击)。 PhoneWindowManager.java:处理物理按键事件(如音量键)。 拦截音量调节事件 以 VolumeDialog…...
SQL与数据库程序设计
1.1986年,10月美国国家标准局颁布了SQL语言的美国标准,称为SQL86 2.SQL(Structured Query Language)又称为结构化查询语言 3.建立索引的主要目的是加快查找的速度 4.在基本表上建立一个或者多个索引 5. 一个基本表是最多只能建立一个聚簇索引 6.CAL…...
大模型Deepseek的使用_基于阿里云百炼和Chatbox
目录 前言1. 云服务商2. ChatBox参考 前言 上篇博文中探索了(本地)部署大语言模型,适合微调、数据高隐私性等场景。随着Deepseek-R1的发布,大语言模型的可及性得到极大提升,应用场景不断增加,对高可用的方…...
AlmaLinux9.5安装samba实现与Windows文件共享 笔记250214
Fedora41安装samba实现与Windows文件共享 笔记241202 步骤: 安装samba, 并启用 smb , nmb 服务 切换阿里源(可选) ### 备份 /etc/yum.repos.d 文件夹 tempUri/etc/yum.repos.d ; sudo cp -a $tempUri $tempUri.$(date %0y%0m%0d%0H%0M%0Sns%0N).bak sed -e s|^mirrorli…...
二〇二四年终总结
写在前面 简单总结一下告诉自己,曾经活着 不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树 原本应该 24 年年中的时候写 23 年年终的总结,但是一直拖着&…...
学习sql的资源:sql练习平台;在线编辑器,免费sql教程,免费sql书籍
sql练习平台 LeetCode力扣(部分免费) 题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 HackerRank 解决 SQL |黑客排名 SQLPad SQL、Python 和 R 面试问题 StrataScratch StrataScratch - Analytical Questions 数据雷mur Free SQL Tutorial for Data Analysts …...
宝塔和docker的区别
宝塔面板 vs Docker:区别、场景与互补使用指南 eepseek回答宝塔和docker的区别 好的,我现在需要回答用户关于宝塔面板和Docker之间的区别的问题。首先,我需要明确这两个工具各自的定义、功能以及它们适用的场景,这样才能准确比较…...
机器学习--实现多元线性回归
机器学习—实现多元线性回归 本节顺延机器学习--线性回归中的内容,进一步讨论多元函数的回归问题 y ′ h ( x ) w ⊤ ∙ x b y^{\prime}h(x)w^\top\bullet xb y′h(x)w⊤∙xb 其中, w T ⋅ x 就是 W 1 X 1 w 2 X 2 w 3 X 3 ⋯ w N X N \text{其中,}w^\math…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter2-HTML 中的 JavaScript
二、HTML 中的 JavaScript 将 JavaScript 插入 HTML 的主要方法是使用<script>元素。 <script>元素有下列 8 个属性。 async:可选。表示应该立即开始下载脚本,但不能阻止其他页面动作,比如下载资源或等待其他脚本加载。只对外部…...
【人工智能】释放数据潜能:使用Featuretools进行自动化特征工程
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 特征工程是机器学习流程中至关重要的一步,它直接影响模型的性能。然而,手动特征工程既耗时又需要领域专业知识。Featuretools是一个强大的…...
算法——对比A*算法与IDA*算法
A*算法与IDA*算法详细解析 1. A*算法 核心思想: A*算法是一种启发式搜索算法,结合了Dijkstra算法的最短路径保证和贪心最佳优先搜索的高效导向性。其核心是评估函数 ( f(n) g(n) h(n) ),其中: ( g(n) ): 从起点到当前节点 ( …...
GitLab CI/CD 的配置详解:从零开始使用 .gitlab-ci.yml 文件
在现代软件开发中,CI/CD(持续集成与持续部署)已成为提高开发效率和代码质量的核心实践。GitLab CI/CD 提供了强大的功能,帮助开发者自动化构建、测试和部署应用程序。而 .gitlab-ci.yml 文件是 GitLab CI/CD 配置的关键所在&#…...
python语言进阶之函数
目录 前言 函数的创建和调用 函数创建 调用函数 参数传递 形式参数和实际参数 位置参数 数量必须与定义时一致 位置必须与定义时一致 关键字参数 为参数设置默认值 可变参数 **parameter 返回值 变量的作用域 局部变量 全局变量 匿名函数 前言 提到函数&…...
网络安全等级保护基本要求、测评要求、高风险判定指引综合梳理
网络安全等级保护基本要求、测评要求、高风险判定指引综合梳理 等级保护基本要求、测评要求、高风险判定指引综合梳理测评要求思维导图二级三级 花了些时间把网络安全等级保护涉及的以下三份标准文件进行了整理,以表格的形式进行展现,能帮助初学者更加直…...
JSON入门略要
JavaScript对象表示法(JavaScript Object Notation,JSON)已经成为RESTful接口设计中的事实标准。 JSON数据格式使得应用程序可以通过RESTful API等方式在网络上进行数据通信。 REST: 表现层状态转化(REpresentation State Transf…...
Python爬虫抓取数据时,如何设置请求头?
在Python爬虫中设置请求头是确保爬虫能够正常运行并获取目标数据的关键步骤之一。请求头可以帮助我们模拟浏览器行为,避免被目标网站识别为爬虫。以下是如何在Python爬虫中设置请求头的详细指南: 一、使用requests库设置请求头 requests库是Python中最…...
以若依移动端版为基础,实现uniapp的flowable流程管理
1.前言 此代码是若依移动端版为基础,实现flowable流程管理,支持H5、APP和微信小程序三端。其中,APP是在安卓在雷电模拟器环境下完成的,其他环境未测试,此文章中所提及的APP均指上述环境。移动端是需要配合若依前后端分…...
DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
unity学习39:连续动作之间的切换,用按键控制角色的移动
目录 1 不同状态之间的切换模式 1.1 在1个连续状态和一个连续状态之间的transition,使用trigger 1.2 在2个连续状态之间的转换,使用bool值切换转换 2 至少现在有2种角色的移动控制方式 2.1 用CharacterController 控制角色的移动 2.2 用animator…...
小需求别急着立项,让AI先试丨阿隆向前冲
你好,我是阿隆。前 4 年带着 70 人的团队做在线教育,做到一年千万;今年我把团队解散,开始用 AI 跑一人公司——所以老板怎么想、员工怎么想,我两边都站过。 现在每天帮你追个全球 AI 最前线的动作,优先看原…...
【AI面试临阵磨枪-40】文本切块(Chunking)策略:固定长度、语义切块、递归切块、重叠设计
一、面试题目请详细介绍 RAG 中文本切块(Chunking)四大核心策略:固定长度切块、语义切块、递归字符切块、切块重叠设计,分别原理、优缺点、适用场景、工程选型建议。二、知识储备1. 基础概念Chunking 文本切块把长文档切分成小块&…...
vue基于springboot的广西旅游景点数据分析系统与设计
目录同行可拿货,招校园代理 ,本人源头供货商功能模块划分技术实现要点特色功能设计数据安全措施项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块划分 用户管理模块 用户注册与…...
NVIDIA Profile Inspector终极指南:解锁隐藏性能与专业级游戏优化
NVIDIA Profile Inspector终极指南:解锁隐藏性能与专业级游戏优化 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款功能强大的开源显卡配置工具,专…...
copaw:打通终端与系统剪贴板的命令行效率工具
1. 项目概述:一个为开发者量身定制的命令行工具如果你和我一样,日常开发工作离不开终端,那一定对“复制粘贴”这个动作又爱又恨。爱的是它能快速复用代码片段、配置命令;恨的是在终端、编辑器、浏览器之间来回切换,不仅…...
HomeSpan实战:如何用Arduino IDE构建多功能智能家居配件
HomeSpan实战:如何用Arduino IDE构建多功能智能家居配件 【免费下载链接】HomeSpan HomeKit Library for the Arduino-ESP32 项目地址: https://gitcode.com/gh_mirrors/ho/HomeSpan HomeSpan是一款专为Arduino-ESP32设计的HomeKit库,它能帮助开发…...
别再只调参了!深入PX4 uORB与MAVROS消息流转,搞懂无人机数据到底怎么跑的
无人机通信架构深度解析:从ROS节点到PX4飞控的数据旅程 在无人机开发领域,许多开发者习惯性地将注意力集中在参数调优和算法实现上,却忽略了系统底层的数据流转机制。当遇到控制指令延迟或数据异常时,这种认知盲区往往导致调试过程…...
SAP CPI集成流调试与排错全攻略:从消息监控到模拟执行的实战技巧
SAP CPI集成流调试与排错全攻略:从消息监控到模拟执行的实战技巧 当集成流在测试或生产环境中出现"Completed"但数据不符预期,或是直接"Failed"时,如何快速定位问题根源?本文将系统性地拆解SAP Cloud Platfor…...
物联网项目踩坑实录:RS485温湿度传感器数据上传,为什么我的TCP服务器收不到数据?
物联网项目实战:RS485温湿度传感器数据上传的七大常见故障排查指南 当你满怀期待地将RS485温湿度传感器通过4G DTU连接到远程TCP服务器,却发现数据链路像被施了魔法般毫无反应——这种挫败感每个物联网开发者都深有体会。本文不会重复那些基础教程&#…...
告别Charles!用Python神器mitmproxy在Windows上抓包模拟器App,保姆级配置避坑指南
告别Charles!用Python神器mitmproxy在Windows上抓包模拟器App,保姆级配置避坑指南 在移动开发与爬虫领域,抓包工具如同开发者的"第三只眼"。传统工具如Charles和Fiddler虽然功能强大,但面对复杂的定制化需求时ÿ…...
