【自然语言处理】【ChatGPT系列】ChatGPT的智能来自哪里?

news/2024/5/4 9:56:52/文章来源:https://blog.csdn.net/bqw18744018044/article/details/128438980

相关博客
【自然语言处理】【ChatGPT系列】ChatGPT的智能来自哪里?
【自然语言处理】【ChatGPT系列】Chain of Thought:从大模型中引导出推理能力
【自然语言处理】【ChatGPT系列】InstructGPT:遵循人类反馈指令来训练语言模型
【自然语言处理】【ChatGPT系列】大模型的涌现能力

ChatGPT\text{ChatGPT}ChatGPT火了!作为开放域对话系统,ChatGPT\text{ChatGPT}ChatGPT展示出了出乎意料的智能。在人们惊讶ChatGPT\text{ChatGPT}ChatGPT效果的同时,其"胡编乱造"的结果也让人担忧。

ChatGPT\text{ChatGPT}ChatGPT到底"只是"一个闲聊系统,还是意味着新的变革?如果只从使用者的角度分析,显然无法回答这个问题。不妨从"技术"的角度看看,ChatGPT\text{ChatGPT}ChatGPT到底是现有技术的极限还是新技术的起点?

一、InstructGPT\text{InstructGPT}InstructGPT

请添加图片描述

chatGPT\text{chatGPT}chatGPTOpenAI\text{OpenAI}OpenAI开发的开发域对话系统,目标还没有论文。但是根据官方的说法,其基本原理同OpenAI\text{OpenAI}OpenAI今年早些时候的InstructGPT\text{InstructGPT}InstructGPT。所以,这里先简单对InstructGPT\text{InstructGPT}InstructGPT的原理进行简单的介绍。

1. 目的

​ 训练大语言模型(Large Language Model,LLM)\text{(Large Language Model,LLM)}(Large Language Model,LLM)通常是用上下文来预测部分token,而在使用LLM\text{LLM}LLM时却希望其能够生成诚实的、无毒性的且对用户有帮助的内容。显然,语言模型并没有与用户的意图对齐。InstructGPT\text{InstructGPT}InstructGPT的目标是通过人类的反馈微调语言模型,令语言模型与用户意图对齐。(通过基于人类反馈的强化学习,引导出大模型的能力)。

2. 方法

2.1 步骤1: prompt\text{prompt}prompt微调

​ 该步骤中需要人工先标注一个prompt\text{prompt}prompt数据集。简单来说,prompt\text{prompt}prompt数据集中的单个样本是由一对文本组成,例如:
Prompt: 使用自然语言处理造一个句子。Demonstration:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。\begin{aligned} &\text{Prompt: 使用自然语言处理造一个句子。} \\ &\text{Demonstration:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。} \end{aligned} Prompt: 使用自然语言处理造一个句子。Demonstration:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。
使用prompt\text{prompt}prompt数据集以监督学习的方式来微调GPT-3\text{GPT-3}GPT-3

2.2 步骤2:训练奖励模型(Reward modeling,RM)\text{(Reward modeling,RM)}(Reward modeling,RM)

​ 该步骤会先收集比较数据。如果了解Learning to rank\text{Learning to rank}Learning to rank的话,比较数据就是一个排序的数据。具体来说,标注员需要模型针对同一输入的不同输出进行排序。举例来说,
Prompt: 使用自然语言处理造一个句子。Demonstration1:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。Demonstration2:自然语言处理是一个名词。\begin{aligned} &\text{Prompt: 使用自然语言处理造一个句子。} \\ &\text{Demonstration1:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。} \\ &\text{Demonstration2:自然语言处理是一个名词。} \end{aligned} Prompt: 使用自然语言处理造一个句子。Demonstration1:自然语言处理是计算机科学领域与人工智能领域中的一个重要方向。Demonstration2:自然语言处理是一个名词。
在上面的例子中,模型生成了Demonstration1\text{Demonstration1}Demonstration1Demonstration2\text{Demonstration2}Demonstration2。显然,标注人员需要标注Demonstration1\text{Demonstration1}Demonstration1相较于Demonstration2\text{Demonstration2}Demonstration2更好。

