Exploring Defeasible Reasoning in Large Language Models: A Chain-of-Thought A

文章目录

    • 题目
    • 摘要
    • 简介
    • 准备工作
    • 数据集生成
    • 方法
    • 实验
    • 结论

题目

探索大型语言模型中的可废止推理:思路链

在这里插入图片描述

论文地址:http://collegepublications.co.uk/downloads/LNGAI00004.pdf#page=136

摘要

    许多大型语言模型 (LLM) 经过大量高质量数据语料库的训练,在各种任务中都表现出强大的推理能力,即使是零样本推理也是如此。现有研究表明,LLM 可以在形式逻辑(例如一阶逻辑)中执行推理步骤。然而,在处理不一致和不完整的知识时,LLM 是否具有可推广的可废止推理能力仍不清楚。在本研究中,我们旨在研究大型语言模型的可废止推理能力,特别是在形式可废止逻辑框架内。具体来说,我们选择流行的可废止逻辑框架 DeLP 作为评估 LLM 可废止逻辑推理能力的基础。我们最初创建一个合成数据集,其中包含涵盖各种具有不同推理深度的程序的逻辑程序。为了解决推理过程中遇到的挑战,我们引入了一个思路链 (CoT) 框架,促使 LLM 进行多步骤可废止推理,从而提高解决问题的性能。采用这种论证解决方法,我们观察到 LLM 难以有效地管理可废止信息。这些令人惊讶的发现引发了人们对当代 LLM 是否具有与人类智能相当的推理能力的质疑。

关键词:可废止推理,大型语言模型

简介

    大型语言模型 (LLM) 的最新进展显著提高了它们处理复杂推理挑战的能力,凸显了它们在众多领域的多功能性。现有模型已在各种推理任务中展现出新兴能力。值得注意的是,这些能力通常以零样本方式展示,而无需对特定任务进行进一步训练,这可以通过高级提示技术引出。提示工程旨在很好地表述问题并指导 LLM 将复杂任务分解为简单步骤并逐步进行推理。常识推理任务通常以软推理的形式来表述:在某些上下文中什么是可能或合理的,而不是什么必然为真。这种推理模式被称为可废止推理,其中 LLM 不会被完全揭示和评估。例如,“如果大楼发生火灾,警报就会响起”这一蕴含会被新的信息削弱,即“警报响起是因为有人在厨房里烤焦了面包”。可废止推理是构建通用智能系统的重要组成部分,并受到了业界越来越多的关注。在常见且复杂的可废止推理任务中,底层推理过程相当复杂,通常用形式逻辑系统来描述,LLM 相对难以捕捉。现有研究表明,LLM 能够基于一小组上下文示例进行演绎步骤,但在形式推理方面的表现相对较差。此外,以前的大多数研究都集中在命题逻辑或一阶逻辑的推理上,在需要处理矛盾信息的非单调推理中,预测性能会变得更差。虽然以前人们忽视了形式可废止推理能力,但我们认为应该对其进行充分和独立的评估。

    在本文中,我们旨在开发一个思路链(CoT)框架,以增强LLM在可废止逻辑推理方面的能力,并对形式语言进行全面的评估。具体来说,我们选择流行的可废止逻辑编程(DeLP)作为评估和分析的基础,因为它具有很高的代表性。DeLP提供了一个计算推理框架,它使用一个论证引擎从由可废止规则扩展的逻辑编程语言描述的知识库中得出答案。我们首先创建一个由合成程序数据和随机查询组成的基准。这个基准包括不同的推理深度,以涵盖不同的难度级别。然后,我们提出了一种多步骤推理方法,该方法可以捕捉解决授权的过程,其中包括信息提取和复杂的论证推理过程。使用标准 DeLP 求解器来促进推理过程的继续。

    该框架指导并指示 LLM 进行论证和可废止推理,其中 DeLP 求解器可以提供可能的外部帮助。在评估中,我们报告了不同模型在此基准上的表现。我们观察到大多数模型都难以处理可废止信息,这对当代 LLM 的可废止推理能力提出了质疑。借助形式语言,我们可以准确地追溯可能的错误并识别性能差距。

