【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器

news2024/11/16 23:34:42
FLAN: 微调语言模型是Zero-Shot学习器
《Finetuned Language Models are Zero-shot Learners》

论文地址:https://arxiv.org/abs/2109.01652

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

一、简介

请添加图片描述

​ 大语言模型(例如 GPT-3 \text{GPT-3} GPT-3)已经展现出了非常好的 few-shot learning \text{few-shot learning} few-shot learning的能力。然而,在 zero-shot learning \text{zero-shot learning} zero-shot learning上并不成功。例如, GPT-3 \text{GPT-3} GPT-3在阅读理解、问答和自然语言推断上的 zero-shot \text{zero-shot} zero-shot效果远差于 few-shot \text{few-shot} few-shot。一个潜在的原因是,不使用 few-shot \text{few-shot} few-shot样例模型很难在与预训练数据形式不一样的 prompts \text{prompts} prompts上表现良好。

​ 本文探索一种改善大语言模型 zero-shot \text{zero-shot} zero-shot效果的简单方法,这将扩大语言模型的受众。利用一个直觉: NLP \text{NLP} NLP任务可以通过自然语言指令来描述,例如:"这篇影评是正面还是负面?“或者"将how are you翻译为中文”。本文在 137B \text{137B} 137B参数的预训练语言模型上执行 instruction tuning \text{instruction tuning} instruction tuning,即通过自然语言指令在60个 NLP \text{NLP} NLP任务混合数据集上微调模型。这个模型称为 FLAN \text{FLAN} FLAN,即 Finetuned Language Net \text{Finetuned Language Net} Finetuned Language Net

​ 为了评估 FLAN \text{FLAN} FLAN在未见过任务上的 zero-shot \text{zero-shot} zero-shot效果,根据任务类型将 NLP \text{NLP} NLP数据集分为不同的组,将一个组的任务留出来,然后在其他组上微调 FLAN \text{FLAN} FLAN。如上图1所示,为了评估 FLAN \text{FLAN} FLAN在执行自然语言推理的能力,在常识推理、翻译和情感分析等广泛的 NLP \text{NLP} NLP任务上 instruction tune \text{instruction tune} instruction tune模型。

​ 评估结果显示, FLAN \text{FLAN} FLAN显著的改善了 137B \text{137B} 137B参数量模型的 zero-shot \text{zero-shot} zero-shot效果。 FLAN \text{FLAN} FLAN在25个数据集中的20个上的 zero-shot \text{zero-shot} zero-shot效果都优于 GPT-3 \text{GPT-3} GPT-3 zero-shot \text{zero-shot} zero-shot效果,甚至在ANLI, RTE, BoolQ, AI2-ARC, OpenbookQA, StoryCloze数据集上的效果大幅度超过了 few-shot \text{few-shot} few-shot GPT-3 \text{GPT-3} GPT-3。在消融研究中发现增加任务组的数量能够改善模型在未见过任务上的效果,并且 instruction tuning \text{instruction tuning} instruction tuning仅出现在足够大的模型上。

请添加图片描述

​ 如上图2描述, instruction tuning \text{instruction tuning} instruction tuning是一种结合了预训练-微调和 prompting \text{prompting} prompting范式的简单方法,其通过微调来改善语言模型对于推理时文本交互的响应。实验结果显示语言模型能够很好的执行指令描述的任务。

二. FLAN \text{FLAN} FLAN Instruction Tuning \text{Instruction Tuning} Instruction Tuning改善 Zero-shot Learning \text{Zero-shot Learning} Zero-shot Learning

instruction tuning \text{instruction tuning} instruction tuning的动机是改善语言模型回答 NLP \text{NLP} NLP指令的能力。想法是使用监督来教语言模型执行指令描述的任务, LM \text{LM} LM将学会遵循指令并且在未见过的任务上也可以完成。为了在未见过的任务上进行评估,根据任务类型将任务分组,将一组任务留出评估,并使用余下的任务进行 instruction tuning \text{instruction tuning} instruction tuning

2.1 任务和模板

请添加图片描述

