以ChatGPT为例解析大模型背后的技术

目录

1、大模型分类

2、为什么自然语言处理可计算?

2.1、One-hot分类编码(传统词表示方法)

2.2、词向量

3、Transformer架构

3.1、何为注意力机制?

3.2、注意力机制在 Transformer 模型中有何意义?

3.3、位置编码(了解即可)

3.2、为什么说Attention 机制适合万事万物!

3.4、Self-Attention 自注意力机制

3.5、Transformer架构的强大性能

4、基础语言模型训练

5、涌现能力

5.1、提示工程(Prompt Engineering)

5.2、in-context learning(ICL、情景学习)

5.3、思维链(Chain of Thought,CoT)

6、人类反馈强化学习(Reinforcement Learning fromHuman Feedback,RLHF)

6.1、指令微调(SFT)

6.2、奖励模型(RM)

6.3、强化学习(PRO)

7、GPT-4

1、大模型分类

2、为什么自然语言处理可计算?

        词不是数字,非连续

        比如:张三和李四之间是什么关系?张三+李四、张三*李四等于什么?在之前这都是不可计算的。

        那么如何让自然语言可计算?

2.1、One-hot分类编码(传统词表示方法)

        假设词表共有五万个,那么就创建一个五万维的矢量(0,0,0,0.....0),张三对应的就是(1,0,0...0),李四对应的就是(0,1,0...0)

        One-hot虽然简单明了,但存在严重的维度灾难和无法表示词之间语义关系的缺点。

        例如,对于一个有10000个唯一词的语料库,One-hot编码会产生一个10000维的向量,其中99.99%的元素都是0,这造成了极大的存储和计算资源浪费。

        更重要的是,这种表示方法无法捕获词与词之间的语义关系,每个词都是孤立的。       

2.2、词向量

        以“人”来类比,首先,我们先举例:

        通过两个维度来表示一个人:[内向0/外向1,感性0/理性1]

        向量[1,1]则表示一个外向且理性的人;向量[0,0]则是内向且感性的人。

        那么,假设一个词我们用一个50维的向量就能完整表示,如单词king,对应GloVe向量为:

[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]

注:这个50维向量是通过机器分析大量文本得出来的数据,训练生成这种向量的算法有很多,比如Word2Vec、GloVe等。(知晓即可)

        同样其它单词,也会有一个自己的50维向量,如man,woman。

        虽然我们无法理解这些数值的具体含义,但是人们经过分析,发现一个比较有意思的等式:

\widetilde{king}-\widetilde{man}+\widetilde{woman}\approx \widetilde{kueen}

​        这个等式含义:如果我们从“king”的向量中减去“man”的向量,再加上“woman”的向量,我们得到的结果非常接近“queen”的向量。        

        从自然语言上来说,就是从国王中去掉男性的属性,增加女性的属性,就变成了女王。

        这个数学上的近似相等且可计算和我们语义逻辑的合理性不谋而合,也从另一方面说明了这些向量背后有着我们人类无法感知的合理性。

        相比之下,词向量可以将词表示为稠密的向量(压缩至几百到几千维),可以有效缓解维度灾难问题,并且因为其连续的特性,相似的词在向量空间中会彼此接近,从而能够捕捉到丰富的语义关系。

        例如:通过训练得到的词向量,我们可以通过计算向量之间的距离来评估词语之间的相似度。

3、Transformer架构

        在谷歌2017年提出Transformer之前,也存在很多网络架构,如循环神经网络(RNN)、卷积神经网络(CNN)等,会先分析数据,例如:语音数据,大家会根据语音数据波形的特点(短时、稳态特性),利用这些特性去做频谱转换,形成特征数据,然后再找到一个可以表达这些数据的网络架构模型,逻辑上是让模型向数据靠近!

        Transformer恰恰相反,不再是模型向数据靠近,而是给了一个模型结构(此结构似乎与任何数据无关),但是,我们又可以将提取的特征数据输入到该模型中,相比其他架构,Transformer最核心的是引入了注意力机制(Attention Mechanism)。

