增强型语言模型——走向通用智能的道路?!?

news2025/1/12 12:03:36
增强型语言模型——走向通用智能的道路?!?
FesianXu 20230325 at Baidu Search Team

前言

继AlphaGo在2016年横扫了人类棋手之后,2022年末的chatGPT横空出世,再次引爆了全球对人工智能技术的热情。基于语言模型的chatGPT的功能却远远不止步于『chat(闲聊)』,而是能在人类的各个领域中提供帮助,包括但不限于编程、常识问答、法律咨询、知识检索、数学题/逻辑题解答、甚至有研究者还称其可能具有九岁孩童的人类心智 [1],并有研究者称GPT-4 [3] 已经可以视为早期的通用人工智能 [2]。

对于笔者来说,由于没有在NLP前沿领域有太多跟踪,这一切太过突然,仿佛从天而降,但心里已经隐隐觉得大规模语言模型可能并不只受限于『语言』,而是能在非常广阔的其他领域有所应用。本文是笔者在读完综述 [4]后的一个读后感,笔者对NLP见识有限,谨以此文对一些阅读进行个人看法讨论。如有谬误请见谅并联系指出,本文遵守CC 4.0 BY-SA版权协议,转载请联系作者并注明出处,谢谢

∇ \nabla 联系方式:

e-mail: FesianXu@gmail.com

github: https://github.com/FesianXu

知乎专栏: 计算机视觉/计算机图形理论与应用

微信公众号:机器学习杂货铺3号店

qrcode


Augmented Language Model (ALM),笔者将其翻译为增强型语言模型,因其不仅可处理常规的自然语言处理任务(如命名实体识别、文本分类等等),而且在一些看似不是自然语言任务的场景也可以应用(如操控机械臂等),在论文[4]中,作者给我们展示了一个ALM在当前已有的一些研究,笔者深受其震撼。总结来说,ALM主要有两种最为突出的能力:

  1. 推理能力(Reasoning): 指的是模型能将复杂任务拆解为多个或多步简单任务,通过对简单任务的求解从而达到对复杂任务求解的目的。
  2. 对外部工具的操控能力(The ability of using external tools): 指的是有能力调用外部工具,比如搜索引擎、数据库、甚至是物理世界的机械臂等。这种能力有可以再细分为单纯从工具中获取知识(如调用搜索引擎),或者通过工具影响物理世界(如操作机械臂)。

首先需要强调的是,这些能力目前来看都只在大规模语言模型(Large Language Model, LLM)中有所涌现(Emergency) [5],涌现指的是某种只在模型参数规模达到一定程度后(>10B)才能出现的能力,这些能力在小模型上都无从谈起,对此的讨论可参考博文 [6]。LLM的涌现能力可以说是ALM的基础,具备了涌现能力之后,ALM才具有了强大的逻辑推理和语义理解能力。可以想想,一个模型如果能够具有强大的语义理解能力和逻辑推理能力,并且可以通过操作外部工具获取知识,影响物理世界,那么这已经和我们认识中的『强人工智能』似乎也相差不远了?本文就是尝试对ALM的这些神奇的能力进行综述。

推理能力

通常来说,推理能力是通过证据(Evidence)和逻辑(Logic)对一个问题进行推理的能力,通常可以拆分为一些子问题进行研究,比如常识推理(Commonsense reasoning)、数学推理(mathematical reasoning)、符号推理(Symbolic reasoning)等等。近些年来,基于prompt技术的语言模型得到了广泛地流行,prompt技术+预训练模型是一种新的范式,与传统pretrain -> finetune的范式有所不同的是,在pretrain -> prompt范式中,我们可以不对模型参数进行更新,只需要考虑如何设计更加合理的prompt,就能充分地利用预训练模型中的知识。这里指的『设计更合理的prompt』,既可以是借助已有的人工标注数据进行设计,也可以对已有的人工标注数据进行扩展,比如Chain of Thought Prompt [7] 就扩展了已有标注,补充了思维链的过程。

