当前位置: 首页 > article >正文

针对KG的神经符号集成综述 两篇

帖子最后有五篇综述的总结。

综述1 24年TKDD

系统性地概述了神经符号知识图谱推理领域的进展、技术和挑战。首先介绍了知识图谱(KGs)和符号逻辑的基本概念,知识图谱被视为表示、存储和有效管理知识的关键工具,它将现实世界的知识表达为(头实体,关系,尾实体)的三元组形式 。符号逻辑,特别是逻辑规则,被强调为其在提供可解释性和泛化能力方面的力量 。

神经符号知识图谱推理分类法

推理通常包含两种类型 :

演绎推理 (Deductive reasoning):从一般性假设出发,推导到关于个体实例的具体结论 。

归纳推理 (Inductive reasoning):从一系列实例观察中形成广泛的概括或原则 。

在知识图谱推理的背景下,这两种基本推理类型对应着两大主要任务:

知识图谱补全 (KG completion):根据现有的事实和规则来推断新的知识 。这与演绎推理的概念相符 。其目标是创建一个更完整、更准确的知识表示 。

规则学习 (Rule learning):旨在从观测数据中概括出新的规则,这与归纳推理的概念相符 。它不是推断新事实,而是发现知识图谱中隐含的规则 。这些规则的透明性和明确性有助于增强推理过程的可理解性。

尽管逻辑规则的应用能显著增强知识图谱补全的过程,但KG补全和基于规则的推理是各自独立、拥有不同方法论和目标的不同任务 。近年来神经符号KG推理方法逐渐将焦点转向知识图谱补全,而减少对规则发现的强调 。例如纯规则学习方法,它们主要关注从数据中阐明规则学习的过程,而不深入探讨这些规则在KG补全中的应用,到优先考虑神经技术而非符号方法 。例如ILP和MLN这样的纯符号推理方法,它们主要依赖逻辑推断和基于规则的方法 。然而,随着向下移动,符号方法的重要性减弱,利用机器学习算法解决KG推理任务的神经方法 。

名词解释:一阶逻辑

基本构成要素:

对象 (Objects):特定的用户、物品、属性值等。

谓词 (Predicates):描述对象的属性或者对象之间的关系,行为交互,属性归属,用户偏好

逻辑连接词:

  • 与 (∧): 表示“并且”。例如用户 u 点击了物品 i 并且 将其加入了愿望单。
  • 或 (∨): 表示“或者”。例如用户 u 喜欢科幻类型 或者 喜欢诺兰导演。
  • 非 (¬): 表示“不是”或“没有”。例如用户 u 没有购买《盗梦空间》。
  • 蕴含 (→): 表示“如果...那么...”。例如 如果用户 u 购买了物品 i,那么用户 u 与物品 i 发生过交互。

量词:指明一个陈述对多少对象成立:全称量词 (∀): 读作“对于所有的”或“每一个” 。用于制定普适性的规则或描述所有对象的共同特征。存在量词 (∃): 读作“存在至少一个” 。用于断言至少有一个对象满足某个条件。

合式公式:通过组合原子公式(即谓词及其参数)、逻辑连接词和量词,可以构建复杂的逻辑语句,即合式公式 。在推荐系统中,这些公式可以用来精确地表达推荐规则、用户画像的条件、物品筛选标准等。

KG任务:链路预测

链接预测是知识图谱补全(KG completion)的一个子任务,旨在通过利用现有事实来推断KG中缺失的知识,特别是针对单跳查询(one-hop queries),例如预测 (头实体, 关系, ?)(?, 关系, 尾实体) 中的缺失部分 。传统逻辑推断方法依赖于预定义的一组逻辑规则来补全KG 。其基本思想是找到一个真值分配方案,使得满足的基规则数量最大化 。

符号增强的表示学习 

传统逻辑推断方法在可解释性和泛化性方面表现出色,但在可扩展性和探索KG内原子间内在相关性方面存在挑战 。另一方面,KGE方法具有良好的可扩展性和捕捉原子间相关性的能力,但难以建模KG关系的高阶依赖性,且通常被认为是缺乏明确推理证据的黑箱模型 。因此,近期研究旨在结合这两种方法,发挥各自优势 。

基于嵌入的MLN变分推断 

MLN能够自然地整合KG嵌入和逻辑规则 。鉴于MLN精确推断的计算挑战,变分推断提供了一种有效的近似解决方案 。基于嵌入的变分推断方法利用图嵌入来定义KG中所有可能的隐藏三元组的变分分布,从而实现MLN的有效变分推断 。