3.1、何为注意力机制?

        我们拿人类社会来类比,“Attention”就是个体如何找准自己在团体中定位的问题,无论是在一个公司、还是在一个团队、还是在一个家庭里。

        比如说,新人进入一家大企业,成为一个部门中的一员,众所周知,公司是人与人之间、人与团队之间、团队与团队之间的协作。

        此时,“Attention 注意力机制”就可以理解为新人刚刚进入团队后的最基本诉求,即如何尽快地在一个几十人的团队中,搞清楚别人的工作与自己的工作之间的协作关系,从而找准自己的定位。

        为了让新人找准在团队中的定位并快速融入,此时你需要在团队中找出哪些人对你来说最关键。

        那么,从团队中其他每个人的角度出发,看看大家都对你这个岗位具体有什么诉求,从而让新人能够清晰地明白自己所在岗位在团队中的定位。

        这,就是Attention 注意力机制,即通过团队中其他人对自己的需求,来反观自己的定位。

        那么,Attention 注意力机制的好处是什么呢?        

        这种反观自己的定位方式,很明显并不是仅仅来自于个人的想象,也不仅仅因为个人的喜好,更不是只为了自己舒服,而是要考虑他人对自己的感受。我们对自己的定位,不是自己单相思想明白的,而是通过自己所处的环境,不断与环境相协调,不管是主动地还是被动地通过环境的反馈来反观自己,这就是人的社会属性决定的自我定位——Attention 注意力机制!

3.2、注意力机制在 Transformer 模型中有何意义?

        注意力机制是 Transformer 架构的一项关键创新。

        它使模型能够专注于输入文本中最相关的部分,从而更好地理解其含义。

        举个例子,假设我们有一句话:The cat sat on the mat.

        在这句话中,我们希望确定句中每个单词在预测下一个单词时的重要性。为了完成这个任务,Transformer 模型计算了每个单词相对于其他单词的注意力分数。

        比如,单词 cat 对于 sat 是非常重要的,因为它们在语义上相关。通过这种机制,Transformer 可以自适应地为每个单词分配权重,从而有效捕捉语义依赖关系。

        这一过程使模型能够捕捉词语之间的长距离依赖关系,更好地理解句子的上下文。

3.3、位置编码(了解即可)

        Transformer模型中的位置编码(Positional Encoding)是用于向模型提供序列中各个元素位置信息的机制。

        由于Transformer模型依赖于自注意力机制(self-attention mechanism),该机制在计算时对序列中的所有位置一视同仁,这种特性使得模型在处理序列数据时缺乏位置信息,它不像卷积神经网络或循环神经网络中固有的序列顺序信息,因此,为了让模型能够区分序列中的不同位置,必须引入位置信息。

3.2、为什么说Attention 机制适合万事万物!

        你可能会发现到,作为系统内在的一种必然机制,无论你是否认识到“Attention 机制”的存在,你都在有意无意地践行“Attention 机制”,因为这世间的每一个个体都在为自己能在这个世界的环境中生存而不断地做着“适者生存”的努力。而这种努力,必须首先在找准自己的定位的前提下进行。

        “Attention 机制”不仅仅局限于所有有社会属性的地方,如人群、鲸群、狼群、蜂群等等,在植物界、微生物界,它同样是最重要的内在运行机制,甚至无机物界也一样,一颗石头、一滴水、一张图片、一段语言、一碗螺蛳粉。。。。都需要 “Attention 机制”!

        可以说,不管动物还是植物,找准了自己定位,就是给自己的生存打下了基础。

        然后,让我们再往下思考一步。整个生物界可以做 Attention 机制,非生物界呢?

        用尤瓦尔赫拉利在他的著作《人类简史》中的阐述回答:“这世间的一切皆是算法!”

