VCTP(Visual Chain-of-Thought Prompting for Knowledge-Based Visual Reasoning)论文

devtools/2024/12/22 9:15:16/

目录

  • 摘要
  • 介绍
  • 相关工作
  • 方法
    • 总体
    • 模型细节
  • 实验

摘要

知识型视觉推理仍然是一个艰巨的任务,因为它不仅要求机器从视觉场景中解释概念和关系,而且还需要将它们与外部世界知识联系起来,对开放世界问题进行推理链。然而,以前的工作将视觉感知和基于语言的推理视为两个独立的模块,在推理的所有阶段都没有同时关注这两个模块。为此,我们提出了一种知识型推理的视觉思维链提示(VCTP),它涉及视觉内容与自然语言的交互,以迭代的逐步推理方式进行。VCTP包含三个阶段:看、想和确认。看阶段扫描图像,并用视觉感知模型将视觉概念候选与地面真实情况相结合。思考阶段采用预训练的大型语言模型(LLM)从自然语言问题中自适应地关注关键视觉概念。然后,它使用视觉字幕模型将关键视觉内容转换为文本内容进行提示,并采用LLM生成答案。确认阶段进一步使用LLM为答案生成支持理由,然后通过跨模态分类器传递,以验证它与视觉内容一致。我们通过思考-确认阶段的迭代来确保经过验证的理由与答案一致。我们在一系列知识型视觉推理数据集上进行实验。我们发现我们的VCTP有几个优点,1)。它比以前的少次学习基线表现更好;2)。它通过为每个推理步骤提供理由,实现了整个推理过程的完全透明性和可信度;3)。与其它微调基线相比,它在计算上更有效率。我们的代码可在 https://github.com/UMass-Foundation-Model/VisualCoT.git 上获取。

介绍

机器视觉推理自从引入神经符号机制(Yi等人,2018)以来取得了巨大进步,这使得机器能够发展出多步骤的推理链。然而,正如早期认知科学家所预示的那样,这种逻辑和符号系统基本上不适合于现实世界、常识知识的表示和推理(Oaksford和Chater,2007),因为它们仅依赖于封闭世界的逻辑规则和硬约束(Stenning和Van Lambalgen,2012)。

因此,我们研究了知识型视觉推理(Marino等人,2019;Schwenk等人,2022)的问题,这要求模型解释图像内容,回忆开放世界知识的相关内容,并执行逐步的逻辑推理以得出答案。知识型视觉推理比传统的视觉问答和推理(Antol等人,2015;Goyal等人,2017)更具挑战性,因为需要在推理链中交互式地整合视觉上下文、外部知识和自然语言问题。如图1所示,要回答“这个房间叫什么名字?”这个问题,人类首先需要看到房间并提取诸如“框架”、“沙发”和“灯”等视觉概念。然后我们关注与问题语义相关的关键视觉概念,并思考“这是一张咖啡桌”和“有一个带有棕色靠垫的长沙发”以得出答案“客厅”。最后但同样重要的是,人类最终会通过回顾视觉上下文并得出结论“沙发和咖啡桌通常位于客厅”来确认答案是正确的。视觉到语言和语言到视觉的互动可以反复执行,直到我们得出一个令人满意的答案。如果机器也具备这样的能力,它们可以被用于许多现实世界的应用,如辅助机器人(Brohan等人,2022)和具身聊天机器人(Konstantopoulos,2010)。