​ 由于从头创建一个具有许多任务的 instruction tuning \text{instruction tuning} instruction tuning数据集非常消耗资源,所以将研究社区的现有数据集转换为指令的形式。将 Tensorflow \text{Tensorflow} Tensorflow数据集中的62文本数据集整合为单个混合数据集,包含语言理解和语言生成任务。上图3展示了这些数据集,每个数据集会被分类至12个任务组中。

​ 对于每个数据集,手动构造10个唯一的模板,这些模板使用自然语言指令来描述该数据集的任务。10个模板中的大多数都描述原始任务,但为了增加多样性,每个数据集还会增加3个“扭转任务”的模板(例如:对于情感分类,包含了一些要求生成电影评论的模板)。然后在所有数+据集混合的数据集上 instruction tune \text{instruction tune} instruction tune预训练语言模型。下图4展示了一个自然语言推理数据集的多个指令模板。

请添加图片描述

2.2 评估划分

​ 本文感兴趣的是, FLAN \text{FLAN} FLAN在未见过任务上 instruction tuning \text{instruction tuning} instruction tuning表现,所以定义什么是未见过的任务至关重要。尽管先前的工作通过不允许相同的数据集出现在训练中来定义未见过的任务,本文通过上图3的任务分组来使用更加保守的定义。在本文中,若在 instruction tuning \text{instruction tuning} instruction tuning时没有见过 D \mathcal{D} D所属任务组中的所有数据集,那么在评估时 D \mathcal{D} D是未见过的。例如,若 D \mathcal{D} D是一个蕴含任务,然后在 instruction tuning \text{instruction tuning} instruction tuning中没有任何蕴含数据集,并且在所有的其他组中的任务上进行 instruction-tuned \text{instruction-tuned} instruction-tuned

2.3 带有选项的分类

​ 给定任务的输出空间通常是几个类别中的一个(分类),或者是自由文本(生成)。由于 FLAN \text{FLAN} FLAN instruction-tuned \text{instruction-tuned} instruction-tuned版本的纯解码器语言模型,其天然能够生成自由文本,所以对于生成任务不需要进一步修改。

​ 对于分类任务,先前的工作使用一个 rank classification \text{rank classification} rank classification方法,例如:仅有两个输出被考虑(“yes"和"no”),较高概率的一个就是模型的预测。虽然这个过程在逻辑上是合理的,但是不完美。因此,我们包括了一个选项后缀,即将 OPTIONS \text{OPTIONS} OPTIONS这个单词添加至分类任务的末尾,附带该任务输出类别列表。这使得模型知道在响应分类任务时需要选择哪些。样本如上图1所示。

2.4 训练细节

  • 模型结构和预训练

    在本文实验中,使用 LaMDA-PT \text{LaMDA-PT} LaMDA-PT,一个具有 137B \text{137B} 137B参数量的稠密的 left-to-right  \text{left-to-right } left-to-right 纯解码器 Transformer \text{Transformer} Transformer语言模型。该模型在网络文档(包括计算机代码)、对话数据和 Wikipedia \text{Wikipedia} Wikipedia上进行预训练,使用 SentencePiece \text{SentencePiece} SentencePiece 32k \text{32k} 32k词表,共有 2.49T \text{2.49T} 2.49T BPE tokens \text{BPE tokens} BPE tokens。大约有10%的预训练数据是非英文的。

  • Instruction tuning \text{Instruction tuning} Instruction tuning过程

    FLAN \text{FLAN} FLAN instruction-tuned \text{instruction-tuned} instruction-tuned版本的 LaMDA-PT \text{LaMDA-PT} LaMDA-PT instruction tuning pipeline \text{instruction tuning pipeline} instruction tuning pipeline混合了所有的数据集,并且随机从每个数据集中采样。为了平衡不同数据集的尺寸,限制每个数据集的训练样本数量为 30k \text{30k} 30k。模型微调时, learning rate \text{learning rate} learning rate 3e-5 \text{3e-5} 3e-5 batch size \text{batch size} batch size为8192,使用 Adafactor \text{Adafactor} Adafactor优化器,所有模型都微调 30k \text{30k} 30k个梯度步。微调时输入和输出的序列的长度为1024和256。整个 instruction tuning \text{instruction tuning} instruction tuning在128核的 TPUv3 \text{TPUv3} TPUv3上用了60个小时。对于所有的评估,报告最终 checkpoint \text{checkpoint} checkpoint的结果。

