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

Branch-Solve-Merge Improves Large Language Model Evaluation and Generation

题目

分支-求解-合并改进了大型语言模型的评估和生成

在这里插入图片描述

摘要

    大型语言模型(LLM)经常用于多方面的语言生成和评估任务,这些任务涉及满足复杂的用户约束或考虑多个方面和标准。然而,由于模型缺乏一致性,无法计划和分解问题,他们的表现可能会有所欠缺。我们提出BRANCH-SOLVEMERGE (BSM),一个大型语言模型程序(Schlag等人,2023),用于处理这种具有挑战性的自然语言任务。它由分支、求解和合并模块组成,这些模块通过对基本LLM的特定提示进行参数化。这三个模块计划将任务分解成多个并行的子任务,独立地解决它们,并将解决方案融合到子任务中。我们将我们的方法应用于LLM响应评估和受限文本生成任务,并使用多个LLM评估其有效性,包括骆马、美洲驼-2-chat和GPT-4。BSM提高了每个LLM的评估正确性和一致性,将人-LLM一致性提高了26%,将长度和成对位置偏差减少了50%,并允许LLaMA2-chat在大多数领域与GPT-4相当或更好。在有约束的故事生成任务中,BSM提高了故事的连贯性,同时也提高了12%的约束满意度。

引言

    大型语言模型(LLM)广泛用于各种文本生成任务(拉德福德等,2019;布朗等人,2020;OpenAI,2023bChowdhery等人,2022;Touvron等人,2023年)。为了评估、评论和改进结果,雇用他们作为这些LLM世代的评估者也变得很普遍(郑等人,2023;白等,2022b)。然而,LLM仍然要努力完成具有复杂需求的任务,比如满足一组约束或满足通常是多维的(例如,根据某些不同的标准评估生成的文本的质量)。这似乎主要源于模型缺乏自洽性和无法规划(姚等,2023b布贝克等人,2023)。最近的研究试图通过开发涉及启发推理、规划和细化的迭代方法来减轻这些限制,但迄今为止,它们仍被认为是开放的问题(白等人,2022bMadaan等人,2023;甘古利等人,2023;姚等,2023c陈等,2023;李等,2023;黄等,2023)。

在这里插入图片描述
图1:使用LLaMA-2-70B-chat对LLM响应进行成对评估的BRANCH-SOLVE-MERGE示例。给定一个问题和两个LLM答案A和B,BSM产生一个偏好判断。分支模块以问题为条件来生成特定于问题的评估计划,在这种情况下,该评估计划包括不同的标准,如与夏威夷旅行主题的“相关性”、“清晰度”等。“求解”模块独立评估每个标准(分支)的响应对,而“合并”模块将各个判断组合起来,以生成最终结论,在这种情况下,B是更好的响应。

    在这项工作中,我们提出了分支-求解合并(BSM),一种解决这种多方面的自然语言任务的分解方法。我们的方法是一个大型语言模型程序的实例(Schlag等人,2023;Dohan等人,2022年),由三个模块组成:分支、求解和合并,这些模块通过对底层LLM的特定提示进行参数化。给定一个任意的用户任务,“分支”模块通过将该任务分解成多个并行的子任务来生成解决方案,其中每个子任务由一个唯一的分支来表示,该分支表示解决整个问题所需的不同组件。“解决”模块然后解决这些独立的子问题。最后,“合并”模块融合这些子问题的解决方案,以生成整体解决方案。我们将我们的方法应用于两个具有挑战性的任务,在这两个任务中,LLM通常被使用,但它们的性能仍然落后于人类:LLM输出的评估(郑等人,2023)。LLM现在通常用于执行模型响应的自动评估,例如对用户查询的自动评估(Dubois等人,2023)。

    从整体上评估逻辑线性模型具有挑战性,因为它们能够对任意用户问题生成长形式的答案(郑等,2023),缺乏可靠性源于许多偏见(郑等,2023;吴和阿吉,2023;Wang等人,2023b),以及对手工设计的evalua的依赖影响方法推广的选项计划,引入非故意的人为偏差(刘等,2023;吴和阿吉,2023)。每个分支机构都可以将BSM应用于这项任务,评估需要评估的不同方面和标准。*受约束的文本生成。现有的LLM在受限的文本生成任务上很吃力,例如,编写一个应该包括几个概念的故事的限制。模型通常要么违反约束,要么生成不连贯的文本以满足这些约束(Bubeck等人,2023;姚等,2023a)。BSM可以通过每个分支写故事的一部分来完成这个任务约束,然后是最终合并。

    我们将BSM应用于这两个问题,参见图1和图3,并评估其对不同大小和强度的多个开源和黑盒LLM的有效性,包括LLaMA-2-7Bchat (Touvron等人,2023年),Vicuna-33B (Chiang等人,2023年),LLaMA-2-70B-chat和GPT-4 (OpenAI,2023年b)。BSM显著改进了这两项任务,解决了LLM评估和生成的上述限制:BSM改进了LLM评估的正确性。特别地,在MT-Bench基准(郑等,2023)上,改进了用于评估属于不同领域(包括写作、编码、推理和数学)的多回合问题的LLMhuman协议。例如,与零触发提示和self-consistency (Wang等人,2022)基线,与LLaMA-2-70B-chat的LLMhuman一致性提高了高达绝对26%,甚至在许多域上与4相当或优于4。BSM与GPT-4的一致程度比GPT-4进一步提高了3%。总的来说,这些发现表明BSM有能力评估LLM对来自不同领域的任意用户问题的回答,并作为评估者改进任何基础LLM。

    BSM还提高了LLM评估的一致性。它显著降低了基于LLM的评估者的位置、长度和自我增强偏差。例如,BSM与美洲驼-2-70bc减少了高达50%的绝对位置偏差。重要的是,GPT-4的BSM还提高了GPT-4在评估自己的反应时作为评估者的可靠性。对于受约束的故事生成任务,BSM生成更连贯的故事,与零镜头基线相比,GPT-4法官在93%的情况下更喜欢这些故事。它还将约束满意度提高了12%。总的来说,BSM为解决具有挑战性的多方面语言生成和评估任务提供了一个规划和任务分解的框架。由于这种方法是作为一个通用的逻辑管理程序来设计的,所以它可以应用于任何底层的逻辑管理和潜在的各种任务。

