Evident方法论:用观察、假设、测试构建可复现的数据科学工作流

news2026/5/24 3:15:32
1. 项目概述为什么我们需要一种新的数据科学方法论干了十多年数据科学和机器学习项目从初创公司到大型企业都待过我越来越觉得我们这行当的“工作方式”有点不对劲。项目周期总是难以预估代码和数据像一团乱麻三个月前跑通的实验今天想复现一下发现环境变了、数据版本丢了、当初为什么选那个参数也记不清了。团队协作更是头疼你改了一行数据预处理代码可能 silently 地毁掉了下游三个同事的模型结果等发现时已经是一周后了。我们试图用软件工程的敏捷开发Agile来管理数据项目开站会、画看板、搞冲刺但总感觉是“削足适履”——敏捷宣言里那些关于“个体与互动”、“响应变化”的价值观很棒但落到具体怎么组织数据、代码、实验和模型这个层面它给不出可操作的指导。结果就是项目充满了“隐藏的技术债”交付速度慢知识也无法有效沉淀和复用。这正是我读到《Evident方法论基于逻辑推理的数据挖掘与知识管理新范式》这篇论文时感到兴奋的原因。它没有提出一个新的算法或模型而是直指我们日常工作中的核心痛点如何系统化、结构化地管理数据科学项目中的“知识”生产过程。它提出的 Evident 方法论其核心思想异常简洁而有力将项目中的所有产出物Artifacts归类为“观察”Observation、“假设”Hypothesis和“测试”Test三种容器Container并通过它们之间的定向关联来形式化地表示“知识”Knowledge。这听起来有点抽象但本质上它是在为我们的数据工作流建立一套“语法”和“数据结构”。想象一下你所有的数据文件、特征集、模型架构、训练脚本、评估结果都不是散乱的文件或数据库记录而是被明确定义并关联起来的对象。一个“知识”比如“基于用户历史行为的逻辑回归模型可以预测其购买意向AUC为0.85”不再是一份躺在报告里的静态陈述而是一个由具体“观察”清洗后的用户行为数据集、“假设”逻辑回归模型及其参数配置和“测试”在预留测试集上计算AUC的评估过程三者关联而成的、可追溯、可复现的动态实体。这套框架就是 Evident 试图为我们构建的秩序。接下来我将结合自己多年的实战经验为你深入拆解 Evident 的核心思想、实操映射以及它如何解决我们真正的痛点。2. 核心思想拆解从哲学逻辑到工程实践Evident 方法论的美感在于它深厚的理论根基——哲学中的逻辑推理归纳、演绎、溯因。它将一个看似工程管理的问题提升到了一个认知科学的层面。理解这一点是掌握其精髓的关键。2.1 三种核心容器观察、假设与测试首先我们必须清晰定义这三个容器这是 Evident 的原子单元。观察Observation这是一切的基础。它不仅仅是“原始数据”而是经过定义和封装的事实集合。在数据项目中一个“观察”可以是一个特定版本的数据集如user_behavior_2024Q1_v2.parquet一组特征工程后的特征表甚至是一批实时采集的传感器数据流。关键是要将其容器化使其具有明确的边界、版本和元数据如来源、生成时间、schema。实践中这对应着使用数据版本控制工具如 DVC或特征存储如 Feast来管理的数据资产。假设Hypothesis这是我们希望从“观察”中得出的待验证的知识陈述。在机器学习中一个“假设”通常就是一个具体的“模型”及其配置。例如“一个具有三层隐藏层神经元数分别为128, 64, 32、使用ReLU激活函数和Adam优化器的神经网络能够从给定的观察特征集中学习到用户流失的预测模式。” 注意这里的“假设”包含了模型结构代码和超参数配置它是一个可执行的、待检验的实体。测试Test这是连接“观察”和“假设”并产生“知识”的验证过程。它评估“假设”在“观察”上的表现。在机器学习中这就是我们的“实验”将数据划分为训练/验证/测试集用训练数据拟合模型用验证数据调参最终用测试数据计算评估指标如准确率、AUC、RMSE。这个“测试”容器必须封装完整的实验环境、代码和评估逻辑。实操心得很多团队只重视“假设”模型和“测试结果”指标却忽略了将“测试过程”本身容器化。这导致实验不可复现。Evident 强调“测试”作为一个一等公民的容器意味着你需要将实验脚本、依赖环境Dockerfile或conda环境、以及评估代码一起打包管理。2.2 知识表示容器关联的逻辑知识是如何产生的Evident 通过容器间的定向关联来形式化地定义它。这完美对应了三种逻辑推理归纳知识Induction从具体“观察”中总结出一般性规律。对应流程一个“测试”关联一个“假设”和一个“观察”。如果测试结果如AUC0.8满足预设标准那么我们就得到了一个归纳知识“该假设在给定观察下成立具有统计置信度”。这是数据挖掘DM的核心产出。图示[观察 O1] --(测试 T1)-- [假设 H1]生成知识 K1。溯因知识Abduction为已知的“观察”寻找最佳解释。对应流程一个“测试”关联一组候选“假设”和一个“观察”。测试过程会比较哪个假设最能解释该观察。这是机器学习模型选择ML的典型场景我们有几个候选模型假设集通过实验测试选出在验证集观察上表现最好的一个作为最终用于生产的算法Algo。图示[观察 O1] --(测试 T2)-- {假设 H1, 假设 H2, 假设 H3}T2 选出 H2 为最佳生成知识 K2即生产算法。演绎知识Deduction从已有知识推导出新预测。对应流程一个已形成的知识如归纳知识K1可以作为“假设”去预测一个新的、尚未有结果的“观察”。此时这个新“观察”与“假设”的关联是一个“待完成的测试”TBD。当未来这个新观察的数据到位并运行测试后演绎知识就被证实或证伪转化为新的归纳知识。图示已有知识 K1 (O1 -T1- H1)。新观察 O2 出现我们提出K1 中的 H1 能预测 O2 吗形成待测试关联[假设 H1] --(TBD)-- [观察 O2]。未来执行测试 T3 后形成新知识 K3。这种表示法的强大之处在于知识不再是静态的报告而是一个有血有肉、可追溯、可验证的数据结构。你可以随时回溯任何一个结论知识找到它赖以生存的假设、观察和测试过程。这从根本上解决了实验可复现性和结论可信度的问题。2.3 与敏捷开发的本质区别很多人会问这和我们用 Jira、Confluence、Git 搞敏捷开发有什么区别区别在于关注的抽象层次和精确性。敏捷特别是Scrum关注的是“用户故事”、“任务”、“冲刺”等项目管理层面的抽象。它回答“我们要做什么功能”和“进度如何”。但对于数据项目内部的核心活动——一个实验由什么数据、什么代码、产生什么结果——它是盲区。一个“开发模型A”的任务完成了但“完成”的状态定义模糊是代码写完了还是训练跑通了还是指标达标了关联的数据版本是什么Evident关注的是“观察”、“假设”、“测试”等知识生产层面的抽象。它直接定义和关联了产生价值的核心实体。一个“知识”的完成状态是精确的它由哪个版本的观察通过哪个版本的假设经过哪个版本的测试产生了哪个指标从而被证明或证伪。Evident 不是要取代敏捷或看板而是可以与其兼容。你可以在敏捷的冲刺周期内规划要完成哪些“知识”或“容器”的开发。Evident 为敏捷在数据科学领域提供了缺失的、可操作的内容层。论文中也指出敏捷因其定义的模糊性价值观而非具体方法而存在“不可证伪”的问题这在需要严谨科学验证的数据领域尤为突出。Evident 试图提供一套更坚实、更科学的基础。3. 实战映射Evident 如何落地到你的数据项目理论很美好但怎么用下面我将一个经典的“用户流失预测”项目完全用 Evident 的思维重构一遍。你会发现它并非空中楼阁而是能直接指导你的日常工具链和 workflow。3.1 项目初始化定义知识目标传统项目启动可能是“我们要做一个流失预测模型”。Evident 的启动问题更精确“我们要生产什么知识”例如知识目标 K_goal 定义为“找到最能预测未来30天内高价值用户流失的关键因素及预测模型并在独立测试集上达到AUC 0.85。”这个目标本身在项目初期就是一个演绎知识它是一个有待验证的假设。我们将它分解为需要构建的容器观察容器O_raw: 原始用户行为日志、订单数据、用户画像表定义版本如 snapshot_date。O_processed_v1: 经过清洗、去重、处理缺失值后的基础数据集。O_features_v1: 从O_processed_v1中衍生出的特征集合如“最近7天登录次数”、“30天内平均订单金额”等。O_label_v1: 基于业务规则定义的流失标签如未来30天未登录且未消费。O_train_v1,O_val_v1,O_test_v1: 将O_features_v1和O_label_v1按时间划分得到的训练、验证、测试观察集。假设容器H_lr_v1: 逻辑回归模型包含 sklearn 的LogisticRegression类及超参数如C1.0,solverlbfgs。H_xgb_v1: XGBoost 模型包含XGBClassifier类及一套初始超参数。H_nn_v1: 一个三层全连接神经网络模型定义PyTorch 或 TF 代码及初始超参数。测试容器T_eval_base: 基础评估流程。输入一个假设H和一个观察O需包含特征和标签输出一组标准指标AUC, Precision, Recall, F1的代码和环境。T_hyperparam_tuning: 超参数搜索流程如使用 Optuna。输入一个假设类型如 XGBoost和训练/验证观察输出最优超参数配置的代码。3.2 知识生产过程构建关联现在我们开始像搭积木一样生产知识。步骤一生产归纳知识模型评估我们运行测试T_eval_base将其与假设H_lr_v1和观察O_train_v1/O_val_v1关联。操作用O_train_v1训练H_lr_v1用O_val_v1评估。结果产生知识K_lr_val“逻辑回归模型 H_lr_v1 在验证集 O_val_v1 上获得 AUC0.82”。这是一个归纳知识关联链是O_val_v1 --(T_eval_base)-- H_lr_v1。工具实践这次运行的完整记录——代码、数据版本、环境、输出指标——应被保存为一个不可变的记录。工具如 MLflow Experiments、Weights Biases 或 DVC Pipelines 可以很好地封装这个过程。在 Evident 视角下这些工具就是在帮你管理“测试”容器及其关联。步骤二生产溯因知识模型选择我们运行测试T_hyperparam_tuning和T_eval_base对多个假设进行优化和比较。操作对H_xgb_v1和H_nn_v1分别进行超参数调优得到最优配置H_xgb_optimized和H_nn_optimized。然后用T_eval_base在O_val_v1上评估三者包括H_lr_v1。结果产生知识K_best_model“在验证集 O_val_v1 上优化后的 XGBoost 模型 H_xgb_optimized (AUC0.87) 优于逻辑回归和神经网络模型”。这是一个溯因知识关联链是O_val_v1 --(T_hyperparam_tuning T_eval_base)-- {H_lr_v1, H_xgb_v1, H_nn_v1}最终指向H_xgb_optimized。实操心得这个“测试”容器实际上是一个工作流pipeline它内部可能调用多个子测试。Evident 允许测试的嵌套和组合只要其输入输出符合容器定义。步骤三形成最终知识并演绎我们用最佳假设H_xgb_optimized和最终测试观察O_test_v1进行最终测试。操作运行T_eval_base(H_xgb_optimized, O_test_v1)。结果产生核心归纳知识K_final“XGBoost 模型 H_xgb_optimized 在独立测试集 O_test_v1 上达到 AUC0.86满足项目目标”。关联链O_test_v1 --(T_eval_base)-- H_xgb_optimized。演绎应用现在我们可以将K_final作为生产算法。当新的、未来的用户数据O_production_new到来时我们就启动了一个演绎过程用H_xgb_optimized去预测O_production_new。此时关联H_xgb_optimized --(TBD)-- O_production_new成立。我们可以定期如每周将O_production_new的预测结果与实际后续发生的真实标签进行比对运行一个新的测试T_production_monitor这将把演绎知识转化为一个新的归纳知识用于监控模型衰减。3.3 基础设施Evident 知识库EKB的构想论文中提出了 Evident Knowledge Base (EKB) 的概念这是一个理想化的存储和查询层。你可以把它想象成一个专门为“知识图谱”设计的数据库但其节点和边是严格类型化的观察、假设、测试。表结构思维一个简化的理解是EKB 像一张巨大的动态表。行是假设列是观察单元格的值就是测试或 TBD。每个单元格存储了一个具体的测试结果或状态代表了一个具体的知识或待验证的关联。核心操作查询“找出所有在观察O1上AUC大于0.8的假设。” 这相当于在O1列中筛选单元格值测试结果。溯源“知识K1是基于哪些数据、哪个模型、哪个实验得出的” 这相当于定位到某个单元格并追溯其所在行假设和列观察。合并团队A和团队B各自有一个EKB当他们合作时可以执行“连接”Join操作合并彼此的知识前提是他们的容器定义是兼容的。现有工具映射目前没有现成的 EKB 系统但我们可以用组合工具来模拟数据版本与存储DVC (Data Version Control) 对象存储S3/MinIO或 LakeFS完美管理“观察”容器。模型与代码版本Git 管理“假设”模型代码和“测试”实验代码的逻辑部分。MLflow Model Registry 或 Neptune 管理模型二进制文件和超参数。实验追踪与关联MLflow Tracking、Weights Biases 或 Kubeflow Pipelines 可以记录每次实验运行测试并关联代码版本、数据版本和模型版本。它们的 UI 可以部分实现 EKB 的“表格”视图。元数据与图谱最接近 EKB 理念的是像ML Metadata (MLMD)这样的框架它是 TensorFlow Extended (TFX) 的一部分专门用于记录机器学习流水线中各个组件的元数据及其沿袭关系。开源项目如OpenLineage也在致力于为数据流水线建立通用的沿袭标准。我们可以基于这些工具构建上层应用来实现 Evident 的容器和关联管理。4. 解决的核心痛点与实操优势说一千道一万新方法必须解决老问题。Evident 针对论文中列举的诸多痛点提供了结构化的解决方案。以下是我结合实践认为最具价值的几点4.1 根治“不可复现”与“纠缠依赖”痛点改了一处特征工程不知道会影响哪些下游模型。想复现三个月前的冠军模型发现数据路径变了、库版本升级不兼容了。Evident 方案强制性的容器化与显式关联。操作每个“观察”数据都有唯一版本ID。每个“测试”运行记录中必须明确记录其输入的“观察”版本和“假设”版本。效果任何知识都可以一键复现。因为关联是显式的你可以轻松进行影响分析修改了O_features_v1系统能列出所有依赖它的测试和知识便于进行回归测试。4.2 提升协作效率与规模痛点数据科学家、ML工程师、分析师各自为政工作产物散落在各自的笔记本、脚本和邮件里。新成员加入项目需要数月才能理清脉络。Evident 方案标准化的容器接口和中心化的知识库EKB。操作团队约定“观察”、“假设”、“测试”的标准化描述格式和存储位置。所有产出都注册到共享的 EKB或模拟EKB的工具组合中。效果就像程序员协作于同一个 Git 仓库数据团队协作于同一个“知识仓库”。每个人可以查询已有哪些特征观察针对某个问题如流失预测有哪些已尝试的模型假设及其效果测试结果这极大减少了重复劳动加速了知识共享。4.3 清晰度量项目进度痛点项目进度是“完成了80%的代码”还是“模型指标达到了目标的90%”模糊不清。Evident 方案项目进度以“已验证的知识”和“已完成的容器”来衡量。操作项目规划不再是“开发10个用户故事”而是“生产5个关键知识需要完成20个相关容器8个观察6个假设6个测试”。看板上的任务卡可以是“完成观察O3的构建”、“运行测试T5关联H2和O3”。效果进度变得可测量、可追踪。项目风险也更早暴露如果构建核心“观察”容器受阻那么依赖它的所有“知识”生产都会延迟这一点一目了然。4.4 无缝衔接研发与生产痛点研发Research的模型到生产Production的部署是一道“鸿沟”常因环境、数据分布、代码重构导致效果下降或错误。Evident 方案生产和研发使用同一种“语言”和“容器”。操作生产环境中的预测服务本质上是一个持续运行的“演绎”过程H_production --(TBD)-- O_streaming。生产监控系统定期将真实反馈数据打包成新的“观察”O_feedback并运行一个与研发阶段同构的“测试”T_prod_eval将演绎转化为归纳知识K_prod_performance。效果研发到生产的链路被标准化了。生产环境的表现可以直接与研发阶段的测试结果进行“苹果对苹果”的比较快速定位是模型问题、数据漂移还是工程bug。5. 实施挑战、常见问题与避坑指南理想很丰满但落地Evident会面临现实挑战。以下是我能预见的主要问题及应对策略。5.1 认知与习惯转变挑战最大的阻力来自人。数据科学家习惯在Jupyter Notebook里进行探索性、线性的分析习惯把中间结果保存在本地。要求他们事先定义容器、记录每一次关联感觉繁琐破坏了“流畅感”。应对策略渐进式采纳不要一开始就要求全团队、全项目采用。选择一个小的、边界清晰的试点项目如一个独立的A/B测试分析。让团队体验容器化带来的复现和协作好处。工具赋能选择对现有工作流侵入最小的工具。例如使用dvcliveDVC的一部分可以在 Notebook 中轻松记录实验自动生成关联。将容器的注册和关联操作封装成简单的API或装饰器降低使用门槛。文化倡导将“可复现性”和“知识沉淀”作为团队的核心工程价值观。在代码评审中不仅评审算法也评审实验记录和关联的完整性。5.2 容器粒度与复杂度管理挑战一个“观察”容器应该多细是一张原始大表还是一个特征一个“测试”容器是一个完整的端到端训练评估流水线还是其中一个步骤应对策略约定大于配置团队内部需要制定公约。一个实用的起点是“观察”容器对应一个可供下游任务直接消费的数据资产如一张特征表、一个标签集。“测试”容器对应一个产生明确评估指标的可执行单元如一次完整的模型训练与验证。支持嵌套与组合允许复杂的“测试”容器由多个子测试组成。工具应支持流水线pipeline定义这样既能保持原子容器的简洁又能描述复杂实验。元数据是关键为每个容器添加丰富的元数据描述、创建者、创建时间、父级容器ID等。这能帮助在容器数量膨胀时进行有效的搜索和管理。5.3 工具链的整合与缺失挑战如前所述没有开箱即用的 EKB。需要整合数据版本控制、实验追踪、模型注册、元数据管理等多套工具集成和维护成本高。应对策略从轻量级组合开始初期不必追求完美的EKB。一个极简但有效的组合是DVC数据 Git代码 MLflow实验追踪。用 DVC 管数据版本用 Git 管代码用 MLflow 记录每次实验并手动或通过脚本在 MLflow 的实验描述中记录关联的数据版本DVC commit hash和代码版本Git commit hash。这已经实现了80%的核心价值。利用云平台如果使用 AWS SageMaker、Google Vertex AI、Azure Machine Learning 等云平台它们通常提供了整合度较高的实验、数据和模型管理功能可以大大简化搭建过程。关注开源生态关注ML Metadata (MLMD)、OpenLineage、Feast特征存储等项目的发展。它们正在构建下一代 ML 基础设施的核心组件未来可能会出现更接近 EKB 理念的一体化解决方案。5.4 性能与成本考量挑战存储所有版本的“观察”数据和“测试”记录存储成本会不会爆炸频繁查询容器关联性能如何应对策略差异化存储对“观察”容器使用支持快照和去重的存储系统如 DVC 配合 S3支持版本化、LakeFS 或 Delta Lake。对于历史版本可以配置生命周期策略将不常用的版本转移到廉价存储。元数据与数据分离EKB 的核心是存储关联关系和容器的元数据而不是数据本身。大数据体量的“观察”容器其实际数据可以存放在数据湖或数仓中EKB 只存储其访问路径和元数据。这样 EKB 本身可以保持轻量和高效。索引与缓存对常用的查询模式如“按假设查找所有测试”、“按观察查找最新知识”建立索引。对知识图谱进行适当的物化视图或缓存加速查询。6. 总结与个人体会Evident 方法论不是一颗银弹它不能自动帮你调参、清洗数据或提升模型效果。它是一套思维框架和工程纪律旨在解决数据科学和机器学习项目中比算法本身更根本的问题——混乱、不可控和知识的不可持续积累。从我个人的实践经验来看引入 Evident 思维即使没有完全实现 EKB最大的收益是思维的转变。它迫使你和你的团队在项目开始时就去思考我们最终要交付的“知识”是什么为了得到这个知识我们需要哪些“观察”我们将提出哪些“假设”如何设计“测试”来验证这个过程本身就能规避很多后期的混乱。开始实践时不必追求完美。可以从记录一次重要的实验开始明确写下本次实验的“观察”数据版本号是什么“假设”模型代码和超参数配置的版本是什么“测试”评估脚本和环境是什么结果知识是什么把这个记录模板化、工具化。当这样的实践成为习惯你会发现团队的技术债减少了新同事 onboarding 更快了你也能更有底气地回答业务方那个灵魂拷问“你这个结论是怎么得出来的”Evident 论文为我们描绘了一个美好的未来一个所有数据工作都像科学实验一样严谨、可追溯、可积累的世界。虽然完全实现 EKB 的道路还长但朝着这个方向迈出的每一步都是在为我们自己构建更坚实、更高效的工作基石。这条路值得探索。

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