三、结果

请添加图片描述

​ 本文在自然语言推理、阅读理解、闭卷问答、翻译、常识推理、指代消解和 struct-to-text \text{struct-to-text} struct-to-text上评估了 FLAN \text{FLAN} FLAN。对于每个数据集,评估所有模板效果的平均值,其代表了给定一个典型自然语言指令的预期性能。

​ 为了比较,报告了使用与 GPT-3 \text{GPT-3} GPT-3相同 prompts \text{prompts} prompts LaMDA-PT \text{LaMDA-PT} LaMDA-PT zero \text{zero} zero few-shot \text{few-shot} few-shot结果。这个 baseline \text{baseline} baseline提供了最直接的消融, instruction tuning \text{instruction tuning} instruction tuning到底有多少帮助。 instruction tuning \text{instruction tuning} instruction tuning在大多数数据集上改善了 LaMDA-PT \text{LaMDA-PT} LaMDA-PT

​ 本文还展示了 GPT-3 175B \text{GPT-3 175B} GPT-3 175B GLaM 64B/64E \text{GLaM 64B/64E} GLaM 64B/64E zero-shot \text{zero-shot} zero-shot效果。 zero-shot FLAN \text{zero-shot FLAN} zero-shot FLAN在25个数据集中的20个上超过了 zero-shot GPT-3 \text{zero-shot GPT-3} zero-shot GPT-3,甚至在10个数据集上超过了 GPT-3 \text{GPT-3} GPT-3 few-shot \text{few-shot} few-shot性能。 zero-shot GLaM \text{zero-shot GLaM} zero-shot GLaM在19个数据集中的13个上超越了 zero-shot GLaM \text{zero-shot GLaM} zero-shot GLaM,以及在19个数据集中的11个上超越了 one-shot GLaM \text{one-shot GLaM} one-shot GLaM