相关工作

    LLM程序和分解复杂任务。像BSM这样的LLM程序用一种算法来解决复杂的问题,这种算法将问题分解成多个步骤,然后每个步骤都用一个不同的提示参数化到一个底层的LLM (Schlag等人,2023;多汉等人,2022;克雷斯韦尔和沙纳汉,2022)。复杂的任务,一般需要任务分解(等,2022)和计划(姚等,2022;黄等,2022;姚等,2023b宁等,2023)。这激发了许多关于高级激励方法的最新研究(Khot等人,2022;周等,2022;王等,2023aDua等人,2022;萨哈等人,2022,2023;Khot等人,2021;古普塔和肯巴维,2023;Cho等人,2023)。然而,这些作品中的大部分通常专注于受益于顺序分解的推理问题(如常识、符号或数学)。然而,我们研究的任务受益于分支到并行分解,特别是LLM评估和约束文本生成。也作为一个LLM项目,也是思维图形提示的一个实例(雷等,2023;Besta等人,2023),因为执行轨迹采用图形的形状。GoT定义了一系列LLM程序,包括细化、回溯和跳过图节点,我们在这里不考虑这些。我们的工作开发了一个特定的固定程序,并将其应用于评估或改进语言模型的挑战性任务。

    LLM评估。LLM快速发展的一个基本挑战是整体评估其能力(Chang等人,2023;梁等,2022)。人体评估既困难又昂贵(Smith等人,2022)。另一方面,通过RLHF训练的LLM显示出与人类的比对(欧阳等人,2022;白等,2022a)。因此,比较和评估LLM世代的标准程序是利用强LLM,如GPT-4 (Bubeck等人,2023;OpenAI,2023a杜布瓦等人,2023;周等,2023;蒋与李,2023;王等;哈达等人,2023;刘等,2023)对不同基准(钟等,2023;科普夫等人,2023年;郑等,2023)。基于LLM的评价者不是公正的评价者(王等,2023bWu和Aji,2023)以及使用多主体辩论(Chan等人,2023)或开发更广泛和更深入的逻辑推理模型(Zhang等人,2023)的建议。相比之下,BSM通过一种直观和通用的基于分解的方法来改进LLM评估,这种方法可以应用于任何LLM之上,以评估各种任务的响应。

    受约束的文本生成。最近的工作评估了LLM在可控和受限文本生成的更困难设置中的能力(Keskar等人,2019;Dathathri等人,2019年;陆等,2021,2022;林等,2020;李等人,2022年),并表明,即使是4挣扎与这种规划为基础的任务(布贝克等人,2023年;Madaan等人,2023;姚等,2023a)。我们实验了这样一个受限的故事生成任务,并展示了BSM的前景。