​ 奖励模型将prompt\text{prompt}prompt和模型生成的结果作为输入,然后输出一个标量的奖励值。具体来说,对于单个输入会将模型的KKK个输出交给标注者进行排序 。这KKK个答案共有(k2)\begin{pmatrix}k \\ 2\end{pmatrix}(k2)个两两比较。举例来说,通过最大化更喜欢的样本ywy_wyw和没那么喜欢样本yly_lyl的奖励值差进行训练
loss(θ)=−1(k2)E(x,yw,yl)∼D[log⁡(σ(rθ(x,yw)−rθ(x,yl)))]\text{loss}(\theta)=-\frac{1}{\begin{pmatrix}k \\ 2\end{pmatrix}}E_{(x,y_w,y_l)\sim D}[\log(\sigma(r_\theta(x,y_w)-r_\theta(x,y_l)))] loss(θ)=(k2)1E(x,yw,yl)D[log(σ(rθ(x,yw)rθ(x,yl)))]
其中rθ(x,y)r_\theta(x,y)rθ(x,y)表示对于prompt x\text{prompt x}prompt x和模型生成结果yyy作为输入,奖励模型输出的奖励值;yw,yly_w,y_lyw,yl是模型生成的输出,标注者认为ywy_wywyly_lyl更受欢迎;DDD是整个比较数据集。

2.3 步骤3:强化学习

​ 前两个步骤分别会得到微调好的GPT-3\text{GPT-3}GPT-3和一个奖励模型。但是,如何将这两个模型和人类组合到一个动态的环境中,然后逐步利用人类的反馈来优化这个循环?这里使用了强化学习方法PPO\text{PPO}PPO

3. 分析

​ 总的来说,InstructGPT\text{InstructGPT}InstructGPT可以总结为三部分:1. 微调的预训练语言模型;2. 结果排序模型; 3. 强化学习将人和模型统一至动态的环境。预训练语言模型的微调是NLP\text{NLP}NLP中常见的技术,结果排序模型在推荐、搜索、问答等场景中也很常见。基于人类反馈的强化学习虽然不常见,但根本是将人加入到强化学习环境中。

​ 基于人类反馈的强化学习,构建了一个动态反馈的系统,能够使InstructGPT(chatGPT)\text{InstructGPT(chatGPT)}InstructGPT(chatGPT)随着人类的反馈逐步改善。但是使用过chatGPT\text{chatGPT}chatGPT都知道,其表现出的智能远远不是上面三部分能够体现出来的。

chatGPT\text{chatGPT}chatGPT所表现出的智能到底来自哪里?答案是大模型的涌现能力。

二、大模型的涌现能力

​ 自然语言处理从业者都使用过BERT\text{BERT}BERT这样的预训练语言模型,虽然其能为广泛的下游任务带来效果的提升,但是使用这样的模型不太能够构建出chatGPT\text{chatGPT}chatGPT那样的智能对话系统(包括对话、代码、逻辑推理能力)。那么完全没使用更加新的技术,只是在模型规模和使用数据量上高多个数量级的GPT-3\text{GPT-3}GPT-3就能实现吗?答案是肯定的。

​ 来自Google的文章《Emergent Abilities of Large Language Models》《\text{Emergent Abilities of Large Language Models}》Emergent Abilities of Large Language Models系统的说明了这一点。该文章的核心简单来说就是,
量变带来质变,大模型与小模型不是一个物种。\text{量变带来质变,大模型与小模型不是一个物种。} 量变带来质变,大模型与小模型不是一个物种。
​ 该文章通过实验说明了大模型中的一种"涌现"的现象。