​ 总的来说,发现 instruction tuning \text{instruction tuning} instruction tuning对自然表述为指令的任务上非常有效,并且对于那些直接形式化为语言模型的任务上不是很有效,其中指令大部分冗余(例如:常识推理和指代消歧任务被形式化为完成不完整的句子或者段落)。自然语言推理、阅读理解、闭卷问答和翻译的结果如上图5所示。

  • 自然语言推理 (NLI) \text{(NLI)} (NLI)

    在5个 NLI \text{NLI} NLI数据集,对于给定 premise \text{premise} premise,模型需要判断 hypothesis \text{hypothesis} hypothesis是否为真, FLAN \text{FLAN} FLAN大幅度超越了所有的 baselines \text{baselines} baselines。正如Brown et al.所说, GPT-3 \text{GPT-3} GPT-3 NLI \text{NLI} NLI上挣扎的一个原因是, NLI \text{NLI} NLI样本不太可能自然的出现在无监督训练集中,其只会作为句子的延续来使用。对于 FLAN \text{FLAN} FLAN,将 NLI \text{NLI} NLI作为更加自然的问题 Dose <premise> mean that <hypothesis>? \text{Dose <premise> mean that <hypothesis>?} Dose <premise> mean that <hypothesis>?,从而实现更好的效果。

  • 阅读理解

    在阅读理解上,模型要求在给定的段落上回答问题, FLAN \text{FLAN} FLAN效果超过了baseline MultiRC \text{MultiRC} MultiRC QBQA \text{QBQA} QBQA。在 BoolQ \text{BoolQ} BoolQ上, FLAN \text{FLAN} FLAN大幅度超越了 GPT-3 \text{GPT-3} GPT-3

  • 闭卷问答

    对于闭卷问答,在不访问包含答案的具体信息情况下,要求模型回答关于世界的问题, FLAN \text{FLAN} FLAN在所有4个数据集上都超越了 GPT-3 \text{GPT-3} GPT-3。相较于 GLaM \text{GLaM} GLaM FLAN \text{FLAN} FLAN ARC-e \text{ARC-e} ARC-e ARC-c \text{ARC-c} ARC-c上的效果更优,在 NQ \text{NQ} NQ TQA \text{TQA} TQA上的效果略差于 GLaM \text{GLaM} GLaM

  • 翻译

    类似于 GPT-3 \text{GPT-3} GPT-3 LaMDA-PT \text{LaMDA-PT} LaMDA-PT的训练数据90%是英文并且包含一些其他语言的文本。本文在 GPT-3 \text{GPT-3} GPT-3论文中评估的三个机器翻译数据集上评估了 FLAN \text{FLAN} FLAN:来自于 WMT’14 \text{WMT'14} WMT’14的法语-英语,来自 WMT’16 \text{WMT'16} WMT’16的德语-英语和罗马尼亚语-英语。相较于 GPT-3 \text{GPT-3} GPT-3 FLAN \text{FLAN} FLAN在6个评估上效果优于 zero-shot GPT-3 \text{zero-shot GPT-3} zero-shot GPT-3,大多数情况下效果差于 few-shot GPT-3 \text{few-shot GPT-3} few-shot GPT-3。类似于 GPT-3 \text{GPT-3} GPT-3 FLAN \text{FLAN} FLAN在翻译为英文上有很好的效果,并且比监督翻译基线效果更好。然而,将英语翻译为其他语言的效果相对较弱,可能是因为 FLAN \text{FLAN} FLAN使用英文的 sentencepiece tokenizer \text{sentencepiece tokenizer} sentencepiece tokenizer且主要在英文数据集上预训练。

  • 额外任务

    虽然在上面几组任务中有很好的结果, instruction tuning \text{instruction tuning} instruction tuning的一个局限是不能够改善需要语言建模任务的表现(例如:常识推理或者指代消解)。对于7个常识推理和指代消解任务, FLAN \text{FLAN} FLAN仅在7个任务中的3个上超越了 LaMDA-PT \text{LaMDA-PT} LaMDA-PT负面结果表明,当下游任务与原始语言建模预训练目标相同时, instruction tuning \text{instruction tuning} instruction tuning是没有用的。最终,本文在附录中报告了情感分析、段落检测和 struct-to-text \text{struct-to-text} struct-to-text的结果。一般来说, zero-shot FLAN \text{zero-shot FLAN} zero-shot FLAN效果优于 zero-shot LaMDA-PT \text{zero-shot LaMDA-PT} zero-shot LaMDA-PT,并且能够达到甚至超过 few-shot LaMDA-PT \text{few-shot LaMDA-PT} few-shot LaMDA-PT

四、消融研究和进一步分析

1. Instruction tuning \text{Instruction tuning} Instruction tuning组的数量

请添加图片描述

​ 本篇文章的核心问题是 instruction tuning \text{instruction tuning} instruction tuning如何改善模型在未见过任务上的 zero-shot \text{zero-shot} zero-shot效果。在第一个消融实验中,主要是研究任务组的数量和任务类型在 instruction tuning \text{instruction tuning} instruction tuning的影响。在这个设定下, NLI \text{NLI} NLI、闭卷问题和常识推理作为评估任务组,并使用7个余下的组来进行 instruction tuning \text{instruction tuning} instruction tuning。本文展示了1到7个 instruction tuning \text{instruction tuning} instruction tuning组的结果,每个组按照任务数量递减的顺序添加。

​ 上图6展示了这些结果。正如预期的那样,发现随着向 instrunction tuning \text{instrunction tuning} instrunction tuning添加组和任务时,三个留出来组的平均效果都有提高,确定了提出的 instruction tuning \text{instruction tuning} instruction tuning方法在新任务上的 zero-shot \text{zero-shot} zero-shot表现是有改善的。更有趣的是,对于测试的7个组,效果并没有饱和,意味着向 instruction tuning \text{instruction tuning} instruction tuning添加更多的任务组,效果可能进一步改善。

2. Scaling Laws \text{Scaling Laws} Scaling Laws

请添加图片描述

​ 对于更大的模型,语言模型的 zero \text{zero} zero few-shot \text{few-shot} few-shot能力会得到显著的改善。接下来我们会探索模型规模对 instruction tuning \text{instruction tuning} instruction tuning的影响。使用前一个消融实验相同的组划分,评估了 442M,2B,8B,68B \text{442M,2B,8B,68B} 442M,2B,8B,68B 137B \text{137B} 137B参数量对于 instruction tuning \text{instruction tuning} instruction tuning的影响。