说到底,无论是prompt还是finetune,都是为了让预训练模型更好地往着下游任务迁移的过程,然而这两者有着完全不同的设计思路。对于finetune而言,预训练模型仿佛是一个早熟的『孩子』,知识丰富却缺少了经验,因此通过一些人工标注数据作为监督信号,去教导这个孩子成为某个领域的专家,然而这个蜕变的过程是刻骨铭心的,一旦他成为了一个领域的专家,他可能就很难成为另一个领域的专家了。蜕变后的他获得了某个领域的成功,却失去了作为孩子的无限发展的可能性(模型通用性)。不仅如此,现在的预训练模型日渐庞大,GPT-3的参数量已经达到了175B,PaLM的参数量达到了540B,在这种参数量下,即便是少量样本的微调,也显得代价难以接受。

此时,我们自然就在想,是否可以在不更新模型参数的前提下,进行预训练模型的下游任务迁移呢?而这也不是痴人说梦,预训练模型在参数量足够巨大的时候,本身就蕴含着无限可能性,他好似一个无穷尽的知识库,只是缺少了有效的搜索途径。从这个角度看,『finetune』这个过程才显得可笑,这相当于为了契合某个人的喜好,就将这个已有知识宝库里面的大部分知识都付之一炬一般。理查德·道金斯所著的《自私的基因》一书中曾经有句名言:

当搜索空间足够大时,有效的搜索就与真正的创造并无二致了

我们在拥有了这个无尽知识宝库(大规模语言模型)后,应该考虑的是如何才能有效从中找到我们需要的内容,而这个过程我们不妨就称之为prompt1

LLM的推理能力正是可以通过prompt技术进行诱导,而prompt又可以分为zero-shot promptfew-shot prompt,后者我们通常也称之为情景学习(in-context learning)2。如Fig 1.1 (a) 所示,few-shot prompt技术可以通过提供一个解决某个问题的中间思维过程作为示例,如绿底字就提供了解决这个文字数学问题的中间计算过程,诱导LLM的回答里面也包含这个中间思维过程,因此这种prompt方式也称之为思维链提示(Chain of Thought Prompt, CoT prompt)。如果只提供了一个示例,称之为one-shot prompt,如果提供了若干个示例,则称之为few-shot prompt,如果没有提供任何示例呢?如Fig 1.1 (b)所示,这种我们称之为zero-shot prompt。在zero-shot prompt中,没有提供任何和任务有关的示例,顶多会提供一些通用的提示词,如[8]只是在输入的问题后面添加上了一段 Let's think step by step,即便如此,实验也证实了在GSM8K等推理任务中,zero-shot prompt也有着不错的表现(即便比不过few-shot prompt)。

few_zero-shot-cot-prompt

Fig 1.1 通过使用Few-shot思维链提示技术和zero-shot提示技术,可以『诱导』出模型的推理能力。

如Fig 1.2 (a)所示,采用了CoT prompt技术的LLM模型,比起不采用CoT的有着巨大的性能提升,而如Fig 1.2 (b)所示,CoT prompt带来的大幅性能提升只在模型规模达到一定程度之后才会涌现。

cot_prompt_performance

Fig 1.2 采用了CoT prompt技术后,与传统prompt技术的结果对比。
还有一些研究在尝试将复杂问题进行分解成多个子任务,进行分而治之解决,这些方法又可以分为两大类,将复杂问题分解为子任务的方法,也是采用了prompt技术[9]进行的。
  1. 独立对子问题进行求解,并将子解合并为最终解。
  2. 序列式地求解子问题,将上一个子问题的答案作为下一个子问题的依赖进行求解。