准备工作

    形式上,DeLP 语言由三个独立的组组成:一组事实、一组严格规则和一组可废止规则。事实(文字)是基本原子 A 或否定基本原子 ∼A,其中“∼”代表强否定。严格规则表示牢固的知识,表示为 Head ← Body,其中 Head 是文字,Body 是有限的非空文字集,就像在一阶逻辑中一样。从实用角度来说,可废止规则用于表示可废止的知识,即暂定信息,如果没有任何东西可以反对它,则可以使用它。例如,“一只鸟通常会飞”表示为“飞 –< 鸟”。形式上,“ –< ”替换“←”是可废止规则与严格规则的唯一区别。

    定义 2.1 [可废止逻辑程序] 可废止逻辑程序 P 是一个可能无限的事实、严格规则和可废止规则的集合。在程序 P 中,Π 表示由所有事实和严格规则组成的子集,∆ 表示可废止规则集。我们将 P 表示为一个元组 (Π, ∆)。
在本文中,我们使用 DeLP 中的以下 tweety 示例(表示为 P1)来说明我们的方法。

程序 1:Tweety 示例

% Facts
bird ( opus ).
penguin ( tweety ) .
wings ( tweety ).
% Strict Rules
bird (X) <- penguin (X ).
% Defeasible Rules
fly (X) -< bird (X ).
~ fly (X ) -< penguin (X ).

    一个文字 L 的推导是导致 L 的有限基本文字序列。在 DeLP 中,我们通过推导中是否使用可废止规则来区分严格和可废止推导。在 P1 中,在这里插入图片描述是通过严格规则 bird(X) ← penguin(X) 进行的严格推导,而在这里插入图片描述是一个使用可废止规则 ∼fly(X) –< penguin(X) 的可废止推导。

    定义 2.2 [论证结构] 假设 h 为文字,P = (Π, ∆) 为 DeLP 程序。如果 A 是 ∆ 的可废止规则集,并且满足以下条件,则我们称 ⟨A, h⟩ 为 h 的论证结构: - 存在从 Π ∪ A 到 h 的可废止推导 - 集合 Π ∪ A 不矛盾,并且 - A 是最小的:不存在 A 的适当子集 A′ 使得 A′ 满足先前的条件。

    定义 2.3 [反驳] 假设 P = (Π, ∆) 为 DeLP 程序。我们说 ⟨A1, h1⟩ 反驳 ⟨A2, h2⟩,当且仅当存在 ⟨A2, h2⟩ 的子论证 ⟨A, h⟩ 使得 Π ∪ {h, h1} 是矛盾的。

    直观地说,论证是用于得出结论的一组最小规则。在 P1 中,文字 fly(tweety) 由以下论证结构支持:在这里插入图片描述而 ∼fly(tweety) 有以下参数支持它:在这里插入图片描述由于 fly(tweety) 和 ∼fly(tweety) 相互矛盾,论据 1 和论据 2 互为反论据。

    给定一个论据结构 ⟨A1, h1⟩ 和一个针对 ⟨A1, h1⟩ 的反论据 ⟨A2, h2⟩,可以通过特异性比较这两个论据以决定哪一个更好。[7] 中定义的特异性有利于论据中的两个方面:它倾向于 (1) 信息内容更多的论据或 (2) 使用规则较少的论据。换句话说,如果一个论据更精确或更简洁,则它比另一个论据更可取。在 tweety 示例中,论据 2 比论据 1 更好,因为它更“直接”。在 DeLP 中,当 q 有一个合理的论据 Aq 时,查询 q 将会成功。对一个论证是否成立的判断是通过一个论证方案获得的,这在某种程度上是复杂的,并且涉及对辩证树的分析。

    定义2.4 [查询答案] 查询h有四个可能的答案:

  • YES,如果h是成立的;
  • NO,如果h的补集是成立的;
  • UNDECIDED,如果h和∼h都是不成立的;
  • UNKNOWN,如果h不是程序的语言。

    在P1中,查询fly(tweety)的答案是NO。为了便于展示,我们在本部分中省略了一些详细介绍。有关DeLP求解过程的更多定义和详细信息,请参阅[7]。

