贝叶斯深度学习不确定性估计:集成学习与MC-Dropout实战对比

news2026/5/16 21:36:30
1. 项目概述为什么我们需要量化深度学习的不确定性在自动驾驶汽车识别前方障碍物、医疗AI系统诊断病灶、或者机器人进行精细操作时一个错误的预测可能导致灾难性的后果。传统的深度神经网络DNN在这些任务上表现出色但它们有一个致命的“性格缺陷”过度自信。即使面对从未见过的数据比如自动驾驶系统遭遇罕见的极端天气模型也常常会给出一个高置信度的错误答案而系统本身却对此毫无察觉。这种“不知道自己不知道”的状态是将其部署到安全关键领域的主要障碍。贝叶斯深度学习Bayesian Deep Learning正是为了解决这个问题而生的。它不再将模型参数视为固定值而是将其看作一个概率分布。通过这种方式模型不仅能给出预测还能告诉我们这个预测有多“不确定”。这种预测不确定性通常被分解为两个部分偶然不确定性源于数据本身固有的噪声和模糊性。例如图像中物体边缘的像素本就难以分类或者传感器读数存在噪声。这种不确定性是数据固有的无法通过增加数据来消除。认知不确定性源于模型自身知识的不足。当模型遇到训练数据分布之外的新情况时比如用晴天数据训练的模型遇到暴雨天由于缺乏相关经验它应该表现出高度的不确定性。这种不确定性可以通过获取更多相关数据来减少。估计偶然不确定性相对直接可以让网络直接输出概率分布的参数如高斯分布的均值和方差。然而估计认知不确定性才是真正的挑战。标准的贝叶斯推断需要对高维参数空间进行积分这在计算上是不可行的。因此研究者们提出了多种可扩展的近似方法其中集成学习和MC-Dropout是目前最流行、也最实用的两种。那么一个核心问题摆在我们面前在实际的计算机视觉应用中这两种方法到底孰优孰劣哪种方法能提供更可靠、更实用的不确定性估计尤其是在面对域外数据时这正是本文要深入探讨并给出明确答案的问题。我们将从一个从业者的视角拆解这两种方法的原理、实现细节并通过一个精心设计的评估框架在真实的视觉任务上进行“硬碰硬”的对比。2. 核心原理拆解集成与MC-Dropout如何“思考”不确定性要理解这两种方法的优劣首先得明白它们各自是如何从数学和计算的角度来近似贝叶斯推断的。这不仅仅是调包调用更是理解其行为差异的关键。2.1 贝叶斯推断的理想与现实在标准的贝叶斯框架中给定训练数据 (D)我们关心的是参数的后验分布 (p(\theta | D))。对于一个新的输入 (x^)其预测分布通过对所有可能的参数进行积分得到 [ p(y^| x^, D) \int p(y^| x^, \theta) p(\theta | D) d\theta ] 这个积分就是问题的核心——它几乎无法直接计算。因此所有方法都在寻找一个可操作的近似 (q(\theta) \approx p(\theta | D))然后用蒙特卡洛采样来近似积分 [ \hat{p}(y^| x^, D) \approx \frac{1}{M} \sum_{i1}^{M} p(y^| x^*, \theta^{(i)}), \quad \theta^{(i)} \sim q(\theta) ] 这里的 (M) 是采样次数(q(\theta)) 的不同选择就衍生出了不同的方法。2.2 MC-Dropout将正则化工具变为贝叶斯近似MC-Dropout 的巧妙之处在于它利用了深度学习中最常见的正则化技术——Dropout。在训练时Dropout 随机“关闭”一部分神经元以防止过拟合。Gal 和 Ghahramani 在2016年的工作中证明在测试时同样使用Dropout等价于对贝叶斯后验进行了一种特殊的变分推断。具体实现与原理训练网络在每一层或指定层以概率 (p) 随机丢弃神经元。这迫使网络学习到鲁棒的特征表示。测试/推理对于同一个输入 (x^*)我们进行 (M) 次前向传播。每次前向传播都启用Dropout因此每次的网络结构都有微小的随机差异可以理解为从同一个训练好的网络权重中采样了一个不同的子网络。这 (M) 次不同的预测结果就被视为来自近似后验分布 (q(\theta)) 的样本。不确定性计算对于回归任务我们得到 (M) 个预测值 ({\mu_1, ..., \mu_M})最终的预测均值是它们的平均预测方差则包含两部分样本间的方差体现认知不确定性和样本内的方差体现偶然不确定性如果网络也预测方差的话。对于分类任务我们对 (M) 个Softmax输出取平均得到最终的类别概率分布其熵或方差即可作为不确定性的度量。关键理解MC-Dropout 的 (q(\theta)) 是一种伯努利变分分布它假设每个权重参数都与一个伯努利随机变量相乘。这种方法计算高效因为只需要训练一个模型测试时只需重复前向传播。但其近似质量严重依赖于Dropout放置的位置和丢弃率 (p) 的选择这是一个需要仔细调优的超参数。2.3 集成学习多视角共识的力量集成学习的方法更为直观训练多个独立的模型然后合并它们的预测。从贝叶斯视角看每个独立训练得到的模型参数 (\hat{\theta}^{(m)})可以被视为从某个隐式分布 (\hat{q}(\theta)) 中抽取的样本。具体实现与原理训练使用相同的网络架构和训练数据但使用不同的随机种子初始化参数有时还会配合不同的数据增强或训练数据子集如Bagging独立训练 (M) 个模型。每个模型都会收敛到损失函数的一个局部最优点。测试/推理将同一个输入 (x^*) 分别输入这 (M) 个训练好的模型得到 (M) 组预测结果。不确定性计算计算方式与MC-Dropout类似对回归任务取预测均值和方差的混合对分类任务取平均概率分布。核心优势与原理深度神经网络的损失函数 landscape 极其复杂存在大量局部最优解。不同的随机初始化会使模型收敛到不同的局部最优。这些局部最优对应的参数 (\hat{\theta}^{(m)})实际上捕捉了真实后验分布 (p(\theta | D)) 的多峰性。集成学习通过汇集这些来自不同“观点”的模型的预测能够更丰富、更稳健地刻画模型认知的不确定性。相比之下MC-Dropout的所有样本都来自同一个训练好的权重集合其多样性可能不如独立训练的集成模型。2.4 两种方法的核心差异对比为了更清晰地展示我将两者的关键差异总结如下表特性维度集成学习MC-Dropout本质从隐式分布 (\hat{q}(\theta)) 中采样多个独立模型。对单一模型进行伯努利变分近似测试时采样子网络。训练成本高。需要训练 (M) 个完整模型计算和存储开销线性增长。低。只需训练一个模型。推理成本高。需要运行 (M) 个模型的前向传播。中等。运行 (M) 次带Dropout的前向传播但模型是同一个可共享部分计算。超参数主要是模型数量 (M) 和随机种子。相对简单。Dropout率 (p)、Dropout放置的层数。需要仔细调优对性能影响大。不确定性来源模型初始化和训练轨迹的差异能捕捉损失函数的多峰性。网络结构的随机扰动源于单一权重集的随机掩码。并行性训练阶段可完全并行易于分布式加速。训练本身是单一的但测试时的多次前向传播可并行。实现复杂度简单直接但需要管理多个模型。简单只需在测试时保持Dropout开启。从原理上分析集成学习因为探索了参数空间的不同区域可能对后验分布的近似更全面。而MC-Dropout的灵活性稍差其近似质量受限于单一权重集和特定的Dropout模式。接下来我们就通过实验来看看这些理论上的差异在实战中究竟意味着什么。3. 构建评估框架如何公正地“审判”不确定性比较两种方法不能只看准确率更重要的是看它们产出的不确定性估计是否可靠、有用。一个理想的不确定性估计应该具备两个特性1校准良好模型声称的置信度应与实际正确率相匹配2鉴别力强对于可能出错的预测能给出更高的不确定性分数。为此我们设计了一个面向真实世界应用的评估框架。3.1 任务与数据集选择模拟真实世界的域外挑战为了测试方法的鲁棒性我们刻意制造了一个具有挑战性的场景在合成数据上训练在真实数据上测试。这模拟了自动驾驶等应用中常见的“域偏移”问题——模型部署时遇到的环境光照、天气、材质可能与训练数据大相径庭。任务一深度补全目标输入一张RGB图像和一个稀疏的LiDAR深度图输出一个稠密的深度图。训练集Virtual KITTI合成数据集。包含虚拟城市环境中生成的图像和对应的稠密深度图。测试集KITTI Depth Completion真实数据集。包含真实街道场景的图像和稀疏LiDAR测量。模型采用基于ResNet34的编码器-解码器结构输出每个像素的深度值均值和对数方差偶然不确定性。任务二街景语义分割目标对街景图像的每个像素进行类别划分如道路、车辆、行人等。训练集Synscapes合成数据集。高保真的合成街景图像。测试集Cityscapes真实数据集。在德国多个城市采集的真实街景图像。模型采用DeepLabv3 with ResNet101 backbone输出每个像素的类别概率分布。3.2 核心评估指标超越简单的准确率我们使用三个层次的指标来全面评估不确定性估计的质量AUSE不确定性排序质量全称Area Under the Sparsification Error curve。思想一个完美的不确定性估计应该能让我们按照“最不确定到最确定”的顺序剔除预测而预测误差也随之平滑下降。AUSE衡量的是你的不确定性排序与“神谕”排序按真实误差从大到小排序之间的差距。面积越小说明不确定性估计对错误的鉴别力越强。计算对于回归深度补全我们根据预测方差对像素点排序对于分类分割我们根据预测熵排序。然后计算在不同剔除比例下的RMSE回归或Brier分数分类并与神谕曲线对比求面积差。校准性指标置信度是否可信回归任务AUCE如果模型预测一个像素的深度服从 (N(\mu, \sigma^2))那么我们可以构建一个置信度为 (p) 的预测区间([\mu - z\sigma, \mu z\sigma])其中 (z) 是标准正态分布的分位数。对于一个完美校准的模型在所有测试数据中真实值落在这个区间内的比例应该恰好等于 (p)。我们计算 (p) 从0到1变化时实际覆盖率与理想覆盖率之差的绝对值的曲线下面积AUCE。AUCE越小校准越好。分类任务ECE将所有的预测按照其最大类别置信度分成若干个区间bin。对于每个区间计算该区间内所有预测的平均置信度以及这些预测的实际准确率。完美校准要求这两个值相等。ECEExpected Calibration Error就是所有区间上这两个值之差的加权平均。ECE越小校准越好。传统性能指标参考RMSE深度补全的均方根误差。mIoU语义分割的平均交并比。注意这些指标反映的是模型的预测准确性而非不确定性估计的质量。由于我们在合成数据上训练在真实数据上测试这些指标本身会较差但这正是我们测试不确定性估计鲁棒性的目的。3.3 实验设置要点确保公平对比模型与训练两种方法使用完全相同的网络架构、损失函数最大似然估计权重衰减等价于MAP估计、优化器Adam/SGD和训练轮数。确保差异仅源于不确定性估计方法本身。MC-Dropout配置根据相关文献在深度补全任务中我们在编码器的最后三层和解码器的前四层后加入Dropout (p0.5)在语义分割中在ResNet的最后四个块后加入Dropout (p0.5)。这是经过初步调优的结果。集成学习配置每个集成成员独立训练仅随机种子不同。我们测试了集成规模 (M) 从1基线仅偶然不确定性到32的变化。多次实验所有实验均重复多次如集成训练33个模型报告均值与标准差以确保结论的统计可靠性。4. 实验结果深度剖析集成学习为何胜出基于上述框架我们在两个真实视觉任务上进行了系统对比。结果清晰地指向了一个结论在提供可靠且实用的不确定性估计方面集成学习 consistently始终优于MC-Dropout。4.1 深度补全任务结果分析下图展示了在KITTI真实数据集上随着采样次数 (M) 增加两种方法在AUSE、AUCE和RMSE上的表现。AUSE分析如图6a所示想象一个AUSE值随M增加而下降的曲线图随着 (M) 增大两种方法的AUSE都在下降说明增加采样次数能提升不确定性排序的质量。但集成学习的AUSE在所有 (M) 值下都低于MC-Dropout表明其不确定性估计能更有效地区分正确和错误的预测。AUCE分析关键发现如图6b所示想象一个AUCE值随M变化的曲线图这里出现了戏剧性的差异。随着 (M) 增加集成学习的校准误差AUCE持续显著改善。而MC-Dropout的校准误差反而随着 (M) 增大而恶化。这意味着使用更多次的MC-Dropout采样并没有让模型的置信度变得更可信甚至更糟。实操心得这个现象非常关键。它提示我们不能盲目增加MC-Dropout的采样次数 (M)。对于MC-Dropout可能存在一个最优的 (M) 值在图中可能是M2或4超过之后由于所有采样都来自同一个高度优化的权重点增加的采样可能只是在“过度挖掘”一个局部的、可能有偏的参数分布反而破坏了校准。而集成学习通过探索不同的局部最优其分布的覆盖更广增加成员数总能带来更稳健的估计。校准图直观对比图7展示了 (M16) 时两种方法的校准曲线。理想情况下曲线应该紧贴对角线实际覆盖率预期覆盖率。可以看到集成学习的曲线更接近对角线而MC-Dropout的曲线明显偏离表现出系统性过度自信实际覆盖率低于预期覆盖率即模型给出的置信度高于其实际能力。4.2 街景语义分割任务结果分析在Cityscapes分割任务上我们观察到了类似的趋势。AUSE与ECE如图8a和8b所示随着 (M) 增加两种方法的AUSE和ECE都在改善但集成学习的改善速率更快且最终达到的性能更优。对于ECE集成学习在 (M) 增加到8左右后进入平台期从过度自信转变为轻微保守。而MC-Dropout则停滞在一种持续的过度自信状态。可靠性图表图9的可靠性图表直观展示了这一点。在MC-Dropout的图中低置信度区间的准确率远低于其置信度点在对角线下方这正是过度自信的典型表现。这意味着当MC-Dropout模型对某个预测“不太确定”时它的实际错误率比它自己认为的还要高这是非常危险的。mIoU对比如图8c所示两种方法的预测准确性mIoU随着 (M) 增加都有小幅提升因为预测是多个样本的平均且集成学习略优。但更重要的是在准确性相近的情况下集成学习提供了质量高得多的不确定性估计。4.3 综合讨论与归因分析为什么集成学习能取得更好的效果结合原理和实验结果我们可以给出以下解释对后验多峰性的更好捕捉DNN的损失函数存在大量局部最优。集成学习通过不同的随机初始化让每个成员收敛到不同的局部最优点。这些点共同构成了对真实后验分布 (p(\theta|D)) 多峰结构的一种离散但有效的采样。MC-Dropout的所有采样都围绕同一个训练好的权重点进行随机扰动其探索的参数空间范围相对有限可能无法充分捕捉这种多峰性。训练动态的差异集成成员在独立的训练轨迹中可能学到了互补的特征表示。而MC-Dropout在测试时的随机性本质上是同一个特征表示系统下的扰动。前者提供的“多样性”在本质上更丰富。超参数鲁棒性集成学习的主要超参数就是成员数量 (M)其影响是单调且易于理解的越多越好但边际效益递减。而MC-Dropout的性能对Dropout率 (p) 和放置位置非常敏感需要针对不同任务和网络结构进行精细调优泛化性较差。处理域外数据的能力在“合成数据训练真实数据测试”的极端域偏移设置下集成学习表现出更强的鲁棒性。这是因为不同的集成成员可能对域偏移的敏感部分不同它们的集体决策能更好地暴露模型认知的不足。避坑指南如果你决定使用MC-Dropout请务必进行严格的校准评估如计算ECE或绘制可靠性图表。不要假设更大的 (M) 总会带来更好的不确定性。很可能存在一个最优的 (M)需要通过验证集来确定。相比之下集成学习的行为更加可预测和稳健。5. 工程实践指南如何选择与实现理论很美但最终要落地。作为从业者我们应该如何选择又该如何高效地实现这两种方法呢5.1 方法选型决策树面对一个需要不确定性估计的新项目你可以遵循以下决策流程首要考虑计算资源与延迟要求如果测试阶段计算资源极其紧张或对延迟要求极高如实时自动驾驶两者可能都不太适合需要考虑其他轻量级方法或模型压缩技术。但如果必须二选一MC-Dropout在推理时只需加载一个模型内存占用更少可能稍有优势。如果训练阶段计算资源是瓶颈但测试阶段可以接受一定开销选择MC-Dropout。你只需要训练一个模型。如果拥有充足的训练和测试计算资源如云端服务、离线处理优先选择集成学习因为它能提供更优质、更可靠的不确定性估计。次要考虑部署与维护复杂度MC-Dropout部署简单就是一个带Dropout的模型。但需要向工程团队解释为何测试时也要开启Dropout。集成学习需要部署和管理多个模型文件推理流水线需要整合多个模型的输出。对MLOps的要求更高。最终验证在项目的验证集或一个小型测试集上快速实现并对比两种方法。务必使用AUSE和校准性指标ECE/AUCE来评估不确定性质量而不仅仅是看准确率。如果MC-Dropout经过调优后能达到与集成学习相近的不确定性质量且其计算开销更符合项目要求则可以选择它。5.2 集成学习高效实现技巧集成学习的最大诟病在于其计算成本。以下是一些降低其负担的实用技巧并行化训练这是最直接的加速手段。利用云计算平台如AWS SageMaker, Google AI Platform或集群同时启动多个训练任务。每个任务使用不同的随机种子并可以共享同一份数据集镜像。共享底层特征提取器对于大型网络如ResNet、Transformer可以设计一个共享的骨干网络Backbone然后为每个集成成员配备独立的预测头Head。这样训练时骨干网络只需前向传播一次大部分参数可以共享能显著减少训练和推理时的计算量。但这可能会在一定程度上降低成员间的多样性。模型蒸馏先训练一个大型的集成模型然后将其“知识”蒸馏到一个单一的小型模型中。这个小型模型在部署时具有高效性同时一定程度上保留了集成模型的不确定性估计特性。不过这是一个前沿研究方向效果取决于具体的蒸馏方法。选择性集成不是所有集成成员都同样有效。可以在一个保留集上评估每个成员的单独性能及其在集成中的贡献剔除表现差或冗余的成员在保持性能的同时减少 (M)。5.3 MC-Dropout调优要点如果你选择使用MC-Dropout以下几点能帮助你获得更好的效果Dropout位置通常放在全连接层或卷积层之后、激活函数之前。文献表明在网络的后半部分或更深层放置Dropout对于不确定性估计更有效。可以尝试在最后几个特征提取块和第一个预测块之后添加。Dropout率 (p)这是一个关键超参数。常见的起始值是 (p0.5)但需要根据任务调整。建议在 {0.1, 0.3, 0.5} 中进行网格搜索并使用校准指标如ECE在验证集上评估。采样次数 (M)不要盲目设大。从 (M10) 或 (20) 开始绘制不确定性质量指标如AUSE、ECE随 (M) 变化的曲线。曲线通常会在某个 (M) 值后趋于平缓甚至反弹那个拐点可能就是性价比最高的点。与Batch Normalization的交互测试时开启Dropout意味着每次前向传播的激活统计量都会变化。这可能会与Batch Normalization层在训练时计算的移动平均统计量产生冲突。一种实践是在测试时也使用训练模式下的BatchNorm即使用当前批次的统计量但这会引入额外噪声。需要仔细评估这对最终预测和不确定性的影响。6. 常见问题与实战排坑记录在实际项目中应用这些方法时你肯定会遇到各种各样的问题。以下是我从经验中总结的一些典型问题及其解决方案。Q1集成学习的训练成本太高了有没有折中方案A1除了上面提到的高效实现技巧可以考虑“快照集成”。在训练单个模型时使用循环学习率调度使其在损失曲面上的不同局部最优点附近震荡。在每次接近局部最优时保存一份模型权重快照。这些快照可以作为集成的成员。这样只需要训练一个模型一轮虽然时间可能比训练单个模型长就能得到多个多样性不错的模型成本远低于训练多个独立模型。Q2MC-Dropout给出的不确定性图看起来非常“碎”或噪声很大正常吗A2这是MC-Dropout的一个常见现象。由于Dropout是逐元素随机屏蔽即使输入只有微小变化网络的激活模式也可能不同导致不确定性估计在空间上出现高频波动。这不一定代表错误但可能不直观。可以尝试增大采样次数 (M) 来平滑噪声但要注意校准性可能下降。对输出的不确定性图进行空间平滑如高斯滤波但要注意这可能会模糊掉真正的不确定性边界。检查Dropout是否放置得太靠前或太密集适当调整。Q3如何将不确定性估计具体应用到下游决策中A3不确定性本身不是目的关键是如何利用它。常见模式有拒绝机制设置一个不确定性阈值。当模型对某个预测的不确定性高于阈值时系统拒绝该预测转而交由人工处理或触发安全冗余机制。例如自动驾驶汽车在不确定性过高时减速或请求驾驶员接管。主动学习筛选出模型最不确定或认知不确定性最高的数据样本优先标注这些样本并加入训练集以最高效地提升模型性能。不确定性加权融合在多传感器或多模型融合时为每个来源的预测赋予与其不确定性成反比的权重不确定性越低权重越高。Q4在资源受限的边缘设备上如何部署这些不确定性估计方法A4这是一个严峻的挑战。可以考虑以下方向量化与压缩对集成模型或MC-Dropout模型进行剪枝、量化、知识蒸馏在尽可能保持不确定性估计能力的前提下减小模型体积和计算量。设计轻量级不确定性估计模块研究除了集成和MC-Dropout之外专为边缘设备设计的、计算开销低的不确定性估计方法如基于单一前向传播的确定性不确定性估计。云端协同在设备上运行一个轻量级模型给出初步预测和不确定性。如果不确定性过高则将数据发送到云端由更强大的集成模型进行复核。Q5除了集成和MC-Dropout还有其他有潜力的可扩展方法吗A5当然。这个领域非常活跃。值得关注的方向包括深度核学习/高斯过程将神经网络的最后一层替换为高斯过程能自然给出不确定性估计但计算复杂度随数据量增长。随机权重平均-高斯过程在训练路径上对模型权重进行平均并结合一个缩放函数来估计不确定性。后验网络/证据深度学习让网络直接输出狄利克雷分布参数从而区分认知和偶然不确定性。标准化流与变分推断使用更复杂的分布族来近似后验提升近似精度但实现更复杂。目前从可靠性、实用性和实现简易性的综合平衡来看集成学习仍然是许多实际应用的首选。它可能不是最优雅的贝叶斯方法但却是最“管用”的方法之一。MC-Dropout提供了快速上手的可能性但在将其用于安全关键系统前必须对其校准性进行极其严格的验证。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2607067.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…