这个过程可见Fig 1.3,在Prompt 0中对复杂问题进行分解,得到两个子问题,显然这两个子问题存在依赖关系,我们需要首先解决绿色子问题Subquestion 1。在prompt 1中,将绿色子问题Subquestion 1作为prompt,和原问题一并提供给LLM得到Answer 1。然后在Prompt 2中将原问题,Subquestion 1和Answer 1作为prompt的一部分输入,同时再加入Subquestion 2,得到最终的问题答案Answer 2。

recursive_prompt_example

Fig 1.3 LLM对复杂任务进行子任务分解,然后序列式地对子问题进行求解,得到最终的问题答案。

即便已经取得了如此了不起的结果,prompt技术还处在一些缺陷,特别是当LLM足够大的时候。首先,探索出一些能够诱导出LLM形成推理能力(如多步推理)的prompt,挑选一个合适的prompt并不是一件容易的事情。如Fig 1.4 (a)所示,即便是相同的prompt示例样本,不同标注者的prompt风格都可以导致在GSM8K上的结果有较大差距。不仅如此,当LLM规模较大的时候,长prompt同样会带来较大的计算负担。

different_prompt_style

Fig 1.4 即便对于同一个示例样本,不同的prompt风格都会对结果有很大影响。

因此,一些研究尝试显式地诱导语言模型进行推理3,这个过程就回到了pretrain -> finetune的范式,不过还是同样会使用prompt技术的辅助。文献[10]提出了一种称之为『草稿本(Scratchpad)』的概念,指的是模型在训练时候可以同时见到原问题和中间步骤,并且以中间步骤作为监督信号进行模型的finetune,在预测阶段模型汇通是对中间步骤和中间答案都进行预测,像极了我们解数学题时候的草稿本,因此而得名。如Fig 1.5所示,该图展示了一般直接式的程序执行预测和草稿本策略下的程序执行预测的差别,后者会对程序调用过程中的结果进行跟踪,并且以此微调模型,以此显式地获得推理能力。我们能发现,scratchpad策略和我们之前提到的few-shot prompt等策略都有所不同,它是需要对模型进行微调的。

scratch_pad_prompt_tuning

Fig 1.5 scratchpad会对代码运行或者数学计算的中间步骤和结果都进行预测。
还有一种类似的做法,scratchpad的方法是将多步推理标注作为模型每一步预测的监督信号,而[11]则是一股脑将多步推理标注作为prompt的一部分,与原问题一并输入,如Fig 1.6所示,作者用` `各开了原问题和多步推理的prompt,监督信号此时就只剩下了最终的问题结果,通过这种形式对模型进行微调。在预测阶段,只需要在输入后加上``,就可以激活模型的多步推理能力。

working_memory_prompt

Fig 1.6 另一种可行的显式多步推理建模,将多步推理过程在prompt中作为输入。
总结来看,LLM的推理能力可以认为是一种将复杂问题分解为多个子问题,并且进行分别求解的过程,这个过程中不能保证中间步骤的有效性,同时LLM也经常会出现一些常识性错误,并且LLM经常在一些简单的数学问题中得到错误的中间答案。这些我们将在后文中看到,可以通过调用外部工具(如搜索引擎、计算器等)进行缓解,提高中间推理步骤的有效性。

在原文中,此处作者还提到了一个有趣的结论,采用显式的指令微调(instruction finetuning),已经在诸多研究中证实了其作用,能够使得较小规模的(10B左右)的语言模型,超越未经过指令微调的大规模语言模型,特别是在那些非常看重指令执行的任务中。这一点在chatGPT和其前辈instructGPT [15]都有体现,他们利用了RLHF(Reinforcement Learning from Human Feedback)技术,对LLM进行了指令微调,从而得到了强大的推理能力。

使用外部工具的能力