通过以上的介绍描述,我们可以发现,Attention 机制的理念与词向量的理念颇为契合,都是通过其他维度来对自己进行一个描述或定位。

3.4、Self-Attention 自注意力机制

        Self-Attention 自注意力机制就是团队中的每一个人都像你一样与团队中其他人做一遍注意力机制,这就是 “Self-Attention 自注意力机制”了。这个“自”指的就是“整个团队”。

        Self-Attention 自注意力机制的好处是什么呢?

        Self-Attention 自注意力机制可以使得团队中的每一个人都可以找准自己的定位,避免了猪队友的出现,那么这个团队也就整体上找准了自己的内部运作规律,全部成员拧成一股绳,大家齐心协力攻克任务,效率与品质自然达到了最优状态,这个团队也就是一个十分优秀的团队了。

        当然,这个团队再往上,以至于全公司也可以做Self-Attention 自注意力机制。也就是说全公司所有团队,不管业务、行政、产品、技术研发、客服等等都作为公司总体的不同组成单元,互相做注意力机制的优化,那么这家公司也就变成一家优秀的公司了。。

        不管团队中的成员是否意识到了这个机制的存在,不管他们是否主动地去做这个机制,只要这个团队存在一天,这个体系的运作最终都会对每一个成员进行自然而然地Self-Attention 自注意力机制。因为,这是团队系统运行的内在需要,是大家组成这个团队的最终目的的需要。

3.5、Transformer架构的强大性能

         Transformer摒弃了传统的循环神经网络(RNN)和卷积神经网络(CNN)在处理序列数据时的局限性,首次完全依赖于自注意力机制(Self-Attention Mechanism)。

        这种机制允许模型直接关注输入序列中的任意两个元素之间的关系,从而实现全局信息的捕获和建模,而不受限于局部上下文窗口。

        第一、全局依赖

         🔍首先,让我们深入了解Transformer模型的核心构造。它主要由自注意力机制和位置编码组成。这两部分的设计使得模型能够理解和处理输入数据中的长距离依赖关系,这在传统模型中是一个巨大的挑战。
        🌐自注意力机制允许每个输入位置考虑全局信息,从而更好地理解上下文。这意味着,当我们识别一个词的含义时,它不仅考虑前面的词,还会考虑到后面的词,甚至是远离它的词,这样使得整体信息被全面捕获。RNN和CNN缺乏长上下文是Transformer在任务中击败它们的最大原因。

  第二、并行性

  与传统的循环神经网络(RNN顺序处理特性)相比,RNN的每一步计算依赖于前一步的结果,而Transformer的优势之一是并行计算。由于自注意力机制允许模型同时处理输入序列的所有元素,而无需像循环神经网络(RNN)那样按顺序迭代,因此可以在一次计算中处理整个序列,大大减少了计算时间。

        自注意力机制的计算过程如下:

  1. 首先,将输入序列的每个元素(词或字)映射到一个向量表示。这些向量表示称为查询(Query)、键(Key)和值(Value)。
  2. 然后,计算每个元素的查询向量与其他所有元素的键向量之间的点积。这个点积的结果表示两个元素之间的相关性。
  3. 接下来,使用softmax函数对点积结果进行归一化。这会得到一组权重,表示每个元素对其他元素的相对重要性。
  4. 最后,将归一化后的权重与对应的值向量相乘,并对所有元素求和。这个求和结果是输出序列中与输入序列相对应的新元素。

        在这个过程中,我们可以同时计算输入序列中所有元素的查询-键点积、权重归一化以及权重与值向量的乘积

        这些计算是独立的,因此可以在硬件(如GPU和TPU)上实现并行处理。通过这种方式,自注意力机制充分利用了并行计算的优势,从而显著提高了模型的处理速度。

  第三、灵活性

        模型结构不根据数据定制

        第四、情景学习(下文会叙述)

