【Datawhale课程笔记-简单学点大模型】大模型的能力
大模型的能力
参考GITHUB:https://github.com/datawhalechina/so-large-lm/blob/main/第二章:大模型的能力.md
深入探讨GPT-3——这个具有代表性的大型语言模型的能力。我们的研究主要基于GPT-3论文中的基准测试,这些测试包括:
- 标准的自然语言处理(NLP)基准测试,例如问题回答;
- 一些特殊的一次性演示,例如在句子中使用新词。
GPT-3论文参考:https://arxiv.org/pdf/2005.14165.pdf
对比每个任务的最新技术成果,我们发现GPT-3的结果参差不齐:
- 在某些任务上,比如语言建模,GPT-3大幅度超越了现有技术的最高水平;
- 在其他任务上,GPT-3与训练有素,拥有大量标签数据的系统竞争时,却明显落后。
对于这些结果,我们应如何理解呢?
首先,我们需要明白,GPT-3并未明确针对这些任务进行训练,它只是作为一个语言模型,被训练来预测下一个词。然而,即便没有“特别努力”,GPT-3平均来看,仍然可以在广泛的NLP任务中做得不错。
由于GPT-3并未特别针对任何这些任务进行训练,因此它并未过度拟合,意味着它有很大的潜力在许多其他任务上表现良好(就像在一次性任务上的表现一样)。
此外,如果你希望在任何特定任务(例如问题回答)上表现良好,原则上你应能够利用大量的标签数据来适应GPT-3,并超越当前的技术水平。
语言模型的适应性:从语言模型到任务模型的转化
在自然语言处理的世界中,语言模型 p p p是一种对token序列 x 1 : L x_{1:L} x1:L的分布。这样的模型能够用于评估序列,
例如 p ( t h e , m o u s e , a t e , t h e , c h e e s e ) p(the,mouse,ate,the,cheese) p(the,mouse,ate,the,cheese)。
同样,它还能用于在给定提示的条件下生成完成的序列,如
t h e m o u s e a t e t h e c h e e s e the mouse ate the cheese themouseatethecheese
在这里,任务被定义为从输入映射到输出。以问答任务为例,我们可能有如下的输入输出:
输入:What school did Burne Hogarth establish?
输出:School of Visual Arts
我们使用“适应(Adaptation)”一词来指代将语言模型转化为任务模型的过程。这个过程需要以下两个输入:
- 任务的自然语言描述
- 一组训练实例(输入-输出对)
我们主要有两种方式来进行这种适应:
- 训练(标准的有监督学习):训练一个新模型,使其能将输入映射到输出。这可以通过创建一个新模型并利用语言模型作为特征(探针法),或者从现有的语言模型出发,根据训练实例进行更新(微调),或者在这两者之间找到平衡(轻量级的微调)。
- 提示(上下文学习):根据描述和训练实例构建一个或一组提示,将其输入到语言模型中以获取完成的序列。
根据训练实例的数量,我们还可以进一步细分: - 零样本学习(Zero-shot):训练样本为0
- 单样本学习(One-shot):训练样本为1
- 少样本学习(Few-shot):训练样本为少数
在这个选择过程中,训练可能会因为过拟合而变得具有挑战性(例如,想象一下根据5个例子微调一个有1750亿参数的模型)。如何有效进行训练将会在这门课程之后中进行讨论。现在,我们将先满足于使用提示进行GPT-3的适应。但是值得注意的是,提示的局限性在于我们只能利用少量的训练实例(最多只能塞进一个提示的数量)。这种输入的局限性由于Transformer自身的局限性导致的,其中提示和完成都必须适应2048个tokens。
在GPT-3的论文中,作者们评估了GPT-3在大量任务上的表现。我们将选择其中的一部分,对于每个任务,我们会讨论以下几点:
- 定义:任务是什么,以及其动机?
- 适应:我们如何通过提示将任务简化为语言模型?
- 结果:与任务特定的最先进模型相比,数量性能如何?
模型的大小和训练样本的数量都很重要。默认情况下,结果将基于:
- 完整的GPT-3模型(davinci),其拥有1750亿参数
- 使用尽可能多的训练实例进行上下文学习,这些实例都可以塞进提示。
在此过程中,我们将进行消融实验,以查看模型的大小和上下文训练实例的数量是否真的重要。而结果告诉我们,答案是肯定的,更多总是更好。我们选择的任务如下:
- Language modeling
- Question answering
- Translation
- Arithmetic
- News article generation
- Novel tasks
Language Modeling
在自然语言处理(NLP)中,除了对大型语言模型的考虑,我们还需要回顾一些基本任务。例如,对GPT-3的功能有一定的了解,并对提示工程的艺术有所体验。这都是研究语言模型的重要内容。一种最自然的思考方式就是询问语言模型是否能完成其本职工作(对语言进行模拟)。
我们回顾之前在引言中提到的语言模型的内容,语言模型 p p p是关于词汇序列的概率分布。假设我们有一段文本 x 1 : L x_{1:L} x1:L,例如:
the mouse ate the cheese \text{the mouse ate the cheese} the mouse ate the cheese
我们可以询问:语言模型会给这段文本分配什么概率?
p ( the mouse ate the cheese ) p(\text{the mouse ate the cheese}) p(the mouse ate the cheese)
我们知道,可以将联合概率分解为每个令牌的条件概率的乘积,这是通过链式规则完成的:
p ( x 1 : L ) = ∏ i = 1 L p ( x i ∣ x 1 : i − 1 ) . p(x_{1:L}) = \prod_{i=1}^L p(x_i \mid x_{1:i-1}). p(x1:L)=i=1∏Lp(xi∣x1:i−1).
困惑度(Perplexity)是一个重要的指标,是自然语言处理和语言模型中的一个重要概念,用于衡量语言模型的性能。它可以解释为模型在预测下一个词时的平均不确定性。简单来说,如果一个模型的困惑度较低,那么它在预测下一个词的时候就会更加准确。对于给定的语言模型和一个测试数据集,困惑度被定义为:
P ( X ) = P ( x 1 , x 2 , . . . , x N ) ( − 1 / N ) P(X) = P(x_1,x_2,...,x_N)^{(-1/N)} P(X)=P(x1,x2,...,xN)(−1/N)
其中, X = x 1 , x 2 , . . . , x N X=x_{1},x_{2},...,x_{N} X=x1,x2,...,xN是测试集中的词序列, N N N是测试集中的总词数。困惑度与语言模型的质量紧密相关。一个优秀的语言模型应能准确预测测试数据中的词序列,因此它的困惑度应较低。相反,如果语言模型经常做出错误的预测,那么它的困惑度将较高。
一个序列的联合概率取决于其长度,并且随着长度的增长,其值趋近于零,这使得困惑度变得难以追踪。直观上,我们希望对每个词标记(token)的概率 p ( x i ∣ x 1 : i − 1 ) p(x_{i}∣x_{1:i−1}) p(xi∣x1:i−1)进行平均。这里的 p(xi∣x1:i−1) 表示给定之前的词序列 x 1 : i − 1 x_{1:i−1} x1:i−1后,下一个词 x i x_{i} xi出现的概率。这样做的目的是评估模型在处理各种词标记时的平均性能。
我们不希望采取算术平均,因为如果我们给一个词标记分配了0的概率(即我们的模型认为这个词在特定的上下文中绝对不可能出现),那么在算术平均中这会造成极大的问题。然而,算术平均并不会为此惩罚你,因为它简单地将所有词标记的概率加在一起,然后除以总数,因此一个非常低的概率(如0)可能会被其他较高的概率抵消。
相反,我们希望采用几何平均,这就是困惑度(perplexity)所做的。在几何平均中,每个词标记的概率都被同等看待,并且一个极低的概率(如0)将会导致整个几何平均大幅度下降。因此,通过计算几何平均,我们可以更好地衡量模型在处理所有可能的词标记时的性能,特别是在处理那些模型可能会出错的情况。
perplexity p ( x 1 : L ) = exp ( 1 L ∑ i = 1 L log 1 p ( x i ∣ x 1 : i − 1 ) ) . \operatorname{perplexity}_p\left(x_{1: L}\right)=\exp \left(\frac{1}{L} \sum_{i=1}^L \log \frac{1}{p\left(x_i \mid x_{1: i-1}\right)}\right) \text {. } perplexityp(x1:L)=exp(L1i=1∑Llogp(xi∣x1:i−1)1).
困惑度可以被理解为每个标记(token)的平均"分支因子(branching factor)“。这里的"分支因子”,可以理解为在每个特定的词或标记出现后,语言模型预测下一个可能出现的词或标记的平均数量。因此,它实际上是度量模型预测的多样性和不确定性的一种方式。
这个理解与公式中的 log 1 p ( x i ∣ x 1 : i − 1 ) \log \frac{1}{p\left(x_i \mid x_{1: i-1}\right)} logp(xi∣x1:i−1)1密切相关,这个表达式代表了编码长度。我们在计算的是平均编码长度,这个长度反映了给定当前词或标记后,下一个词或标记可能的选择数量。因此,通过对平均编码长度取指数,我们可以得到可能的选择数量,这也就是"分支因子"。
为了更好地理解,我们可以考虑一个均匀分布的例子:一个长度为3的二进制字符串可以编码 2 3 = 8 2^3=8 23=8个可能的字符串。这个例子类似于我们的语言模型:在给定特定词或标记后,模型需要从多个可能的选项中预测下一个词或标记。如果选择的可能性多,模型的预测任务就更为复杂,相应的困惑度就会更高。
两类错误:语言模型可能会犯两种类型的错误,而困惑度对这两种错误的处理方式并不对称:
- 召回错误:语言模型未能正确地为某个词符分配概率值。这种情况下,困惑度是毫不留情的。例如,如果模型为词组 ‘𝖺𝗍𝖾’ 在 ‘𝗍𝗁𝖾,𝗆𝗈𝗎𝗌𝖾’ 后出现的概率预测为接近0,那么对应的困惑度值将趋近于无穷大。
p ( a t e ∣ t h e , m o u s e ) → 0 ⇒ perplexity p ( t h e , m o u s e , a t e , t h e , c h e e s e ) → ∞ . p({ate} \mid {the}, {mouse}) \to 0 \quad\Rightarrow\quad \text{perplexity}_p({the}, {mouse}, {ate}, {the}, {cheese}) \to \infty. p(ate∣the,mouse)→0⇒perplexityp(the,mouse,ate,the,cheese)→∞. - 精确度错误:语言模型为某些错误的词序列过度分配了概率值。在这种情况下,困惑度会进行适度的惩罚。给定一个语言模型 p,假设我们将一些垃圾分布 r r r按照概率 ϵ ϵ ϵ混入:
q ( x i ∣ x 1 : i − 1 ) = ( 1 − ϵ ) p ( x i ∣ x 1 : i − 1 ) + ϵ r ( x i ∣ x 1 : i − 1 ) . q(x_i \mid x_{1:i-1}) = (1-\epsilon) p(x_i \mid x_{1:i-1}) + \epsilon r(x_i \mid x_{1:i-1}). q(xi∣x1:i−1)=(1−ϵ)p(xi∣x1:i−1)+ϵr(xi∣x1:i−1).
那么,我们可以计算在 q q q下的 x 1 : L x_{1:L} x1:L的困惑度:
perplexity q ( x 1 : L ) ≤ 1 1 − ϵ perplexity p ( x 1 : L ) ≊ ( 1 + ϵ ) perplexity p ( x 1 : L ) , \text{perplexity}_q(x_{1:L}) \le \frac{1}{1 - \epsilon} \text{perplexity}_p(x_{1:L}) \approxeq (1 + \epsilon) \text{perplexity}_p(x_{1:L}), perplexityq(x1:L)≤1−ϵ1perplexityp(x1:L)≊(1+ϵ)perplexityp(x1:L),
其中,最后一个近似等式在 ϵ ϵ ϵ的值较小时成立。如果我们混入5%的垃圾信息,那么困惑度只增加 5%。需要注意的是,这样生成的语言结果会非常糟糕,因为平均每 20 个词符就会生成一个无意义的词符。
现在,我们继续评估实际数据集上的困惑度。"
Penn Tree Bank
Penn Tree Bank 是自然语言处理中的一个经典数据集,最初是为了进行句法解析而标注的。从Emami和Jelinek(2004)和Mikolov和Zweig(2012)开始,一个只包含华尔街日报文章的版本被用作语言模型评估。需要注意的是,PTB语言模型基准测试涉及对原始数据集的一些重要预处理(感谢John Hewitt的指出)。
适应性测试。将整个文本作为提示输入到GPT-3中,并评估其困惑度(示例):"
Pierre Vinken, 61 years old, will join the board as a nonexecutive director Nov. 29. Mr. Vinken is chairman of Elsevier N.V., the Dutch publishing group.
结果: GPT-3大幅度的超过了目前的最好结果(state-of-the-art)
Model | Perplexity |
GPT-3 | 20.5 |
BERT-Large-CAs1 | 31.3 |
那这个结果是否存在训练/测试泄露问题呢?作者没有在一些数据集上进行评估,例如WikiText-103。我们知道GPT-3是在维基百科上进行训练的,因此在这方面PTB是具有优势的,因为它早于互联网,并且只能通过付费许可获得,或许泄露问题会有所缓解。但是我们也要知道,数据泄露是当前大型数据集的另一个复杂问题:很难检查你的测试数据是否出现在你的训练数据中,并被记忆下来。 |
LAMBADA
参考论文:https://arxiv.org/pdf/1606.06031.pdf
该数据的任务:预测句子的最后一个词。
动机:解决这个任务需要对较长的内容进行建模,并对较长的内容具有一定的依赖。
由于LAMBADA本身就是一个语言模型任务,所以我们可以直接要求语言模型完成句子的最后一个词。但是这里有一个问题,语言模型不知道它应该生成句子的最后一个词。因此为了解决这个委托方,我们需要更明确地将其构建为输入-输出映射,并使用额外的示例进行上下文学习(示例):
Fill in blank: Alice was friends with Bob. Alice went to visit her friend ___. -> Bob She held the torch in front of her.
She caught her breath.
“Chris? There’s a step.”
“What?”
“A step. Cut in the rock. About fifty feet ahead.” She moved faster. They both moved faster. “In fact,” she said, raising the torch higher, “there’s more than a ___. -> step
结果:**GPT-3超过了v之前的最好结果(GPT-2)
Model | Perplexity |
GPT-3 (few-shot) | 1.92 |
SOTA | 8.63 |
HellaSwag
参考论文:https://arxiv.org/pdf/1905.07830.pdf
动机:评估模型进行常识推理的能力
任务:从一系列选择中选出最适合完成句子的选项
该数据是一个多项选择任务,所以最自然的做法是用语言模型为每个候选答案打分,并预测“最佳”答案(示例):
Making a cake: Several cake pops are shown on a display. A woman and girl are shown making the cake pops in a kitchen. They ${answer}
其中 ${answer} 是以下选项之一:
- bake them, then frost and decorate.
- taste them as they place them on plates.
- put the frosting on the cake as they pan it.
- come out and begin decorating the cake as well.
给定一个问题 x,你如何对候选答案 y 进行评分呢?没有明确的答案,但这里有一些启发式方法:
- 未归一化的概率(Unnormalized probability): s c o r e ( x , y ) = p ( x , y ) score(x,y)=p(x,y) score(x,y)=p(x,y)。未归一化概率的问题是它倾向于短答案。
- 长度归一化概率(Length-normalized probability): s c o r e ( x , y ) = p ( x , y ) / n u m − t o k e n s ( y ) score(x,y)=p(x,y)/num-tokens(y) score(x,y)=p(x,y)/num−tokens(y)。这修正了长度偏见。然而,对于长度相同的两个答案,模型仍可能偏好更受欢迎的实体。
- 频率归一化概率(Frequency-normalized probability): s c o r e ( x , y ) = p ( y ∣ x ) / p ( y ∣ x 0 ) score(x,y)=p(y∣x)/p(y∣x_{0}) score(x,y)=p(y∣x)/p(y∣x0),其中 x 0 x_{0} x0 是一个中立的字符串,如’Answer:'。这降低了恰巧很常见的答案(例如,“John”)的得分。
**结果:**GPT-3接近但没有超过最先进的水平:
Model | Accuracy |
SOTA | 85.6 |
GPT-3 | 79.3 |
我需要知道的是,SOTA结果是在该数据集的训练集中微调得到的结果,因此GPT-3在完全不在该数据集训练的情况下获得了接近的结果是很令人惊喜的。 |
Question answering
我们现在考虑(闭卷)问答题,其中输入是一个问题,输出是一个答案。语言模型必须以某种方式“知道”答案,而无需在数据库或一组文档中查找信息。
Input: What school did burne hogarth establish?
Output: School of Visual Art
TriviaQA
https://arxiv.org/pdf/1705.03551.pdf
任务:给定一问题后生成答案
原始数据集是由业余爱好者收集的,并被用作开放式阅读理解的挑战,但我们用它来进行(闭卷)问题回答。我们根据训练实例和问题定义一个提示,并将完成的内容作为预测的答案:
Q: ‘Nude Descending A Staircase’ is perhaps the most famous painting by which
20th century artist?
A: Marcel Duchamp
结果:
Model | Accuracy |
RAG | 68.0 |
GPT-3 (zero-shot) | 64.3 |
GPT-3 (few-shot) | 71.2 |
我们也看到,增加模型大小和增加in-context training实例都有助于提高性能: | |
![[./images/gpt3_triviaQA.png.png]] |
WebQuestions
https://aclanthology.org/D13-1160.pdf
任务:和TriviaQA类似是问答任务
数据集从Google搜索查询中收集,最初用于对知识库的问题回答。我们定义一个提示,就如TriviaQA一样(演示):
Q: What school did burne hogarth establish?
A: School of Visual Arts
结果:
Model | Accuracy |
RAG | 45.5 |
GPT-3 (zero-shot) | 14.4 |
GPT-3 (few-shot) | 41.5 |
NaturalQuestions
任务:回答问题
从Google搜索查询中收集的数据集(区别在于答案的长度较长)我们和上面一样定义一个提示:
Q: Who played tess on touched by an angel?
A: Delloreese Patricia Early (July 6, 1931 - November 19, 2017), known professionally as Della Reese.
结果:
Model | Accuracy |
RAG | 44.5 |
GPT-3 (zero-shot) | 14.6 |
GPT-3 (few-shot) | 29.9 |
Translation
翻译任务是将源语言(例如,德语)中的句子翻译成目标语言(例如,英语)中的句子。自1960年代以来,机器翻译一直是NLP的长期任务,2000年代开始,在NLP(拥有自己独特的子社区)中,统计机器翻译开始飞速发展,紧随其后的是2010年代中期的神经机器翻译。由于存在人类翻译者,因此它一直是一个数据丰富的领域。标准的评估数据集比如是WMT’14和WMT’16数据集。由于存在多种可能的翻译,所以(自动)评估指标是BLEU(它捕获了n-gram重叠的概念)。对于Few-shot的情况,我们构造了一个包含输入-输出训练实例以及输入的提示(演示):
Mein Haus liegt auf dem Hügel. = My house is on the hill.
Keinesfalls dürfen diese für den kommerziellen Gebrauch verwendet werden. = In no case may they be used for commercial purposes.
**结果:**这里是从德语到英语的结果:
Model | Accuracy |
SOTA (supervised) | 40.2 |
GPT-3 (zero-shot) | 27.2 |
GPT-3 (few-shot) | 40.6 |
- 即使没有监督训练数据,GPT-3也能达到全监督系统的最新技术水平!
- 这为机器翻译的性能设定了一个下限;因为肯定会想利用大量的平行语料库(对齐的输入-输出对)。
- 法语和罗马尼亚语的结果类似。
- 从英语到外语的结果要差得多,这是可以预料的,因为GPT-3主要是一个英语模型。
Arithmetic
GPT-3是一个语言模型(主要是英语),但我们可以在一系列更“抽象推理”的任务上评估它,以评估GPT-3作为更通用模型的性能。
这里的Arithmetic任务是做算术题(2-5位数的加法,减法,乘法)你没有实际的理由要解决这个问题;这只是一个诊断任务,满足我们的科学好奇心。我们将问题提出为问题回答:
Q: What is 556 plus 497?
A: 1053
结果:
![[./images/gpt3_arithmetic.png.png]]
从实验结果看起来,虽说不能认为GPT-3获得很好的结果,但是还是让我们惊艳,并对未来充满想象。
News article generation
任务:给定标题和副标题,生成新闻文章。
数据集:标题/副标题取自newser.com。
我们设立了一个评估标准,人类根据文章可能由机器编写的可能性对文章进行评分。我们在上下文学习中给模型提供提示样本:
Title: United Methodists Agree to Historic Split
Subtitle: Those who oppose gay marriage will form their own denomination
Article: After two days of intense debate, the United Methodist Church has agreed to a historic split - one that is expected to end in the creation of a new denomination, one that will be "theologically and socially conservative," according to The Washington Post. The majority of delegates attending the church's annual General Conference in May voted to strengthen a ban on the ordination of LGBTQ clergy and to write new rules that will "discipline" clergy who officiate at same-sex weddings. But those who opposed these measures have a new plan: They say they will form a separate denomination by 2020, calling their church the Christian Methodist denomination...
**结果:**人类只有52%的时间能够正确地分类“人类”与“机器”(几乎只是随机机会)。
Novel tasks
使用新词
任务:给定一个新造的词和定义,生成使用该词的句子。
我们依旧只需在提示中描述任务:
To “screeg” something is to swing a sword at it. An example of a sentence that uses the word screeg is: We screeged the tree with our swords.
纠正英语语法
任务:给定一个不合语法的句子,生成其合语法的版本。
我们通过给出提示来描述任务(提示是有输入和输入对组成的):
Poor English input: I eated the purple berries.
Good English output: I ate the purple berries.
Poor English input: Thank you for picking me as your designer. I’d appreciate it.
Good English output: Thank you for choosing me as your designer. I appreciate it.
Poor English input: The mentioned changes have done. or I did the alteration that you
requested. or I changed things you wanted and did the modifications.
Good English output: The requested changes have been made. or I made the alteration that you
requested. or I changed things you wanted and made the modifications.
Poor English input: I’d be more than happy to work with you in another project.
Good English output: I would be happy to work with you on another project.
Other tasks
自原始论文以来,GPT-3已应用于许多更多的任务,包括基准数据集(Benchmark)和一次性的演示(one-off deoms)。以下是一个不详尽的列表:
Benchmarks:
- SWORDS:词汇替换,目标是在句子的上下文中预测同义词。
- Massive Multitask Language Understanding:包括数学,美国历史,计算机科学,法律等57个多选问题。
- TruthfulQA:人类由于误解而错误回答的问答数据集。
**结果:**虽说GPT-3在这些Benchmark数据集中的表现平庸,但是考虑到我们只使用了few-shot的情况,或许不算太差。
one-off Demos:
- Examples from the OpenAI website
- Examples from gpt3demo.com
这些演示既创新又有趣,但很难判断它们的可靠性如何。
总结
- GPT-3在广泛的标准NLP基准测试和一次性任务上进行了评估。
- GPT-3可以表现得极好或者非常普通。
- 增加模型的大小和示例的数量都有助于提高性能。
- 有一些启发式的方法可以将语言模型适应到感兴趣的任务。
- 但是为什么会有这样表现,没有人知道。
相关文章:
【Datawhale课程笔记-简单学点大模型】大模型的能力
大模型的能力 参考GITHUB:https://github.com/datawhalechina/so-large-lm/blob/main/第二章:大模型的能力.md 深入探讨GPT-3——这个具有代表性的大型语言模型的能力。我们的研究主要基于GPT-3论文中的基准测试,这些测试包括: …...
git使用说明
目录 前言1.安装1.1. windows1.1.1.git客户端1.1.2.配置git客户端1.1.3.安装TortoiseGit图形客户端1.1.4 关于文件换行问题 1.2.ubuntu1.2.1.ubuntu终端Git中文乱码1.2.2 git log中文乱码解决 2.建立版本库2.1.下载网上开源版本库2.1.1.复制下载地址2.1.2.使用命令行…...
【PowerQuery】PowerBI Pro账户的自动刷新
在数据和模型通过发布或者上传方式上传到PowerBI Pro中,如何来进行数据刷新呢?数据源依然在本地,而数据模型已经发布到PowerBI Pro云端服务中。如果数据源更新,我们的模型如何进行自动刷新呢? PowerBI Pro如果需要基于本地数据源更新进行模型更新需要部署相应的数据网关服…...
红黑树(思维导图详解版)
目录 资源已上传 实现代码 测试代码 资源已上传 部分图片 实现代码 注意判断是否为红黑树的代码实现,实现代码中红黑树的删除 #pragma once #include<iostream> using namespace std;enum Color_Type {Red,Black };template<class K,class V> str…...
javafx学习记录
1.布局 2.选择重写或实现方法(select methods to override/implements) ctrl o 3.javafx有init方法,start方法,stop方法 4.定义一个按钮,使用系统默认浏览器访问网站 5.使窗口的关闭栏,缩小扩屏栏,代码是倒数第二行 6.设置模态窗口,默认关闭模态的 下…...
友善Nona Pi开发板ubuntu22.04系统用Python3.8.17的pip安装PyQt5.15.2时报错“Q_PID”这个宏未定义的一种解决办法
安装命令: pip install PyQt55.15.2 --config-settings --confirm-license --verbose -i https://mirrors.aliyun.com/pypi/simple/ 遇到出错: 如图: 分析具体错误内容: These bindings will be built: Qt, QtCore, QtNetwo…...
HTML中name和class,id的区别和联系
在HTML中,name、class和id是用于标识和选择元素的属性。 区别: name属性:用于标识表单元素,特别是在提交表单时,用于识别表单数据。name属性可以在同一表单中的多个元素中重复使用。class属性:用于为一个…...
Google 开源库Guava详解(集合工具类)—Maps、Multisets、Multimaps
一、Maps Maps有许多很酷的实用程序,值得单独解释。 1、uniqueIndex Maps.uniqueIndex(Iterable,Function)解决了一个常见的情况,即有一堆对象,每个对象都有一些唯一的属性,并希望能够根据该…...
肖sir__mysql之介绍__001
mysql之介绍 一、认识数据库 (1)什么是数据库? 是存放数据的电子仓库。以某种方式存储百万条,上亿条数据,供多个用户访问共享。 如: (2)数据库分关系型数据库和非关系型数据库 a、…...
【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙
文章目录 前言一、代价地图自定义图层1.1 Costmap组成1.2 costmap_2d1.3 实现过程1.3.1 安装插件1.3.2 在costmap_2d中插入障碍物1.3.3 修改launch文件1.3.4 设置障碍物坐标参数二、图像编辑器2.1 安装GIMP2.1.1 命令行方式安装2.1.2 使用图形界面安装GIMP:2.2 实现过程三、ro…...
每日一题~中序后序遍历构造二叉树
原题链接:106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) 题目描述: 思路分析: 后序遍历分析图 中序遍历分析图 不难看出后序遍历的结果中的最后一个元素就是根节点,倒数第二个元素则是根节点的…...
Sentinel整合Gateway
pom引入依赖<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>…...
线性dp,优化,272. 最长公共上升子序列
272. 最长公共上升子序列 - AcWing题库 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目。 小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们研究最长公共上升子序列了。 小沐沐说,对于两个数列 A 和 B&…...
基于Java+SpringBoot+Vue+uniapp点餐小程序(包含协同过滤算法和会员系统,强烈推荐!)
校园点餐小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序(小蔡coding)2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 系统功能结构设计4.2 主要功能描述 五…...
ActiveMQ面试题(二)
文章目录 前言一、死信队列二、ActiveMQ 中的消息重发时间间隔和重发次数吗?总结 前言 死信队列ActiveMQ 中的消息重发时间间隔和重发次数吗? 一、死信队列 如果你想在消息处理失败后,不被服务器删除,还能被其他消费者处理或重试…...
解决Oracle SQL语句性能问题——SQL语句改写(in、not in、exists及not exists)
8. in改为join in为Oracle数据库支持的条件语法,该语法会使得代码看起来思路清晰,逻辑分明。该语法有时也会导致SQL语句产生次优的执行计划,而导致SQL语句的性能问题。因此,为了解决相关SQL语句的性能问题,有时我们需要通过join来改写和消除in,具体改写方法如下所示。 …...
列表对象复制属性到另一个列表对象 从List<Object>另一个List<Object>
目录 事件起因环境和工具解决办法结束语 事件起因 在写一个市级的项目时,遇到了一个问题,这个项目涉及的数据内容非常大,光是数据库文件的大小就已经达到了12G,数据的规模大致是在百万级的,光是我这次参与处理的数据就…...
Python基本情况
Python(发音:/ˈpaɪθən/ )是一种强大的编程语言,它简单易学,提供众多高级的数据结构,让我们可以面向对象进行编程。Python 的语法优雅,由于是一个解释性语言,更贴近人类自然语言&…...
【精华】AI Agent:大模型改变世界的“钥匙”
文章目录 1.Auto-GPT2.BabyAGI3.AgentGPT4.GodMode5.AI Town6.ChatDev 当前大模型的本质是大语言模型(Large Language Model, LLM)。相较于传统的自然语言处理模型,LLM通过无监督训练,从大量文本数据中学习自然语言的模式和结构&a…...
CVPR2023 RIFormer, 无需TokenMixer也能达成SOTA性能的极简ViT架构
编辑 | Happy 首发 | AIWalker 链接 | https://mp.weixin.qq.com/s/l3US8Dsd0yNC19o7B1ZBgw project, paper, code Token Mixer是ViT骨干非常重要的组成成分,它用于对不同空域位置信息进行自适应聚合,但常规的自注意力往往存在高计算复杂度与高延迟问题。…...
瑞萨MCU入门教程(非常详细的瑞萨单片机入门教程)
瑞萨MCU零基础入门系列教程 前言 得益于瑞萨强大的MCU、强大的软件开发工具(e studio),也得益于瑞萨和RA生态工作室提供的支持,我们团队编写了《ARM嵌入式系统中面向对象的模块编程方法》,全书37章,将近500页: 讲解面向对象编程…...
【Java】采用 Tabula 技术对 PDF 文件内表格进行数据提取
某天项目组来了个需求说需要提取 PDF 文件中数据作为数据沉淀使用,这是因为第三方系统不提供数据接口所以只能够出此下策。 就据我所知,PDF 文件内数据提取目前有 3 种解决方案: 第一种,资金足够的话可以直接通过人工智能对 PDF…...
完全保密的以太坊交易:Aztec网络的隐私架构
1. 引言 Aztec为隐私优先的以太坊zkRollup:即其为具有完全隐私保护的L2。 为了理解私有交易的范式变化性质,以及为什么将隐私直接构建到网络架构中很重要,必须首先讨论为什么以太坊不是私有的。 2. 以太坊:公有链 以太坊为具有…...
初识Java 9-1 内部类
目录 创建内部类 到外部类的链接 使用.this和.new 内部类和向上转型 在方法和作用域中的内部类 匿名内部类 嵌套类 接口中的类 从多嵌套的内部类中访问外部人员 本笔记参考自: 《On Java 中文版》 定义在另一个类中的类称为内部类。利用内部类,…...
合宙Air724UG LuatOS-Air LVGL API控件-屏幕横屏竖屏切换(Rotation)
屏幕横屏竖屏切换(Rotation) lvgl.disp_set_rotation(nil, lvgl.DISP_ROT_angle) 屏幕横屏竖屏切换显示,core版本号要>3202参数 参数类型释义取值nil无意义nilangle显示角度0,90,270,360 返回值nil 例子 lvgl.init()- -初始化 lvgl.disp_set_rotation(nil,…...
在Unity中,Instantiate函数用于在场景中创建一个新的游戏对象实例
在Unity中,Instantiate函数用于在场景中创建一个新的游戏对象实例。它的语法如下所示: public static Object Instantiate(Object original, Vector3 position, Quaternion rotation); original:要实例化的原始游戏对象。position࿱…...
解决 tesserocr报错 Failed to init API, possibly an invalid tessdata path : ./
问题描述 我们在初次使用tesserocr库的时候,可能会报以下错误: RuntimeError: Failed to init API, possibly an invalid tessdata path: ./ 这是因为我们在使用 conda 创建的环境中找不到"tessdata"这个文件夹。 解决办法 这时候把Tessera…...
使用Python CV2融合人脸到新图片--优化版
优化说明 上一版本人脸跟奥特曼图片合并后边界感很严重,于是查找资料发现CV2还有一个泊松函数很适合融合图像。具体代码如下: import numpy as np import cv2usrFilePath "newpic22.jpg" atmFilePath "atm2.jpg" src cv2.imrea…...
Python分享之对象的属性
Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。 属性的__dict__系统 对象的属性可能来自于其类定义,叫做类属性(class attribute)。类属性可能来自类定义自身,也可能根据类定义继承来的…...
编程参考 - std::exchange和std::swap的区别
这两个功能是C standard library中的Standard template library中的一部分。容易混淆,我们来看下它们的区别。 exchange: 这个函数是一个返回原先值的set函数。 std::exchange is a setter returning the old value. int z std::exchange(x, y); Af…...
删除网站留言板功能/app优化推广
变量是保存存储值的内存位置。也就是说,当创建一个变量时,可以在内存中保留一些空间。 基于变量的数据类型,解释器分配内存并决定可以存储在保留的存储器中的内容。 因此,通过为变量分配不同的数据类型,可以在这些变量…...
wordpress后台中文/网络营销有几种方式
来源:互联网你是否需要以下的提示?以下是Storix Inc的总裁和CEO AnthonyJohnson所归纳的关于处理备份的7条最佳实践。- 要备份整个系统,不要只备份数据- 要核查校验你的备份- 要将你的备份加密- 要经常检测你的系统恢复功能- 要了解恢复过程中的停机时间…...
西安手机网站开发/免费b站推广网站2022
Ubuntu下VirtualBox本来可以很好地用的,今天早上一来就报错了,……提示如下内容: ------------------------------------------------------------------------- Kernel driver not installed (rc-1908) The VirtualBox Linux kernel drive…...
做外贸一般看什么网站/网络推广费用计入什么科目
ROS 提高篇 之 A Mobile Base-05 — 控制移动平台 — (Python编程)控制虚拟机器人的移动(精确的制定目标位置) 使用 odometry 消息类型 重写 out_and_back 程序。 我使用的虚拟机软件:VMware Workstation 11 使用的Ub…...
怎样做网站管理/青岛网络优化厂家
http://archive.ics.uci.edu/ml/databases/synthetic_control/ 继续 转载于:https://www.cnblogs.com/zlslch/p/6673739.html...
一个网站拿到手里想做优化第一步怎么做/seo研究协会网
2019独角兽企业重金招聘Python工程师标准>>> 11行代码就写出了一个配置文件的解析器。 def loadUserInfo(fileName):userinfo {}file open(fileName, "r")while file:line file.readline()if len(line) 0:breakif line.startswith(#):continuekey, va…...