最近chatGPT又推出了一个使用插件的功能 [12],使得chatGPT可以联网与超过5000种的外部插件进行交互,这是一个轰动的结果,这意味着chatGPT作为一个『大脑』,从此可以利用互联网中海量的插件能力,这无疑给chatGPT赋予了左膀右臂,如Fig 2.1的官方演示所示,一旦chatGPT接入了Wolfram Alpha,就再也不用担心chatGPT数值计算的不准确的问题了。一旦chatGPT接入了搜索引擎和数据库,chatGPT就可以检索到最新的信息了。一旦chatGPT接入了代码解释器,chatGPT甚至还能帮你debug代码!这海量的插件将给chatGPT带来完全不同的玩法,我们不禁感叹天网将至,似乎我们往着通用人工智能又往前了一大步。

chatgpt_plugin_example

Fig 2.1 chatGPT接入了Wolfram Alpha插件后,拥有了更为精确的数值计算功能。

从上面的例子中,我们不难看出LLM除了推理能力,还能借助外部知识库的力量巩固自己的知识,不仅如此,LLM甚至还能『听得懂』你的指令为你购物,还能控制物理世界的机械臂 [13],而本章就讨论LLM的这两种能力:利用工具巩固自己知识、通过工具影响外部世界。

此处的外部工具(External Tools)是一个广义的概念,不仅仅是搜索引擎、数据库、机械臂等,连神经网络或者语言模型本身也可以视为是外部工具。从这种角度上看,LLM迭代式地调用自身也可以视为是调用工具,类似的工作如PEER [15]。如Fig 2.1所示,PEER是一个自己调用自己的过程,其每次迭代中会输入Text,LLM生成Plan和Edit,通过Plan的引导对原文进行修改,并形成修改后的文本Edit。在后续的迭代中,将Edit作为Text,并迭代运行,直到达到终止条件为止。这种迭代式优化文本的方式对于一些复杂的生成任务,如小说、文章生成而言有着优势,相当于是将复杂任务拆分为了多个小型的子任务了。

iteraitve_prompt_example

Fig 2.1 采用PEER的迭代式prompt的例子。
正如上文所谈到的,LLM还可以调用外部的知识单元,比如搜索引擎、数据库等提高自身的知识推理能力,通过这种手段可以减少LLM的事实错误推理,产生过时信息等,并且通过将LLM的知识储存功能下放到外部知识模块,可以减少LLM的参数量。检索通常可以分为稀疏检索(Sparse)和稠密检索(Dense),前者通过对文档和检索词进行词袋(Word of Bag, WoB)表达后进行匹配,是一种类似于字词匹配的技术;而后者通过神经网络对文档和检索词进行向量编码后进行相似度计算,也被称之为向量化检索 [16],这是一种基于语义的检索方式。在我们本文中提到的工作都是采用稠密检索的。语言模型尝试采用检索系统的结果并不是一件稀罕事儿,这类型的工作会将文档的稠密表达拼接到当前语言模型上下文的后面,从而进行相似度计量,第一篇端到端的工作是REALM [17],还有若干篇后续工作。还有一些工作尝试把思维链的思想也引入到检索中,如IRCoT(交织型检索思维链, Interleaving Retrieval CoT) [18]这个方案通过交织检索步(Retrieve)和推理步(Reason),利用检索得到的结果去加强CoT推理步的结果,反过来也用CoT推理步的结果去更好地检索新结果,这是一个彼此加强的过程,如Fig 2.2所示。

IRCoT_scheme

Fig 2.2 IRCoT的流程交织着检索步(Retrieve)和推理步(Reason)。
在这些工作中,为了获得对应的资料去增强语言模型,对于每个检索请求(Query)都会调用检索器(Retriever)。与此同时,也有些其他工作让语言模型**只在需要的时候**请求检索器扩充知识。比如BlenderBot [20] 可以通过prompt的方法决定是否发起检索,在这种情况下,prompt方法直接与调用搜索引擎工具的指令相关联了。由于可以访问到外部的搜索引擎,因此BlenderBot可以应对开放域(open-domain)的问题,如Fig 2.3所示,作者将其作为公开应用进行部署、公开,让模型能以人在回路(human in the loop)的方式对模型进行持续训练。