3.6、简单理解Transformer

        传统的方法(RNN)在处理文本时,遵循着逐词处理的模式,就像阅读书籍时,一个词一个词往后读取信息。然而,Transformer模型打破了这一传统,它能够同时处理一句话或一段话中的所有词语,无需像RNN(循环神经网络)那样,每个时间步(t步骤)的计算都必须依赖于前一个时间步(t-1步骤)的结果。

        Transformer模型特别擅长于识别并关注句子中不同的重要部分。就像我们在阅读文章时,会自然而然地关注章节标题、关键词或句子中的核心信息一样,Transformer也能通过其注意力机制来聚焦这些关键信息。

        尽管Transformer能够一次性处理整个句子中的所有词语,但它无法直接捕获序列中单词的位置信息。为了弥补这一缺陷,Transformer引入了位置编码的概念,这样模型就能够知道每个单词在句子中的具体位置,从而保留了语言的顺序性。

4、基础语言模型训练

        暴力美学!

        将所有能够收集到的数据,经过严格的清洗后,投喂到模型结构中:

模型名称        模型参数量训练数据
GPT117M4.6G
GPT-21.5B40G
GPT-3175B757G

        可以看出,GPT的训练数据越来越多,GPT-3中757G的训练数据是从几十T的数据中清洗出来的。

        随着训练数据的增多,量变引起了质变!

5、涌现能力

        涌现现象的经典含义是指,在一个复杂系统中,组成该系统基本元素之间相互作用,产生了全新的、宏观的性质或行为。

        举个例子给大家说明:

        单只蚂蚁在自然环境中行动,它只会寻找食物和避开危险,但是当大量蚂蚁一起行动时,它们能够建造出非常复杂的蚁穴。这些蚁穴甚至有特定的通风和温度控制系统,但每只蚂蚁并不知道整个蚁穴的设计,他们没有预先规划好的图纸,却能完成这样的大型工程,这就是典型的涌现现象。

        但GPT 4.0给我们带来的震撼过于庞大,以至于我们在大模型中,对涌现现象的具体定义为:在小模型中没有的能力,却在大模型中突然出现的现象(在大模型参数增加到某一临界点后突然出现)。

        这个定义中所谓的“小模型”,已经是大模型出现前人类世界AI发展的皇冠,代表了有史以来最先进的硅基智能能力。

        注意刚刚所说的”突然出现“,这意味着涌现现象的第二层含义:我们无法确定涌现的发生点!

        我们可以很明确地观测到,一旦模型大小超过某一个阈值,模型就像修炼突破了一样,展现出前所未有的能力。但同时,这个阈值却无法预测!我们无法确定模型什么时候能完成下一境界的突破。

5.1、提示工程(Prompt Engineering)

        即:如何与大模型去交互,才能诱导模型出现强大的能力。

        提示工程是一种针对预训练语言模型(如GPT),通过设计、实验和优化输入提示词来引导模型生成高质量,准确和有针对性的输出的技术。

        本质上来说,提示工程也是一种人机交互的方式,提示词就是我们发给大模型的输入(指令),大模型根据指令,结合自身预训练的“知识”,输出指令相关的内容。而大模型输出结果的好坏,和我们输入的指令息息相关。

        如今,很多AI公司都在做提示工程。