​ 上图7展示了这些结果。可以看到两个模型在 100B \text{100B} 100B参数的规模, instruction tuning \text{instruction tuning} instruction tuning在留出的任务上有显著的改善。然而, instruction tuning \text{instruction tuning} instruction tuning 8B \text{8B} 8B以及更小模型上是对效果有害的。对这个结果的潜在解释可能是:对于小模型来说,通过 instruction tuning \text{instruction tuning} instruction tuning学习约40个任务已经填充满整个模型的容量,导致模型在新任务上效果差。在这个潜在的解释下,对于更大的模型, instruction tuning \text{instruction tuning} instruction tuning填充了模型的一些容量,但是也教会这些模型遵循指令,允许使用其余的容量泛化到新任务上。

3. Instructions \text{Instructions} Instructions的角色

请添加图片描述

​ 在最后的消融研究中,探索了 instruction \text{instruction} instruction在微调过程中的角色。一个可能是效果的收益完全来自于多任务微调,在没有 instruction \text{instruction} instruction模型也能够有相同的表现。因此考虑两种没有 instruction \text{instruction} instruction的微调设置。在"no template"的设置中,仅把输入和输出给到模型;在“dataset name”设置中,每个输入前添加任务名和数据集名(例如: 对于翻译为法语任务,输入为"[Translation: WMT’14 to French] The dog runs.")

​ 比较了两种消融实验与 FLAN \text{FLAN} FLAN微调。对于"no template"设置,在 zero-shot \text{zero-shot} zero-shot推断时使用 FLAN instructions \text{FLAN instructions} FLAN instructions(因为没有使用模板,模型不知道该执行哪个任务)。对于在数据集名上微调的模型,报告 FLAN instructions \text{FLAN instructions} FLAN instructions和使用数据集名的 zero-shot \text{zero-shot} zero-shot效果。上图8展示了结果,这两种消融配置都显著差于 FLAN \text{FLAN} FLAN,表明使用 instructions \text{instructions} instructions训练对于在未见过任务上的 zero-shot \text{zero-shot} zero-shot效果至关重要。

4. 带有 few-shot \text{few-shot} few-shot样例的 Instructions \text{Instructions} Instructions

请添加图片描述

​ 目前为止都专注在 zero-shot \text{zero-shot} zero-shot设置下的 instruction tuning \text{instruction tuning} instruction tuning。这里研究当在推理时有 few-shot \text{few-shot} few-shot样例时如何使用 instruction tuning \text{instruction tuning} instruction tuning few-shot \text{few-shot} few-shot设置中的格式是建立在 zero-shot \text{zero-shot} zero-shot格式上。对于输入 x x x和输出 y y y,令 instruct(x) \text{instruct(x)} instruct(x)表示 zero-shot instructions \text{zero-shot instructions} zero-shot instructions。然后,给定 k k k few-shot \text{few-shot} few-shot样例 ( x i , y i ) i = 1 k (x_i,y_i)_{i=1}^k (xi,yi)i=1k和一个新输入 x x x,对于 few-shot \text{few-shot} few-shot设置下的 instruction \text{instruction} instruction格式为
instruct ( x 1 ) ⊕ y 1 ⊕ instruct ( x 2 ) ⊕ y 2 ⊕ ⋯ ⊕ instruct ( x k ) ⊕ y k ⊕ instruct ( x ) \text{instruct}(x_1)\oplus y_1\oplus\text{instruct}(x_2)\oplus y_2\oplus\dots\oplus\text{instruct}(x_k)\oplus y_k\oplus\text{instruct}(x) instruct(x1)y1instruct(x2)y2instruct(xk)ykinstruct(x)
其中 ⊕ \oplus 表示通过分隔符来平均字符串。在训练和推理阶段,样例是随机从训练集中采样的,并且样例数量的上限是16且总长度序列小于960。实验使用相同的任务划分和评估过程,未见过任务上的 few-shot \text{few-shot} few-shot样例仅在推理时使用。