与认知科学家的观点一致,即带有软约束的知识与大型连接主义模型(Oaksford和Chater,2007)非常兼容,大型语言模型(LLMs)确实在少次推理(Brown等人,2020;Zhang等人,2022)方面取得了巨大进步。特别是思维链提示(Wei等人,2022)通过提供思维链(即一系列中间推理步骤)来执行复杂的语言推理,超越了普通的LLMs。然而,如何利用这些LLMs进行视觉和语言任务的推理仍然是一个挑战。现有的工作要么是用大量的视觉-语言数据微调LLMs(Tsimpoukelli等人,2021;Alayrac等人,2022;Jin等人,2022),这是计算密集型的;要么采用基于提示的方法,如PICa(Yang等人,2022),将图像转换为字幕进行文本提示。这两种工作都无法像人类推理过程那样生成逐步推理链,使模型成为完全的黑盒。此外,它们将视觉感知和基于语言的推理视为独立的模块(例如,视觉模块用于为LLMs生成特征或字幕),忽略了跨模态的大量交互和通信。这与人类执行视觉推理的方式不符,如图1所示。受此启发,我们希望研究的关键问题是如何使大型语言模型与视觉信息进行交互和通信,构建开放世界知识型视觉推理的逐步推理链。为此,我们提出了一个名为视觉思维链提示(VCTP)的新颖框架,如图1所示,模仿人类推理过程。我们的模型是一个迭代和交互框架,包含三个关键模块:看模块、想模块和确认模块。给定一对图像-问题,看模块首先使用场景解析器提取图像中的所有候选视觉概念。想模块采用LLM选择与给定自然语言问题相对应的由看模块提取的相关视觉概念,并使用字幕模型将视觉信息转换为文本描述。基于所关注的视觉上下文,LLM预测问题的答案。此外,我们引入了一个确认模块进行理由验证,以提供更透明和可信的推理。具体来说,我们要求LLM为预测的答案生成理由(例如,在图1中为预测的答案“客厅”生成的理由“沙发和咖啡桌通常位于客厅”)。然后我们使用神经跨模态分类器估计这些理由与给定视觉输入之间的匹配相似度。最后,所选的理由被反馈到LLM的提示中,以确保理由可以一致地推断出相同的输出。我们重复思考和确认的迭代过程,直到连续两次迭代的答案相同。

总之,我们介绍了VCTP,这是一个新颖的模块化、交互和迭代框架,用于知识型视觉推理,能够迭代地关注图像中相关的视觉概念,并为答案预测提供一致的支持理由。VCTP具有几个优点。首先,它是有效的。在知识型基准测试上的广泛实验发现,VCTP的表现优于以前的少次基线。此外,由于它保持了导致预测的整个逐步推理痕迹,因此VCTP更加透明和可解释。与微调方法相比,VCTP在计算上也更加高效。我们的代码将在被接受后提供。
在这里插入图片描述

相关工作

视觉提示
像GPT-3(Brown等人,2020)这样的大型语言模型在自然语言处理(NLP)中推广了少次提示,其中几个输入输出对被用作上下文,以便语言模型理解任务并为新示例生成预测。思维链提示(Wei等人,2022)及其变体(Creswell, Shanahan, 和 Higgins 2022; Zhou等人,2022a; Marasovic等人,2022)已经被开发用于在NLP中更有效或更透明地推理。后来,提示被引入到视觉领域(Zhou等人,2022c; Jia等人,2022; Ju等人,2021; Ge等人,2022; Zhou等人,2022b; Wang等人,2022)。CLIP(Radford等人,2021)和RegionCLIP(Zhong等人,2022)通过在训练期间用自然语言监督替换类标签,实现零样本分类和检测。UnitedIO(Lu等人,2022)使用语言提示指定每个视觉任务以执行多任务学习。同时进行的工作(Zhang等人,2023)训练一个变换器首先预测理由,然后基于多模态特征向量推断答案。不同地,我们旨在使用交互式提示进行知识型视觉推理。它需要语言模型和视觉模型之间的频繁交互,例如提取相关的视觉概念、回忆外部知识以及验证文本预测与视觉上下文一致性,这之前尚未得到很好的研究。

大型预训练模型用于视觉推理
大型预训练模型也已被用于视觉和语言推理(Dou等人,2022; Zeng等人,2022; Gao等人,2022; Zhao等人,2023)。大多数工作(Tsimpoukelli等人,2021; Jin等人,2022; Zellers等人,2022; Chen等人,2022a)从大量视觉语言数据中学习大型预训练模型,并将其微调为下游任务,这通常在计算上非常昂贵且耗时。例如,Flamino(Alayrac等人,2022)需要在1536个TPUv4上微调15天,使用1.85亿张图像和182 GB的文本。还观察到,这些预训练模型中的许多(例如,Kamath等人,2022; Tan和Bansal,2019)包含有限的开放世界知识。它们在KB-VR数据集上的表现不如使用LLMs的模型,用于外部知识(Gui等人,2022)。Yang等人将图像转换为文本描述,并将它们作为LLMs的提示,这在基于知识的视觉上下文问题回答上取得了高性能。然而,它的基于文本的视觉上下文与查询问题独立,使问题回答过程成为黑盒。 知识型视觉推理。我们的工作还与知识型视觉推理(KB-VR)(Marino等人,2019; Schwenk等人,2022; Wang等人,2017a)相关,这要求同时理解图像内容和检索外部知识以回答问题。大多数早期方法(Zhu等人,2021; Ding等人,2022b; Gard`eres等人,2020; Lin和Byrne,2022)使用深度神经网络来理解图像,并从显式知识库中检索相关知识。近期的方法(Gui等人,2022; Yang等人,2022)发现,像GPT-3这样的LLMs可以作为知识库,并直接使用LLM回答问题。虽然我们的模型也从LLMs检索相关知识,但它除了最终答案预测外还提供了逐步推理过程。

知识型视觉推理
我们的工作还与知识型视觉推理(KB-VR)(Marino等人,2019年;Schwenk等人,2022年;Wang等人,2017年)相关,这要求模型不仅要理解图像内容,还要检索外部知识以回答问题。大多数早期方法(Zhu等人,2021年;Ding等人,2022年;Gard`eres等人,2020年;Lin和Byrne,2022年)使用深度神经网络来理解图像,并从显式知识库中检索相关知识。近期的方法(Gui等人,2022年;Yang等人,2022年)发现,像GPT-3这样的大型语言模型可以作为知识库,并直接使用它们来回答问题。尽管我们的模型也从LLMs中检索相关知识,但它除了最终答案预测外,还提供了逐步推理过程。