5.2、in-context learning(ICL、情景学习)

        传统意义上的机器学习模型,都是被训练来做特定的任务,例如分类(输入餐厅的评论,预测是正面或负面的评价)、翻译(把中文翻译成英文)、或是摘要(把一篇长文浓缩成一句话)。

        这每一项任务,都要有个「机器学习工程师」花上几周甚至几个月的时间,准备好一个干净的训练数据集,喂入好几种算法,不断调整一堆参数,最后才能训练出一个堪用的模型。而这样的模型除了做当初训练它的任务之外,其他什么都不能做。分类狗的模型就是只能分类狗,如果要分类颜色或大小都不行,更别提要它做翻译。

        也就是说,传统意义上的每个模型就只能做特定的一件任务,能力边界非常清楚。但GPT-3出现后,大家开始发现一些神奇和无法解释的事情。

        大型语言模型(LLM)当初被训练做的任务是“给定一段文字,预测下一个字。”

        训练数据是网络上数十亿篇的各式文章,没有专注在特定领域。当初训练这样的模型时,研究者主要的期望是这样的模型可以用来辅助写作和产生文章,所以才喂给它大量的文章示例。

        但是,LLM被训练出来后,大家意外发现它还有一个特殊的超能力—in-context learning

        只要给它不同的提示,它就会展现出不同的能力。即使训练数据中没有这样的示例也行。更神奇的事,这个语境学习能力可以让LLM的能力边界扩展到它没被直接训练过的任务,而且还做得非常好。

        例如:

        问题1:“马尔济斯是白色,狮子是棕色,老虎是什么颜色?”

        ChatGPT:“老虎的一般为橙色带黑色条纹。”

        问题2:“马尔济斯体型小,西藏獒犬体型?”

        ChatGPT:“西藏獒犬一般是大型犬。”

        上面的示例展示了LLM能根据提示变成“动物颜色分类器”,也还能变成“动物大小分类器”。我们不用重新训练模型,只要给它非常少的示例,它就会根据这些示例变成不同的预测机器。这样的能力,不只让大众惊讶不已,连行内的研究者也还搞不太清楚是怎么回事。

5.3、思维链(Chain of Thought,CoT)

        简单来说,思维链是一种改进的Prompt技术,用于提升大模型在复杂推理任务上的表现,特别是涉及到推理和多步骤思考的问题,而这一系列推理的中间步骤就被称为思维链。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍  

        在这百模大战中,国内外很多企业相继推出自己的大模型,而且模型的规模和性能也在不断提升,展现了很多令人吃惊的能力,比如文本生成,内容摘要,问答等。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

        虽然大模型很强大,但大模型在某些方面依然有所欠缺,类似于GPT这种强大模型也有频频翻车的案例出现,比如,在数学计算,逻辑推理等方面表现较差。‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

        而这正是思维链可以解决的问题,思维链通过要求模型在输出最终答案之前,显示输出中间逐步的推理步骤这一方法来增强大模型在数学,常识和推理方面的能力。‍‍‍‍‍‍‍‍‍‍

        区别于传统的Prompt从输入直接到输出的映射<input——>output>的方式,CoT完成从输入到思维链再到输出的映射,即<input——>reasoning chain(推理链) ——> output>;

        举例来说,3+5=8,如何让计算机计算出3+5=8,就需要把计算的思维过程给到计算机。

6、人类反馈强化学习(Reinforcement Learning fromHuman Feedback,RLHF)

        基于以上的所有内容训练出来的模型(已经在海量数据上进行了预训练),会一本正经地胡说八道,所以需要人类干预反馈强化学习,旨在优化大型语言模型(LLM)的行为,使其更符合人类的期望。

6.1、指令微调(SFT)

        举个例子: 一个预训练的语言模型可以进行各种文本任务,但如果我们想让它专门做客服机器人,就可以用客服对话数据对它进行微调,让它更擅长回答用户的问题。

6.2、奖励模型(RM)

       将人类反馈转化为奖励信号,形成一个奖励模型(Reward Model, RM)。该模型用于评估不同输出的质量,并为后续的强化学习提供反馈 。

6.3、强化学习(PRO)

        根据奖励信号调整其策略参数,以提高未来获得高奖励的概率。这一过程是迭代进行的,直到模型达到预期性能水平。

        

        最终,让 AI 胜任特定任务,生成更符合人类价值观和喜好的内容。即:让 AI 学会察言观色,更懂人类偏好。