1. few-shot\text{few-shot}few-shot能力的涌现

请添加图片描述

​ 简单来说,上面8个图的横坐标是模型的规模(参数量或者训练量),纵坐标是各类任务上的效果。观察这8个任务,都具有同一种模式:模型规模在小于某个阈值之前,效果基本等于随机;当超过该阈值后,模型效果有一个飞跃。

​ 上图(A)表示一个3位数加减法和2位数乘法的任务,模型GPT-3\text{GPT-3}GPT-3在达到13B\text{13B}13B参数量时突然具有了算术的能力。

​ 上图(E)是一个衡量模型诚实回答问题的基准TruthfulQA\text{TruthfulQA}TruthfulQA,模型Gopher\text{Gopher}Gopher在达到280B\text{280B}280B时突然有了高于随机的效果。

2. 技术的涌现

若一项prompt\text{prompt}prompt技术在小模型上没有效果,但是在模型达到某个规模后突然有效,则该技术是一种涌现能力。

请添加图片描述

​ 上图是4种技术的涌现。以上图(A)为例,其是一个数学应用题的基准,需要模型chain of thought\text{chain of thought}chain of thought实现多步推理能力才能在该基准上实现好的效果。可以看到,当模型达到∼100B\sim\text{100B}100B时,chain of thought\text{chain of thought}chain of thought技术突然开始有效,并能够在数学应用题上实现好的效果。

3. 智能的来源:模型规模

​ 显然chatGPT\text{chatGPT}chatGPT智能的来源是大模型的涌现能力。不妨畅想一下:

  • 目前chatGPT\text{chatGPT}chatGPT的缺点也许会随着模型在参数量、训练数据量的进一步扩大下得以解决;
  • 随着预训练技术和模型结构的改进,也许在更小的模型上能够实现相同的效果;
  • 范式"大数据+大模型+无监督预训练=涌现能力"不只是能够运用到语言上,在其他领域也许能够带来意想不到的效果;

三、引导大模型智能的技术

OpenAI\text{OpenAI}OpenAI在2020年就已经发布了GPT-3\text{GPT-3}GPT-3,而ChatGPT\text{ChatGPT}ChatGPT则是在2022年底才发布。**既然研究表明大模型具有各种涌现的能力,那么为何两者发布时间相差2年多?答案是引导大模型智能的技术。**这里简单介绍一下赋予大模型推理能力的chain of thought\text{chain of thought}chain of thought技术,以及为大模型带来zero-shot\text{zero-shot}zero-shot能力的instruction tuning\text{instruction tuning}instruction tuning技术。通过理解这两项技术,能够更好的理解ChatGPT\text{ChatGPT}ChatGPT的智能来源于大模型。

1. 引导推理能力:chain of thought\text{chain of thought}chain of thought

​ 这里介绍一种赋予大模型多步推理的技术chain of thought\text{chain of thought}chain of thought,该技术很好的展示了大模型的神奇之处。这里用一句话总结该技术,
通过例子告诉模型做应用题要写步骤,而不是直接给答案。\text{通过例子告诉模型做应用题要写步骤,而不是直接给答案。} 通过例子告诉模型做应用题要写步骤,而不是直接给答案。
详细细节见《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》。

单纯增加语言模型的规模并不能使其在算术、常识推理和符号推理表现的更好。

​ 下面是一个标准的prompt\text{prompt}prompt
prompt: Jane有12朵花,2朵给妈妈,3朵给爸爸,那么她还有多少朵?answer: Jane还有7朵花\begin{aligned} &\text{prompt: Jane有12朵花,2朵给妈妈,3朵给爸爸,那么她还有多少朵?} \\ &\text{answer: Jane还有7朵花} \end{aligned} prompt: Jane12朵花,2朵给妈妈,3朵给爸爸,那么她还有多少朵?answer: Jane还有7朵花
通过上面的prompt\text{prompt}prompt进行few-shot learning\text{few-shot learning}few-shot learning,模型在数学应用题上的表现很差