神经符号视觉推理
我们的工作可以被视为神经模块网络(Yi等人,2018年;Andreas等人,2016年;Chen等人,2022年;Ding等人,2021年,2022年;Chen等人,2021年),这些网络提供了透明的逐步推理。它们通常将查询问题分解为一系列操作,每个操作都用一个网络模块来建模,并通过迭代执行这些操作来获得结果。虽然这些模型更易于解释,但它们要么专注于简单的物理场景(Johnson等人,2017年;Yi等人,2020年),要么在现实世界数据集上的表现不如端到端的神经网络方法(Hudson和Manning,2019年)。与它们不同,我们希望构建一个系统,它在开放世界知识型视觉推理上能够实现合理的性能,同时保持系统的互操作性。

方法

总体

在本节中,我们介绍了一个名为Visual Chain-of-Thought Prompting(VCTP)的新框架,该框架用于基于知识的可视化推理,可以理解查询问题,关注图像中的关键视觉概念,检索支持证据,并最终以逐步的方式得出答案。VCTP由三个模块组成:see、think和confirm,以迭代方式运行这些模块。如图2所示
在这里插入图片描述
给定一个图像有关其内容的问题,see模块使用场景解析器(Han等人,2021)来检测图像中的所有候选对象(概念),并用它们预测的类别名称表示它们。它还为整个图像生成一个全局描述。然后,think模块使用大型预训练语言模型(LLM)来关注与查询问题语义相关的主要概念,并使用图像字幕生成器自然语言的形式描述它们。基于所关注的视觉上下文,LLM预测问题的答案。确认模块要求LLM继续生成答案的支持理由,并使用跨模态分类器(Radford等人,2021)验证它们。为确保理由与答案一致,我们将经过验证的支持理由重新添加到提示上下文中并开始新的think-confirm迭代。我们重复生成答案和理由,直到连续两次迭代中的答案预测一致。我们在算法1中总结了整个算法流程。
在这里插入图片描述
与现有的基于上下文学习方法(Yang等人,2022;Wei等人,2022)相比,我们的框架有两个优点:有效性和可解释性。它之所以有效,是因为它能够自适应地关注相关的视觉区域,并输出一致的答案-理由预测。它之所以可解释,是因为它能够逐步调查整个推理过程。可以在图4中找到这种推理过程的可视化示例。
在这里插入图片描述

模型细节

See模块。给定一个查询图像,我们使用FasterRCNN(Ren等人,2015)来检测图像中的所有对象候选项。具体来说,我们使用Yang等人(Han等人,2021)发布的检测模型来预测对象的位置及其类别标签,如“knife”,“plate”和“napkin”。它还使用图像字幕生成器(Li等人,2022)为整个图像提供全局字幕。这些视觉概念将在think模块中被选择和进一步描述,以提供有价值的视觉上下文以获得答案。