其他方法如ExpressGNN和pGAT分别利用GNN和图注意力网络进行MLN的变分推断 。

一些方法如INS-ES通过基于KG嵌入选择与输入查询相似的小部分候选三元组来降低构造基马尔可夫网络的成本,从而提高推断速度 。

总结:尽管这类方法通过变分推断优雅地集成了嵌入模型和逻辑规则,但在推断效率方面仍面临重大挑战,因为考虑所有可能的隐藏三元组在计算上是不可行的,而采样策略又会引入逻辑规则方面的信息损失 。

基于PSL的嵌入模型正则化技术 

除了MLN,PSL也提供了FOL的概率扩展 。它使用FOL规则作为模板语言,为具有软真值的随机变量(即三元组)构建图模型,其中KG嵌入可用于定义软真值 。

因此,基于逻辑规则的正则化方法利用PSL来整合KG嵌入和逻辑规则 。它们将逻辑规则视为额外的正则化,其中基规则的满足度(可按照PSL计算)被整合到原始的嵌入损失中 。

典型集成过程包括:(1) 根据模板逻辑规则采样基逻辑规则;(2) 将每个相关的三元组(即基谓词)映射为一个软真值;(3) 基于其中基谓词的软真值计算每个基规则的满足度;(4) 基于所有基规则的满足度定义适当的损失 。

总结:尽管基于PSL的正则化技术为嵌入模型提供了一种有效集成嵌入和逻辑规则的方法,但在逻辑规则方面存在信息损失的缺点,因为它们通常只采样一小部分基规则来近似推断过程 。此外,大多数此类方法倾向于一次性注入逻辑规则来增强嵌入,忽略了嵌入学习和逻辑推断之间的交互关系 。

KG任务:复杂查询回答

回答具有更复杂结构的查询,这些查询通常涉及多跳关系和逻辑运算。与主要关注单跳查询的链接预测不同,复杂查询回答旨在处理例如 (头实体, 关系1, ..., 关系n, ?) 这样的多跳查询,以及更一般的一阶逻辑(FOL)查询 。由于知识图谱嵌入(KGE)模型本质上是“黑箱”且缺乏明确的推理证据,理解其结果背后的原因通常具有挑战性 。

基于路径的查询回答:这类方法侧重于对路径进行排序和选择,以找出最相关的路径进行推理 。它们根据各种标准为路径分配分数或排名,从而识别可能产生准确预测的路径 ,例如随机游走推断。

基于强化学习(RL)的方法:由于启发式路径遍历在关系众多的真实KG中(即使路径长度有限,可能路径数量也极多)难以枚举所有路径,因此使用RL。例如DeepPath 首次将路径寻找过程公式化为顺序决策问题,并提出了一种基于RL的方法来学习KG中的多跳关系路径 。给定实体对 (ei​,ej​),DeepPath使用策略网络从源实体 ei​ 选择最有希望的关系进行扩展,直到到达目标实体 ej​ 。

基于RL的方法为KG推理提供了一种动态、自适应的途径,特别擅长导航KG的复杂网络结构并在多跳中识别路径和关系 。然而,它们也面临挑战,如难以处理KG常见的大动作空间(导致高计算负担和探索-利用权衡困难),未能充分考虑不同实体间的相关性(可能导致次优推理),以及缺乏有效的动作过滤机制(可能导致低效探索和次优推理路径) 。

一阶逻辑查询回答:基于路径的查询回答方法通常在每一步只扩展一个邻居,这限制了它们处理涉及在每跳产生多个实体的逻辑运算的复杂逻辑查询的能力 。FOL查询回答旨在处理通用形式的逻辑查询,目标是找到满足公式真值的自由变量的答案 。包括:

子图匹配:将查询转换为依赖图,然后再转换为相应的SPARQL查询图,并提交给KG 

基于表示学习:基于表示学习的逻辑查询回答过程通常包括三个关键阶段:(1) 将FOL查询转换为由基本逻辑运算组成的等价表达式;(2) 通过顺序执行转换后的表达式来检索查询对应的答案集;(3) 确定一个合适的损失函数,通常基于真实答案包含在检索到的答案集中的可能性 。该过程依赖于三个主要操作:关系投影;逻辑运算;隶属度验证。

例如GQE (Graph Query Embedding) 首次尝试在低维嵌入空间中执行逻辑操作,它通过投影 (P(q,rk​)=rk​q) 和交集 (C(x,y) 使用深度集进行聚合) 两种可微操作将查询转换为单个向量 。通过查询嵌入与实体嵌入间的距离计算实体作为答案的可能性 。GQE主要支持合取查询(and),难以处理包含析取、否定或存在量词的更复杂查询,且缺乏对查询答案不确定性的考量,对未见过的逻辑查询结构泛化能力可能不足 。