blenderbot_human_in_the_loop

Fig 2.3 BlenderBot 采用人在回路的方式,对模型进行持续学习。

BlenderBot只能对检索器4进行调用,而在WebGPT这篇工作中,作者尝试让语言模型去仿照人的行为去『浏览』一个浏览器,为了实现的简便性,此处的浏览器是一个纯文本构成的浏览器5。webGPT可以学习出如何通过使用如Fig 2.4所示的有限指令集对浏览器进行检索、浏览、点击链接、引用数据源等,由于这显然是一个action-reward的过程,在训练模型的时候采用了强化学习,而此处的奖励也并不难定义,在给定了某个特定的任务描述的时候,只要判断webGPT是否在浏览器中找到了需要的内容,即可定义出非零既一的硬奖励函数去引导模型的学习了。

webgpt_instruction_table

Fig 2.4 WebGPT所使用的有限指令集,包括了网页浏览相关的基本操作,如查询、点击链接、定位网页、引用等等。
由此我们看到LLM具有分解任务和决策序列规划的能力,这种能力对于控制外部工具而言非常重要,LLM有一个很有意思的应用就是尝试利用LLM作为『大脑』去分解高级指令,拆解目标后控制一个虚拟仿真世界中的实体或者真实世界中的实体(agent)。如Fig 2.5所示,"Get Class of Milk"是一个复杂且抽象的指令,为了完成这个指令需要实体知道周围环境的状态,并且拆解、规划出合适的一系列动作去完成,而[22]这篇工作指出,在LLM足够庞大并且进行了正确的prompt之后,LLM中所具有的世界知识(World Knowledge)足以让实体完成这个任务。

llm_decompose_task

Fig 2.5 LLM可以拆解复杂、抽象的指令成若干具体指令,然后指导虚拟世界的实体进行执行。

在[23]这个工作中,作者则结合多模态模型(Visual-Language Model, VLM)和LLM模型去控制模拟环境下的机械臂,LLM作为多步规划器(去理解环境状况与任务语义,进行复杂任务的拆解),而VLM则作为观察外部环境的手段,通过多模态模型的引入提供了更好的观察外部世界的手段。

Reference

[1]. Kosinski, M. (2023). Theory of mind may have spontaneously emerged in large language models. arXiv preprint arXiv:2302.02083.

[2]. Bubeck, S., Chandrasekaran, V., Eldan, R., Gehrke, J., Horvitz, E., Kamar, E., … & Zhang, Y. (2023). Sparks of Artificial General Intelligence: Early experiments with GPT-4. arXiv preprint arXiv:2303.12712.

[3]. https://cdn.openai.com/papers/gpt-4.pdf

[4]. Mialon, Grégoire, Roberto Dessì, Maria Lomeli, Christoforos Nalmpantis, Ram Pasunuru, Roberta Raileanu, Baptiste Rozière et al. “Augmented language models: a survey.” arXiv preprint arXiv:2302.07842 (2023).

[5]. Wei, Jason, Yi Tay, Rishi Bommasani, Colin Raffel, Barret Zoph, Sebastian Borgeaud, Dani Yogatama et al. “Emergent abilities of large language models.” arXiv preprint arXiv:2206.07682 (2022).

[6]. https://fesianxu.github.io/2023/03/25/emergent-abilities-llm-20230324/, 《【论文极速读】 大规模语言模型中的能力“涌现”现象》

[7]. Wei, Jason, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Ed Chi, Quoc Le, and Denny Zhou. “Chain of thought prompting elicits reasoning in large language models.” arXiv preprint arXiv:2201.11903 (2022).

[8]. Takeshi Kojima, Shixiang Shane Gu, Machel Reid, Yutaka Matsuo, and Yusuke Iwasawa. Large language models are zero-shot reasoners. In Advances in Neural Information Processing Systems (NeurIPS), 2022.

