机器学习之五:基于解释的学习
正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。
有关机器学习的基本概念,可看我文章:机器学习的基本概念-CSDN博客
有关机械式学习,可看我文章:机器学习之一:机械式学习-CSDN博客
有关指导式学习,可看我文章:机器学习之二:指导式学习-CSDN博客
有关归纳学习,可看我文章:机器学习之三:归纳学习-CSDN博客
有关类比学习,可看我文章:机器学习之四:类比学习-CSDN博客
接下来我们先探讨第五种:解释学习。
基于解释的学习与前面讨论的归纳学习及类比学习不同,它不是通过归纳或类比进行学习的,而是通过运用相关的领域知识及一个训练实例来对某一目标概念进行学习,并最终生成这个目标概念的一般描述的,该一般描述是一个可形式化表示的一般性知识。
之所以提出这种学习方法,主要是基于如下考虑:
(1)人们经常能从观察或执行的单个实例中得到一个一般性的概念及规则,这就为基于解释学习的提出提供了可能性。
(2)归纳学习虽然是人们常用的一种学习方法,但由于它在学习中不使用领域知识分析、判断实例的属性,而仅仅通过实例间的比较来提取共性,这就无法保证推理的正确性,而基于解释的学习因在其学习过程中运用领域知识对提供给系统的实例进行分析,这就避免了类似问题的发生。
(3)应用基于解释学习的方法进行学习,有望提高学习的效率。
一、基于解释学习的概念
(一)核心思想与定义
基于解释的学习(Explanation-Based Learning, EBL)是一种融合领域知识与实例数据的机器学习范式,其核心思想是通过对单个或少数实例的深入解释,利用先验领域知识提炼出普遍适用的一般性规则。王永庆在《人工智能原理与方法》中指出,EBL 的本质是“通过逻辑解释将具体实例的成功经验转化为可复用的知识”,其核心特征是知识引导的泛化,而非单纯依赖数据统计。
形式化定义: 设领域理论为 T(一组逻辑规则或知识库),训练实例为 (x, y),其中 x 是实例描述,y 是目标概念(如“可堆叠”“安全状态”)。EBL 的目标是生成一个泛化规则 R,满足:
(1)(规则可通过领域理论和实例推导);
(2)R 覆盖所有满足目标概念的实例,且排除反例。
关于基于解释的学习,米切尔用如下框架给出了它的一般性描述:
给定:领域知识DT,目标概念TC,训练实例TE,操作性准则OC。
找出:满足OC的关于TC的充分条件。
与其他学习范式的区别:
(1)对比归纳学习:归纳学习依赖大量数据统计,而EBL依赖领域知识对单个实例的解释;
(2)对比演绎学习:演绎学习从一般到特殊,EBL从特殊实例中提炼一般规则,是“解释引导的演绎泛化”。
(二)核心要素
1.领域理论(Domain Theory)
由一组一阶逻辑规则或产生式规则构成,如:可堆叠(A,B)←轻于(A,B)∧非易碎(B)
解释为:只要A轻于B且B是非易碎的,则推出A可堆叠于B上。
描述概念的定义、属性关系和因果机制,是解释构造的基础。
2.目标概念(Target Concept)
待学习的概念,如“合格的信用卡申请人”“安全的机器人动作”,用逻辑谓词表示 C(x)。
有关谓词逻辑,可看我文章:知识表示方法之一:一阶谓词逻辑表示法(附详细示例)-CSDN博客
3.训练实例(Training Instance)
单个或少数具体实例,如 x={重量(A,1kg),重量(B,2kg),材质(B,金属)},目标概念 C(x)=可堆叠(A,B)。
(三)典型应用场景
(1)专家系统开发:从少数成功案例中提炼诊断规则,如医疗专家系统通过解释单个病例生成通用诊断流程;
(2)机器人规划:通过解释一次成功的抓取动作,生成适用于同类物体的抓取策略;
(3)知识图谱补全:利用已有知识解释观察到的事实,泛化出缺失的关系规则。
二、基于解释的学习过程
(一)构造解释:从实例到逻辑证明
构造解释是EBL的关键步骤,通过领域理论对实例进行逻辑证明,形成解释结构(如证明树),明确实例满足目标概念的原因。
1. 解释构造的逻辑流程
输入:实例描述 x,目标概念 C,领域理论 T
输出:解释结构 E(证明 x 满足 C 的逻辑路径)
步骤:
(1)目标匹配:将目标概念 C 分解为领域理论中的基本谓词,如 C(x) 分解为 P_1(x)∧P_2(x);
(2)反向推理:从目标概念出发,利用领域规则反向推导,匹配实例中的属性。例如:
1)目标:可堆叠(A,B)
2)规则:可堆叠(A, B) ← 轻于(A, B)∧支撑面平坦(B)
3)实例匹配:轻于(A, B) 为真(重量(A)=1kg < 重量(B)=2kg),支撑面平坦(B) 为真(形状(B, 立方体));
(3)构建证明树:将推理过程组织为树状结构,叶节点为实例属性,根节点为目标概念。
2. 解释构造的数学化表示
设领域理论为规则集合 T = {r_1, r_2, ..., r_n},其中每条规则为 h ← b_1∧b_2∧...∧b_m(头 h,体 b_i)。解释构造可形式化为逻辑推导: 推导过程满足
,即实例属性与领域规则的合取蕴含目标概念。
3. 示例:“物体可堆叠”的解释构造
实例:
物体A: 重量 = 1kg,形状 = 立方体
物体B: 重量 = 2kg,材质 = 金属,表面 = 平坦
目标概念:可堆叠(A, B)
领域理论:
(1)轻于(X, Y) ← 重量(X, W1)∧重量(Y, W2)∧W1 < W2
(2)支撑面平坦(Y) ← 表面(Y, 平坦)
(3)可堆叠(X, Y) ← 轻于(X, Y)∧支撑面平坦(Y)
解释过程:
(1)目标 可堆叠(A, B) 触发规则(3),需证明 轻于(A, B) 和 支撑面平坦(B);
(2)对 轻于(A, B),应用规则(1),匹配实例重量 1kg < 2kg,成立;
(3)对 支撑面平坦(B),直接匹配实例表面属性,成立;
(4)构建证明树,叶节点为实例属性,根节点为目标概念。
(二)获取一般性知识:从解释到泛化规则
获取一般性知识是将具体实例的解释结构泛化,去除实例特定细节,保留关键条件,生成适用于一类实例的规则。
1. 泛化方法:解释泛化(Explanation Generalization, EG)
核心步骤:
(1)变量替换:将实例中的具体值替换为逻辑变量,如将 重量(A, 1kg) 泛化为 重量(X, Wx);
(2)条件筛选:从解释结构中提取对目标概念必要且充分的条件,去除冗余属性(如实例中“材质 = 金属”与可堆叠性无关,排除);
(3)规则生成:将泛化后的条件作为规则前提,目标概念作为结论,形式为:可堆叠(X, Y) ← 重量(X, Wx)∧重量(Y, Wy)∧Wx < Wy∧表面(Y, 平坦)
2. 泛化的数学化描述
设解释结构 E 包含谓词集合 {p_1(x), p_2(x), ..., p_k(x)},泛化过程定义为映射,其中规则 R 满足:
(1)前提:(X 为泛化后的变量)
(2)结论:C(X) 且 R 是最小泛化(即不含多余条件),满足。
3. 算法实现:PROLOG-EBG算法
PROLOG-EBG是经典的EBL算法,流程如下:
(1)解释构造:对实例 x,用领域理论 T 构造证明树 E;
(2)目标回归:从目标概念出发,沿证明树反向替换具体值为变量,收集必要条件;
(3)规则生成:将收集的条件合取作为规则前提,目标概念作为结论。
示例:泛化“可堆叠”规则
(1)实例特定条件:重量(A, 1kg), 重量(B, 2kg)
(2)泛化后条件:重量(X, Wx), 重量(Y, Wy), Wx < Wy
(3)生成规则:可堆叠(X, Y) ← 重量(X, Wx)∧重量(Y, Wy)∧Wx < Wy∧表面(Y, 平坦)
(三)解释与泛化的数学关系
解释构造的正确性保证了泛化规则的逻辑有效性。设 T 是一致的领域理论,实例 x 满足 T ⊢C(x),则泛化规则 R 满足:
即规则前提是目标概念的充分条件。这一性质通过逻辑演绎保证,而非统计归纳,因此EBL生成的规则具有确定性,适用于符合领域理论的所有实例。
三、领域知识的完善性:解释构造的挑战
(一)构造不出解释:领域知识的不完备性
1. 问题分析
当领域理论缺乏必要的规则或存在错误时,无法对实例构造解释,导致EBL失败。常见原因:
(1)规则缺失:目标概念的关键条件未在领域理论中定义,如缺少“非易碎”属性对可堆叠性的影响;
(2)逻辑矛盾:领域规则与实例属性冲突,如规则“轻于(X,Y) ←重量(X)>重量(Y)”与实例重量关系矛盾。
2. 解决策略
(1)知识获取:通过专家访谈、知识图谱补全等方式补充缺失规则,如添加规则:可堆叠(X, Y) ← 非易碎(Y)
(2)默认推理:引入默认规则处理未知属性,如假设“未声明易碎性的物体默认为非易碎”。
3. 示例:医疗诊断中的解释失败
领域理论:
规则 1:肺炎(P) ← 发热(P)∧咳嗽(P)
实例:患者Q有发热、咳嗽、胸痛症状,目标概念为“肺炎”。
问题:领域理论未包含“胸痛”与“肺炎”的关系,且现有规则不要求胸痛,导致解释构造时无法利用胸痛属性,可能漏诊其他疾病(如胸膜炎)。
解决:补充规则 肺炎(P) ← 发热(P)∧咳嗽(P)∧白细胞升高(P),并通过医学指南完善领域理论。
(二)构造出多种解释:解释的歧义性
1. 问题分析
当领域理论包含多条规则可推导目标概念,或规则存在重叠时,可能对同一实例构造多种解释,需选择最合理的解释。
2. 解释选择标准
(1)简约性:选择包含最少前提条件的解释(奥卡姆剃刀);
(2)领域偏好:根据领域知识的优先级选择,如“因果规则”优先于“相关性规则”;
(3)数据支持:结合统计数据评估解释的置信度,如:
3. 算法实现:基于启发式的解释筛选
步骤:
(1)对实例生成所有可能的解释 E_1, E_2, ..., E_m;
(2)对每个解释提取规则 R_i,计算启发式得分 S(R_i) = w_1·简约性 + w_2·领域优先级 + w_3·置信度;
(3)选择得分最高的解释。
4. 示例:金融风控中的多重解释
实例:申请人A,收入50k,信用记录良好,负债30k。
领域理论:
规则 1:高风险(X) ← 负债收入比>0.5(X)(负债 / 收入 > 50%)
规则 2:低风险(X) ← 信用记录良好(X)∧收入>40k(X)
解释 1:负债收入比 = 30k/50k=0.6>0.5,触发规则 1,解释为“高风险”;
解释 2:信用良好且收入 > 40k,触发规则 2,解释为“低风险”;
选择:根据金融机构策略,赋予“负债收入比”更高权重(如 w_1=0.6, w_2=0.4),选择解释 1,生成规则时优先考虑财务比率。
(三)领域知识完善的数学模型
设领域理论的完备性为 C,解释构造的成功率为 P(E|C),则:
当 C 增加(补充规则),P(E|C) 提高。对于多重解释问题,设解释集合为 E,最优解释 E^* 满足:
其中 复杂度 为规则前提数量,冲突度 为与其他规则的矛盾程度。
四、基于解释学习的理论深度:从逻辑到统计的融合
(一)EBL 的归纳偏置
EBL 的归纳偏置是“领域理论的正确性”,即假设领域理论提供的规则是目标概念的充分条件。这种偏置使得EBL能够从单个实例泛化,而无需依赖统计显著性,形式化为:
其中 R 是泛化规则,⊨表示逻辑蕴含。
(二)与统计学习的结合
现代EBL常与统计方法结合,处理领域理论的不确定性:
(1)概率解释构造:用贝叶斯网络表示领域理论,计算解释的后验概率 P(E|x, T);
(2)统计泛化:对泛化规则添加置信度,如 R(x) ⇒ C(x) (置信度=0.95),通过数据统计修正纯逻辑推导的刚性。
(三)计算复杂性
解释构造的时间复杂度与领域理论的规模和规则复杂度相关,对于一阶逻辑理论,解释构造是NP难的。实际应用中通过以下方式优化:
(1)规则索引:对领域规则按谓词分类,减少反向推理时的搜索空间;
(2)实例过滤:仅对与目标概念相关的实例属性进行推理,忽略无关属性。
五、总结与应用前景
(一)核心价值
基于解释的学习通过“解释引导的泛化”,将领域知识转化为可复用的规则,弥补了数据驱动方法对大规模数据的依赖,适用于专家知识丰富但数据稀缺的场景。其核心贡献在于:
(1)知识增效:利用先验知识加速学习,减少对训练数据的需求;
(2)可解释性:生成的规则具有清晰的逻辑结构,符合人类认知习惯;
(3)迁移能力:通过解释的泛化,实现跨实例、跨场景的知识迁移。
(二)技术挑战
(1)领域理论获取:构建完整且无矛盾的领域理论难度大,依赖专家知识或知识图谱;
(2)解释歧义处理:当存在多重解释时,需设计高效的筛选机制,避免错误泛化;
(3)不确定性处理:传统EBL假设领域理论完全正确,需融合统计方法处理现实中的噪声和例外。
(三)王永庆理论的延伸
《人工智能原理与方法》强调“解释构造是领域理论与实例的逻辑桥梁”,现代技术通过以下方式拓展:
(1)深度学习与EBL结合:用神经网络提取实例特征,结合符号规则进行解释,如可解释AI(XAI)中的规则提取;
(2)自动知识获取:通过自然语言处理从文本中抽取领域规则,自动完善领域理论;
(3)强化学习中的 EBL:对智能体的成功轨迹进行解释,生成可泛化的策略规则,加速强化学习收敛。
(四)应用展望
(1)医疗决策支持:从单个成功病例中提取诊断规则,结合医学指南生成个性化治疗方案;
(2)智能制造:解释机器人的成功操作,生成适用于同类工件的加工策略,降低试错成本;
(3)教育科技:根据学生的解题过程构造解释,生成个性化学习规则,实现“举一反三”的智能辅导。
基于解释的学习不仅是一种机器学习方法,更是连接人类知识与机器智能的桥梁。随着知识表示技术和逻辑推理算法的进步,EBL将在需要深度领域知识的复杂任务中发挥不可替代的作用,推动人工智能从“数据驱动”向“知识 - 数据双驱动”演进。
相关文章:
机器学习之五:基于解释的学习
正如人们有各种各样的学习方法一样,机器学习也有多种学习方法。若按学习时所用的方法进行分类,则机器学习可分为机械式学习、指导式学习、示例学习、类比学习、解释学习等。这是温斯顿在1977年提出的一种分类方法。 有关机器学习的基本概念,…...
高翔视觉slam中常见的OpenCV和Eigen的几种数据类型的内存布局及分配方式详解
vector<Eigen::Vector2d, Eigen::aligned_allocator<Eigen::Vector2d>> 内存布局及分配方式详解 1. 内存对齐的必要性 Eigen 的固定大小类型(如 Eigen::Vector2d、Eigen::Matrix4d 等)需要 16 字节内存对齐,以支持 SIMD 指令(如 SSE/AVX)的并行计算。若未对…...
电子电器架构 --- 人工智能、固态电池和先进自动驾驶功能等新兴技术的影响
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...
【C++11】类的新功能
前言 上文我们学习了包装器:function和bind。function可以包装一切可调用对象,并用统一的调用方式调用不同的可调用对象。bind则可以控制函数参数个数【C11】包装器:function与bind-CSDN博客 本文我们来学习C11的类中新增的一些功能 默认的移…...
1.6 点云数据获取方式——单目相机多视图几何
图1-6-1多视图几何重建 单目相机的多视图几何研究具有重要的理论与实际意义。在理...
马井堂-区块链技术:架构创新、产业变革与治理挑战(马井堂)
区块链技术:架构创新、产业变革与治理挑战 摘要 区块链技术作为分布式账本技术的革命性突破,正在重构数字时代的信任机制。本文系统梳理区块链技术的核心技术架构,分析其在金融、供应链、政务等领域的实践应用,探讨共识算法优化、…...
MicroBlaze软核的开发使用
一、MicroBlaze 介绍 MicroBlaze 是由 Xilinx 开发的一种可配置的 32 位 RISC 软处理器内核。它作为 FPGA 设计中的 IP 核,通过 Vivado 工具进行配置和集成。MicroBlaze 提供了高度的灵活性,允许开发人员根据应用需求调整处理器的功能、性能和资源占用。…...
是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表
以下是从原始数据到价值挖掘的完整流程解析,涵盖数据采集、清洗、存储、处理、建模、可视化等核心环节,并附上完整代码示例(含详细注释)及技术选型建议表。 一、全流程技术栈概览 阶段核心任务关键技术/工具数据采集获取原始数据…...
【爬虫】案例-获取cbh电影
以cupfox.in为例子: 观察ts文件和m3u8文件,可以知道一个完整的视频是由多个ts文件组合,而m3u8则是记录所有ts文件信息的文本 思路 1.先爬一个ts,测试能否观看 2.爬m3u8文件,通过正则分析出变化的部分 3.完整的把每个…...
分治而不割裂—分治协同式敏捷工作模式
分治而不割裂:解密敏捷协同工作模式如何驱动大企业持续领跑 在数字化浪潮中,亚马逊仅用11天完成Prime Day全球技术架构升级,华为5G基站项目组创造过单周迭代47个功能模块的纪录,这些商业奇迹的背后,都隐藏着一个共性秘…...
【MySQL】聚合查询 和 分组查询
个人主页:♡喜欢做梦 欢迎 👍点赞 ➕关注 ❤️收藏 💬评论 目录 🌴 一、聚合查询 🌲1.概念 🌲2.聚合查询函数 COUNT() SUM() AVG(&…...
Weka通过10天的内存指标数据计算内存指标动态阈值
在数据处理和监控系统中,动态阈值的计算是一种常见的方法,用以根据数据的实际分布和变化来调整阈值,从而更有效地监控和预警。在Weka中,虽然它主要是用于机器学习和数据挖掘的工具,但你可以通过一些间接的方法来实现…...
iOS签名的包支持推送功能吗?
推送失败的可能原因: 1. 生产包没有上报token ,所以无法推送成功,需要检查是否在企业包签名后导致无法完成apns的注册,无法从Apple取到token 2. 问题可能出在证书上,因为iOS推送有一个开发证书和一个生产证书ÿ…...
JavaWeb:后端web基础(TomcatServletHTTP)
一、今日内容 二、Tomcat 介绍与使用 介绍 基本使用 小结 配置 配置 查找进程 三、Servlet 什么是Servlet 快速入门 需求 步骤 1.新建工程-模块(Maven) 2.修改打包方式-war 3.编写代码 /*** 可以选择继承HttpServlet*/ WebServlet("/hello&q…...
关于浏览器对于HTML实体编码,urlencode,Unicode解析
目录 HTML实体编码 URL编码 Unicode编码 解析层次逻辑 为什么<script></script>不可以编码符号 为什么不能编码JavaScript:协议 为什么RCDATA标签中的都会被解析成文本 为什么HTML编码了<>无法执行 HTML实体编码 通过特殊语法(<、>…...
C++智能指针滥用带来的性能与内存问题有哪些
在现代C编程中,智能指针(Smart Pointers)已经成为开发者工具箱中不可或缺的一部分。它们作为一种对传统裸指针(Raw Pointers)的替代方案,旨在解决长期困扰C开发者的内存管理难题。C作为一门高性能的系统编程…...
C++算法(17):reverse函数用法详解,头文件<algorithm>与实战示例
在C中,std::reverse 函数用于反转容器或数组中元素的顺序,需包含头文件 <algorithm>。以下是其用法详解: 基本用法 函数原型: template <class BidirIt> void reverse(BidirIt first, BidirIt last); 参数…...
【滑动窗口】最大连续1的个数|将x减到0的最小操作数
文章目录 1.最大连续1的个数2.将x减到0的最小操作数 1.最大连续1的个数 解法: 1.暴力解法给定一个left指针固定左端点元素,再给定一个right指针从左端点元素开始遍历。 当遇到1时,让一个计数器cnt1,当遇到0时,让统计0…...
MySQL 在 CentOS 7 环境下的安装教程
🌟 各位看官好,我是maomi_9526! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习C语言的相关知识。 👍 如果觉得这篇文章有帮助,欢迎您一键三连,分享给更…...
嵌入式复习第一章
1. 嵌入式系统概念、应用与特点 2. 嵌入式系统的硬件( CPU 、外设) 3. 主要嵌入式软件系统(应用及 OS ) 4. 嵌入式系统的发展趋势 嵌入式系统定义 “以 应用为中心 ,以计算机技术为基础,并且软硬件…...
【C#】.net core6.0无法访问到控制器方法,直接404。由于自己的不仔细,出现个低级错误,这让DeepSeek看出来了,是什么错误呢,来瞧瞧
🌹欢迎来到《小5讲堂》🌹 🌹这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。🌹 🌹温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!&#…...
Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(三)
基于前两篇内容,继续完善企业官网页面: Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(一)-CSDN博客 Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(二)-CSDN博客 3.5 联系方…...
Opencv中图像深度(Depth)和通道数(Channels)区别
在OpenCV中,图像深度(Depth)和通道数(Channels)是两个完全不同的概念,需严格区分。以下是详细解析: 图像深度(Depth) 定义:指图像中每个像素通道的位数&#…...
【网络原理】从零开始深入理解HTTP的报文格式(一)
本篇博客给大家带来的是网络HTTP协议的知识点, 重点介绍HTTP的报文格式. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅Ὠ…...
Go语言之路————接口、泛型
Go语言之路————接口 前言接口定义实操,接口的定义和实现接口的继承空接口和Any 泛型类型集 结语 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触Go,到后…...
Go语言中的 `time.Tick` 函数详解
time.Tick 是 Go 标准库中用于创建周期性定时器的简便函数。 函数签名 func Tick(d Duration) <-chan Time核心功能 创建一个周期性的定时器通道当 d < 0 时返回 nil返回一个只读的时间通道,定期发送当前时间 与 NewTicker 的关系 time.Tick 是 time.New…...
打印及判断回文数组、打印N阶数组、蛇形矩阵
打印回文数组 1 1 1 1 1 1 2 2 2 1 1 2 3 2 1 1 2 2 2 1 1 1 1 1 1方法1: 对角线对称 左上和右下是对称的。 所以先考虑左上打印, m i n ( i 1 , j 1 ) \text min(i1,j1) min(i1,j1),打印出来: 1 1 1 1 1 2 2 2 1 2 3 3 1 2 …...
【图像融合】基于非负矩阵分解分解 CNMF的高光谱和多光谱数据融合附MATLAB代码
基于CNMF的高光谱与多光谱数据融合技术详解 一、非负矩阵分解(NMF)与约束非负矩阵分解(CNMF)的核心原理 NMF的基本概念 非负矩阵分解(NMF)是一种通过将非负矩阵分解为两个非负矩阵乘积的降维方法。给定非负…...
HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(一、项目介绍及实现效果)
在当今数字化时代,如何让传统文化与现代科技相结合,成为了一个值得思考的问题。诗词作为中国传统文化的重要组成部分,承载着丰富的历史信息和文化内涵。为了让更多人了解和欣赏诗词的魅力,我们决定开发一款基于HarmonyOS NEXT的诗…...
线性代数与数据学习
The Functions of Deep Learning (essay from SIAM News, December 2018) Deep Learning and Neural Nets...
Linux中的计划任务
一次性任务 功能介绍: 如果我们希望在将来的某个时间点去执行某件事件,这个事件执行完后任务就结束,那么我们 就可以使用一性计划任务。而要实现这种功能,我们需要任务 atd 服务。我们先查询一下系 统是否存在这个服务。 查看是…...
【C++】线程池
C 线程池介绍 什么是线程池? 线程池(Thread Pool) 是一种并发编程模型,用于管理和复用多个线程,避免频繁创建/销毁线程的开销。它通过预创建一组线程,并将任务提交到队列中,由空闲线程自动执行…...
美团社招一面
美团社招一面 做题 1、面试题 <style> .outer{width: 100px;background: red;height: 100px; }.inner {width: 50px;height: 50px;background: green; }</style> <div class"outer"><div class"inner"></div> </div>…...
C++:BST、AVL、红黑树
C:BST、AVL、红黑树 二叉搜索树(BST)二叉平衡搜索树(AVL)红黑树(RBT)三者对比什么情况下使用?C 标准库中的使用总结 二叉搜索树(BST) 二叉搜索树(Binary Sea…...
算法笔记.染色法判断二分图
题目:(来自AcWing) 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环。 请你判断这个图是否是二分图。 输入格式 第一行包含两个整数 n 和 m。 接下来 m 行,每行包含两个整数 u 和 v,表示点 u …...
在 IDEA 中写 Spark 程序:从入门到实践
在大数据处理领域,Apache Spark 凭借其出色的性能和丰富的功能受到广泛欢迎。而 IntelliJ IDEA 作为一款功能强大的 Java 集成开发环境,为编写 Spark 程序提供了极大的便利。本文将详细介绍如何在 IDEA 中搭建 Spark 开发环境并编写运行 Spark 程序&…...
[Spring] Sentinel详解
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
让数据优雅落地:用 serde::Deserialize 玩转结构体实体
前言 想象一下,服务器突然飞来一堆 JSON 数据,就像一群无头苍蝇冲进办公室,嗡嗡作响,横冲直撞。此刻,你的任务,就是把这群“迷路数据”安置进正确的格子里,分门别类,秩序井然,不混不乱,不漏一只。 好在 Rust 早就为我们备好瑞士军刀:serde::Deserialize。它不仅刀…...
【wpf】 WPF中实现动态加载图片浏览器(边滚动边加载)
WPF中实现动态加载图片浏览器(边滚动边加载) 在做图片浏览器程序时,遇到图片数量巨大的情况(如几百张、上千张),一次性加载所有图片会导致界面卡顿甚至程序崩溃。 本文介绍一种 WPF Prism 实现动态分页加…...
Flow原理
fun main() {runBlocking {launch {flow4.collect{println("---collect-4")}println("---flow4")}}val flow4 flow<Boolean>{delay(5000)emit(false) } 我们分析下整个流程 1.flow为什么之后在collect之后才会发送数据 2.collect的调用流程 我…...
业绩回暖、股价承压,三只松鼠赴港上市能否重构价值锚点?
在营收重返百亿俱乐部后,三只松鼠再度向资本市场发起冲击。 4月25日,这家坚果零食巨头正式向港交所递交上市申请书,若成功登陆港股,将成为国内首个实现“AH”双上市的零食品牌。 其赴港背后的支撑力,显然来自近期披露…...
基于大模型的胆总管结石全流程预测与临床应用研究报告
目录 一、引言 1.1 研究背景 1.2 研究目的与意义 1.3 研究方法和创新点 二、大模型在胆总管结石预测中的应用原理 2.1 大模型概述 2.2 模型构建的数据来源与处理 2.3 模型训练与优化 三、术前预测与准备 3.1 术前胆总管结石存在的预测 3.2 基于预测结果的术前检查方…...
QT—布局管理器之BoxLayout篇
1.布局管理器的概述 在Qt中,使用布局管理器的主要原因是它能够自动管理组件的大小和位置,从而实现灵活且动态的界面布局。布局管理器可以自动调整组件以适应窗口大小的变化,确保界面在不同分辨率和设备上都能保持良好的显示效果。这不仅减少了…...
如何在 IntelliJ IDEA 中编写 Speak 程序
在当今数字化时代,语音交互技术越来越受到开发者的关注。如果你想在 IntelliJ IDEA(一个强大的集成开发环境)中编写一个语音交互(Speak)程序,那么本文将为你提供详细的步骤和指南。 一、环境准备 在开始编…...
湖北理元理律师事务所:债务优化的法律机制与民生实践
在债务纠纷日益增多的社会背景下,合法、规范的债务管理服务成为民生需求的重要环节。湖北理元理律师事务所作为经国家司法局注册登记的债事服务机构,以法律为工具,探索出一套覆盖债务咨询、规划与风险防控的服务体系。 1.法律服务的专业化框…...
练习普通话,说话更有节奏
玲珑塔,塔玲珑,玲珑宝塔第一层,一张高桌四条腿, 一个和尚一本经。一个铙钹一口磬,一个木鱼一盏灯。 一个金玲,整四两,风儿一刮响哗愣。 玲珑塔,隔过两层数三层,三张高桌十…...
链表相关——Python实现
一、链表的创建及数据插入 示例代码: #1.定义一个结点类 class ListNode():def __init__(self,x,nextNone):self.valxself.nextnext #2.定义单链表 class LinkList():#2.1 创建一个头指针为空的链表def __init__(self,headNone):self.headNone#2.2 将数据插入链表…...
[OS_9] C 标准库和实现 | musl libc | offset
在你感觉有困难的时候,计算机 一定有解决办法 操作系统为我们提供了对象和操作它们的 API:我们学习了进程管理的 fork, execve, exit, waitpid;内存管理的 mmap;文件 (对象) 管理的 open, read, write, dup, close, pipe, …… 大…...
【氮化镓】质子辐照对 GaN-on-GaN PiN 二极管电导调制的影响
2025 年,中国科学技术大学的 Xuan Xie 等人采用实验研究的方法,深入探究了 10-MeV 和 50-MeV 质子辐照( fluence 最高达 11014 cm−2)对 kV 级垂直 GaN-on-GaN PiN 二极管的导电调制影响。研究背景在于空间应用中的功率电子电路易受质子、α 粒子和重离子等影响而降级甚至失…...
深入浅出限流算法(一):简单但有“坑”的固定窗口计数器
在现代分布式系统和 API 设计中,限流 (Rate Limiting) 是一个不可或缺的环节。它像一个尽职的门卫,保护着我们的服务资源,防止因突发流量或恶意攻击导致系统过载,同时也能确保资源的公平分配。 实现限流的算法多种多样࿰…...