从决策树到XGBoost:核心原理、目标函数与工程优化全解析

news2026/5/21 5:30:22
1. 从“头发长短”到“预测房价”决策树的灵魂与回归树的诞生很多朋友第一次接触XGBoost或者更广义的树模型时都会被一堆公式和术语劝退。什么信息增益、基尼系数、正则项、二阶泰勒展开……看几篇博客感觉每篇都在自说自话逻辑链条是断裂的。我自己当年也是这么过来的所以今天我想换种方式从一个最生活化的例子开始把XGBoost的“道”与“术”掰开揉碎了讲清楚。我们不急着扎进公式的海洋先观其大略理解它到底想解决什么问题以及为什么用这种方式解决。想象一个场景你面前站着一群人我让你快速地把男人和女人分开。你会怎么做你可能会下意识地先看头发长短。长发的站一边短发的站另一边。看你刚刚就完成了一次基于“头发长短”这个特征的决策。这就是决策树最朴素的思想依据某个特征Feature的某个条件把数据人群划分成不同的子集男/女。但问题来了为什么用“头发长短”而不用“是否穿高跟鞋”或者“有没有喉结”呢你心里肯定有个判断标准哪个特征划分后两拨人“纯度”最高。比如用“头发长短”分长发的全是女生短发的全是男生那这个划分就完美了纯度100%。但现实中没那么理想可能长发里有几个男生艺术生嘛短发里也有几个女生酷女孩。我们的目标就是找到一个特征和划分点让分出来的两群各自内部的“性别一致度”尽可能高。这个“纯度”如何量化前辈们发明了信息增益、信息增益率、基尼系数这些指标它们本质上都是衡量集合混乱度的尺子。混乱度降得越多说明这个划分效果越好。这就是决策树用于分类任务的灵魂寻找最佳特征与分割点让子节点的“纯度”最大化。那么回归树又是什么我们把问题变一下现在不是分男女了而是预测这群人的“身高”。标签Label从一个离散的类别男/女变成了一个连续的数值比如175cm。你不能再追求“纯度”了因为身高本身就是一个分布。这时我们追求的是“预测的准确性”。比如我们依据“性别”这个特征划分男性群体的平均身高可能是175cm女性是165cm。对于划分到“男性”节点里的所有人我们都预测其身高为175cm。那么这个预测准不准呢我们用所有男性真实身高与175cm的差异来衡量常用的是均方误差——也就是预测值与真实值差的平方和。回归树的目标就变成了寻找最佳特征与分割点让划分后各个节点内样本的预测误差如均方误差总和最小化。这里就引出了两个贯穿树模型的核心问题也是XGBoost要解决的根本怎么找这个“最佳分割点”Split Finding找到分割点后这个叶子节点应该输出什么值Leaf Weight对于普通的CART回归树问题2的答案往往很简单取节点内所有样本标签的平均值。比如男性节点里10个人身高加起来是1750cm那预测值就是175cm。问题1则是通过穷举每个特征、每个可能的分割点计算分割前后的误差下降选下降最多的那个。2. XGBoost的顶层设计集成、残差与目标函数理解了单棵回归树我们来看XGBoost。它的全称是eXtreme Gradient Boosting。两个关键词Boosting提升这是一种集成学习思想。与随机森林的“民主投票”每棵树独立训练然后投票不同Boosting是“错题本”式学习。第一棵树学完之后会有一些样本预测得不准产生了“残差”真实值-预测值。第二棵树的目标不是直接学习原始标签而是去学习这个“残差”。第三棵树再去学习第二棵树留下的残差……如此迭代。这样每一棵新树都在弥补之前所有树组合的不足。树与树之间是强相关的、顺序的。Gradient梯度那具体怎么“学习残差”呢XGBoost以及它的前辈GBDT使用的是梯度下降的思路。只不过这里的“梯度”是在函数空间所有可能的树组成的空间里进行的。把我们的预测模型看成是一个函数损失函数比如均方误差对这个函数求导得到梯度方向下一棵树就沿着使损失函数下降最快的方向负梯度方向去构建。这就是“Gradient Boosting”的由来。XGBoost就是很多棵CART回归树通过Boosting方式集成起来的模型。它的预测结果是所有树预测值的加权和。现在我们站在上帝视角想想我们要训练这样一个模型我们的目标是什么肯定希望它预测得准在训练集上误差小。别过拟合在没见过的测试集上也要表现好泛化能力强。这听起来是两句正确的废话但XGBoost把它精确地数学化了这就是其著名的目标函数Objective Function。这个函数是理解XGBoost所有精巧设计的钥匙。目标函数 Obj Σ Loss(y_i, ŷ_i) Σ Ω(f_k)训练误差项Σ Loss(y_i, ŷ_i)。对所有样本的预测损失求和比如用均方误差(y_i - ŷ_i)^2。这部分负责“预测得准”。正则化项Σ Ω(f_k)。对所有树f_k的复杂度进行惩罚。这部分负责“别过拟合”。这个正则化项 Ω(f) 是XGBoost的一大贡献它具体定义为Ω(f) γ * T (1/2) * λ * Σ(w_j^2)T这棵树有多少个叶子节点。叶子越多树越复杂越容易过拟合。γ 就是这个复杂度的代价系数。Σ(w_j^2)对所有叶子节点的输出值权重 w_j求平方和。这防止某个叶子的预测值变得极端的大或小。λ 是控制这个惩罚力度的系数。举个例子一个样本真实标签是10。第一棵树预测为9第二棵树预测为2。那么最终预测是11已经过拟合了因为第二棵树学得太猛给了个很大的修正值2。如果我们在目标函数里加了w^2的惩罚模型就会倾向于让第一棵树预测8第二棵树预测1.5最终预测9.5。虽然训练误差可能大一点点但各个叶子的输出值更温和模型更稳健。所以XGBoost的整个训练过程就是在不断地添加新的树f_t每添加一棵都使得这个总目标函数 Obj 最小化。3. 核心引擎如何贪婪且高效地生长一棵树目标函数有了但树怎么长呢我们不可能枚举所有可能的树结构。XGBoost采用了一种贪心算法从树根开始一层一层地分裂节点。假设我们现在已经通过前面t-1棵树得到了一个初步的预测值 ŷ_i^(t-1)。现在要训练第 t 棵树 f_t。我们的目标函数可以改写为关于第 t 棵树 f_t 的形式。经过一番数学推导这里省略复杂的推导直接给结论当我们固定树的结构即知道怎么分叉时为了最小化目标函数每个叶子节点 j 的最优权重 w_j有一个漂亮的解析解*w_j* - ( Σ g_i ) / ( Σ h_i λ )g_i是损失函数对当前预测值 ŷ_i^(t-1) 的一阶导数梯度。h_i是损失函数对当前预测值 ŷ_i^(t-1) 的二阶导数海森矩阵对于平方损失就是常数2。这个公式非常直观叶子节点的输出值由落入这个节点的所有样本的一阶梯度之和与二阶梯度之和共同决定。λ 是正则项参数防止分母过小导致权重爆炸。同时把这个最优权重 w_j* 带回到目标函数中我们可以得到当树的结构固定时这个结构所能带来的最小目标函数值也是一个解析解。那么当我们尝试对一个节点进行分裂时比如把父节点分成左儿子和右儿子分裂后的目标函数值左儿子最小目标值右儿子最小目标值与分裂前的目标函数值父节点最小目标值会有一个差值。这个差值就是这次分裂带来的增益Gain。Gain [ (Σ g_L)^2 / (Σ h_L λ) (Σ g_R)^2 / (Σ h_R λ) - (Σ g)^2 / (Σ h λ) ] / 2 - γ这个增益公式是XGBoost分裂节点的核心依据前半部分[ ... ]/2衡量的是分裂后左右两个新叶子节点带来的损失减少因为模型更精细了。- γ是分裂带来的复杂度成本因为多了一个叶子节点。决策逻辑我们遍历所有特征、所有可能的分割点计算每个候选分割点带来的 Gain。选择 Gain最大的那个分割点进行分裂。如果最大的 Gain 也小于0或者小于我们设定的一个阈值说明这次分裂不仅没好处还可能让模型变差或收益太小那么就停止分裂。这就是 XGBoost 内置的预剪枝机制有效防止过拟合。3.1 泰勒展开为什么是二阶导数这里有个关键点为什么需要一阶导数 g 和二阶导数 h这是因为在推导过程中XGBoost对损失函数进行了二阶泰勒展开。你可以把它理解为我们用一个小抛物线来局部近似复杂的损失函数。一阶导数告诉我们下降的方向二阶导数告诉我们这个方向的弯曲程度步长该多大。使用二阶信息能让我们的优化更精准、更快速这也是XGBoost相比只用到一阶导数的传统GBDT通常更快更准的理论原因之一。只要你的损失函数能求一阶和二阶导XGBoost就能用它来训练这为其带来了极大的灵活性。3.2 寻找分割点的工程艺术加权分位数草图现在有个工程难题如何高效地找到“所有可能的分割点”对于一个连续特征比如“月收入”理论上每个不同的取值都可以作为一个候选分割点。如果有100万个样本就有100万个候选点逐个计算Gain是不现实的。XGBoost用了一个非常巧妙的办法加权分位数草图Weighted Quantile Sketch。它不再平等地看待每个样本值而是根据每个样本的二阶导数 h_i来赋予其权重。h_i 大的样本说明当前模型在这个样本点的不确定性高损失函数曲面更“陡”那么在这个样本值附近寻找分割点可能更有价值。算法的大致思想是将特征值排序然后根据样本的权重h_i 的累加和来划分桶Bucket使得每个桶里的权重总和差不多。然后只需要考虑每个桶的边界值作为候选分割点即可。这样候选分割点的数量就从样本数 O(N) 降到了桶的数量 O(1/ε)其中 ε 是近似精度参数。这大大提升了分裂点寻找的效率并且是一种可并行的近似算法。4. XGBoost的独门绝技与工程优化除了核心算法XGBoost在工程实现上做了大量优化这也是它当年横扫Kaggle的关键。4.1 并行计算不是训练树并行而是找分裂点并行Boosting是序列化的第t棵树依赖第t-1棵树的结果所以树与树之间不能并行训练。那并行在哪里在同一棵树里寻找每个节点的最佳分裂点时可以对不同特征进行并行计算。因为评估特征A的分割增益和评估特征B的分割增益是相互独立的。XGBoost将数据按列特征进行存储和压缩Column Block这样在扫描某个特征寻找分割点时可以一次性读取该特征的所有数据并利用多线程并行计算所有候选分割点的增益。4.2 处理缺失值自动学习缺失方向现实数据充满缺失值。XGBoost能自动处理。在寻找某个特征的最佳分裂点时它会把缺失该特征的样本单独考虑。具体做法是分别尝试将缺失样本全部划到左子节点和右子节点计算两种情况下带来的增益然后选择增益更大的那个方向作为缺失样本的默认分裂方向。这个方向是在训练过程中学出来的而不是简单的填充均值或中位数。4.3 其他防止过拟合的利器行采样Subsample训练每棵树前随机抽取一部分样本比如80%。类似随机森林增加多样性。列采样Colsample训练每棵树时随机抽取一部分特征比如70%。进一步防止过拟合加速训练。学习率Eta / Shrinkage这是Boosting算法的常见技巧。在XGBoost中每棵树的预测结果在加入最终模型时会乘以一个小于1的学习率如0.1。这意味着每棵树只学一小部分残差我们需要更多的树来拟合模型。这样做降低了单棵树的影响让学习过程更平滑、更稳健需要更多迭代但模型泛化能力更强。提前停止Early Stopping在训练过程中用一个独立的验证集监控模型表现。如果连续若干轮迭代验证集上的性能不再提升甚至下降就提前停止训练。这是防止过拟合最简单有效的方法之一。5. 实战中的核心参数调优与问题排查理解了原理我们最终要落地。使用XGBoost时调参是个绕不开的活儿。参数主要分三类通用参数、Booster参数树相关和学习目标参数。5.1 核心参数解析与调优顺序第一梯队控制过拟合与模型容量max_depth树的最大深度。这是最重要的参数之一。深度越大模型越复杂越容易过拟合。通常从3-6开始尝试。我个人的经验是在数据量不是特别大的情况下深度很少需要超过10。min_child_weight叶子节点中样本权重二阶导数h之和的最小值。可以理解为分裂后每个新节点至少需要有多大的“样本权重和”。值越大模型越保守越不容易分裂。可以用来替代max_depth进行更精细的剪枝。gamma节点分裂所需的最小损失下降值就是增益公式里的那个γ。值越大模型越保守分裂要求越苛刻。subsample和colsample_bytree行采样和列采样比例。0.5-0.9是常用范围能有效防止过拟合并加速训练。第二梯队控制学习速度与迭代learning_rate(eta)学习率。另一个最重要的参数。通常设置一个较小的值如0.01, 0.05, 0.1配合更大的n_estimators树的数量。小的学习率需要更多的树但模型更稳健。一个经典的策略是先固定一个较小的学习率如0.1用交叉验证确定最优的树数量n_estimators然后再微调其他参数最后再回头降低学习率、增加树的数量来获得最终模型。n_estimators树的数量。与学习率强相关。可以用早停法自动确定。第三梯队目标与评估objective学习目标。回归常用reg:squarederror二分类用binary:logistic多分类用multi:softmax。eval_metric评估指标如rmse,mae,logloss,error等。调优顺序建议设置一个初始较高的learning_rate(如0.1)用交叉验证确定一个大概的n_estimators或直接使用早停法。调整max_depth和min_child_weight。调整gamma。调整subsample和colsample_bytree。如果有必要可以微调正则化参数lambda(L2) 和alpha(L1)。最后降低learning_rate(比如到0.01或0.005)并按比例增加n_estimators进行最终训练。这一步往往能稳定地带来小幅性能提升。5.2 常见问题与排查清单问题现象可能原因排查与解决思路训练集精度很高验证集/测试集精度很差严重过拟合1.降低模型复杂度减小max_depth增大min_child_weight和gamma。2.增加随机性降低subsample和colsample_bytree如从0.8降到0.6。3.增强正则化增加lambda或alpha。4.使用早停法确保n_estimators不是过大。5.检查数据是否训练/验证集分布不一致是否有标签泄露模型训练和预测速度非常慢数据量大或参数设置不当1.启用并行设置n_jobs为CPU核心数。2.调整分裂策略tree_method设置为hist直方图算法这是默认且高效的。3.减少树的数量用早停法找到合适的n_estimators。4.降低数据精度如果特征很多是浮点数可以考虑适当降低精度如float64转float32。训练误差一直很高模型学不动欠拟合或学习能力不足1.增加模型复杂度增大max_depth减小min_child_weight和gamma。2.减少正则化减小lambda和alpha。3.提高学习率适当增大learning_rate如从0.01到0.1并减少n_estimators。4.检查特征特征是否有效是否需要特征工程训练早期验证集指标很好后期突然变差典型的过拟合或学习率太大1.使用早停法这是解决此问题最直接的方法。2.降低学习率大幅降低learning_rate并增加n_estimators。3.增加正则化参考过拟合的解决方案。特征重要性输出中某个特征重要性为0该特征在所有树的分裂中从未被选中1.检查特征该特征是否取值全部相同无方差与目标变量是否完全无关2.增加采样或降低正则尝试增大colsample_bytree让该特征有更多机会被选中参与分裂。3.可能是共线性如果存在强相关特征模型可能只用了其中一个。5.3 个人实操心得与避坑指南早停法是你的好朋友几乎总是应该使用早停法early_stopping_rounds。设置一个验证集并监控其上的评估指标。它能自动帮你找到最佳的树数量防止过拟合并节省大量训练时间。我通常设置early_stopping_rounds50即验证集指标连续50轮不提升就停止。学习率与树数量的权衡这是调参的核心哲学。“小学习率多棵树”的组合几乎总是优于“大学习率少棵树”。前者训练更慢但模型更稳健泛化能力更强且最终性能上限通常更高。在比赛或追求极致性能时我通常会进行两轮调参第一轮用0.1的学习率快速确定其他参数范围第二轮将学习率降到0.01或0.005并等比增加树的数量进行精细训练。max_depth不必太大对于表格数据树的深度很少需要超过10。深度为6-8的树已经具有很强的表达能力。过深的树不仅容易过拟合还会显著增加训练和预测时间。先从5开始调起是个好习惯。关注特征重要性训练完成后务必输出并分析特征重要性feature_importances_。这不仅是模型可解释性的体现更能帮你发现数据问题。如果某个你认为很重要的特征排名靠后需要反思特征工程是否有问题。如果很多特征重要性为0可以考虑进行特征筛选简化模型。处理类别特征XGBoost本身不能直接处理字符串类型的类别特征像LightGBM和CatBoost可以。你必须手动进行编码如标签编码Label Encoding或独热编码One-Hot Encoding。对于高基数类别特征独热编码可能会产生大量稀疏列此时可以尝试目标编码Target Encoding或频率编码。记住不同的编码方式对结果可能有显著影响。内存与速度的取舍tree_method参数选择很重要。exact是精确算法慢但准hist是直方图近似算法快且是默认选择在绝大多数情况下精度损失可忽略gpu_hist是GPU加速版本。对于大数据集无脑选hist或gpu_hist。XGBoost的强大源于它将扎实的数学理论梯度提升、二阶泰勒展开、正则化与顶尖的工程优化加权分位数草图、稀疏感知、缓存访问、并行计算完美结合。它不像深度学习那样是个“黑箱”它的每个步骤、每个参数都有相对明确的统计意义。理解其原理能帮助你在面对千变万化的数据和问题时不再是机械地调参而是能做出有理有据的决策知道什么时候该收紧正则化什么时候该放大模型容量从而真正驾驭这把机器学习领域的“瑞士军刀”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2625763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…