数据集生成

    为了研究LLM模拟基于规则的推理的能力,我们采用与[5]类似的策略来生成具有不同实体数量和规则数量的数据集,代表不同的难度级别。数据集中的每个示例都是一个三元组 (P, Q, A),其中 P 是有效的 DeLP 程序,Q 是查询语句,A 是标准答案。在这项工作中,为简单起见,在我们的数据集中,查询只有一个可能的派生,因此辩证树的根是相关的参数。出于这种简单性,如果没有击败者或其所有击败者都被其他参数击败,则参数 ⟨A, h⟩ 是合理的。程序生成为了生成每个示例,我们首先在 DeLP 中生成一个小理论(事实 + 规则),使用求解器解决程序中的每个文字,然后从这些文字中选择查询语句。此外,答案未知的问题是随机从程序外部选择的。有四个基本元素构建一个DeLP程序:实体、变量、属性和谓词。数据样本如图1所示。

    在这项工作中,变量集包含一个唯一的符号X。所有谓词都是一元的,可以解释为“ei is aj”,其中ei是一个实体或X,aj是一个属性,例如“Charlie is kind”是图1中的第一个事实。事实是通过从预定义集合中抽取属性和实体随机生成的,该集合总共包含3个实体和8个属性。规则在该变量上隐式地被普遍量化。例如,图1中第一条规则的形式形式表示“如果某人善良而冷漠,那么他们就不是红色的”。每个理论包含1-16个事实、1-5条严格规则和1-10条随机生成的可废止规则。在数据生成过程中,求解器还会检查程序的有效性(Π不矛盾)。为了进行综合评估,平衡了不同的深度和不同的答案。

    程序求解 我们采用 Tweety 项目中引入的改进的 DeLP 求解器作为解决问题的标准求解器。给定一个随机生成的程序,我们枚举程序中所有可能的文字作为查询,记录它们的最终答案。由于域是有限的,程序中的文字数量也是有限的。在求解之前,我们确保规则库是无歧义和非循环的。在推理过程中,为目标数据集注释辩证树的深度,例如,对于 D = 2 的数据集,辩证树的深度为 2。

    数据集统计 我们生成四个数据集,每个数据集分别受辩证树深度约束:D = 0、D = 1、D = 2、D ≥ 3。深度 D = 0 表示问题是简单的一阶逻辑子问题,即证明时不需要可废止规则。数据集D1表明推理使用了可废止规则,但没有发现矛盾。这两个数据集相对容易,只需要一阶逻辑推理能力即可解决。为了解决数据集D2中的问题,LLM必须按照说明进行可废止推理。D≥3中的问题更为复杂,涉及递归和情境判断。生成的问题数量列于表1中。我们将Di表示为四个子数据集,下标i表示深度。

在这里插入图片描述
DeLP 问题样本。

方法

    在本节中,我们主要介绍我们的思路链框架来解决DeLP问题。整个流程如图2所示,主要包括两个阶段。在第一阶段,LLM从原始问题中提取一些关键结果,其中包含解决问题的充分和必要信息。第二阶段是论证过程,递归地寻找特定论证的反驳者。为了了解LLM是否能遵循每个推理步骤中的指令,我们使用标准逻辑求解器进行评估,以自动评分。由于形式语言的性质要求推理步骤具体而严谨,因此我们要求LLM在求解过程中返回一个json对象。json对象中的术语是预定义的,显示每个步骤的关键线索,以指导LLM进行推理。我们还在提示中提供了预期的json格式的示例,以促进上下文学习。

    提取信息对于每个数据样本,第一步是收集解决问题所需的所有信息。如第3节所述,生成的DeLP程序仅包含一个变量。因此,我们可以将规则与查询实体联系起来,并丢弃所有其他不相关的实体。在此步骤中,我们要求LLM找到查询实体及其补集,提取严格的规则和可废止的规则。解决闭包逻辑推理问题需要利用可用信息来推断解决查询所必需的新知识。为了识别不一致的DeLP程序,我们首先需要收集一些必要的信息,以帮助我们理解问题。

在这里插入图片描述

提出了解决 DeLP 问题的 CoT 框架。

    为了找出可废止结论之间的相似性,我们让LLM解决程序的闭包。这个闭包由两个部分组成:严格事实和可废止事实。事实类型取决于它的推导是否涉及可废止规则,即可废止事实表明其对应的推导是可废止的。我们为LLM提供指令,以辨别这两类事实并推导它们。提示模板类似于用于提取信息的模板。在获得闭包之后,如果查询(或其补集)存在于严格事实集合中,或者不存在于任何集合中,我们可以用YES/NO或UNKNOWN来结束问题。如果问题尚未解决,所有得到的结果将被存储在内存中以供后续的论证过程使用。

    论证过程 在以json格式收集问题信息后,我们的重点转移到寻找查询参数(或其补集)的可能依据,这是DeLP计算算法的核心。最复杂的方面涉及分析辩证树,这需要递归地检测论证的反驳。采用分而治之的策略,我们将整个过程分为三个部分:进行推导、检测反驳和标记节点,如图 2 所示。这些较小的子任务对于 LLM 来说更易于管理,有助于使推理过程更适用于复杂问题。在每个论证步骤之后,我们通过将查询论证指定为反驳来递归地启动此过程。在每个推理步骤中,LLM 仅根据提取的信息执行当前任务,而无需访问原始程序。这种方法确保了因果推理并减少了模型幻觉。此外,它还增强了响应的可解释性,便于轻松识别和纠正潜在错误。最后,在递归终止后,对辩证树进行标签标记以获得答案。