7、GPT-4

 
        

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿道Intewell操作系统:赋能高端装备制造,引领国产数控系统迈向新高度

在当今全球制造业竞争日益激烈的时代&#xff0c;高端装备制造作为国家核心竞争力的重要组成部分&#xff0c;其发展水平直接影响着一个国家的综合实力。而CNC数控系统&#xff0c;作为高端装备制造的“大脑”&#xff0c;对于提升装备的精度、效率和智能化水平起着关键作用。鸿…

mac开发环境配置笔记

1. 终端配置 参考&#xff1a; Mac终端配置笔记-CSDN博客 2. 下载JDK 到 oracle官网 下载jdk: oracle官网 :Java Downloads | Oraclemac的芯片为Intel系列下载 x64版本的jdk&#xff1b;为Apple Mx系列使用 Arm64版本&#xff1b;oracle官网下载时报错&#xff1a;400 Bad R…

【Python爬虫(29)】爬虫数据生命线:质量评估与监控全解

【Python爬虫】专栏简介&#xff1a;本专栏是 Python 爬虫领域的集大成之作&#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起&#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑&#xff0c;覆盖网页、图片、音频等各类数据爬取&#xff…

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何选择?

简介&#xff1a;在人工智能飞速发展的今天&#xff0c;大模型已经成为推动技术革新的核心力量。无论是智能客服、内容创作&#xff0c;还是科研辅助、代码生成&#xff0c;大模型的身影无处不在。然而&#xff0c;面对市场上琳琅满目的工具&#xff0c;如何挑选最适合自己的那…

测评雷龙出品的CS SD NAND贴片式TF卡

一、前言 在现代科技飞速发展的背景下&#xff0c;存储解决方案的创新与进步成为了推动各行各业发展的重要力量。这篇文章讲解雷龙公司出品的CS SD NAND贴片式TF卡的深度测评。这款产品不仅以其小巧精致的设计脱颖而出&#xff0c;更凭借其卓越的性能和可靠性&#xff0c;在众…

Hadoop一 HDFS分布式文件系统

一 分布式文件存储 了解为什么海量数据需要使用分布式存储技术 100T数据太大&#xff0c;单台服务器无法承担。于是&#xff1a; 分布式服务器集群 靠数量取胜&#xff0c;多台服务器组合&#xff0c;才能Hold住&#xff0c;如下 分布式不仅仅是解决了能存的问题&#xff…

windows下docker使用笔记

目录 镜像的配置 镜像的拉取 推荐镜像源列表&#xff08;截至2025年2月测试有效&#xff09; 配置方法 修改容器名字 如何使用卷 创建不同的容器&#xff0c;每个容器中有不同的mysql和java版本&#xff08;不推荐&#xff09; 1. 安装 Docker Desktop&#xff08;Win…

1005 K 次取反后最大化的数组和(贪心)

文章目录 题目[](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/)算法原理源码总结 题目 如上图&#xff0c;k是取反的次数&#xff0c;在数组【4&#xff0c;-1,3】中&#xff0c;当k 1&#xff0c;把-2取反为2&#xff0c;和为9&#xff1b;在数组…

java毕业设计之医院门诊挂号系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的医院门诊挂号系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 医院门诊挂号系统的主要使用者…

深入学习解析:183页可编辑PPT华为市场营销MPR+LTC流程规划方案

华为终端正面临销售模式转型的关键时刻&#xff0c;旨在通过构建MPRLTC项目&#xff0c;以规避对运营商定制的过度依赖&#xff0c;并探索新的增长路径。项目核心在于建设一套全新的销售流程与IT系统&#xff0c;支撑双品牌及自有品牌的战略发展。 项目总体方案聚焦于四大关键议…

JUC并发—8.并发安全集合一