分支-求解-合并

    我们首先引入一些符号来正式描述BSM。设pθ表示参数为θ的LLM。我们还将x = x1,,n表示为n个令牌的序列,使得pθ(x) = 串n i=1 pθ(xi |x1,,i1)。BSM是一个LLM计划,旨在解决复杂的规划为基础的任务与三个神经模型:分支、求解和合并。每个模块都使用LLM pθ的唯一提示进行参数化。LLM程序在这些模块之上进一步定义了一个算法,充当控制器并在算法的每一步调用一个模块。

    分支-求解-合并LLM程序的组成部分。对于一个给定的任务,BSM将控制器定义为一种算法,它布局了模块之间的转换逻辑。让我们用它们的功能形式来表示这三个模块:branch()、solve()和merge()。然后程序被定义为Prog : (x,branch(),solve(),merge( )) → y,将任务实例x和模块实现作为输入,并生成输出y。

    分支模块。给定一个任务,分支模块生成多个子任务,其中每个子任务由一个唯一的分支表示。分支成子问题允许任务分解,这样每个部分可以独立地并行解决,在这一点上,部分解决方案被组合。形式上,给定一个任务输入x,我们定义一个“分支”提示promptbranch(x ),它可以用分支指令和一些演示(如果可用)包装在x周围。以提示为条件,LLM pθ生成一组k个子问题X = {x (1),x(2),,x(k)},其中k称为分支因子。子问题是作为一系列记号自动回归生成的:X∞pθ(X | prompt branch(X))。重要的是,我们方法的灵活性来自于这样一个事实:对于一个给定的问题,LLM本身决定(生成)子问题和相应的分支因子。

    求解模块。求解模块通过为分支任务输入x (i)生成输出y (i)来求解手头的任务。类似于分支提示,我们定义了一个“求解”提示promptsolve(x (i)),条件是LLM为每个分支生成一个解y(I)∞pθ(y(I)| prompt solve(x(I))。

    合并模块。合并模块融合子问题的解决方案,以生成主问题的全局解决方案。这是通过一个“merge”提示promptmerge(Y)来完成的,该提示生成一个合并的解Y∞pθ(Y | promptmerge(Y)),以一组子解Y = {y (1),y(2),,y(k)}为条件。从概念上讲,合并模块学习一个聚合器函数,该函数可以聚合一组值(使用聚合运算符)或者融合文本片段,这取决于任务。接下来,我们用两个具有挑战性的NLP任务激励并进行BSM的案例研究:LLM评估和受限生成。

    BSM:案例研究与LLM评估任务描述。我们考虑评估基于LLM的聊天助手的任务。形式上,给定一个开放式问题和来自两个LLM代理的一对回答,该任务要求产生一个偏好判断,即哪个回答更好或者它是否是平局(见图1)。评估LLM响应具有挑战性,原因有很多:

  1. 对任意问题的详细回答。为了提供一个通用的助手,用户可以从任何领域提出任意的问题,LLM可以给出长格式的回答(Zheng et al,2023)。基于初始模型响应,用户可以提出后续问题。根据问题的类型,评估过程必须考虑问题的意图、对理想回答的期望以及评估的标准。
  2. LLM评估者容易产生偏见。基于LLM的评估者不可靠,并且容易产生不同的偏差,包括(a)位置偏差:评估根据响应的编码顺序而变化,(b)长度偏差:倾向于更长的响应,©自我增强偏差:LLM评估者倾向于自己的响应(郑等,2023)。
  3. GPT-4作为评估器是昂贵的。虽然像4这样的基于API的模型是相当好的评估器(郑等人,2023),但这些模型是专有的,并按生成的令牌向用户收费。目前的开源替代方案与人类的相关性较差,并且更容易受到上述偏见的影响。
  4. 手工设计评估计划是不可扩展的。一个强有力的评估者应该能够很好地概括,能够评估对任意问题的回答,因此,手动设计每个任务的评估计划是不可取的(刘等人,2023)。例如,参见图1,其中评估对“写作”问题的回答需要考虑诸如“相关性”、“清晰度”等因素,而如果问题是“编码”问题(参见附录中的图2),则应该评估“代码正确性”、“代码可读性”等。

    因此,考虑到这一评估任务的多面性,我们开发了一个BSM版本,如如下所述。在这项研究中,我们重点评估两个话轮的对话问题,尽管我们的方法通常适用于任何话轮数。让我们将第一个问题表示为q1,将后续问题表示为q2。假设来自两个LLMs A和B的响应对于q1是r (A) 1和r (B) 1,对于q2是r (A) 2和r (B) 2。LLM评估的分支模块。它生成一个评估计划,即一组评估标准,将根据这些标准来评估响应。

    分支模块只以输入问题为条件,对于第一轮问题,定义为分支(q1),而对于第二轮问题,它以第一轮和第二轮问题为条件,表示为分支(q1,q2)。输出是一组评估标准,branch(q) → {ci} k i=1,其中每个ci是标准的标题(例如,“相关性”)和如何对其进行评估的简短描述(例如,“评估响应与用户问题的吻合程度…和夏威夷必看的景点。).参见图1和图2,为不同的问题生成分支的例子。

    LLM评估的求解模块。它根据特定的标准对响应进行比较和评估。评估的输出是每个回答的一对分数(在特定范围内,根据解答指令,例如1-5)。例如,给定一个评估标准c,我们将问题q的求解模块表示为:solve(q,r (A) 1,r (B) 1,c) → (s (A),s (B)),其中s (A)和s(B)是分配给两个辅助回答的评估分数。请注意,solve模块是不对称的,即两个响应的编码顺序很重要(我们将在下面的LLM程序中解决这个问题)。该模块还会生成解释和分数。

    图1示出了来自具有LLaMA-2-70B-chat模型的solve模块的示例。LLM评估的合并模块。我们开发了合并模块的两个变体。一个简单的非神经变量将所有分支的分数相加。我们还开发了一个神经LLM变体,它以单个评估为条件,并使用模型决定的聚合策略生成最终结论,表示为merge(q,{ci} k i=1,{s (A) i } k i=1,{s (B) i } k i=1) → y,其中评估标准{ci} k i=1是分支模块的输出,s (A) i和s (B) i是基于标准的评估(得分和解释)求解模块生成的两个辅助响应中的一个。最终判决结果是y ∈ {A,B,tie}。

    LLM评估项目。算法1中给出了整个LLM程序的伪代码。考虑到位置偏差,程序通过交换“求解”模块中响应的编码顺序来执行两次独立的BSM。当且仅当两个订单的判断一致时,最终判断为“A”或“B ”,否则为“平局”。

    BSM:性别任务描述受限案例研究。我们的下一个案例研究通过将BSM应用于一个完全不同的任务,LLM生成,展示了它的普遍适用性。我们考虑一个受约束的故事生成任务——给定一组概念l,任务是通过包含其中的所有概念来生成一个连贯的故事y(参见附录中的图3)。当概念的数量很大时,LLM倾向于忽略一些概念或者生成不连贯的文本。

    这项任务需要包含各种约束的组合。约束生成的分支模块。分支模块branch(l) → (l1,l2,t)提出一个故事生成计划,由(1)概念l1和l2的两个子集和(2)故事主题t组成。这两个子集用较少的概念表示原始任务的子问题。故事主题确保作为BSM的一部分生成的所有子故事都属于同一个主题。

    约束生成的求解模块。求解模块solve(li,t) → yi以概念li和故事主题t的子集为条件来生成关于该主题的故事yi,同时还包括li中的所有概念。直觉上,用较少的概念“解决”受约束的生成任务更容易。

    用于约束生成的合并模块。合并模块合并两个中间故事上的(y1,y2) → y条件,并将它们融合在一起,以生成最终故事y。由于两个中间故事属于同一高级主题,因此融合可以导致最终连贯的故事。总的来说,BSM通过解决子问题来确保更好的约束满足,并通过包括故事主题的顶层计划来保持一致性。

实验

LLM评估

    实验设置数据集。我们使用MT-Bench数据集进行实验,该数据集评估LLM在多回合对话中充当有用的人工智能助手时作为其他LLM响应的判断者(郑等人,2023)。它由8个不同领域的指令组成,如写作、推理、数学、编码等。评估指标。我们使用以下四个指标评估BSM(和基线)。

  • LLM-人类协议(Ag)。根据过去的工作(郑等,2023),我们报告了LLM-人的协议∈ [0,1]分别为第一回合和第二回合的问题,以及他们的组合。
  • 位置偏差(PB)。为了评估BSM是否有助于减少基于对数正态分布的评估者的一致性问题,我们报告了PB,它是根据回答的编码顺序判断发生变化的样本部分。
  • 长度偏差(磅)。我们测量LB作为样本的一部分,其中人类喜欢较短的响应,而评估者模型不喜欢。换句话说,我们计算评估者选择较长回答的频率,而根据人类的偏好,它不应该选择较长回答。
  • 自我增强偏见(SB)。SB指的是偏好其自己的回答的评估者模型。

    孤立地评估这种偏差是具有挑战性的,因为知道模型何时因为这种偏差而不是因为其他原因选择自己的响应是一个可解释性问题。

    然而,我们在这里感兴趣研究的问题是:当一个逻辑推理模型在评估自己的回答时(这是使用逻辑推理模型作为评估者时的一个常见现象),BSM是否导致更好和更可靠的评估?我们通过考虑以下设置来衡量这一点。我们使用GPT-4作为基本判断模型,并考虑来自MT-Bench基准的样本子集,其中一个响应也是由GPT-4生成的。如果BSM和GPT-4提高了人类对这部分样本的认同,这表明即使在模型A判断自己输出的情况下,BSM(和模型A一起)也能产生更好的评估者。虽然这不一定计算评估者是否具有较少的SB,但它确实验证了评估者模型是否与人类更好地相关,即使当它评估自己的回答时。

    虽然过去的许多工作都强调了这些偏见的重要性(郑等,2023;Wu和Aji,2023),我们在同一个评估框架内用具体指标对所有这些指标进行了衡量。从概念上讲,“Ag”评估正确性,而“PB”评估基于LLM的评估器的一致性。这些是互补的方面,一个理想的评估者应该在所有指标上都表现良好,才能可靠地使用它。实施细节。我们在不同规模和能力的多种LLM之上开发BSM:美洲驼-2-7B-chat、骆马-33B、美洲驼-270B-chat和GPT-4。我们零触发实现所有模块,只提供特定于模块的指令,并假设无法访问如何分支、求解或合并的演示。

    基线。我们将我们的方法与

  1. 具有相同LLM的零触发提示的两个变体进行比较:直接生成偏好判断的相对评估器和为两个响应生成两个分数然后基于较高分数确定最终偏好的绝对评估器,
  2. 计划和求解提示(Wang等人,2023a),其计划(即生成评估标准)但不是独立求解它们,而是在一个LLM调用中一起求解所有分支,
  3. 自洽性(Wang等人, 2022),它从提示的LLM(温度为0.7)中采样多个评价,并选择多数投票作为最终判断。

    为了公平比较,自我一致性抽样的世代数与BSM的分支因子相同。我们还注意到,自洽是BSM的一个简单特例,其中分支模块产生同一底层问题的多个实例(而不是子问题),通过采样不同的解决方案来解决它们,合并操作符是多数投票。有关数据集、实施和基线的更多详细信息,请参考附录A。

在这里插入图片描述
表1:在MT-Bench数据集的“写作”问题上,零射击LLM评估者(相对和绝对)、计划和求解、自洽性和BSM的比较。所有方法都使用LLaMA-2-70B-chat作为基础LLM。我们分别报告了第一轮和第二轮问题的LLM-Human一致性(Ag)、位置偏差(PB)和长度偏差(LB)。BSM提高了一致性分数,减少了位置和长度偏差。

    主要结果BSM提高了LLM-human的一致性并减少了偏差。表1评估了使用LLaMA-2-70B-chat作为基本LLM的BSM的功效,特别关注MT-Bench基准测试中的“写作”类问题。我们将主要发现报告如下。总体一致。我们发现,与所有基线相比,BSM提高了第一轮和第二轮问题的LLM-human一致性。特别是比Plan&Solve获得了高达12%的绝对改进,这具体显示了分支到独立子问题并解决它们的效用。BSM也胜过自我一致性。如前所述,自洽是BSM的特例。这一结果值得注意,因为两种方法在生成多个解决方案时利用了相似的计算量,但分支和解决不同的子问题比多次解决同一问题提供了更好的结果。

在这里插入图片描述
表2: BSM导致更少的自我增强偏差。对于其中一个响应也是由GPT-4产生的样本部分,BSM获得了更好的一致性。

    第一轮与第二轮问题。评估第2轮问题更难,因为它需要对第1轮问题的回答进行额外的语境化。这也反映在所有基线方法(除了计划和解决方案)中,表现出较低的第二回合一致性分数(例如,零射击结果从第一回合的0.53下降到第二回合的0.34)。BSM表明,生成评估计划的分解方法特别有助于评估长上下文问题,导致第二回合问题的更多改进(例如,高达16%的改进)。图2显示了一个示例,其中对于第2轮问题,模型生成“遵守说明”作为评估的第一标准。

在这里插入图片描述
表3:不同基础LLM评估者在“写作”问题上的零射击评估和BSM的比较。BSM提高了所有模型的一致性,降低了除GPT协议第四版之外的所有模型的偏差。

    减少位置和长度偏差。除了提高LLM-human的一致性,BSM还有助于减少基于LLM的评估者的关键偏差(例如,PB减少高达34%)。这是BSM任务分解的直接结果,有助于减少评估中的不一致性。BSM的LB减少可归因于以下几点:当评估者分支到不同的标准时,如果“长度”确实是评估响应的标准之一,则它只算作整体评估的单个分支(即一个子问题),因此,分支允许模型明确评估其他标准,而不仅仅是长度。

    自我增强偏置降低。表2通过比较样品的BSM(与零炮GPT-4),评估自增强偏差,其中一个响应也由GPT-4产生。我们观察到与人类有3%更好的相关性,这表明即使当LLM判断自己的输出时,BSM也改进了评估。BSM不仅提高了整体LLM与人的一致性(根据“Ag”指标),还提高了由同一评估者LLM产生一个响应的样本比例(根据“SB”指标),从而表明其作为评估方法的稳健性。总之,BSM提高了基于LLM的评估者的正确性和一致性。

    BSM改进了所有的零发基础远射。我们通过在四个不同的基础上实现BSM作为一个LLM项目来证明它的可推广性从美洲驼-2-7B到GPT-4,各种不同的基地运载火箭。如表3所示,与零发射基线相比,BSM提高了所有基础LLM与人类的一致性。即使零炮GPT-4是最先进的基于LLM的评估器,应用BSM获得了3%的进一步改善。此外,将BSM应用于美洲驼-2-70b使其在第一回合问题上与GPT-4具有竞争力。除了GPT-4,BSM还显著降低了所有模型的位置和长度偏差。

在这里插入图片描述
表4:对MT-Bench的“编码”、“推理”和“数学”问题类别的基于参考的LLM评估。BSM改进了基于参考的评估,在数学方面,胜过GPT-4。

    BSM推广到基于参考的评估。我们发现,BSM在基于参考的复杂任务评估方面也表现出色,如数学、推理和编码(Cobbe等人,2021;魏等,2022)。根据过去的工作(郑等,2023),我们通过首先使用4生成答案,然后将其附加到评估提示,这是我们在本实验中的基线,来评估这些类别的响应。对BSM来说,我们遵循类似的方法,根据GPT-4生成的答案调整“求解”模块。这里的关键假设是,这些答案是一次策划的,与开放式问题的答案不同,它们的变化有限。表4显示,BSM在所有类别中显著优于零射击基线(在编码问题中,一致性分数提高了14%,位置偏差提高了27%)。

在这里插入图片描述
表5:对MT-Bench的“角色扮演”、“提取”、“题干”和“人文”问题类别的LLM评估。我们将美洲驼-2-70B-chat BSM与基线零射击方法进行了比较,并报告了GPT-4的结果。BSM在美洲驼基线上取得了显著进步,在四个领域中的三个领域达到或接近GPT-4协议,有时在减少偏差方面优于GPT-4。

    在数学方面,它甚至超过了最先进的GPT-4评估器,在所有指标上都超过了它。BSM在更广的领域进行推广。表5显示,BSM能够评估其他类别的问题,如“角色扮演”、“提取”、“题干”和“人文学科”,并得出类似的结果。详见附录A.2。

    BSM分支的可伸缩性。BSM的核心优势之一是它的可扩展性——它对所有评估领域(例如,写作、代码、推理等)使用相同的分支提示(如图4所示)。提示只指定了给定任务的分支的含义,LLM能够为不同的域生成自己的分支,而无需任何人工干预。我们观察到编码题和写作题的分支名称几乎没有重叠。例如,最常见的“写作分支”是清晰性、相关性、创造性、准确性、参与性、连贯性、独创性、完整性、语法和可读性等,而最常见的“编码分支”是效率、完整性、准确性、正确性、代码可读性、用户体验、时间效率。从分支的名称来看,属于同一领域的问题的分支显示出更多的重叠。例如,‘正确性’是为评估几乎所有编码问题而产生的一个分支;然而,它们的描述是不同的,并且是特定于问题的(参见图2中的示例)。

约束文本生成

    实验设置数据集。我们的受限故事生成任务是生成性常识推理任务CommonGen(林等,2020)的一个更具挑战性的变体。虽然原始任务需要从3或4个概念中生成一个连贯的句子,但我们通过让模型生成一个由10个概念组成的简明故事来增加任务的复杂性(Madaan等人,2023年)。为了这项研究,我们对100个样本进行了实验。

    评估指标。我们沿着两个轴评估生成的故事:约束满足度和整体故事质量。对于约束满足度,我们报告两个度量:(a)全部存在(AP):满足所有约束的样本部分,即没有遗漏概念,和(b)遗漏概念(MC):遗漏概念的平均百分比。较高的“全部存在”和较低的“缺失概念”更可取。如果一个概念没有以任何单词的形式出现在故事中,我们认为它是缺失的。为了评估整个故事的质量,我们用GPT-4进行了成对的评估。

    图7中提供了评估提示。为了解释这种成对比较中的位置偏差,我们根据LLM评估任务的发现,通过交换故事的顺序,并且只有在评估一致的情况下才选择一个故事,来进行两次评估。实施细节。我们使用美洲驼-2-7B-chat和美洲驼-2-70B-chat评估BSM。所有模块都使用贪婪解码生成文本。对于分支模块,提示LLM将概念分成两组。

    基线。我们将BSM比作

  1. 具有相同LLM的零触发提示:给定一组概念,直接生成故事,
  2. 计划和解决提示,首先提出一个故事主题(作为计划),然后在此基础上生成一个故事主题,
  3. 自洽性,我们首先对多个故事进行抽样,然后再次提示LLM从抽样的故事中选择一个满足更多约束的故事。

    结果和分析约束满足。我们的主要结果在表6中给出。他们表明,在我们的约束满足度量上,两种模型变体的BSM都优于所有基线。我们还注意到,即使对于更强的LLaMA-2-70B-chat模型,这仍然是一项具有挑战性的任务,并且模型的规模对约束满足度几乎没有影响。例如,即使是使用LLaMA-2-70B-chat的BSM,也有72%的样本忽略了至少一个概念,这与先前工作的发现相呼应,即即使对于最先进的LLM,受约束的文本生成也很困难(Yao等人,2023a)。我们在附录b中提供了对BSM缺失概念的分析

    整体故事质量。BSM不仅满足了更多的约束条件,而且几乎总能产生一个更连贯的故事。我们发现,在与零镜头提示基线(使用LLaMA-2-70B-chat)的面对面比较中,BSM生成的故事在相当大的93%的时间里被GPT-4优先选择。这可以归功于BSM的两个方面。首先,在每一个分支中,模型以较少数量的概念为条件,从而生成中间故事,这些故事本身更加连贯。第二,在合并步骤中,模型能够以这两个中间故事为条件,生成进一步提高连贯性的最终故事。

结论

    我们提出了BSM,一个提高LLM评估和生成的LLM计划。我们用分支、求解和合并模块的不同实现进行了两个案例研究,展示了BSM的有效性和可推广性。

局限性

    我们在下面列出了我们工作的局限性。

  1. 对LLM世代的安全性、毒性和偏倚进行评估对于LLM的整体评估也是至关重要的,然而,我们在本文中不涉及这一主题。
  2. 虽然BSM在长度偏差方面取得了进步,但我们注意到,孤立地测量长度偏差具有挑战性,因为知道模型是否因为其长度(而不是其他原因)而偏好较长的响应是一个可解释性问题,而人类也倾向于偏好较长的响应,特别是对于开放式问题。
  3. 递归或多级BSM,其中LLM递归分支为并行子任务,是未来工作的一个有趣途径,但由于计算成本增加,我们在本工作中不探索这一点。
  4. 分解成并行子任务也应该有助于提高效率(例如,与顺序分解相比)(宁等人,2023),但在这项工作中,我们反而侧重于提高任务性能。

在这里插入图片描述
表7:“推理”问题的无参考评估结果。BSM在评估“推理”问题方面优于零射击基线,即使没有使用参考答案(在100个样本的随机子集上)。

附录

附加实验:LLM评估A.1实验设置数据集。我们使用MT-Bench数据集进行实验,该数据集评估LLM在多回合对话中充当有用的人工智能助手时作为其他LLM响应的判断者(郑等人,2023)。它包括2400个LLM回答和3000个专家判断。LLM输出是对来自8个不同领域的80个代表性指令的响应:写作、角色扮演、提取、推理、数学、编码、知识I (STEM)和知识II(人文/社会科学)。每个问题都是会话式问题,由两个回合组成,其中第二回合问题是第一回合问题的后续。对于每个问题,数据集由来自6个不同LLM(羊驼-13b、骆马-13B、美洲驼-13B、Claudev1、GPT-3.5-turbo和GPT-4)的响应组成,产生15个可能的响应对。因此,整个评估集由每个类别的300个响应对样本组成。

实施细节。算法1展示了LLM程序。为了更好的再现性,BSM的所有模块都使用贪婪解码来生成文本。

对于分支模块,LLM被提示生成一个最多包含五个评估标准的计划(我们在实验中发现它遵守了这些标准)。对于合并模块,我们发现非神经合并的总结标准评估是简单的,并在实践中很好地工作,因此我们所有的实验结果都报告了该方法。提示如图4和图5所示。所有的实验都是在8个A100 GPUs的AWS集群上运行的。

基线。包括BSM在内的所有方法都以相同的方式考虑位置偏差,为两种编码顺序生成判断,并根据各自的判断选择最终的判断(如果两种编码顺序不一致,则指定平局)。

特别是,自洽独立地为每个编码顺序计算多数票。

A.2结果和分析BSM在各个领域都表现良好。在表5中,我们评估了BSM在“角色扮演”、“提取”、“题干”和“人文”类别中评估世代问题的能力。我们发现BSM是健壮的,并且在跨域方面比LLaMa2-70B-chat基线有很好的改进,并且在几个域上接近GPT-4的性能。特别是,在Stem领域,它能够将一致性分数提高26%(绝对值),与GPT新协议相当,甚至在位置和长度偏差方面超过它。表7显示,BSM在“推理”问题上优于零起点基线,甚至在无参考评估中也是如此(即GPT-4生成的答案在基线或BSM中均未使用)。

组合BSM和SC进一步减少了位置偏差。BSM为每个子问题(每个分支)生成一个单一的解决方案。一种可能的增强是将BSM与自洽相结合,即针对每个子问题采样多个解决方案。

特别是,我们通过对每个分支(温度为0.7)的五个评估进行抽样来实施BSM+SC,然后该分支中每个子评估的分数由平均分数给出。我们在表8中比较了BSM和BSM+SC。虽然一致性分数没有进一步提高,但我们观察到2%位置偏差减少。这指向两个结论。首先,BSM通过其分解方法,已经构建了足够粒度的子问题,因此,通过每个子问题内的自洽性获得的方差减少是有限的。然而,立场偏差的适度减少仍然反映了它的有用性,这是使评价更加一致的直接效果。

分支因子的影响。BSM的优势在于依赖底层LLM来决定分支到什么子问题,而提示控制最大分支因子(参见图4分支提示中的短语“最多五个因子的列表”)。我们将这个最大分支因子从2变到5,并研究它对来自“写作”类问题的100个样本的影响。

表10报告了我们的发现。我们在分支因子为4时观察到最高的一致性,之后结果大部分饱和。一般而言,最佳分支因子应取决于所考虑的具体问题,而不是像过去的工作那样,由用户指定要评估的因子(刘等人,2023;郑等,2023),自行生成该计划。随着分支因子的增加,位置偏差继续减少,其中更多的分支有助于减少最终判断的方差。

BSM对评价量表稳健。一般来说,评估任务需要定义一个对回答进行评分的尺度。在表11中,我们通过改变“求解”提示(见图5)中指定的评估尺度来比较BSM的性能,评分为1-5(在主要实验中使用)或1-10。我们观察到,BSM是相当稳健的这种变化,获得可比的一致分数。

然而,位置偏差随着尺度的增大而略微增加。

在这里插入图片描述
表8:在分支-求解-合并(BSM+SC)的每个分支中使用自洽性的效果。结果与美洲驼-2-70B-chat模型。虽然总体一致性分数没有进一步提高,但我们的位置偏差进一步降低了2%。

附加实验:BSM缺失概念的受限文本生成分析。BSM中缺失概念的来源可归因于以下两类中的一类:(a)“求解”模块,即,即使当在具有较少数量概念的分支子问题中生成中间故事时,该模型也忽略概念;或者(b)“合并”模块,即中间故事包括它们各自的概念,但是融合过程省略了其中的一些。我们观察到,在72%的BSM故事(包括LLaMA-2-70B-chat)中,至少有一个概念缺失,其中60%属于第一类(即“求解”模块中的概念缺失),而只有12%属于第二类(即“合并”过程中的概念缺失)。

在这里插入图片描述
表9:“写作”类问题的LLM-人类一致性得分(第一轮和第二轮的整体和单独得分)。这里,使用多数投票来计算一致性(而不是独立地对待每个样本的每个人类投票)。

这表明约束满足可以通过“递归”BSM方法进一步提高,该方法包括迭代分支到更细粒度的子问题。但是,递归BSM的开销要大得多,因为对基本LLM的调用要多得多。我们将这一探索作为未来工作的一部分。

在这里插入图片描述
在这里插入图片描述
图LLM评估分支生成的例子。我们展示了BSM用LLaMA-2-70B-chat模型为不同类型的问题生成的不同分支(评估计划):(上)第二轮写作问题和(下)编码问题。

在这里插入图片描述图3:BSM使用LLaMA-2-70B-chat进行受限故事生成的图示。给定一组随机概念,‘分支’模块首先将它们分成两组,并生成一个故事主题。“求解”模块以概念和主题为条件,为每个分支生成中间故事。“合并”模块合并中间故事以生成最终故事,确保所有概念仍然存在。

在这里插入图片描述

在这里插入图片描述
图LLM响应评估任务的第一轮和第二轮问题的分支提示。第一回合提示仅针对第一回合问题,而第二回合提示针对两个回合问题,以生成评估计划。

在这里插入图片描述
在这里插入图片描述
图5:解决LLM响应评估任务的第一轮和第二轮问题的提示。每个提示都以问题、两个LLM的响应以及分支模块生成的给定评估标准为条件。

在这里插入图片描述
图6:受约束的故事生成任务的分支、求解和合并提示。概念上的分支提示条件。解答提示条件是分支模块生成的概念子集和故事主题。合并提示条件取决于求解模块已经生成的两个中间故事以及它们各自的概念集。

在这里插入图片描述
图7:用GPT-4评估故事质量的提示。它要求模型对基线法和BSM产生的故事进行成对评估。

相关文章:

Branch-Solve-Merge Improves Large Language Model Evaluation and Generation

题目 分支-求解-合并改进了大型语言模型的评估和生成 摘要 大型语言模型(LLM)经常用于多方面的语言生成和评估任务,这些任务涉及满足复杂的用户约束或考虑多个方面和标准。然而,由于模型缺乏一致性,无法计划和分解问题,他们的表现…...

SqlSugar-文章目录

SqlSugar学习总结1(基础操作) SqlSugar学习总结2(主从复制-数据库配置) SqlSugar学习总结3(主从复制-读写分离) SqlSugar学习总结4(树形递归查询) SqlSugar学习总结5(映射)...

如何理解RDD,以及RDD的五大特性和五大特点。

RDD:英文全称Resilient Distributed Dataset,叫做弹性分布式数据集,代表一个不可变、可分区、里面的元素可并行计算的分布式的抽象的数据集合。 Resilient弹性:RDD的数据可以存储在内存或者磁盘当中,RDD的数据可以分区…...

umd格式

umd格式是啥? umd格式是一种通用模块,他同时支持AMD、CJS、ESM模块和全局变量的方式 umd格式打包后的基本代码结构如下: (function (root, factory) {if (typeof define function && define.amd) {// AMDdefine([dependency], factory);} el…...

node.js之---内置模块

在 Node.js 中,模块系统是基于 CommonJS 模块规范 的,这使得开发者可以将代码分成多个独立的模块进行管理。Node.js 提供了很多 内置模块(也称为 核心模块),这些模块可以直接在代码中使用,而无需安装额外的…...

linux下安装达梦数据库v8详解

目录 操作系统、数据库 1、下载达梦数据库 2、安装前准备 2.1、建立数据库用户和组 2.2、修改文件打开最大数 2.3、挂载镜像 2.4、新建安装目录 3、数据库安装 4、配置环境变量 5、初始化数据库实例 6、注册服务 7、使用数据库 8、卸载数据库 9、多实例管理 10、…...

深入理解 Android 中的 ApplicationInfo

深入理解 Android 中的 ApplicationInfo 在 Android 开发中,ApplicationInfo 是一个非常重要的类,它包含了关于应用程序的元信息。这些信息通常是从 AndroidManifest.xml 文件中提取的,开发者可以通过 ApplicationInfo 类来获取和操作这些信…...

【vLLM】使用PagedAttention 进行大型语言模型的高效内存管理

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…...

STLG_01_12_程序设计C语言 - 联合体和枚举类型

在C语言中,联合体(Union)和枚举类型(Enum)是两种不同的数据结构,它们各自有特定的用途和特点。 联合体(Union) 联合体是一种数据结构,允许在相同的内存位置存储不同的数…...

ThreadLocal详解:深入探讨导致JVM内存泄露的原因及预防措施

引言 ThreadLocal 是Java提供的一个线程局部变量工具,它使得每个线程都可以拥有自己的变量副本,而这些副本对于其他线程而言是不可见的。这在多线程编程中非常有用,因为它可以避免共享资源带来的同步问题。然而,如果使用不当&…...

【FlutterDart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100)

上效果 预期的是通过拖动一条边界线改变窗口大小,类似vscode里拖动效果。这个是简单的拖动实现 上代码: import package:flutter/material.dart;class MyDraggableViewDemo extends StatelessWidget {const MyDraggableViewDemo({super.key});override…...

【FlutterDart】 拖动边界线改变列宽并且有边界高亮和鼠标效果(12 /100)

【Flutter&Dart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100) 【Flutter&Dart】 拖动边界线改变列宽类似 vscode 那种拖动改变编辑框窗口大小(11 /100) 上效果 对比一下vscode的效果&…...

鸿蒙应用开发(2)

鸿蒙应用开发启航计划-CSDN博客 鸿蒙应用开发(1)-CSDN博客 没看过前两篇的,建议请先看上面。 如果你学习完了前两篇,那么你学习这篇文章,就很容易理解了。 这一篇文章将介绍声明式UI的 渲染控制。你需要了解的是&…...

js -动态主题色

学习参考来源: 峰华大佬:https://www.bilibili.com/video/BV1E64y1Z79Q/?spm_id_from333.1391.0.0&vd_sourcea0f31140205458776d3a4ef477cd6561 实际效果: http://www.qingkong.zone/laboratory?typetheme-color 前言 本文内容可结合上…...

connect to host github.com port 22: Connection timed out 的解决方法

原因是 Github 被 GFW 屏蔽了。 Windows 系统,打开 C:\Windows\System32\drivers\etc,复制其中的 hosts 文件至桌面,用文本编辑器或者其他工具打开。 复制以下内容进去: 140.82.114.4 github.com 151.101.1.6 github.global.ss…...

AI 角色扮演法的深度剖析与实践

📢📢📢 大家好,我是云楼Yunlord,CSDN博客之星人工智能领域前三名,多年人工智能学习工作经验,一位兴趣稀奇古怪的【人工智能领域博主】!!!😜&#…...

ansible-动态inventory及内置函数

一. 简述: 关于inventory的基本用法可以参考上一篇文章:ansible-inventory定义-CSDN博客 在实际线上环境中,单纯的靠配置文件管理,是一件很麻烦的事情(比如一致性问题),特别是规模较大的场景下,会有大量主…...

【每日学点鸿蒙知识】广告ID、NFC手机充值、CSS支持语法、PC与模拟器交互、SO热更新等

1、HamonyOS 样机获取成功返回Oaid为00000000-0000-0000-0000-000000000000? 请求授权时需要触发动态授权弹窗,看一下是不是没有触发授权弹窗。 可以参考以下代码以及文档: // ets import identifier from ohos.identifier.oaid; import hilog from oh…...

MySQL 【多表查询】

一 . 概述 多表关系: 一对多(多对一) , 多对多 ,一对一 1) 一对一 案例: 用户 与 用户详情的关系 关系: 一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另 一张表…...

第08章 存储管理(二)

一、EXT4文件系统详解 1.1 简介 1.1.1 课程引入 1.1.2 名词解释 1.1.3 类型 索引(index)文件系统 1.1.4 系统限制 1.1.5 图示 1.1.6 名词 1.2 inode(index node 索引节点) 1.3 block(块 文件内容) 二、文件链接 2.1 符号连接(软连接) 2.…...

win10搭建zephyr开发环境

搭建环境基于 zephyr官方文档 基于官方文档一步一步走很快就可以搞定 一、安装chocolatey 打开官网 https://community.chocolatey.org/courses/installation/installing?methodinstall-from-powershell-v3 1、用管理员身份打开PowerShell (1)执行 …...

常见框架漏洞

一:ThinkPhp 1.搭建环境,访问 2.访问路径,进行远程代码执行 二:struts2 1.搭建环境进行 2.使用工具进行检测 三:Spring 1.搭建环境进行访问并进行抓包 2.然后抓取数据包,使用PATCH请求来修改 3.进入容器…...

党员学习交流平台

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…...

公司资产网站

本文结尾处获取源码。 本文结尾处获取源码。 本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) I…...

线上go内存泄漏分析实战

背景 最近经常发现web服务内存占用持续缓慢增高,从图像上看是基本持续递增,但偶尔也有下降趋势(不会下降很明显),对比30天以前没那么高内存占用,最近30天内存占用变化且无明显规律。WEB服务框架是echo框架&…...

UE5AI感知组件

官方解释: AI感知系统为Pawn提供了一种从环境中接收数据的方式,例如噪音的来源、AI是否遭到破坏、或AI是否看到了什么。 AI感知组件(AIPerception Component)是用于实现游戏中的非玩家角色(NPC)对环境和其…...

12306购票如何做到限流的,什么技术方案,mq吗,提示排队过多,请稍微重试,提示库存不足。具体实现细节是怎么样的

12306(中国铁路客户服务中心)的购票系统是一个典型的高并发、高流量的系统。在春运和节假日等高峰期间,购票需求量极大,用户的请求频繁且集中,系统必须通过多种技术手段来进行 限流 和 负载均衡,确保购票服…...

[irisctf 2025] kittycrypt knutsacque

作了俩题还有一个不对。 KittyCrypt 题目给了加密代码,样例和密文。密钥通过样例求出。 package mainimport ("crypto/rand""encoding/hex""encoding/json""fmt""math/big""os""strings"…...

数据结构(1~10)

&#xff08;1&#xff09;双栈 #include <iostream> #include <algorithm> using namespace std; // 定义栈元素的类型 typedef int SElemType;// 定义双栈数据结构 typedef struct {int top[2];int bot[2];SElemType *V;int m; } DblStack;// 初始化双栈 void I…...

Solidity合约编写(一)

Solidity IDE地址&#xff1a;Remix - Ethereum IDE 点击进入后在contract文件夹下创建合约 合约代码如下&#xff1a; // SPDX-License-Identifier: MIT pragma solidity ^0.8.26;contract SimpleStorage{bool hasFavorNumtrue;uint256 favorNum5;string favorNums"fiv…...

基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于氢氧燃料电池的分布式三相电力系统Simulink建模与仿真&#xff0c;仿真输出燃料电池中氢氧元素含量变化以及生成的H2O变化情况。 2.系统仿真结果 3.核心程序与模型 版本…...

【C/C++】nlohmann::json从文件读取json,并进行解析打印,实例DEMO

使用 json::parse 函数将JSON格式的字符串解析为 nlohmann::json 对象。这个函数支持多种输入源&#xff0c;包括字符串、文件流等。 #include <iostream> #include <nlohmann/json.hpp> #include <fstream>using json nlohmann::json;int main() {// 解析…...

鸿蒙Flutter实战:15-Flutter引擎Impeller鸿蒙化、性能优化与未来

Flutter 技术原理 Flutter 是一个主流的跨平台应用开发框架&#xff0c;基于 Dart 语言开发 UI 界面&#xff0c;它将描述界面的 Dart 代码直接编译成机器码&#xff0c;并使用渲染引擎调用 GPU/CPU 渲染。 渲染引擎的优势 使用自己的渲染引擎&#xff0c;这也是 Flutter 与其…...

华为交换机---自动备份配置到指定ftp/sftp服务器

华为交换机—自动备份配置到指定ftp服务器 需求 交换机配置修改后及时备份相关配置,每次配置变化后需要在1分钟后自动进行保存,并且将配置上传至FTP服务器;每隔30分钟,交换机自动把配置上传到FTP服务器。 1、定时保存新配置的时间间隔为*分钟(1天=1440),默认为30分钟(…...

dns网址和ip是一一对应的吗?

DNS网址和IP地址是一一对应的吗&#xff1f;我们在上网时&#xff0c;为什么总是使用网址而不是一串数字&#xff1f;这些问题其实涉及到互联网的基本运作原理。DNS&#xff08;域名系统&#xff09;是我们日常上网过程中一个不可或缺的部分&#xff0c;它帮助我们将人类易于记…...

Couchbase 和数据湖技术的区别、联系和相关性分析

Couchbase 和数据湖技术&#xff08;如 Delta Lake、Apache Hudi、Apache Iceberg&#xff09;分别是两类不同的数据存储与管理系统&#xff0c;但它们也可以在特定场景中结合使用&#xff0c;以下是它们的区别、联系和相关性分析&#xff1a; 区别&#xff1a; 1. 核心用途&a…...

微信小程序提示 miniprogram-recycle-view 引入失败

npm i --save miniprogram-recycle-view 安装需要使用的页面的json文件中配置 {"usingComponents": {"recycle-view": "miniprogram-recycle-view/recycle-view","recycle-item": "miniprogram-recycle-view/recycle-item"…...

RAG_Techniques合集

Github 專案RAG_Techniques 列出了所有想得到的RAG最佳實踐和技巧&#xff01;以下是完整的目錄&#xff0c;內容豐富到不行&#xff01;&#x1f4a1; Simple RAG &#x1f331;Context Enrichment Techniques &#x1f4dd;Multi-faceted Filtering &#x1f50d;Fusion Ret…...

泊松融合 实例2025

目录 例子1: 实现代码: 原作者代码: 本博客直接给出来最好的效果和源代码 参数说明: 效果不好,不推荐的参数:MONOCHROME_TRANSFER,NORMAL_CLONE 例子1: 目标图: 原图: 效果图: 实现代码: 坐标是要目标图上中心点坐标: import cv2if __na...

反直觉导致卡关-迫击炮谜题

这个谜题&#xff0c;在两周目中先后卡了我至少三个小时&#xff0c;先后缓慢装填并发射迫击炮弹尝试了数百次。 一周目卡了很久&#xff0c;稀里糊涂的过了&#xff0c;想不到二周目还会卡那么久。 研究了很多播主的攻略&#xff0c;但还是一头雾水&#xff0c; 直到分析其…...

Vue2

前几篇和大家分享了Vue2基础篇&#xff0c;现在和大家分享一下Vue2的进阶篇 普通组件的注册: 局部组件&#xff1a;只能在注册的组件内使用 1.创建vue文件 三部分组成 2在使用的组件内部导入并且注册 全局组件&#xff1a;所有组件内部都可以用 组件的三大组成部分 结构&…...

PDF文件提示-文档无法打印-的解决办法

背景信息 下载了几个签名的PDF文件&#xff0c;想要打印纸质版&#xff0c;结果打印时 Adobe Acrobat Reader 提示【文档无法打印】: 解决办法 网上的方案是使用老版本的PDF阅读器&#xff0c; 因为无法打印只是一个标识而已。 PDF文件不能打印的五种解决方案-zhihu 这些方…...

C语言进阶(3)--字符函数和字符串函数

本章重点 重点介绍处理字符和字符串的库函数的使用和注意事项 目录 0.前言 1.函数介绍 1.1 strlen - 计算字符串长度 1.2 strcpy - 复制字符串 1.3 strcat - 追加字符串 1.4 strcmp - 字符串比较 1.5 strncpy - 受限制复制 1.6 strncat - 受限制追加 1.7 strncmp - 受限制比…...

英文词汇解析:“Arguably“ 的用法与含义

中文版 英文词汇解析&#xff1a;“Arguably” 的用法与含义 在英语中&#xff0c;“arguably” 是一个常用的副词&#xff0c;用来表达某种观点可能是正确的&#xff0c;尽管它可能存在争议或需要进一步讨论。它通常用于陈述观点或看法时&#xff0c;给出一种有依据但又留有…...

Win 11 拷贝文件失败,错误0x800704C8: 请求的操作无法在使用用户映射区域打开的文件上执行。

手机拷贝照片到电脑&#xff0c;再把电脑的照片拷贝到移动硬盘的过程报错。 一个意外错误使你无法移动该文件。如果你继续收到此错误&#xff0c;可以使用错误代码来搜索有关此问题的帮助。 错误 0x800704C8: 请求的操作无法在使用用户映射区域打开的文件上执行。 解释&#xf…...

SpringBoot原理分析-1

SpringBoot原理分析 作为一个javaer&#xff0c;和boot打交道是很常见的吧。熟悉boot的人都会知道&#xff0c;启动一个springboot应用&#xff0c;就是用鼠标点一下启动main方法&#xff0c;然后等着就行了。我们来看看这个main里面。 SpringBootApplication public class E…...

我用Ai学Android Jetpack Compose之Button

答案来自 通义千问&#xff0c;代码同样需要到Android Studio里实践&#xff0c;才能学会。 我要学Button&#xff0c;麻烦介绍一下 当然可以&#xff01;Button 是 Jetpack Compose 中用于创建可点击按钮的 Composable 函数。它提供了丰富的配置选项来定制按钮的外观和行为。…...

《量子比特:解锁人工智能并行计算加速的密钥》

在科技飞速发展的今天&#xff0c;量子计算与人工智能的融合正成为一股强大的力量&#xff0c;为诸多领域带来变革性的突破。量子比特作为量子计算的核心要素&#xff0c;其独特的叠加和纠缠特性为人工智能算法实现并行计算加速提供了前所未有的机遇。 量子比特的叠加特性&…...

【SpringBoot】当 @PathVariable 遇到 /,如何处理

1. 问题复现 在解析一个 URL 时&#xff0c;我们经常会使用 PathVariable 这个注解。例如我们会经常见到如下风格的代码&#xff1a; RestController Slf4j public class HelloWorldController {RequestMapping(path "/hi1/{name}", method RequestMethod.GET)publ…...

用QT实现 端口扫描工具1

安装在线QT&#xff0c;尽量是完整地自己进行安装&#xff0c;不然会少包 参考【保姆级图文教程】QT下载、安装、入门、配置VS Qt环境-CSDN博客 临时存储空间不够。 Windows系统通常会使用C盘来存储临时文件。 修改临时文件存储位置 打开系统属性&#xff1a; 右键点击“此电…...