实验

    在本节中,我们报告了 LLM 在各种 DeLP 问题上的性能并分析了性能差距。此外,我们还对具体的失败实例进行了详细的案例研究。实验设置实施细节。我们采用了几种高级语言模型,即 GPT-3.5-Turbo API 模型、GPT-4-Turbo API 模型和两个开源 Llama-3 模型(8B-Instruct 和 70B-Instruct),进行了一系列实验。选择这些模型是因为它们在处理复杂语言任务方面具有强大的性能特征和多功能性。

在这里插入图片描述
每个子数据集上解决的问题数量。

    为了严格测试这些 LLM 进行多步推理的能力,我们使用了一个特定的系统消息提示:“让我们一步一步解决一个由 JSON 对象描述的 DeLP 问题。”这个提示旨在模拟一种需要模型进行顺序决策和解决问题的场景,反映了现实世界的应用。对于响应的格式,JSON 格式可以确保输出统一组织且易于解释,从而有助于后续分析模型的推理过程。问题评分。对于评估指标,仅仅检查最终答案是不够的。在这个可废止推理任务中,我们对每个推理步骤获得的每个结果进行估值,包括信息提取、解决闭包、进行推导和检测废止者。在这种设置中,LLM 可以在评分评估期间访问前面步骤的真实结果。具体来说,我们的方法采用了分数累积策略,计算这些步骤的分数。在每个步骤之后,求解器将结果与标准答案进行比较,并为正确性分配 1 分,否则分配 0 分。因此,一个问题的总分会根据其难度而有所不同,推理越深入和步骤越多,总分就越高。这种评分方法是合理的,因为更复杂的问题自然应该得到更高的分数。

    由于大型语言模型的序列生成具有固有的随机性,我们进行了三次实验并报告了平均分数。在每次运行中,LLM 都可以得到中间答案是否正确的反馈,如果答案错误,LLM 可以重试回答。请注意,这里求解器只告诉模型答案是否正确。没有提供进一步的基本事实信息。默认情况下,我们将尝试次数设置为 3。此外,我们跟踪第一次运行中成功解决的问题数量,以显示 LLM 是否能够一致且准确地解决 DeLP 问题。

    主要结果,解决问题的数量。我们在表 2 中列举了每个子集中解决的问题数量。需要注意的是,每个子集包含 30 个问题,如第 3 节所述。鉴于我们的任务涉及多步骤推理,任何错误都可能导致问题解决失败。问题的难度严重影响性能。该表清楚地表明,随着难度等级的提高,解决的问题数量显著下降。所有模型在最简单的子集 D0 上都表现良好,表明它们一阶逻辑推理能力。然而,对于更复杂的子集(D1、D2、D≥3),性能明显下降,在 Llama 模型中尤为明显。在最复杂的任务中,所有模型都失败了,这表明 LLM 在形式可废止推理任务中遇到了很大困难,这表明这些模型远不适用于这样的情况。

    GPT-4-Turbo 模型在所有类别中的表现都优于其他模型,在 D1 和 D2 子集中解决了比同类模型多得多的问题。这种表现表明它在管理复杂推理任务方面具有卓越的能力。相反,Llama-3-8B 模型在解决任何超出最简单问题的问题时都表现出困难,这突显了其推理能力的潜在局限性或其训练数据的缺陷。分数。所采用的评分机制通过评估解决问题过程的每个步骤提供了更具信息量的指标。该方法减轻了多步推理中累积错误的影响,从而将评估重点放在单个推理步骤的有效性上,而不是整体的解决问题的能力上。这种方法也可以看作是一种消融研究,其中在每个推理步骤中系统地消除累积错误的影响。