KG任务:规则学习

尽管逻辑推断在补全KG方面展现出强大的推理能力,但它需要预先手工指定逻辑规则。

符号方法:现有的符号推理方法主要是基于搜索的归纳逻辑编程(ILP)方法,它们通常通过在规则空间中搜索和剪枝来学习规则。

基于关联规则学习的方法:借鉴了数据挖掘领域关联规则挖掘的思想,应用预定义的度量(如置信度和支持度)来衡量KG中霍恩规则的合理性 。置信度(confidence)在KG上下文中指规则体路径能被目标关系成功闭合的比率 。

神经符号集成:鉴于神经网络在从海量数据中学习方面的熟练表现,将逻辑规则学习与神经网络相结合以处理大规模KG的兴趣日益浓厚 。

可微ILP:神经定理证明器 (Neural Theorem Provers, NTPs) 旨在通过将离散符号替换为其连续嵌入表示,来提供反向链接算法(backward chaining algorithm)的连续松弛版本 。遵循ILP的原则,这些表示通过最大化KG中事实的证明分数同时最小化不在KG中事实的证明分数来进行端到端学习 。反向链接首先尝试将查询与KG中的已知事实进行合一(unify),若无匹配事实,则考虑规则空间中所有可能的规则,将规则头与查询合一,然后递归地证明规则体中的原子 。通过引入嵌入来表示KG中的每个谓词和常量,NTPs将符号间的比较替换为其嵌入间的可微相似性度量 。

基于矩阵的推理:神经逻辑编程将连续优化的概念引入到离散的规则学习世界中 。它在逻辑推断和稀疏矩阵乘法之间建立了联系,将离散优化问题转化为可微问题 。这种创新方法允许将逻辑推断编译成可微张量乘法的序列 。然而,这种方法面临的挑战是需要同时学习连续空间(即与逻辑规则相关的权重 α)和离散结构空间(即逻辑规则本身)。Neural-LP 设计了一个基于注意力机制的神经控制器系统,学习顺序地组合可微张量乘法来学习规则权重 α

基于学习的方法:RNNLogic 框架引入了一种新方法,通过分别整合规则生成器和推理预测器,将规则生成过程与规则权重学习过程分开 。RLogic 提出了一种替代方法,直接使用基于表示学习的模型在模式(schema)级别学习逻辑规则 。通过依赖一小部分采样得到的闭合路径进行训练。

结论

尽管神经符号推理领域仍处于早期阶段,但迄今为止取得的进展表明,神经符号方法在增强KG推理系统能力方面具有巨大潜力 。然而,仍需要更多研究来解决尚存的挑战,例如可扩展性与可解释性之间的权衡,并进一步推动KG推理的可能性边界 。


综述2 24年

这篇综述旨在提供一个关于知识图谱神经符号推理的全面回顾,特别强调了不同类型的查询 (单跳,复杂,自然语言) 以及神经符号推理方法的分类 。 它也探讨了知识图谱推理与大型语言模型(LLMs)的创新性整合,指出了该领域的潜在突破 。

单跳查询的推理

单跳查询推理通常被称为知识图谱补全,目标是预测给定头实体和关系时的尾实体,或给定尾实体和关系时的头实体,亦或是预测给定头尾实体间的关系 。方法被分为三类进行详细阐述:

符号方法 (Symbolic Methods):

硬符号规则推理 (Hard symbolic rule based reasoning): 利用明确的逻辑规则进行推断,如基于规则的专家系统(前向链接和后向链接)、Prolog、Datalog、OWL等 。

软符号规则推理 (Soft symbolic rule based reasoning): 考虑到硬规则在现实世界中的局限性(如规则并非总是绝对正确、缺乏灵活性),引入了如马尔可夫逻辑网络(MLN)和TensorLog等方法 。MLN为每个逻辑公式赋予权重以反映其约束强度 。TensorLog将推理过程公式化为矩阵乘法 。

符号路径推理 (Symbolic path based reasoning): 在没有预定义规则时,利用KG中的路径推断新信息,如路径排序算法(PRA)和ProPPR 。

符号规则挖掘 (Symbolic rule mining): 从KG中推断通用逻辑规则,如AMIE和AMIE+,以及RLVLR和RuLES等改进方法 。

神经符号方法 (Neural-Symbolic Methods):