​ 下面是一个chain of thought\text{chain of thought}chain of thought
prompt: Jane有12朵花,2朵给妈妈,3朵给爸爸,那么她还有多少朵?answer: Jane将2朵花送给她妈妈后还剩10朵...然后再送给她爸爸3朵后还有7朵...所以答案是7\begin{aligned} &\text{prompt: Jane有12朵花,2朵给妈妈,3朵给爸爸,那么她还有多少朵?} \\ &\text{answer: Jane将2朵花送给她妈妈后还剩10朵...然后再送给她爸爸3朵后还有7朵...所以答案是7} \end{aligned} prompt: Jane12朵花,2朵给妈妈,3朵给爸爸,那么她还有多少朵?answer: Jane2朵花送给她妈妈后还剩10...然后再送给她爸爸3朵后还有7...所以答案是7
通过chain of thought prompt\text{chain of thought prompt}chain of thought prompt进行few-shot learning\text{few-shot learning}few-shot learning后,模型的效果显著提高。

直观的来说,让模型别瞎猜答案,把步骤写上再写答案。

2. 引导zero-shot\text{zero-shot}zero-shot能力:instruction tuning\text{instruction tuning}instruction tuning

​ 文章《Finetuned Language Models are Zero-shot Learners》\text{《Finetuned Language Models are Zero-shot Learners》}Finetuned Language Models are Zero-shot Learners中介绍了一种微调大模型的方法:instruction tuning\text{instruction tuning}instruction tuning。在介绍instruction tuning\text{instruction tuning}instruction tuning之前,先了看看自然语言推理任务(Natural language inference,NLI)\text{(Natural language inference,NLI)}(Natural language inference,NLI)的通常做法。

​ 自然语言推理任务是判断两个句子在语义是否为蕴含(Entailment)\text{(Entailment)}(Entailment)、矛盾(Contradiction)\text{(Contradiction)}(Contradiction)或者中立(Neutral)\text{(Neutral)}(Neutral)三种关系的一种。例如:
Premise: 多名男子正在踢足球。Hypothesis:一些男子正在做运动。\begin{aligned} &\text{Premise: 多名男子正在踢足球。} \\ &\text{Hypothesis:一些男子正在做运动。} \\ \end{aligned} Premise: 多名男子正在踢足球。Hypothesis:一些男子正在做运动。
显然,Premise\text{Premise}Premise蕴含Hypothesis\text{Hypothesis}Hypothesis。一种常见的做法是将该任务转换为"句子对分类任务",分类的标签就是三种关系。下面是一个示例图:

请添加图片描述

将两个句子拼接起来送入语言模型,然后对该句子对进行三分类。

​ 下面来看自然语言推理任务上使用instruction tuning\text{instruction tuning}instruction tuning的方式。将Premise\text{Premise}PremiseHypothesis\text{Hypothesis}Hypothesis按某个自然语言的模板进行组装,并得到样本
多名男子正在踢足球。基于上面的段落,是否可以得出结论:一些男子正在做运动。选项:是、否\begin{aligned} &\text{多名男子正在踢足球。} \\ &\text{基于上面的段落,是否可以得出结论:} \\ &\text{一些男子正在做运动。} \\ &\text{选项:是、否} \end{aligned} 多名男子正在踢足球。基于上面的段落,是否可以得出结论:一些男子正在做运动。选项:是、否
将上面这段文本送入大模型,并使用监督的方式进行微调。这就是所谓的instruction tuning\text{instruction tuning}instruction tuning

​ 具体来说,论文中将12类任务的62个数据集按照上面的方式转换,然后微调大模型。最终的实验结果是:通过上面的instruction tuning\text{instruction tuning}instruction tuning的大模型,能够在完全未见过类型的任务上取得好的效果。