[9]. Zeqiu Wu, Yi Luan, Hannah Rashkin, David Reitter, and Gaurav Singh Tomar. Conqrr: Conversational query rewriting for retrieval with reinforcement learning. Conference on Empirical Methods in Natural Language Processing (EMNLP), 2022d.

[10]. Nye, M., Andreassen, A. J., Gur-Ari, G., Michalewski, H., Austin, J., Bieber, D., … & Odena, A. (2021). Show your work: Scratchpads for intermediate computation with language models. arXiv preprint arXiv:2112.00114.

[11]. Taylor, Ross, Marcin Kardas, Guillem Cucurull, Thomas Scialom, Anthony Hartshorn, Elvis Saravia, Andrew Poulton, Viktor Kerkez, and Robert Stojnic. “Galactica: A large language model for science.” arXiv preprint arXiv:2211.09085 (2022).

[12]. https://openai.com/blog/chatgpt-plugins

[13]. Driess, Danny, Fei Xia, Mehdi SM Sajjadi, Corey Lynch, Aakanksha Chowdhery, Brian Ichter, Ayzaan Wahid et al. “Palm-e: An embodied multimodal language model.” arXiv preprint arXiv:2303.03378 (2023).

[14]. Timo Schick, Jane Dwivedi-Yu, Zhengbao Jiang, Fabio Petroni, Patrick Lewis, Gautier Izacard, Qingfei You, Christoforos Nalmpantis, Edouard Grave, and Sebastian Riedel. Peer: A collaborative language model. arXiv preprint arXiv:2208.11663, 2022.

[15]. Ouyang, L., Wu, J., Jiang, X., Almeida, D., Wainwright, C., Mishkin, P., … & Lowe, R. (2022). Training language models to follow instructions with human feedback. Advances in Neural Information Processing Systems, 35, 27730-27744. short for InstructGPT

[16]. Johnson, Jeff, Matthijs Douze, and Hervé Jégou. “Billion-scale similarity search with gpus.” IEEE Transactions on Big Data 7, no. 3 (2019): 535-547.

[17]. Gautier Izacard and Edouard Grave. Leveraging passage retrieval with generative models for open domain question answering. arXiv preprint arXiv:2007.01282, 2020.

[18]. Harsh Trivedi, Niranjan Balasubramanian, Tushar Khot, and Ashish Sabharwal. Interleaving retrieval with chain-of-thought reasoning for knowledge-intensive multi-step questions. arXiv preprint arXiv:2212.10509, 2022.

[19]. Shuster, Kurt, Jing Xu, Mojtaba Komeili, Da Ju, Eric Michael Smith, Stephen Roller, Megan Ung et al. “Blenderbot 3: a deployed conversational agent that continually learns to responsibly engage.” arXiv preprint arXiv:2208.03188 (2022).

[20]. Yao, Shunyu, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao. “React: Synergizing reasoning and acting in language models.” arXiv preprint arXiv:2210.03629 (2022).

[21]. Nakano, R., Hilton, J., Balaji, S., Wu, J., Ouyang, L., Kim, C., … & Schulman, J. (2021). Webgpt: Browser-assisted question-answering with human feedback. arXiv preprint arXiv:2112.09332.

[22]. Huang, Wenlong, Pieter Abbeel, Deepak Pathak, and Igor Mordatch. “Language models as zero-shot planners: Extracting actionable knowledge for embodied agents.” In International Conference on Machine Learning, pp. 9118-9147. PMLR, 2022.