Think模块。我们框架的第二个模块是think模块,它关注图像中的对应区域,并将它们转换为文本描述,以便LLM预测答案。如图2所示,我们在think模块中使用attend-describe-predict方法。第一步是attend,我们使用提示方法(Brown等人,2020;Chowdhery等人,2022)帮助LLM关注图像中与查询问题语义相关的主要概念。我们在图3(A)中显示了LLM关注关键视觉概念的提示模板。
在这里插入图片描述
我们将一些来自训练集的输入-输出对输入到LLM的提示中,并要求LLM基于给定的上下文进行选择。问题显示在模板的顶部。在see模块中检测到的对象由它们的类别名称表示,例如“knife”和“beans”,LLM输出词汇表中的词汇限制在这些类别名称中。LLM选择最相关的对象以提供进一步的视觉上下文来处理查询问题。如图2所示,这种被关注的概念(例如“meat”和“knife”)对于得到问题“Which food item is the knife for?”的答案“meat”是重要的。Think模块的下一步是describe。所选概念对应的图像区域被裁剪并输入到图像字幕生成器(Li等人,2022)以生成新概念的区域描述。生成的区域描述将被添加到LLM的提示中以提供细粒度的视觉上下文以预测答案。请注意,一个对象的区域描述通常比对象类别更信息丰富。例如,图2中的“some pieces of meat on the plate”的字幕额外描述了“meat”和“plate”之间的关系。Think模块的最后一步是predict。我们添加了多个来自训练集的问题-答案示例到LLM的提示中,并要求它预测一个答案。答案预测基于所关注的视觉上下文和在前几次迭代中由confirm模块预测的理由,我们将在confirm模块中讨论。

Confirm模块。我们框架中的最后一个模块是confirm模块,如图2所示,它的目的是为答案预测生成一致的支持理由并验证预测的正确性。给定由think模块生成的少量示例上下文和交互提示,我们要求LLM在答案预测后继续预测支持理由。这样一个问题-答案-理由模板的示例可以在图3(B)中找到。
在这里插入图片描述
LLM预测的一个显著问题是,生成过程是一个黑箱,很难验证预测答案和理由的正确性。我们认为一个正确的理由应该有两个鲜明的特点。首先,理由应该与答案一致。给定预测的支持理由(图2中的“The knife is for cutting the meat”),当它被添加到上下文中时,我们应该能够预测相同的答案。其次,理由应该与视觉输入一致。为确保理由支持答案预测,我们将生成的文本理由输入到下一轮迭代中LLM的提示中。我们重复这个答案到理由和理由到答案的过程,直到连续两次预测的答案相同(算法1的第4行到第17行)。为确保生成的理由与给定的视觉上下文一致,我们使用大型预训练的跨模态分类器(Radford等人,2021)来验证文本理由是否与给定图像匹配(算法1的第13行到第15行)。只有具有高匹配相似度的理由才会被接受,并添加到下一轮迭代的答案预测提示中。

实验

在本节中,我们通过大量实验展示了所提出的VCTP的优势。

实现细节:所提出的VCTP的有效性依赖于几个预训练的视觉模型(Li等人,2022;Radford等人,2021)和语言模型(Zhang等人,2022)的交互。我们选择由(Han等人,2021)发布的更快的R-CNN模型来检测图像中的视觉概念,该模型在Visual Genome(Krishna等人,2017)上进行了训练。我们选择BLIP(Li等人,2022)作为所关注对象的区域字幕模型。我们使用OPT-66B和Llama-2-70B作为预训练的语言模型进行提示,因为它们既有效又公开可用。我们使用CLIP模型(ViT-B/16)(Radford等人,2021)来验证理由和图像之间的匹配相似度。我们没有使用GPT-3(Brown等人,2020),因为它的API成本昂贵且访问频率有限。

我们固定think模块中的上下文示例数量为8,因为这是我们在硬件配置上能够高效运行的最大数量。按照(Yang等人,2022)的做法,我们使用上下文示例选择和多查询集成来提示LLM。对于上下文示例,我们选择与训练集中当前图像-问题对CLIP特征最相似的示例。对于多查询集成,我们像以前的方法(Yang等人,2022;Chen等人,2021a)一样,除了表3中的对齐模型外,我们用模型和基线输入5次,并选择具有最高对数概率的一个,对齐模型我们集成14次,使它们具有与我们相似的计算成本。

数据集和评估指标:我们在标准的基于知识的VQA基准测试OK-VQA(Marino等人,2019)和A-OKVQA(Schwenk等人,2022)上评估我们的模型。OK-VQA是最受欢迎的基于知识的VQA数据集,包含14,055个图像-问题对。A-OKVQA是当前最大的KBVR数据集,它不仅提出与知识相关的问题,还提供支持理由,使其成为逐步推理的更好测试平台。我们没有在其他KB-VR数据集上进行实验,如F-VQA(Wang等人,2017a)和KB-VQA(Wang等人,2017b),因为它们假设问题知识可以从预定义的知识库中检索。