知识图谱嵌入 (Knowledge graph embedding): 将实体编码为低维向量,关系编码为连续空间中的参数化代数运算,通过评分函数判断三元组的真伪 。常见的应用是KG补全 。综述列举了多种嵌入方法如TransE 、DistMult 、ComplEx 、RotatE ,以及其他如TransH 、TransR 、RESCAL 、QuatE 、HolE 。

神经符号规则推理 (Neural symbolic rule based reasoning): 如Neural LP,它是TensorLog的推广,专注于学习带置信度分数的逻辑规则 。它将推理过程建模为RNN,并通过改变操作顺序将矩阵乘法过程变为学习每一步关系的组合 。RNNLogic将所有逻辑规则视为潜变量,包含规则生成器和推理预测器,使用EM算法进行推理 。

神经符号路径推理 (Neural symbolic path based methods): 结合神经和符号技术,利用路径信息进行更鲁棒的推理 。PathCon结合了关系上下文(实体的k跳邻域关系)和关系路径(实体间的连接)进行推理,使用Relational Message Passing编码上下文,RNN编码路径 。DeepPath则使用强化学习来学习路径,将寻路过程视为马尔可夫决策过程 。

神经符号规则挖掘 (Neural symbolic rule mining): GraIL提出使用子图进行推理,应用GNN于候选边周围的子图,认为子图结构为推断节点间关系提供了证据,从而避免了显式的规则归纳 。

复杂逻辑查询的推理

将查询推广到逻辑上更复杂的形式,涉及多个谓词、量词和变量 。定义了什么是复杂查询,特别是存在一阶 (EFO) 公式和树形查询 (Tree-Form Query) 。

神经方法 (Neural Methods):树形查询:如GQE将节点嵌入低维空间,并将集合投影和交集表示为嵌入空间中的神经操作 。Query2Box将查询建模为盒子(超矩形) 。NewLook采用神经网络在每个投影操作中重新学习盒嵌入,并引入集合差集操作 。其他嵌入空间如凸锥、参数化概率分布和向量也被探索 。EFO-1查询(非树形):将原子公式或其否定视为约束满足问题中的约束,采用GNN于查询图(如LMPNN)或Transformer等更复杂的神经架构 。

神经符号方法 (Neural-Symbolic Methods):神经部分通常选用链接预测器或KG嵌入 。几乎所有符号算法都搜索变量的合适赋值以满足查询中的逻辑约束 。结合神经链接预测器,满足的布尔值变为连续分数或归一化为[0,1]的模糊真值 。可应用多种搜索策略,如用于非循环查询图的光束搜索(CQD)和带回溯的搜索(QTO),以及推广到循环和多边查询图的FIT 。神经链接预测器可以与搜索深度结合,而不仅是物化为邻接矩阵,如CQD-CO将搜索问题从符号赋值空间松弛到神经嵌入空间,CQD-A可以从训练数据反馈中调整KG嵌入,GNN-QE中的链接预测器是可学习的GNN 。

自然语言查询的推理

当输入查询是自然语言句子时,现有方法可分为基于语义解析、基于信息检索和基于嵌入的方法等 。

单轮查询 (Single-turn Query): PullNet基于信息检索,从知识库中检索候选答案子图以指导预测 。KV-Mem和EmbedKGQA是基于嵌入和深度学习的方法,将问题嵌入到嵌入空间中的一个点,并根据相似性函数找到答案 。PrefNet使用重排序方法对所有候选答案进行重排序以获得更好的结果 。基于语义解析的方法通常将问题转换为查询图,并根据查询图搜索答案 。Liu等人提出的多任务模型同时处理KGQA和KGC,将多跳查询转换为KG中的路径,并联合训练模型 。基于强化学习的方法将KG作为环境,训练智能体导航KG以找到答案 。

多轮查询 (Multi-turn Query): Conquer注意到当出现重构时,很可能前一个答案是错的,而当出现新意图时,前一个答案更可能是对的,并基于此将重构视为隐式反馈来训练RL模型 。PRALINE使用对比表示学习方法对KG路径进行排序以有效检索正确答案 。CornNet主张利用语言模型生成额外的重构以增强模型对原始问题的理解 。问题重写也被用于多轮问答 。

LLM与知识图谱推理 

LLM在许多下游任务中表现出色,但存在幻觉、缺乏解释性和新知识等问题 。KG包含准确的结构化知识且可解释,但通常不完整且缺乏语言理解能力 。将两者结合可以构建既准确又可解释的模型 。结合方式主要有三种:

知识图谱增强LLM (Knowledge graph enhances LLMs): LLM作为推理过程的一个组件,KG用于提升LLM性能 。例如QA-GNN结合LLM和KG回答多项选择题,利用预训练语言模型计算每个实体与当前问题的相关概率,并连接问题文本和KG形成联合图共同更新表示 。GreaseLM通过合并层融合LM与GNN 。另一种方法是检索增强生成(RAG),从外部源检索知识帮助LLM生成答案,如KG-GPT利用LLM分解句子并查找子答案,REPLUG将检索组件作为可调即插即用模块 。GraphRAG先用LLM从源文档构建实体KG,然后为紧密相关的实体组预生成社区摘要,最后汇总部分响应生成最终答案,以解决LLM难以回答需要全局信息的文本区域的问题 。

LLM增强知识图谱推理 (LLMs enhances knowledge graph reasoning): LLM扮演将输入问题转换为KG搜索和推理的机器可理解命令的角色,但不直接参与图推理过程 。其成功严重依赖KG的完整性和高质量 。近期尝试通过将LLM视为在KG上遍历并基于路径执行推理的智能体来缓解KG不完整性问题,如Think-on-Graph 。

LLM与知识图谱推理互助 (LLMs and knowledge graph reasoning mutually help each other): 使两者相互促进 。例如,KEPLER模型可以同时解决两个问题:从KG学习的嵌入可以提高预训练语言模型的性能,而KG中每个节点的文本描述信息可以用于学习节点嵌入,预训练语言模型的强大能力有助于学习嵌入 。[77]中提出使用图注意力网络为语言建模提供结构感知的实体嵌入,语言模块产生上下文表示作为KG实体和关系的初始嵌入,然后GNN更新节点和关系嵌入,学习到的KG嵌入再作为语言模型的输入 。


总结

综述1它深入探讨了三个主要的KG推理任务:知识图谱补全复杂查询回答,以及逻辑规则学习 。 针对每一个任务,综述都细致地讨论了三种不同类别的方法:纯符号方法、纯神经方法,以及神经符号(即神经网络与符号推理方法的集成)方法。仔细分析和比较了每类方法的优势和局限性,侧重于围绕具体的推理任务

综述2从不同的查询类型视角进行组织和阐述 。回顾了针对单跳查询、复杂逻辑查询和自然语言查询的推理方法,还特别关注了知识图谱推理与大型语言模型(LLMs)的融合 ,侧重于从不同的查询类型。

这两篇专门针对KG的综述都深入探讨了在知识图谱背景下,如何利用符号逻辑、神经网络以及两者的结合(神经符号方法)来进行推理。都介绍了各自关注的KG任务(如KG补全、复杂查询回答、规则学习、自然语言问答)下具有代表性的技术方法。

那么在看完这五篇综述后,神经符号集成其实涉及到了三个重点,构成了该领域的主要挑战:

1. 一阶逻辑(或符号知识)的定义与获取

这是神经符号系统的起点。如何将领域知识、推理规则或问题结构有效地表示为符号形式(通常以一阶逻辑表达式为代表,但也包括其他符号结构)至关重要。

不同的综述和研究路径采用了不同的策略:规则学习:一些方法(ILP、关联规则挖掘,NLIL等神经符号方法)致力于从数据中自动学习或归纳出逻辑规则 ;决策树/程序合成:某些方法可能将学习到的决策树或合成的程序作为符号知识的一种形式;人工定义/领域知识注入:在很多情况下,特别是早期或特定领域的应用中,逻辑规则或符号结构是由领域专家预先定义的 。例如传统符号推理就依赖于预定义的逻辑规则 。“为学习而推理”范式也常涉及将先验的符号知识(如规则)编码到模型中 ;从自然语言/数据中提取:结合LLM或从文本、多模态数据中提取结构化知识或符号表示也是一个重要方向 。

挑战:如何高效、准确地获取这些符号知识,并确保其质量和覆盖度,是一个持续的挑战。自动学习的规则可能不完美或难以解释,而人工定义则耗时费力且难以扩展。

2. 符号知识的编码与表示学习 (从离散到连续)

在获取了一阶逻辑表达式后,下一个关键步骤是如何将其与神经网络的连续表示空间进行有效对接。

嵌入:将离散的符号(如实体、关系、谓词、规则)映射为低维、连续的向量嵌入(embeddings)是一种非常普遍的做法 ,使得神经网络能够处理和学习这些符号信息。