[23]. Zeng, Andy, Adrian Wong, Stefan Welker, Krzysztof Choromanski, Federico Tombari, Aveek Purohit, Michael Ryoo et al. “Socratic models: Composing zero-shot multimodal reasoning with language.” arXiv preprint arXiv:2204.00598 (2022).


  1. 然而,这并不是说明finetune就不重要了,事实上基于instruction的finetune正是能让chatGPT如此成功的要点之一。 ↩︎

  2. 之所以笔者将in-context翻译成情景,而不是上下文,那是因为in-context这个过程更多地是为LLM提供一个任务的诱导,而不是提供一个上下文。翻译成上下文多少和原意有所不同,因其可视为提供了某种任务的背景,翻译成情景就更为合适。 ↩︎

  3. 之所以称之为『显式』,指的是我们需要提供多步推理的过程,作为某种形式的监督信号给模型,无论模型需要微调与否,当得到了这种多步推理的中间信号后,就可以视为是显式地对多步推理能力进行建模。 ↩︎

  4. 此处的搜索引擎并不是指的如同百度和谷歌一样的具有前端的搜索引擎,而是单纯的输入文本返回文本的搜索工具,或者笔者将其称之为检索器会更加合适的。 ↩︎

  5. 浏览器是纯文本亦或是具有美观的前端和控件与否,并不是一个根本性的问题,具备有前端和控件的浏览器我们也能视为是有超文本定义出来的,因此只采用纯文本的浏览器并不会影响WebGPT的有效性。 ↩︎

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

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

相关文章

【react从入门到精通】React父子组件通信方式详解(有示例)

文章目录 前言React技能树通过 props 实现父子组件通信通过 state 实现父子组件通信通过回调函数实现父子组件通信使用 React Context 实现组件通信总结写在最后 前言 在上一篇文章《JSX详解》中我们了解了什么是jsx以及jsx的语法规则。 本文中我们将详细了解React父子组件通信…

详解SpringBoot外部化配置

SpringBoot外部化配置(基于2.4.0以后) Spring Boot可以让你将配置外部化,这样你就可以在不同的环境中使用相同的应用程序代码。 你可以使用各种外部配置源,包括Java properties 文件、YAML文件、环境变量和命令行参数。 属性值可…

【刷题笔记】二维数组地址计算+算法分析+进制转换

目录 一、二维数组地址计算 题目: 分析: 解答: 二、算法分析举例 题目: 分析: 解答: 三、进制转换 题目: 分析: 解答: 一、二维数组地址计算 题目&#xff…

3.19 makefile用法及变量(自定义变量、自动变量、隐含变量)

目录 makefile概述 makefile创建变量的目的 自定义变量 makefile变量的赋值 自动变量 makefile隐含变量 makefile概述 makefile重要性 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力 make是一个命令工具,是一个解释makefil…

Docker高频使用命令总结(镜像与容器命令)

目录 一.Docker常用命令总结 1.镜像命令管理 2.容器命令管理 二.Docker镜像操作命令 1.docker search:搜索镜像 2.docker pull:下载镜像 3.docker push:上传镜像 4.docker images:查看本地镜像 5.docker inspect &#x…

全球最大蒸馏体量干邑集团,邀请酣客老王讲授产品设计大师课

酒作为文化符号,寄托着全人类的精神追求,与历史、艺术为伍,充当着国际间友好交流的使者。为了弘扬中国白酒文化,把品质卓越的中国酱酒带到全世界,也为了给中国的烈酒爱好者讲清中外烈酒之间的工艺与文化差异,酣客君丰发起了“中国酱酒世界行”,不远万里探访欧洲各国名酒产区,一…

Flutter学习之旅 -网格布局