通过instruction tuning\text{instruction tuning}instruction tuning的介绍可以更好的理解为什么ChatGPT\text{ChatGPT}ChatGPT能够完成各种各样的任务。

四、漫谈

​ 以下仅是个人的看法。

1. 对现有NLP\text{NLP}NLP的影响

​ 现有NLP\text{NLP}NLP技术的主要困境仍然是标注成本,这个成本可以从两个方面来看:人力成本和时间成本。对于特定的场景,通常需要几千甚至上万的数据才能达到很好的效果。当然,如果能够明确的知道标注多少样本就能够达到预期的效果,通常项目也可以经过人力成本评估后确定是否继续。但是,真正影响NLP\text{NLP}NLP技术落地的是时间成本,即经过一段时间的标注后可能效果无法达到预期,那么项目可能面临推迟或者终止的风险。

​ 大模型将会改变这一现状。大模型具有few-shot\text{few-shot}few-shot能力,并且能够通过instruction tuning\text{instruction tuning}instruction tuning获得zero-shot\text{zero-shot}zero-shot的能力。因此,大模型可以仅使用少量的样本就能够在指定任务上达到非常好的效果,也将极大的降低人力成本和时间成本。但是,大模型的推理速度和推理成本是阻碍其广泛应用的主要问题,并且近期可能都无法将其小型化至合理的范围。所以,大模型很可能作为一个"超级教师模型"。经过少量标注样本微调后,大模型可以自动产生高质量的标注样本,然后使用这些样本来微调小模型。

​ 一种可能的发展路径是:(1) 少量样本微调大模型;(2) 大模型产生大量标注数据;(3) 通过标注数据将大模型的知识蒸馏至小模型。通过这条路径,将会为NLP\text{NLP}NLP技术在各类项目和产品中的落地提供极大的支持。

2. 下一步的方向

​ 柏拉图在《理想国》中提到了"洞穴寓言",大意是:

有一群囚徒被困在地下洞穴里,他们手、脚和脖子都被拷住,无法动弹,只能看到面前的墙壁。这些人的背后有一堆火,外界的所有事物都是通过墙壁上的阴影展示给这些囚徒。那么这些囚徒只能通过阴影来观察和想想真实的世界。

​ 自然语言也是真实世界的"阴影",或者说自然语言是高维真实世界的低维表示。显然,通过自然语言这些低维信息来学习高维真实世界是存在信息丢失的。举例来说,语言描述苹果可能是"红的"、“圆的”,而真实的苹果并不是严格的“圆”且颜色也不是严格的"红",而是有着自己的纹理。所以,通过将视觉、声音等多个模态结合可能会带来更加智能的模型。

​ 另一方面,现有模型更多的是"被动的"接收信息并作出应答,而且无法通过与周围进行交互来获得更多的知识,从而提高本身的"智能"。OpenAI\text{OpenAI}OpenAI提出的WebGPT\text{WebGPT}WebGPTInstructGPT\text{InstructGPT}InstructGPTChatGPT\text{ChatGPT}ChatGPT都是尝试让模型与环境进行交互,从而提高模型的"智能"。相信随着多模态大模型的发展,模型与环境的交互方式也会越来越多样(例如:通过视觉传感器进行交互),展示出来的"智能"也会越来越强大。

3. 超越语言模型

ChatGPT\text{ChatGPT}ChatGPT的“智能”主要来源于范式:“大数据+大模型+无监督预训练=涌现能力”。但这个范式并不是必须局限于语言,在任何存在大量数据的领域,通过设计合适的无监督预训练方式都可能会带来质的改变。因此,大模型的技术在不久的将来可能会对AI for Science\text{AI for Science}AI for Science、自动驾驶等领域带来巨大的改变。

4. 局限性