编码方法:直接嵌入:如各类知识图谱嵌入方法 ;神经网络作为编码器/转换器:一些方法使用特定的神经网络结构(如GNN、RNN、Transformer)来学习符号的表示,或者将符号规则/结构编译或转换为神经网络可以处理的形式。“为推理而学习”中提到神经网络从数据中抽象或提取符号 ,或者中间表示的转换 ;变分自编码器 (VAE) 等生成模型:某些方法可能使用VAE等技术来学习符号知识的潜在连续表示。

挑战:如何设计编码方式能够最大程度地保留原始符号知识的逻辑结构和语义信息,同时又适合神经网络的学习,这是一个核心问题。表示的“可读性”和“保真度”是关键。

3. 符号逻辑表示(Embedding)如何指导和影响模型

一旦符号知识被编码为连续表示(如embedding),接下来的核心就是这些表示如何在统一的神经符号框架下指导模型的学习、推理和决策过程,不同的集成范式或者不同的下游任务都会有所不同,

集成范式:

综述1的三大集成范式清晰地阐述了不同的指导方式 :

为推理而学习 (Learning for reasoning):神经网络学习到的表示(符号的嵌入或特征)被送入符号推理器,或者神经网络直接用于加速符号推理过程 。符号表示在这里是推理的基础或优化的对象。

为学习而推理 (Reasoning for learning):符号知识(可能已被编码为连续形式,如规则的软约束)被用来指导或约束神经网络的学习过程 。例如,将逻辑规则作为损失函数的一部分(综述1中的SBR/SL ,综述3提及的语义损失 ),或者通过知识迁移(如KG1中讨论的符号增强的表示学习 )。

学习-推理 (Learning-reasoning):神经网络和符号组件之间存在更紧密的双向互动和迭代影响 。符号表示和神经表示可能交替生成和使用,相互精炼。

针对特定任务的策略:

知识图谱 (KG) 任务 :

在链接预测中,实体和关系的嵌入被用来评分三元组的合理性 。

在复杂查询回答中,查询结构可能被嵌入,并通过在嵌入空间中执行逻辑操作(如投影、交集)来找到答案 。

在规则学习中,可微ILP等方法在学习规则的同时学习符号的嵌入表示,或者将规则的置信度与嵌入结合(如Neural-LP) 。

提升可解释性:

即使符号被编码为embedding,如果其使用方式(决策逻辑)是显式的,或者系统能够生成基于这些符号的显式中间表示(如可读规则),那么依然可以提升可解释性 。例如,LNN通过将神经元直接映射到逻辑命题,使得其连续的激活值具有明确的逻辑真值含义,从而实现了高度的可解释性 。

挑战:如何确保符号表示在指导模型时不会丢失其原有的逻辑含义?如何平衡神经网络的灵活性与符号逻辑的严格性?如何在连续空间中有效、可信地执行逻辑操作?这些都是不同方法试图解决的问题。

相关文章:

针对KG的神经符号集成综述 两篇

帖子最后有五篇综述的总结。 综述1 24年TKDD 系统性地概述了神经符号知识图谱推理领域的进展、技术和挑战。首先介绍了知识图谱(KGs)和符号逻辑的基本概念,知识图谱被视为表示、存储和有效管理知识的关键工具,它将现实世界的知识…...

RabbitMQ和MQTT区别与应用