​ 如上图9所示,相较于 zero-shot FLAN \text{zero-shot FLAN} zero-shot FLAN few-shot \text{few-shot} few-shot样例在所有任务上都有显著改善。 few-shot \text{few-shot} few-shot样例对于具有大型且复杂输出空间任务都特别有效,例如: struct to text \text{struct to text} struct to text,翻译,闭卷问答。可能是因为样例有助于模型更好的理解输出格式。

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

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

相关文章

R语言geodetector包基于栅格图像实现地理探测器操作

本文介绍基于R语言中的geodetector包&#xff0c;依据多张栅格图像数据&#xff0c;实现地理探测器&#xff08;Geodetector&#xff09;操作的详细方法。 需要说明的是&#xff0c;在R语言中进行地理探测器操作&#xff0c;可以分别通过geodetector包、GD包等2个包实现。其中&…

react18+eslint+prettier 配置

新建项目 create-react-app.cmd react18 --template typescript配置别名 安装 craco npm install craco/craco -D新建 craco.config.js const path require("path"); const resolve (dir) > path.resolve(__dirname, dir); module.exports {// 配置别名web…

Kubernetes:Service

文章目录1、Service 定义1.1、无选择符的服务1.2、Endpoints2、服务发布类型2.1、ClusterIP2.2、NodePort2.3、ExternalName2.4、loadbalancer3、无头服务3.1、有选择符的服务3.2、无选择符的服务4、服务发现4.1、环境变量4.2、DNS5、Service TLSService&#xff1a;将运行在一…

力扣(LeetCode)1801. 积压订单中的订单总数(C++)

优先队列模拟 根据题目描述模拟。 如果该订单是一笔采购订单 buy &#xff0c;则可以查看积压订单中价格 最低 的销售订单 sell 。提示我们&#xff0c;建立小根堆&#xff0c;维护价格最低的销售订单sell 。 反之亦然&#xff0c;如果该订单是一笔销售订单 sell &#xff0c;…

【技术分享】戴尔工作站安装Win10+Ubuntu20.04双系统教程与避坑指南

文章目录引言1.安装前的几个注意事项&#xff08;避坑指南&#xff09;1.1.有多块硬盘&#xff0c;该如何分配给Win10和Ubuntu系统&#xff1f;1.2.Ubuntu分区应该怎么分&#xff1f;2.系统安装步骤2.1.下载系统镜像2.2.制作U盘启动盘2.3.进入Win10系统分配系统空间2.4.BIOS设置…

强力推荐:关于谷歌ChatGPT模型140个示例的展示与实现功能

目录 1、ChatGPT 介绍与使用简要介绍安装ChatGPT与使用想写出有效的问答吗?使用 ChatGPT 桌面应用程序使用 prompts.chat2、ChatGPT模型140个示例充当 Linux 终端充当英语翻译和改进者担任`position`面试官充当 JavaScript 控制台充当 Excel 工作表充当英语发音帮手充当旅游指…

【C++】bitset(位图)的模拟实现

目录 一、bitset接口介绍 二、bitset的实现 1. 构造函数 2. 设置位&#xff08;set&#xff09; 3. 清空位&#xff08;reset&#xff09; 4. 获取位的状态&#xff08;test&#xff09; 三、源代码 一、bitset接口介绍 #include <iostream> #include <vecto…

Fujian Medical insurance and pension for urban and rural residents

【城乡居民医保、养老】二维码缴纳步骤&#xff0c;本文仅仅辅助需要人士&#xff0c;可忽略 第一步&#xff0c;长按二维码 第二步&#xff0c;点击【识别图中二维码】 第三步&#xff1a;个人社&#xff08;医&#xff09;保办费页面&#xff0c;点击【个人社&#xff08;医&…

一次 SQL 查询优化原理分析

一&#xff0c;前言 证实 参考资料 有一张财务流水表&#xff0c;未分库分表&#xff0c;目前的数据量为9555695&#xff0c;分页查询使用到了limit&#xff0c;优化之前的查询耗时16 s 938 ms (execution: 16 s 831 ms, fetching: 107 ms)&#xff0c;按照下文的方式调整SQL…

连接表「INNER JOIN」「LEFT JOIN」「RIGHT JOIN」+ 多表查询

目录表关联执行顺序 及 原理第一步、做笛卡尔积第二步&#xff1a;根据ON后的连接条件筛选笛卡尔积的结果第三步&#xff1a;补充左表&#xff08;LEFT JOIN&#xff09;或右表&#xff08;RIGHT JOIN&#xff09;不满足连接条件的数据&#xff08;INNER JOIN内关联时无此步骤&…

CMOS门电路总结

目录 MOS管&#xff1a; CMOS组成的常见门电路 反相器&#xff08;非门&#xff09;&#xff1a; 与非门 或非门 OD门 三态门 MOS管简介&#xff1a; > NMOS: 漏极&#xff08;D&#xff09;入&#xff0c;源极&#xff08;S&#xff09;出&#xff0c;栅极(G)加正电压…

【MyBatis】级联处理、association、collection、分布查询(详细模板,可直接套用)

目录 示例 一、处理“多对一”映射关系 1.1、级联查询 1.2、association 1.3、分步查询 二、处理“一对多”映射关系 2.1、collection 2.2、分步查询 示例 例如&#xff1a;员工与部门表 员工&#xff1a; 部门&#xff1a; 解释&#xff1a; 两张表通过dept_id联系起来…

ubuntu22.04安装MySQL、Hive及Hive连接MySQL操作

前言 这篇文章主要讲述的是ubuntu22.04上数据仓库Hive的安装和使用 正文 建议按照文章实践前稍微通读下全文 安装MySQL服务端和客户端 相关命令&#xff1a; sudo apt-get install mysql-server sudo apt-get install mysql-client 修改mysql的配置文件 在终端中输入…

手撕LRU缓存

请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中&#xff0c;则返回关键字的值&#xff0c;否则返回 -…

python虚拟环境的概念,操作(pycharm为例)

1.在PyCharm中创建python项目时&#xff0c;需要配置python的运行环境&#xff0c;除了使用系统现有环境以外&#xff0c;还可以创建虚拟环境。 2.虚拟环境的创建是因为在实际开发中需要同期用到不同版本的python解释器&#xff0c;不同的第三方库以及同一个第三方库的不同版本…

牛客网 字符串通配符

做题链接&#xff1a;字符串通配符__牛客网 (nowcoder.com)要求&#xff1a;实现如下2个通配符(不区分大小写)&#xff1a; * &#xff1a;匹配0个或以上的字符&#xff08;注&#xff1a;能被*和?匹配的字符仅由英文字母和数字0到9组成&#xff0c;下同&#xff09;&#…

【回看2022 展望2023】一个普通大学生的2022回忆录

目录 一、前言 二、回望2022 2022年1月 2022年2月 2022年3月 2022年4月5月6月7月8月 2022年9月 2022年10月 2022年11月 2022年12月 三、总结与期望 结语 期望 一、前言 虽然我在csdn上已经有2年的码龄了&#xff0c;但我是从2021年4月才开始写我的第一篇博客。其实从学…

Cache实现

Cache&#xff08;S,E,B,m&#xff09;&#xff1a; S&#xff1a;每个set包含一个或者多个cache line&#xff08;高速缓冲行&#xff09; cache line&#xff1a;分别包含有效位&#xff08;valid&#xff09;、标记&#xff08;tag&#xff09;、数据块&#xff08;cache b…

机器学习中的数学原理——感知机模型

这个专栏主要是用来分享一下我在机器学习中的学习笔记及一些感悟&#xff0c;也希望对你的学习有帮助哦&#xff01;感兴趣的小伙伴欢迎私信或者评论区留言&#xff01;这一篇就更新一下《白话机器学习中的数学——感知机》&#xff01; 目录 一、什么是感知机 二、模型分析…

HDLC、ppp、MGRE实验(1.1)

1、首先为每个路由器的每个接口配置ip r1&#xff1a; [r1]interface Serial 4/0/0 [r1-Serial4/0/0]ip address 12.1.1.1 24 [r1-Serial4/0/0]int gi 0/0/0 [r1-GigabitEthernet0/0/0]ip add 192.168.1.1 24 r2&#xff1a; [r2-Serial4/0/0]ip add 12.1.1.2 24 [r2-Seria…