基线:我们主要将我们的方法与两个强大的基于上下文的学习基线进行比较,PICa(Yang等人,2022)和CoT(Wei等人,2022)。

  • PICa。使用GPT-3的PICa是OK-VQA上当前最先进的few-shot模型,它仅用图像字幕和对象标签提示LLM。
  • CoT。CoT是一种流行的提示方法,执行逐步推理来解决问题,而不是直接输出答案。我们通过要求LLM首先生成理由,然后预测答案来实现CoT。

我们使用OPT66B模型仔细实现了这两种方法,以进行公平比较。我们还在表格中包括了其他全监督方法以供参考。
在这里插入图片描述
定量结果:我们在表1中比较了我们的VCTP与A-OKVQA数据集的验证集和测试集上的基线。少次射击上下文学习方法在表中用⋆标记,我们的方法用灰色背景标记,以方便参考。根据结果,我们有以下观察。首先,与基于上下文学习的基线PICa和CoT相比,我们有持续的增益,甚至在A-OKVQA的测试分割上比之前的全监督预训练方法GPV-2表现更好。这些增益显示了我们方法在答案预测中的有效性。我们还注意到,与基于上下文的方法相比,全监督方法在验证集和测试集之间的性能差异更大。例如,GPV-2的准确率下降了7.9,而我们的方法只下降了0.4。我们认为原因是验证集已经在全监督方法中经常评估,有些过度拟合。

我们还评估了我们在OK-VQA的方法,结果在表1中。OK-VQA的训练集没有提供理由,这是CoT和我们方法所需的。对于我们的方法,我们开发了一个变体,只使用OK-VQA中的例子作为think模块的提示,而没有理由推理。当连续两次迭代的预测答案相同时,模型停止。我们观察到,我们的模型表现优于基线,PICa和CoT,这与我们在A-OKVQA数据集的发现一致。我们还可以看到(KAT-GPT-3(Gui等人,2022)和PICa-GPT-3)依赖于更强大的LLM,GPT-3(175B),以获得出色的性能。相比之下,我们的方法通过整合可用的OPT-66B LLM实现了合理的性能。当我们将OPT-66B LLM替换为Llama-2-70B模型(Touvron等人,2023),或BLIP2(Li等人,2023)和Codex(Chen等人,2021a)模型时,我们方法的性能显著提高,表明我们的方法可以从更强大的模型中受益。

定性结果:我们VCTP的逐步推理特性提供了更好的透明度和互操作性,使理解我们模型的工作原理变得容易。我们在图4中提供了与基线的定性比较。图4中的→显示了我们方法的推理过程,以获得相关的视觉概念、区域描述和支持理由。与PICa相比,我们的方法可以自适应地关注图像中对问题(例如What is the fence meant to block?)语义重要的关键视觉概念(例如“ball”和“tennis court”),并以自然语言的形式描述它们(例如“Someone has a tennis racket and is about to hit the ball”)以获得答案。此外,如图4中的explain列所示,我们的方法可以生成更好的支持理由(“The wall is used for displaying art”),这与图像中的视觉上下文更好地匹配。相比之下,CoT可能会生成与视觉上下文不一致的理由(“The wall is used for a sofa.”),导致错误的答案。

理由评估:为了进一步评估我们方法的推理过程,我们在表2中比较了我们方法和CoT在A-OKVQA验证集上的理由质量,其中理由是公开可用的。我们使用广泛使用的BLEU分数和CLIP句子相似度作为指标。我们测量了由CLIP(ViT-B/16)(Radford等人,2021)文本编码器计算的句子表示的多BLEU分数和平均余弦相似度。BLEU和相似度结果均显示,我们方法生成的理由比CoT生成的理由更接近真实情况。