在这里插入图片描述
对每个子数据集进行评分。

    表 3 列出了 LLM 获得的分数,其中列出了平均分数和获得的分数占总分数的百分比。首先,我们可以得到一个类似的结论,即在所有模型中,都有一个明显的趋势,即随着任务复杂性的增加,性能会下降。GPT-4Turbo 模型的表现始终优于其他模型,且优势显著。然而,虽然借助了逻辑解算器,但在数据集 D3 中的得分百分比仅达到 70.83%,表明其在形式可废止推理中的表现不佳,尤其是在论证过程中。即使在逻辑解算器的支持下,数据集 D≥3 中的较低性能也凸显了形式可废止推理的固有复杂性。可废止推理不仅涉及理解基本前提,还涉及有效处理现实世界中常见的不一致、反驳和压倒性原则。

    复杂数据集中的表现下降表明,当前的 LLM 虽然在一阶逻辑方面很强大,但仍可能难以处理可废止推理所需的论证的细微结构。这包括难以优先考虑冲突信息和根据事实动态调整结论新证据。此外,较大的模型通常在任务上表现更好,这表明较大的模型尺寸可能更适合复杂的推理任务,这可能是因为它们能够整合和处理更大量的信息和更细微的模式。对于以下研究和分析,我们以GPT-4-Turbo模型为代表,分析了示例和相应的性能,以证明其性能更好。

在这里插入图片描述
幻觉和推导错误的错误例子。

    案例研究和错误追踪前两个数据集的表2表明提取信息和解决闭包步骤相对准确。容易出错的复杂可废止推理步骤主要是得到推导和不一致性判断,对应于论证过程中的进行推导和检测废止者。为了追踪推理阶段可能出现的错误,我们让求解器指出任务中具体的错误步骤和错误。通过检查错误,我们总结出以下原因。幻觉。LLM经常生成或利用不存在的事实和规则,这种现象通常被称为“幻觉”。例如,如图 3 所示,第一个错误的推导包括一虚构的事实 white(Bob),它似乎受到实际事实 white(Anne) 的错误影响。这种类型的错误表明模型可能难以区分相似的实体并正确应用事实。

    此外,有迹象表明模型有时无法掌握基本操作,例如字符串替换和逻辑中的否定应用。继续使用图 3 中的示例,LLM 可能生成一个有根据的文字,如 blue(Bob) –< nice(Anne), cold(Bob) 或否定 ∼ blue(Bob) –< nice(Bob), cold(Bob)。这些错误表明对逻辑构造的处理和逻辑否定的动态存在误解,而这些对于在逻辑框架内进行准确的推理和解释至关重要。这种幻觉不仅破坏了模型输出的可靠性,而且在事实准确性至关重要的应用中也带来了重大挑战。

    推导错误。该模型在生成推导序列时也会出错,尤其是较长的序列。我们观察到,在超过五步的推导中,错误变得更加普遍,这种现象类似于 [8] 中讨论的 FOL 中遇到的问题。尽管指示使用形式语言将推导构建为连贯的链,但该模型有时会犯一些基本错误,例如解析错误和忽略规则的前提。图 3 显示了另一个值得注意的例子,其中 LLM 试图通过反证法来证明,这是 DeLP 框架中不允许的方法。这种推理策略的错误应用凸显了模型对其所运行的逻辑系统所特有的规则和约束的理解存在一个更深层次的问题。

    错误跟踪不一致。尽管提示中明确指出可废止事实可能会发生冲突,但模型通常会选择两个互补文字中的一个作为可废止事实。这种行为表明 LLM 在可废止推理方面存在困难,这需要管理不一致和不完整的信息。处理这种复杂性的能力对于从事涉及细微逻辑推理任务的模型至关重要,因为在这些任务中,事实可能会被更有说服力的证据推翻或反驳。此外,另一个重要的观察结果是,LLM 有时无法识别所有相关的论据和反论据对。这一限制表明模型完全理解 DeLP 问题中的所有论据的能力存在一个基本问题。

结论

    在本文中,我们使用 DeLP 框架研究了大型语言模型的形式可废止推理能力。我们的方法包括创建一个具有不同推理深度的合成数据集来挑战 LLM,并且我们引入了一种思路链方法来增强它们的多步骤推理过程。尽管做出了这些努力,但我们的实验表明,LLM 在管理可废止信息方面仍举步维艰,凸显了它们在有效处理不一致和不完整知识方面的能力存在重大限制。这凸显了当前 LLM 的推理能力与人类水平的智能相比存在差距,表明需要进一步研究和开发这一领域。实验分析加深了对 LLM 在形式逻辑推理方面的能力的理解,并为人工智能研究这一关键领域的进一步发展奠定了基础。

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

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