GridView列表三种形式 可以通过GridView.count实现网格布局 /* 格式: GridView.count(crossAxisCount: 一行显示数量,children: [component(),...],) */ class MyHomePage extends StatelessWidget {const MyHomePage({Key? key}) : super(key: key);overrideWidget build(B…

如何利用问卷工具助力活动开展,实现高效数据收集?

问卷调查是一种常用的活动开展方式,它可以帮助我们更好地了解参与者的需求和意见,为活动的开展提供有力的参考和依据。 1、了解期望和需求:在活动中,我们可以事先通过问卷调查了解参与者的需求、意见、对活动的需求和期望&#x…

PCB制板之前的DFM分析

PCB制板之前的DFM分析 1.华秋DFM分析2.AD18输出IPC文件3.华秋DFM分析开短路 1.华秋DFM分析 1.打开华秋DFM软件,目前先用这软件做DFM分析,主要是简单容易上手操作,并且分析完成之后可以一键下单。 2.将输出的gerber文件导入华秋DFM这个软件…

ubuntu18.04 + 3060 安装测试

分区 在这里,我们进行手动分区,假设你留出的空闲分区为 80G,点击空闲盘符,点击""进行分区,如下: 1)efi:如果是单硬盘,在唯一的一个空闲分区上添加&#xff0…

为项目创建Qframework!

liangxiegame/QFramework: Unity3D System Design Architecture (github.com) 下载这个download 在unity中打开! 就可以啦 ———— 这里总结一下UI和自动脚本两个非常常用的功能: UI https://www.bilibili.com/video/BV1QK411m7g4/?spm_id_from…

美格智能发布基于高通QCS8550处理器的高算力AI模组SNM970,定义未来终端新体验

近日,全球领先的无线通信模组及解决方案提供商美格智能发布了高算力AI模组SNM970。该产品是行业首批基于高通QCS8550处理器开发的AI模组产品,并凭借卓越的8核高通Kryo™ CPU、综合AI算力高达48Tops、支持Wi-Fi 7等特性,助力将运算效能和灵活性…

【Go Web开发】Web初识、RESTful架构和RESTful API详解、Gin框架的安装和简单使用

博主简介:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:数据结构、Go,Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: Go语言核心编程近期目标:写好专栏的每一篇文章 文章目录 一、…

YonLinker连接集成平台构建新一代产业互联根基

近日,由用友公司主办的“2023用友BIP技术大会“在用友产业园(北京)盛大召开,用友介绍了更懂企业业务的用友BIP-iuap平台,并发布了全面数智化能力体系,助力企业升级数智化底座,加强加速数智化推进…

入门机器学习,华盛顿大学4个案例分享

机器学习是一门从数据中研究算法的多领域交叉学科,研究计算机如何模拟或实现人类的学习行为。现在,我们可以看到很多机器学习的实际应用,例如语音搜索技术、图像识别、自动翻译、自动驾驶汽车等。机器学习已经成为许多行业的焦点,…

【学习笔记】GeoServer——使用Java发布图层(SHP文件和DB数据库),附自用工具类

文章目录 SHP文件发布逻辑 1、获取到geoserver的manager对象2、调用createWorkArea方法,参入manager,创建空间空间 workArea3、调用createShpDataPool方法,创建数据存储4、发布样式Style.5、发布图层 调用业务层库发布shp文件图层业务逻辑如下…

Ambari 2.7.5+HDP3.1.5离线扩容不同配置组

确保ambari server节点启动,Httpd 服务安装并启动,可参考: Ambari 2.7.5HDP3.1.5离线安装详细教程(附安装包)https://blog.csdn.net/QYmufeng/article/details/122827261 1.安装ambari agent 在需要添加的主机上安装…

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记

吴恩达与OpenAI官方合作的ChatGPT提示工程课程笔记 🥸 下述代码均在煮皮特上运行喔 LLMs(large language models) Base LLM:基于文本训练数据来预测做“文字接龙” Instruction Tuned LLM(指令调整型LLM):接受了遵循指示的培训&am…

SpringBoot 集成 RocketMQ

项目地址 前面我们介绍了怎么使用 docker 安装 rocketMQ&#xff0c;现在我们就来试试使用 SpringBoot 集成之后&#xff0c;怎么发送消息和消费消息。 集成步骤 工程结构 第一步&#xff1a;引入相关依赖 <dependency><groupId>org.projectlombok</groupId…