大纲 1.JDK 1.7的HashMap的死循环与数据丢失 2.ConcurrentHashMap的并发安全 3.ConcurrentHashMap的设计介绍 4.ConcurrentHashMap的put操作流程 5.ConcurrentHashMap的Node数组初始化 6.ConcurrentHashMap对Hash冲突的处理 7.ConcurrentHashMap的并发扩容机制 8.Concu…

Cython学习笔记1:利用Cython加速Python运行速度

Cython学习笔记1&#xff1a;利用Cython加速Python运行速度 CythonCython 的核心特点&#xff1a;利用Cython加速Python运行速度1. Cython加速Python运行速度原理2. 不使用Cython3. 使用Cython加速&#xff08;1&#xff09;使用pip安装 cython 和 setuptools 库&#xff08;2&…

DApp 开发入门指南

DApp 开发入门指南 &#x1f528; 1. DApp 基础概念 1.1 什么是 DApp&#xff1f; 去中心化应用&#xff08;DApp&#xff09;是基于区块链的应用程序&#xff0c;特点是&#xff1a; 后端运行在区块链网络前端可以是任何框架使用智能合约处理业务逻辑数据存储在区块链上 1…

基于Spring Security 6的OAuth2 系列之二十 - 高级特性--令牌交换(Token Exchange)

之所以想写这一系列&#xff0c;是因为之前工作过程中使用Spring Security OAuth2搭建了网关和授权服务器&#xff0c;但当时基于spring-boot 2.3.x&#xff0c;其默认的Spring Security是5.3.x。之后新项目升级到了spring-boot 3.3.0&#xff0c;结果一看Spring Security也升级…

瑞芯微RV1126部署YOLOv8全流程:环境搭建、pt-onnx-rknn模型转换、C++推理代码、错误解决、优化、交叉编译第三方库

目录 1 环境搭建 2 交叉编译opencv 3 模型训练 4 模型转换 4.1 pt模型转onnx模型 4.2 onnx模型转rknn模型 4.2.1 安装rknn-toolkit 4.2.2 onn转成rknn模型 5 升级npu驱动 6 C++推理源码demo 6.1 原版demo 6.2 增加opencv读取图片的代码 7 交叉编译x264 ffmepg和op…

【开源】编译器,在线操作

目录 1. 思绪思维导图&#xff1a;simple mind map2. Markdown&#xff1a;md-editor-v33. 文档&#xff1a;wangEditor4. 电子表格&#xff1a;Luckysheet5. 幻灯片&#xff1a;PPTist6. 白板&#xff1a;excalidraw7. 流程图&#xff1a;drawio 1. 思绪思维导图&#xff1a;…

跳表(Skip List)详解

一、什么是跳表&#xff1f; 跳表是一种基于有序链表的高效数据结构&#xff0c;通过建立多级索引实现快速查询。它在平均情况下支持O(log n)时间复杂度的搜索、插入和删除操作&#xff0c;性能接近平衡树&#xff0c;但实现更为简单。 二、核心原理 1. 层级结构 底层为完整…

【Quest开发】全身跟踪

软件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 最终效果&#xff1a;能像meta的操作室沉浸场景一样根据头盔移动来推断用户姿势&#xff0c;实现走路、蹲下、手势匹配等功能 需要借助UnityMovement这个包 GitHub …

25年2月通信基础知识补充:多普勒频移与多普勒扩展、3GPP TDL信道模型

看文献过程中不断发现有太多不懂的基础知识&#xff0c;故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关&#xff0c;故记录不会很深入请见谅。 【通信基础知识补充7】25年2月通信基础知识补充1 一、多普勒频移与多普勒扩展傻傻分不…

栈,优先级队列,map,set

文章目录 栈题目解析代码 优先级队列题解代码 map题解代码 set题解代码 栈 题目解析 1.先把元素push进栈中&#xff0c;如果栈非空并且栈中的元素按顺序和k相等就出栈&#xff0c;直到栈为空或者k ! sk.top() 代码 #include<iostream> #include<stack> #include&l…