ChatGPT\text{ChatGPT}ChatGPT一个最为人诟病的缺点是:你无法确信它给的答案是正确的。也就是说,ChatGPT\text{ChatGPT}ChatGPT可能是胡编乱造的。但是,OpenAI\text{OpenAI}OpenAI的另一个工作WebGPT\text{WebGPT}WebGPT则是尝试让模型自己浏览网页,并将浏览的结果合成最终的答案。显然,WebGPT\text{WebGPT}WebGPT生成的答案是有依据的,那么真实性也就更高。论文《Large Language Models Can Self-Improve》中证明了大模型不需要标注样本就可以通过自己生成的样本完成性能的提升。

​ 那么一个可能改善ChatGPT\text{ChatGPT}ChatGPT的方法是:使用WebGPT\text{WebGPT}WebGPT作为真实性的评估模型或者指导模型,通过WebGPT\text{WebGPT}WebGPTChatGPT\text{ChatGPT}ChatGPT之间的交互来改善ChatGPT\text{ChatGPT}ChatGPT的真实性问题。也就是,两个模型通过相互博弈来不断改进。

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

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

相关文章

基于HTML5 技术的开放自动化HMI

人机交互接口(HMI)是自动化系统中不可或缺的一部分。传统的做法是提供一个HMI 显示屏,并且通过组态软件来配置显示屏的功能,通过modbus 或者以太网与PLC 连接。 现在,事情变得复杂了许多,用户不仅需要通过专…

linux共享内存的使用

共享内存可以由多个程序同时访问的内存,能够避免进程间通信过程中的冗余数据拷贝,是IPC中最快的一种,特别适合用来作大块数据的传输。共享内存可以映射到不同的进程空间,这些进程间的数据传递就不再涉及内核。这个过程其实是把同一块物理内存…

FMOC-PEG-COOH,FMOC-PEG-acid,芴甲氧羰基-聚乙二醇-羧基试剂供应

英文名称:FMOC-PEG-COOH,FMOC-PEG-acid 中文名称:芴甲氧羰基-聚乙二醇-羧基 蛋白质、肽和其他材料通过氨基酸或其他酸活性化学组,增加溶解度和稳定性,降低免疫原性;药物修饰或缓释药物研发,新…

ARM_SMMU_下

SMMU驱动代码分析 本文主要分析linux kernel中SMMUv3的代码(drivers/iommu/arm-smmu-v3.c) linux kernel版本是linux 5.7, 体系结构是aarch64 SMMU的作用是把CPU提交给设备的VA地址,直接作为设备发出的地址,变成正确的物理地址,访问到物理内…

[~/vulhub]/log4j/CVE-2021-44228-20221225