相关文章

山寨一个Catch2的SECTION

Catch2 是一个 C 单元测试库&#xff0c;吹嘘自己比 NUnit 和 xUnit 还要高明&#xff0c; 支持在 TEST_CASE() 中的多个 SECTION&#xff0c; 意思是说 SECTION 外头的代码相当于setup 和 teardown&#xff0c;section 内部则被认为是实际的 test case&#xff0c; 这种写法可…

TensorFlow_T7 咖啡豆识别

目录 一、前言 二、前期准备 1、设置GPU 2、导入数据 3、查看数据图片 三、数据预处理 1、加载数据 2、可视化数据 3、配置数据集 四、构建VGG-16网络 1、VGG优缺点分析 2、自建模型 3、网络结构图 五、编译 六、 训练模型 一、前言 &#x1f368; 本文为&#…

平替备用机!不到 5 元的 410 随身 WiFi 免刷机实现短信转发

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 各位用备用机的&#xff0c;应该有很多只是插上不常用的手机卡&#xff0c;然后装个短信转发的 App 来看看验证码什么的吧。每隔一段时间还要去看看备用机还有没有电&#xff0c;但其实这种需求骁龙 410 芯…

【EmbeddedGUI】脏矩阵设计说明

脏矩阵设计说明 背景介绍 一般情况下&#xff0c;当屏幕内容绘制完毕后&#xff0c;实际应用通常需要更新屏幕中的一部分内容&#xff0c;而不是单纯显示一个静态图片在那。 如下图所示&#xff0c;屏幕中有一个图片控件&#xff08;Img2&#xff09;和一个文本控件&#xf…

网络基础-超文本协议与内外网划分(超长版)

一、超文本协议 1. HTTP协议简介 1.1. 网络架构简单介绍 (1). C/S架构&#xff08;Client/Server架构&#xff09; (2). B/S架构&#xff08;Browser/Server&#xff09; 总结对比 2. HTTP协议版本 2.1. HTTP/0.9 &#xff08;1991年发布&#xff09; 2.2. HTTP/1.0 &a…

5分钟搞懂 Golang 堆内存

本文主要解释了堆内存的概念&#xff0c;介绍了 Linux 堆内存的工作原理&#xff0c;以及 Golang 如何管理堆内存。原文: Understanding Heap Memory in Linux with Go 你想过为什么堆内存被称为 "堆" 吗&#xff1f;想象一下杂乱堆放的对象&#xff0c;与此类似&…

今日 AI 简报 | 开源 RAG 文本分块库、AI代理自动化软件开发框架、多模态统一生成框架、在线图像背景移除等

❤️ 如果你也关注大模型与 AI 的发展现状&#xff0c;且对大模型应用开发非常感兴趣&#xff0c;我会快速跟你分享最新的感兴趣的 AI 应用和热点信息&#xff0c;也会不定期分享自己的想法和开源实例&#xff0c;欢迎关注我哦&#xff01; &#x1f966; 微信公众号&#xff…

【C++学习(35)】在Linux中基于ucontext实现C++实现协程(Coroutine),基于C++20的co_await 协程的关键字实现协程

文章目录 为什么使用协程协程的理解协程优势协程的原语操作yield 与 resume 是一个switch操作&#xff08;三种实现方式&#xff09;&#xff1a; 基于 ucontext 的协程基于 XFiber 库的操作1 包装上下文2 XFiber 上下文调度器2.1 CreateFiber2.2 Dispatch 基于C20的co_return …

技术段子——论如何在0.387秒以内获取到闲鱼的上新数据。

个人一直在做闲鱼辅助相关的工具类软件。因为知道阿里系请求和风控的原因&#xff0c;再加个人做软件一直想的是如何让用户稳定运行。 因为阿里系对于请求的风控&#xff0c;所以个人风格导到软件效率一直一般。并不是做不到快速抓取&#xff0c;而是用效率换稳定。 所以&#…

【C#设计模式(10)——装饰器模式(Decorator Pattern)】

前言 装饰器模式可以在运行时为对象添加额外的功&#xff0c;而无需修改原始对象的代码。这种方式比继承更加灵活。 代码 //蛋糕类&#xff08;抽象类&#xff09; public abstract class Cake {public abstract void Create(); } //奶油蛋糕类 public class CreamCake : Cak…