计算分析:为了更好地理解我们方法的效率,我们使基于上下文学习的基线具有与我们模型相似的计算成本。具体来说,我们增加了查询集成的k数量(除了PICa-aligned和CoT-aligned以下的实验中为5)对于PICa和CoT,并使它们对LLM的总体查询数量与我们的方法相同。考虑到我们方法在实验中的平均查询数量为13.62,成本对齐的PICa和CoT的集成数量k为每个样本14,分别表示为PICa-aligned和CoT-aligned。我们在表3中将它们的结果与我们的方法进行比较,表明在考虑计算成本问题后,我们的方法仍然显著优于PICa和CoT。我们还注意到PICa的性能在集成数量k增加时略有下降。我们认为这种下降与上下文样本选择方法有关,当k增加时,选择的样本与当前问题更不相关。消融研究。我们在A-OK-VQA的验证集上进行了消融研究,并在表4中总结了结果。Ours表示我们的默认模型,所有组件都与算法1中的mIter集成为5。Ours-1/4/6表示我们将最大迭代设置为1、4和6。“w/o A/R/V”表示VCTP模型没有attend-describe组件,没有生成理由和没有CLIP验证模块。R-A/G/R分别关注一个随机区域,将全局字幕替换为训练集中的随机一个,并从训练集中随机选择一个理由;O-A是一个预言模型,关注由文本编码器估计的与答案最相似的视觉概念。Recall-1和Recall-2使用最后一步的提示来评估模型捕获关键概念的性能,通过计算真实答案最相关的视觉概念和包含在真实答案和理由中的所有概念的提示的召回率。我们发现,如果没有任何一个消融组件(w/o A/R/V),性能会下降,表明每个组件都对整体性能有所贡献。与大多数消融研究相比,除了w/o V,我们发现我们的模型关注了更重要的概念,正如Recall-1和Recall-2所示。如果能够准确地关注关键概念(Oracle-A),我们模型的性能可能会进一步提高。我们进一步发现,Ours关注了比w/o V更少的重要概念,但是问题回答性能更高,我们认为这是因为验证机制帮助拒绝了一些误导性的理由重新添加到提示中。我们观察到,“attend”模块对性能影响最大,我们认为这是因为“attend”组件为LLM提供了关键的视觉上下文,以推断正确的答案,如图4中的示例所示。“w/o R”和“Random-R”消融表明,将推理理由添加到模型中不仅增加了模型的透明度,而且对答案预测也产生了积极影响。与没有迭代的消融(Ours-1)相比,我们的模型表现更好,这表明了迭代交互式提示的重要性。


http://www.ppmy.cn/devtools/101927.html

相关文章

Kubernetes(k8s)中部署WordPress

在Kubernetes(k8s)中部署WordPress通常涉及创建一个Deployment来管理WordPress的Pod,以及一个Service来暴露WordPress应用。此外,由于WordPress需要数据库支持,你还需要部署一个MySQL或MariaDB的Pod和Service。 以下是…

redis分布式是如何实现的(面试版)

需要结合项目中的业务进行回答,通常情况下,分布式锁使用的场景:集群情况下的定时任务、抢单、幂等性场景。 下面先来看一个抢卷场景: 以下情况会出现超卖情况: 因为线程会交替执行,所以线程查询优惠价的数…

探索Git:分布式版本控制系统的力量(二)

😀前言 本篇博文是关于分布式版本控制系统Git的一些基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我…

Android自定义一个带背景的圆环形进度条(Kotlin)

前言 在Android开发过程中,难免遇到一些复杂的UI组件需要我们自定义 当然使用系统原生组件拼凑也能完成,但是UI复杂度增加了不说,在更新UI状态的时候还不好管理,最重要的是复用的价值不大,上述的操作很容易引增加码冗…

Oracle字符串聚合函数LISTAGG

在Oracle 19c中,LISTAGG函数是一个非常有用的字符串聚合函数,它可以将来自多个行的值连接成一个单独的字符串。这个函数特别适用于将分组内的多个值合并为一个逗号分隔(或其他分隔符)的字符串。 LISTAGG函数的基本语法如下&#…

LeetCode 3133.数组最后一个元素的最小值:位运算+双指针

【LetMeFly】3133.数组最后一个元素的最小值&#xff1a;位运算双指针 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-array-end/ 给你两个整数 n 和 x 。你需要构造一个长度为 n 的 正整数 数组 nums &#xff0c;对于所有 0 < i < n - 1 &#xff0…

网络游戏运营

游戏运营是将一款游戏平台推入市场&#xff0c;并通过一系列的策略和行动&#xff0c;使玩家从接触、认识到最终成为忠实玩家的过程。这一过程涵盖了多个方面&#xff0c;包括前期准备、上线运营、活动策划、数据分析、渠道合作以及用户维护等。以下是对游戏运营的详细解析&…

用ChatGPT精确营销:如何让AI深度理解并推广你的产品

在现代商业中,人工智能(AI)正迅速成为企业成功的关键因素之一。ChatGPT作为一种强大的语言模型,不仅能回答问题,还能通过深度理解和互动,帮助企业精准推广产品。然而,如何让ChatGPT真正了解并有效地推广你的产品,是许多使用者面临的挑战。在本文中,我们将探讨如何通过…