RabbitMQ与MQTT深度解析:协议、代理、差异与应用场景 I. 引言 消息队列与物联网通信的重要性 在现代分布式系统和物联网(IoT)生态中,高效、可靠的通信机制是构建稳健、可扩展应用的核心。消息队列(Message Queues&am…...

Vue跨层级通信

下面,我们来系统的梳理关于 Vue跨层级通信 的基本知识点: 一、跨层级通信核心概念 1.1 什么是跨层级通信 跨层级通信是指在组件树中,祖先组件与后代组件(非直接父子关系)之间的数据传递和交互方式。这种通信模式避免了通过中间组件层层传递 props 的繁琐过程。 1.2 适用…...

docker常见命令行用法

🧨 一、关闭和清理 Docker 服务相关命令 🔻 docker-compose down 作用:关闭并删除所有使用当前 docker-compose.yml 启动的容器、网络、挂载卷(匿名的)、和依赖关系。 通俗解释:就像你关掉了一个 App&am…...

Axure设计案例:滑动拼图解锁

设计以直观易懂的操作方式为核心,只需通过简单的滑动动作,将拼图块精准移动至指定位置,即可完成解锁。这种操作模式既符合用户的日常操作习惯,在视觉呈现上,我们精心设计拼图图案,融入生动有趣的元素&#…...

MySQL权限详解

在MySQL中,权限管理是保障数据安全和合理使用的重要手段。MySQL提供了丰富的权限控制机制,允许管理员对不同用户授予不同级别的操作权限。本文将会对MySQL中的权限管理,以及内核如何实现权限控制进行介绍。 一、权限级别 MySQL 的权限是分层…...

基于BP神经网络的语音特征信号分类

基于BP神经网络的语音特征信号分类的MATLAB实现步骤: 1. 数据预处理 信号采样:读取语音信号并进行采样,确保信号具有统一的采样率。例如: [y, Fs] audioread(audio_file.wav); % 读取音频文件预加重:增强高频信号&am…...

解决fastadmin、uniapp打包上线H5项目路由冲突问题

FastAdmin 基于 ThinkPHP,默认采用 URL 路由模式(如 /index.php/module/controller/action),且前端资源通常部署在公共目录(如 public/)下。Uniapp 的历史模式需要将所有前端路由请求重定向到 index.html&a…...

web3-区块链的交互性以及编程的角度看待智能合约

web3-区块链的交互性以及编程的角度看待智能合约 跨链交互性 交互性 用户在某一区块链生态上拥有的资产和储备 ​ 目标:使用户能够把资产和储备移动到另一个区块链生态上 可组合性 使在某一区块链的DAPP能调用另一个区块链上的DAPP 如果全世界都在用以太坊就…...

数据结构(7)—— 二叉树(1)

目录 前言 一、 树概念及结构 1.1树的概念 1.2树的相关概念 1.3数的表示 1.二叉树表示 2.孩子兄弟表示法 3.动态数组存储 1.4树的实际应用 二、二叉树概念及结构 2.1概念 2.2特殊的二叉树 1.满二叉树 2. 完全二叉树 2.3二叉树的性质 2.4二叉树的存储结构 1.顺序存储 2.链式存储…...

ROS1和ROS2的区别autoware.ai和autoware.universe的区别

文章目录 前言一、ROS1和ROS2的区别一、ROS2通讯实时性比ROS1强二、ROS1官方不再维护了三、ROS2的可靠性比ros1强四、ROS2的安全性比ros1强五、ROS2资源占用低六、等等等等 二、autoware.ai和autoware.universe的区别一、autoware.ai不维护了二、autoware.universe功能多&#…...

如何使用 Docker 部署grafana和loki收集vllm日志?

环境: Ubuntu20.04 grafana loki 3.4.1 问题描述: 如何使用 Docker 部署grafana和loki收集vllm日志? 解决方案: 1.创建一个名为 loki 的目录。将 loki 设为当前工作目录: mkdir loki cd loki2.将以下命令复制并粘贴到您的命令行中,以将 loki-local-config.yaml …...

Kafka入门- 基础命令操作指南

基础命令 主题 参数含义–bootstrap-server连接的Broker主机名称以及端口号–topic操作的topic–create创建主题–delete删除主题–alter修改主题–list查看所有主题–describe查看主题的详细描述–partitions设置分区数–replication-factor设置分区副本–config更新系统默认…...

目标检测我来惹1 R-CNN

目标检测算法: 识别图像中有哪些物体和位置 目标检测算法原理: 记住算法的识别流程、解决问题用到的关键技术 目标检测算法分类: 两阶段:先区域推荐ROI,再目标分类 region proposalCNN提取分类的目标检测框架 RC…...

lua的笔记记录

类似python的eval和exec 可以伪装成其他格式的文件,比如.dll 希望在异常发生时,能够让其沉默,即异常捕获。而在 Lua 中实现异常捕获的话,需要使用函数 pcall,假设要执行一段 Lua 代码并捕获里面出现的所有错误&#xf…...

智能进化论:AI必须跨越的四大认知鸿沟

1. 智能缺口:AI进化中的四大认知鸿沟 1.1 理解物理世界:从像素到因果的跨越 想象一个AI看着一杯倒下的水,它能描述“水滴形状”却无法预测“桌面会湿”。这正是当前AI的典型困境——缺乏对物理世界的因果理解。主流模型依赖海量图像或视频数…...

L2-056 被n整除的n位数 - java

L2-056 被n整除的n位数 语言时间限制内存限制代码长度限制栈限制Java (javac)400 ms512 MB16KB8192 KBPython (python3)400 ms256 MB16KB8192 KB其他编译器400 ms64 MB16KB8192 KB 题目描述: “被 n n n 整除的 n n n 位数”是这样定义的:记这个 n n…...

传统足浴行业数字化转型:线上预约平台的技术架构与商业逻辑

上门按摩服务系统开发正成为行业新风口,这绝不是盲目跟风而是实实在在的市场趋势。随着现代人生活节奏加快,时间成本越来越高,传统到店消费模式已经无法满足消费者对便捷服务的需求。我们的团队深耕上门按摩系统开发领域五年,深刻…...

Java-IO流之字节输入流详解

Java-IO流之字节输入流详解 一、Java IO体系与字节输入流概述1.1 Java IO体系结构1.2 字节输入流的核心类层次1.3 字节输入流的基本工作模式 二、InputStream类的核心方法2.1 int read()2.2 int read(byte[] b)2.3 int read(byte[] b, int off, int len)2.4 long skip(long n)2…...

从OCR到Document Parsing,AI时代的非结构化数据处理发生了什么改变?

智能文档处理:非结构化数据提出的挑战 在这个时代的每一天,无论是个人处理账单,还是企业处理合同、保险单、发票、报告或成堆的简历,我们都深陷在海量的非结构化数据之中。这类数据不像整齐排列的数据库表格那样规整,…...

【C/C++】入门grpc的idl

文章目录 grpc idl 简单介绍1. 文件结构组织规范文件命名包结构:推荐:一个文件只定义一个 service,如果 service 很复杂,可拆分多个 proto 文件。 2. 消息定义规范命名风格字段编号:示例: 3. 服务与 RPC 设…...

【Java实用工具类】手撸SqlBuilder工具类,优雅拼接动态SQL,MyBatisPlus同款风格!

📌 正文: 有时候我们项目底层是 JdbcTemplate 查询,没法像 MyBatisPlus 一样用 Wrapper 拼接条件,但我们又不想手撸字符串。那怎么办?我今天就给你整了个 SqlBuilder 工具类,支持 eq、ne、like、in、gt、l…...

宇树科技更名“股份有限公司”深度解析:机器人企业IPO前奏与资本化路径

从技术落地到资本跃迁,拆解股改背后的上市逻辑与行业启示 核心事件:股改释放的上市信号 2025年5月28日,杭州宇树科技有限公司正式更名“杭州宇树科技股份有限公司”,市场主体类型变更为“股份有限公司”。尽管官方称为常规运营调…...

Inno Setup 安装向导各个页面详解

概览 表中描述了使用Inno Setup生成的安装包在安装过程中各个页面的字段和对应的说明信息。后文会对各个页面的参数做进一步解释说明。 字段说明wpWelcome欢迎页wpLicense许可协议wpPassword密码wpInfoBefore信息wpUserInfo用户信息wpSelectDir选择目标位置wpSelectComponent…...

转战web3远程工作的英语学习的路线规划

目录 一、明确学习目标与定位 二、基础阶段(0 - 6个月) (一)词汇积累 (二)语法学习 (三)听力与口语 三、进阶阶段(6 - 18个月) (一&#xf…...

OPENCV重点结构体Mat的讲解

一、Opencv的作用 OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Pytho…...

Java 创建线程池的几种方式

在 Java 中创建线程池主要通过 java.util.concurrent 包下的 ExecutorService 接口及其实现类。以下是创建线程池的几种常见方式: ✅ 1. 使用 Executors 工具类(最简单) ExecutorService executor Executors.newFixedThreadPool(10);常用方…...

【趣味Html】第11课:动态闪烁发光粒子五角星

打造炫酷的动态闪烁发光粒子五角星效果 前言 在现代Web开发中,视觉效果的重要性不言而喻。今天我们将深入探讨如何使用HTML5 Canvas和JavaScript创建一个令人惊艳的动态闪烁发光粒子五角星效果。这个项目不仅展示了Canvas的强大功能,还涉及了粒子系统、…...

AnyIO Event:异步编程中的同步利器

在异步编程的世界里,任务之间的通信和协调是一个常见的需求。AnyIO 提供的 Event 类,为这一需求提供了一个强大而简洁的解决方案。本文将深入探讨 anyio.Event 的使用方法、特点以及在实际应用中的最佳实践。 一、AnyIO Event 概述 anyio.Event 是 Any…...

CFTel:一种基于云雾自动化的鲁棒且可扩展的远程机器人架构

中文标题: CFTel:一种基于云雾自动化的鲁棒且可扩展的远程机器人架构 英文标题: CFTel: A Practical Architecture for Robust and Scalable Telerobotics with Cloud-Fog Automation 作者信息 Thien Tran, Jonathan Kua, Minh Tran, Hongh…...