[~/vulhub]/log4j/CVE-2021-44228 ┌──(kwkl㉿kwkl)-[~/vulhub] └─$ cd log4j/CVE-2021-44228 ┌──(kwkl㉿kwkl)-[~/vulhub/log4j/CVE-2021-44228] └─$ dir 1.png 2.png docker-compose.yml README.md README.zh-cn.md┌──(kwkl㉿kwkl)-[~/vulhub/log4j/CVE-2021…

_15LeetCode代码随想录算法训练营第十五天-C++二叉树

_15LeetCode代码随想录算法训练营第十五天-C二叉树 题目列表 110.平衡二叉树257.二叉树的所有路径404.左叶子之和 110.平衡二叉树 题目 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每…

SpringBoot-2 读取properties;自动加载127个类原理总结;全部加载,按需配置

读取properties 方式一:非配置类填写:ComponentConfigurationProperties 1)建立bean: /只有在容器中的组件才拥有springboot提供的强大功能 Component ConfigurationProperties(prefix "mycar") public class Car {private Stri…

NetSuite Decode函数

昨天是平安夜,小家伙仍然为圣诞老人的到来准备了礼物,这是他的传统。每年为了感谢圣诞老人和驯鹿的到来,他都会准备上点心、水果。今年,他认为驯鹿可能需要电力,所以准备了电池给它们享用。 真希望天真一直伴随他的成长…

互联网技术不再是统领,当下正在发生着一场深刻的变革

拥抱实体经济,绝对是当下互联网玩家们的首要选择。无论是头部的互联网企业来讲,还是新生的互联网玩家而言,它们都不约而同地将关注的焦点聚焦在了这样一个方向上。   透过这一点,我们可以非常明显地感受到,一个全新的…

蓝桥杯备赛Day4——多维数组

二维数组初始化 p[[0 for i in range(5)] for j in range(2)] #法一 p[[0]*5 for j in range(2)] #法二 s[[1,2,3],[4,5,6]] print(s) for i in range(2):for j in range(3):print(s[i][j],end ) 三维数组初始化 a[[[0 for _ in range(2)] for __ in…

CSDN每日一练最长递增的区间长度 C语言

题目名称:最长递增的区间长度 时间限制:1000ms 内存限制:256M 题目描述 给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3 (注意:测试用例仅做参考,…

windows@网络防火墙@软件联网控制

文章目录ref打开防火墙控制面板常用部分限制某个软件联网文档参考具体操作取消控制/禁用第三方软件控制ref (Windows) 创建出站端口规则 | Microsoft LearnWindows Defender Firewall with Advanced Security (Windows) | Microsoft Learn组策略 Windows) 高级安全性的 Window…

二叉树经典算法题目

1.二叉树的前中后序遍历(简单) 省略 2.二叉树的深度(简单) 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 例如&a…

VS coda C++、python运行与Dbug配置

首先新建终端 一次性使用C方法 检查C编译器是否存在 which g可见位置存在于:/usr/bin/g 一次性命令格式: 使用json配置文件 运行C方法(推荐): 根据你查找的g的位置来决定 使用配置好的tasks.json(C的…

Java window多环境配置

目录JDK版本下载配置内容描述创建JAVA_HOME在Path配置版本切换效果JDK版本下载 Java8 Download address 这个是Java8 的下载地址,下载是要登录的,自己花费一点时间去注册。如果想要下载其它版本的JDK,请看下面的图,然后你就可以看…

SSD_学习笔记记录

one-steage VGG16模型的修改 VGG16的模型输出,其中224.。。为特征图的大小。 SSD模型中对VGG网络的修改: SSD模型是对VGG中的第四个卷积块中的最后一个Conv2d进行第一个输出,在这里简称为Conv4-3。以及第五个卷积块中的最后一个Conv2d进行…

前端开发:Vue封装通过API调用的组件的方法

前言 在前端开发中,关于Vue的使用相比大家并不陌生,而且Vue框架的优势也是其他框架所不能比的,尤其是Vue的封装思想更是堪称一绝,还有就是组件化的运用实践过程也是亮点。所以关于Vue框架的使用想必看官都不陌生,而且常…

干货 | 关于PCB中的“平衡铜”,一文全部说明白

平衡铜是PCB设计的一个重要环节,对PCB上闲置的空间用铜箔进行填充,一般将其设置为地平面。 平衡铜的意义在于: 对信号来说,提供更好的返回路径,提高抗干扰能力;对电源来说,降低阻抗,…

8 NP完全性理论

8 NP完全性理论 p问题 NP问题 NP完全问题 NPC(complete ) NP难问题NP-hard p问题 是一类能够用**(确定的)算法**在多项式时间内求解的可判定问题 ●这种问题类型也称为多项式类型 NP问题 是一类能够用不确定算法在多项式时间内求解的可判定问题 在确定性计算模型下多项式时…

Web前端105天-day64-HTML5_CORE

HTML5CORE04 目录 前言 一、复习 二、WebSocket 三、服务器搭建 四、聊天室 五、defineProperty 5.1.初识defineProperty 5.2.配置多个属性 5.3.可配置 5.4.赋值监听 5.5.练习 5.6.计算属性 总结 前言 HTML5CORE04学习开始 一、复习 SVG: 利用HTML的 DOM 来绘制图…