2025年PMP考试安排是怎样?备考计划与重要时间节点公布

PMP考试在中国大陆每年举行四次&#xff0c;分别是在3月、6月、9月和12月。而中国港澳台地区的PMP考试则可以每天进行机考。在中国大陆地区的笔试考试中&#xff0c;主要采用涂卡和机读卡来记录成绩。 每次PMP考试的时间都是在周六的9点到12点50分&#xff0c;共计230分钟。 P…

缓冲式线程池C++简易实现

前言 : 代码也比较短&#xff0c;简单说一下代码结构&#xff0c;是这样的&#xff1a; SyncQueue.hpp封装了一个大小为MaxTaskCount的同步队列&#xff0c;这是一个模板类&#xff0c;它在线程池中承担了存放任务等待线程组中的线程来执行的角色。最底层是std::list<T>…

推荐一款功能强大的光学识别OCR软件:Readiris Dyslexic

Readiris Dyslexic是一款功能强大的光学识别OCR软件&#xff0c;可以扫描任何纸质文档并将其转换为完全可编辑的数字文件(Word&#xff0c;Excel&#xff0c;PDF)&#xff0c;然后用你喜欢的编辑器进行编辑。该软件提供了一种轻松创建&#xff0c;修改和签名PDF的完整解决方法&…

【面试全纪实 | Nginx 04】请回答,你真的精通Nginx吗?

&#x1f5fa;️博客地图 &#x1f4cd;1、location的作用是什么&#xff1f; &#x1f4cd;2、你知道漏桶流算法和令牌桶算法吗&#xff1f; &#x1f4cd;3、Nginx限流怎么做的&#xff1f; &#x1f4cd;4、为什么要做动静分离&#xff1f; &#x1f4cd;5、Nginx怎么做…

如何为你的 SaaS 公司做好国际化发展的准备?

随着 SaaS&#xff08;软件即服务&#xff09;公司的不断发展&#xff0c;确定扩张机会并建立可扩展的流程和策略以支持这些机会变得至关重要。一些公司向上游市场扩张&#xff0c;向企业销售产品&#xff0c;而此前他们主要面向中小企业。一些公司则朝着相反的方向发展&#x…

Towards Reasoning in Large Language Models: A Survey

文章目录 题目摘要引言什么是推理?走向大型语言模型中的推理测量大型语言模型中的推理发现与启示反思、讨论和未来方向 为什么要推理?结论题目 大型语言模型中的推理:一项调查 论文地址:https://arxiv.org/abs/2212.10403 项目地址: https://github.com/jeffhj/LM-reason…

推荐一款硬盘数据清除工具:Macrorit Data Wiper

Macrorit Data Wiper是一款硬盘数据清除工具&#xff0c;用于安全擦除数据、分区和磁盘的一站式工具包。完全擦除系统/引导分区。许多程序文件默认存储在系统磁盘驱动器中。如果您或您的组织想要永久擦除磁盘驱动器以防止未经授权使用您的数据&#xff0c;则此功能是必要的。 为…

第13章 Zabbix分布式监控企业实战

企业服务器对用户提供服务,作为运维工程师最重要的事情就是保证该网站正常稳定的运行,需要实时监控网站、服务器的运行状态,并且有故障及时去处理。 监控网站无需人工时刻去访问WEB网站或者登陆服务器去检查,可以借助开源监控软件例如Zabbix、Cacti、Nagios、Ganglia等来实…

2024IJCAI | MetalISP: 仅用1M参数的RAW到RGB高效映射模型

文章标题是&#xff1a;《MetaISP:Effcient RAW-to-sRGB Mappings with Merely 1M Parameters》 MetaISP收录于2024IJCAI&#xff0c;是新加坡国立大学&#xff08;Xinchao Wang为通讯作者&#xff09;和华为联合研发的新型ai-isp。 原文链接&#xff1a;MetaISP 【1】论文的…

使用 ts-node 运行 ts文件,启动 nodejs项目

最近在写一个nodejs项目&#xff0c;使用 ts-node 启动项目。遇到了一些问题&#xff0c;在此记录一下。 ts-node 是 TypeScript 执行引擎和 Node.js 的 REPL(一个简单的交互式的编程环境)。 它能够直接在 Node.js 上执行 TypeScript&#xff0c;而无需预编译。 这是通过挂接…