当前位置: 首页 > news >正文

多语言生成语言模型的少样本学习

摘要

大规模生成语言模型,如GPT-3,是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言,但其训练数据以英语为主,这可能限制了它们的跨语言泛化能力。在本研究中,我们在一个涵盖多种语言的语料库上训练了多语言生成语言模型,并研究了它们在各种任务中的少样本和零样本学习能力。我们最大的模型拥有75亿个参数,在超过20种代表性语言中,其少样本学习能力达到了新的技术水平,在多语言常识推理(在零样本设置中绝对准确率提高了7.4%,在四样本设置中提高了9.4%)和自然语言推理(在零样本和四样本设置中均提高了5.4%)方面超越了同等规模的GPT-3。在FLORES-101机器翻译基准测试中,我们的模型在182个翻译方向中的171个方向上,仅用32个训练样本就超越了GPT-3的对应模型,并在45个方向上超过了官方的有监督基线。我们对不同的多语言提示方法进行了深入分析,特别展示了通过模板和示例的跨语言转移,可以实现跨语言的强上下文少样本学习性能。

1 引言

大型自回归语言模型,如GPT-3,可以通过少样本和零样本学习适应广泛的任务,其成本远低于完全微调(Brown等,2020;Bommasani等,2021)。这些模型主要是为英语开发的。尽管GPT-3的训练数据中包含一小部分非英语文本(7%),使其能够实现一些有前景的跨语言泛化,但该模型几乎完全用于英语用例。多语言掩码和序列到序列语言模型已经被研究,包括mBERT、XLM-R、mT5和mBART(Devlin等,2019;Conneau等,2020;Xue等,2020;Fedus等,2021;Goyal等,2021a;Liu等,2020)。这些模型通常在下游任务中对大量标注数据进行微调。尽管最近在小规模和特定领域任务(Winata等,2021)方面有一些显著的工作,但语言模型的多语言少样本学习能力仍不太为人所理解。
在本文中,我们训练了四个多语言生成语言模型(最多75亿个参数),XGLM,并对多语言零样本和上下文少样本学习进行了全面研究。我们使用包含30种不同语言的大规模语料库(5000亿个词)训练这些模型,对资源较少的语言进行上采样,以实现更平衡的语言表示。我们在多个多语言自然语言理解(NLU)任务、机器翻译以及Brown等(2020)展示的英语任务子集上评估了这些模型。
我们发现XGLM展示了强大的跨语言能力,使用英语提示与非英语示例相结合,可以产生有竞争力的零样本和少样本学习性能。我们最大的模型(XGLM7.5B)在语言完成和推理任务上实现了强大的零样本和少样本学习性能(例如XStoryCloze:65.4% 零样本,66.5% 四样本;XNLI:46.3% 零样本,47.3% 四样本)。它还在FLORES-101基准测试(Goyal等,2021b)中的大量语言对上建立了新的少样本机器翻译技术状态,显著优于同等规模的GPT-3模型(67亿个参数)。另一方面,多语言预训练导致英语性能下降。在8个英语NLU任务上,XGLM 7.5B在零样本学习中平均比GPT-36.7B低10.9%。GPT-36.7B在几个高资源语言对的机器翻译上也超过了XGLM 7.5B,包括WMT-14 en↔fr、WMT-16 en↔de和WMT-19 en↔zh。
我们对不同的多语言提示方法进行了深入分析,并分别通过模板和示例检查了跨语言转移。我们展示了非英语模板有时会产生意外的低零样本和少样本学习准确率,即使它们是由母语者制作的(§4.3)。使用英语模板(§4.4)和添加示例(§4.5)都提供了有效的补救措施。然而,当使用强大的提示语言(例如英语)时,使用另一种语言的示例通常不能进一步提高零样本学习性能,这表明跨语言预训练和上下文转移方法仍有改进空间。

2 模型与预训练数据

2.1 预训练数据

语言选择与预处理。我们扩展了用于挖掘CC100语料库的流程(Conneau等,2020;Wenzek等,2020),以生成CC100-XL,这是一个显著更大的多语言数据集,涵盖68个Common Crawl(CC)快照(从2013年夏季到2020年3月/4月)和134种语言。我们的预训练数据包括30种语言,涵盖16个语系。自然数据分布存在偏差,英语的词数是最多的,是第二大语言的6倍。遵循多语言预训练的相关工作(Conneau等,2020;Liu等,2020),我们对中低资源语言进行了上采样,以创建更平衡的语言分布(附录F.1)。图1展示了上采样前后预训练数据的语言分布(蓝色为上采样前,绿色为上采样后)。

联合子词词汇表。我们使用通过单字语言模型(Kudo,2018)创建的25万大小的联合词汇表处理所有语言,使用SentencePiece库(Kudo和Richardson,2018)。我们根据Lample和Conneau(2019)中定义的多项分布(𝛼 = 0.3),从过滤后的数据中随机抽取1000万句子训练单字语言模型。

2.2 模型与训练

我们训练了仅解码器的因果语言模型,采用与GPT-3(Brown等,2020)相似的Transformer架构。这使我们能够研究在宽度和深度维度上扩展模型规模的效果。因此,我们比较了四个模型,分别具有5.64亿、17亿、29亿和75亿个参数。架构细节总结在表1中。我们的模型与GPT-3模型相匹配,除了由于更大的词汇表而增加的嵌入参数。所有模型均训练至5000亿词,上下文长度为2048词。
在这里插入图片描述

3 多语言上下文学习

我们评估了多语言语言模型在不同语言的下游任务中的表现,这些任务通过提示指定了少样本示例,且无需进一步的参数更新(附录B)。

3.1 多语言与跨语言提示

先前关于英语上下文学习的研究表明,性能在很大程度上取决于提示的构建,而为给定语言模型找到最佳提示具有挑战性(Gao等,2021;Perez等,2021)。在多语言环境中,这一问题进一步复杂化,因为我们需要为不同语言的示例找到最佳提示。

在本研究中,我们考虑了三种为非英语任务获取提示的方法。
在这里插入图片描述

在这里插入图片描述

手工制作提示。第一种方法是请目标语言的母语者手工制作提示。这种方式创建的提示预计具有最自然的表面形式。然而,语言专家的成本较高,因此我们进一步考虑了两种替代方法。

从英语提示翻译。我们假设任务的高质量提示可以很容易地从英语中获取(Sanh等,2021;Mishra等,2021)。非语言提示不包含任何特定语言的词汇(例如表2中所示的StoryCloze和WMT提示),而语言提示在不同语言中有不同的表现形式(表3)。如果提示是非语言的,我们直接将其应用于其他语言。如果提示是语言的,我们使用自动翻译API将其翻译成其他语言。

跨语言提示。我们考虑了第三种方法,即直接将英语(或另一种高资源语言)的提示应用于非英语示例。我们预计这种方法会具有竞争力,因为模型在经过多种语言训练后具备跨语言能力。

3.2 从跨语言示例中学习

多语言语言模型的跨语言特性进一步使得在无需参数更新的情况下从上下文中学习不同语言成为可能。为此,我们只需将另一种语言的示例附加为语言模型上下文中的演示示例。这种能力使得从高资源语言到低资源目标语言的廉价迁移成为可能。

4 实验与结果

4.1 任务

我们评估了XGLM在零样本和上下文少样本学习能力(Brown等,2020)在一系列下游任务中的表现(表4)。

多语言任务。我们选择了四个多语言任务,涵盖常识推理(XCOPA)、指代消解(XWinograd)、自然语言推理(XNLI)和释义(PAWSX)。我们还创建了一个新的数据集XStoryCloze,通过专业翻译将英语StoryCloze数据集(2016年春季版本)的验证集翻译成10种其他类型多样的语言(俄语、简体中文、拉丁美洲西班牙语、阿拉伯语、印地语、印尼语、泰卢固语、斯瓦希里语、巴斯克语、缅甸语)。此外,我们在机器翻译(§4.8)和多语言社会价值观任务(附录E.1)上评估了我们的模型。

在这里插入图片描述

英语任务。我们还在英语常识推理和问答任务上评估了我们的模型,这些任务是Brown等(2020)使用的基准任务的子集,并将其性能与最先进的以英语为中心的少样本学习模型进行了比较。

4.2 实验设置

评分函数与校准。我们遵循Perez等(2021)的建议,采用跨任务泛化设置(Triantafillou等,2020)来选择评分函数。我们保留了三个保留任务(XNLI、XCOPA和XStoryCloze),基于其开发集性能进行选择,并将选定的设置直接应用于其余任务。最终,我们使用忽略不同候选词共同前缀的每词平均对数概率作为所有多语言任务的评分函数,无需额外的校准或归一化。附录C.2详细描述了选择过程。

少样本学习评估。我们重点评估模型在所有任务上的零样本和四样本学习性能。对于跨语言示例(§4.5)、扩展规律(§4.9)和翻译(§4.8),我们还报告了一样本和32样本的性能。我们报告了5次运行的平均结果,每次随机抽取不同的少样本示例集。除非另有说明,我们使用与目标示例相同语言的少样本示例。附录C.3详细描述了我们的完整评估协议。

4.3 提示方法比较

我们首先使用XGLM7.5B在XNLI和XCOPA任务上比较了§3.1中提出的不同多语言提示方法。作者中的母语者手工制作了以下任务的提示:XNLI(英语、中文、西班牙语和印地语)和XCOPA(英语、中文),如表3所示。我们将这些人工编写的提示与英语提示、机器翻译(MT)提示和人工翻译(HT)提示的性能进行了比较。

表5和表6展示了不同提示方法的性能。在两种任务中,英语模板在跨语言平均性能上表现最佳,除了XCOPA的四样本设置,其中英语模板略逊于机器翻译模板。在XNLI任务中,英语模板显著提升了中文(zh)和印地语(hi)的性能,优于其母语模板和翻译模板。在XCOPA任务中,泰语(th)和斯瓦希里语(sw)也观察到类似的趋势。对于这两种任务,存在某些语言中母语模板显著优于英语模板的情况(XNLI中的西班牙语(es)和XCOPA中的中文),这表明未来在特定语言提示工程方面仍有很大的改进空间。

在这里插入图片描述

4.4 通过模板进行跨语言迁移

我们进一步探讨了通用提示能力是否仅限于英语,以及哪些语言对适合跨语言提示。为此,我们将每种人工编写的非英语模板应用于其他语言。如表5和表6所示,使用西班牙语提示在所有语言中均表现出竞争力的零样本和四样本性能,四样本平均性能与英语模板相当。印地语模板在XNLI任务中对大多数语言(尤其是英语)的表现也显著高于随机水平。然而,中文模板在XNLI任务中对所有语言的表现接近随机水平,在XCOPA任务中对泰语(零样本)和斯瓦希里语(零样本)的表现也接近随机水平。我们假设预训练数据中的共同子词和代码切换文本的数量在实现跨语言提示中起到了重要作用。一般来说,具有大量预训练数据且与其他语言词汇重叠的高资源语言更适合作为通用提示语言。我们将在未来工作中对这一假设进行更系统的验证。

4.5 通过示例进行跨语言迁移

我们在XNLI任务上研究了XGLM7.5B从跨语言示例中学习的能力(§3.2)。我们为每个训练-评估语言对检查了两种设置:同语言提示(提示模板和示例使用相同语言)和源语言提示(演示和测试示例的提示模板均使用源语言)。我们使用人工翻译的提示进行同语言提示。

表7展示了XNLI任务中部分语言对的结果,其中我们评估了从高资源语言到低资源语言以及类型相似语言之间通过上下文演示示例进行迁移的效果。我们报告了32样本学习结果与零样本学习结果之间的差异。本实验中的非英语模板通过人工翻译获得。虽然它们通常表现不如同语言少样本设置(图A2),但大多数跨语言少样本设置显著优于目标语言的零样本设置。保加利亚语是一个例外,尽管与俄语属于同一语系,但它并未从俄语中受益。另一个在跨语言设置中表现不佳的语言是斯瓦希里语(低资源),我们检查了从英语(高资源)和阿拉伯语(中资源)的迁移。相比之下,泰语(中资源)和乌尔都语(低资源)显著受益于跨语言演示。

我们还观察到,如果为目标语言使用更好的提示(例如英语提示),跨语言示例迁移的益处通常会被抵消。

在这里插入图片描述

4.6 多语言任务性能

我们使用英语作为通用提示语言,评估了XGLM7.5B在XNLI、XCOPA和XStoryCloze任务上的零样本和少样本上下文学习能力,并将其与同等规模的以英语为中心的语言模型进行了比较。

与GPT-3的比较。我们在高资源、中资源、低资源和极低资源语言上将XGLM7.5B与GPT-36.7B进行了比较。结果总结在表9和表10中。在所有三个任务中,XGLM7.5B在跨语言平均性能上大幅优于GPT-36.7B,尤其是在中资源、低资源和极低资源语言上。在XNLI任务中,GPT-36.7B在英语和类似语言上表现良好,在英语(en)、德语(de,四样本)、西班牙语(es,四样本)和法语(fr,零样本)上超过了XGLM7.5B。一个可能的解释是,这些语言在GPT-3的训练数据中占比较大(法语:1.8%,德语:1.5%,西班牙语:0.8%,如图1所示),并且可以从英语的词汇同源词中受益更多。

与翻译测试基线的比较。我们还创建了一个翻译测试基线,使用Google Cloud Translation API将多语言任务中的非英语示例翻译成英语,并使用GPT-36.7B的内部复现版本(GPT-36.7B repl.)进行推理。我们发现翻译测试是多语言零样本和少样本学习的一个强大基线,如表9和表10所示。在所有三个任务中,它显著缩小了英语与其他语言之间的性能差距,尤其是在XNLI任务上。
在这里插入图片描述

4.7 英语任务性能

我们还在英语任务上对XGLM7.5B的性能进行了基准测试。图2展示了XGLM7.5B、GPT-36.7B和GPT-36.7B复现版本(GPT-36.7B repl.)在Brown等(2020)使用的部分英语任务上的比较。我们的GPT-36.7B复现版本(GPT-36.7B repl.)在所有任务上表现优于或接近GPT-36.7B。虽然XGLM7.5B在所有任务上表现具有竞争力,但与GPT-36.7B和GPT-36.7B复现版本相比,仍存在显著的性能差距。在大多数任务上,XGLM7.5B和GPT-36.7B复现版本随着𝑘值变化表现出相似的趋势。例如,两个模型在HellaSwag和PIQA任务上的1-shot性能均出现下降,而在COPA任务上的128-shot性能也出现下降。

XGLM7.5B在英语任务上表现不如以英语为中心的模型,原因有多方面。首先,XGLM7.5B的5000亿词训练数据中只有32.6%是英语,而以英语为中心的两个模型均训练了接近3000亿英语词。其次,XGLM7.5B的模型容量被30种语言共享,“多语言诅咒”可能会降低所有语言的性能(Conneau等,2020)。进一步扩大模型容量和训练数据可能有助于缩小这一差距。

4.8 机器翻译性能

我们在表11中报告了在热门WMT语言对上的机器翻译结果,并在表12中报告了FLORES-101(Goyal等,2021b)的一个子集的结果。我们对GPT-3和我们自己的模型均使用贪心解码,并在每种情况下使用相同的32个示例进行少样本学习。

GPT-3在其训练数据中表现最好的几种语言上取得了强劲的结果,在WMT法语-英语、德语-英语和中文-英语以及FLORES-101集中的少数语言对上略微超过我们的模型。当英语作为目标语言时,GPT-3表现尤为突出,这可能是由于其强大的英语语言建模能力。然而,在更广泛的低资源语言集上,GPT-3表现不佳。例如,在FLORES-101中翻译成韩语、阿拉伯语、斯瓦希里语、印地语、缅甸语和泰米尔语时,GPT-3完全失败,最佳情况下的spBLEU得分仅为1.2。

相比之下,我们的模型在所有语言对上均取得了稳定的结果。除了在FLORES-101集中的182个语言对中的171个上超过GPT-3外,我们的模型还与官方有监督基线竞争,甚至在45个语言对上超过了它。这表明,大规模多语言语言模型在构建低资源语言的机器翻译系统方面具有巨大潜力,即使几乎没有或完全没有平行数据可用。

在这里插入图片描述
在这里插入图片描述

4.9 模型规模扩展

最后,我们研究了模型参数规模扩展对其零样本和少样本学习能力的影响。图3展示了四个XGLM模型(564M、1.7B、2.9B、7.5B)在五个多语言任务上的性能(𝑘 = 0、4、32、128)。𝑦轴表示每个任务在跨语言上的平均准确率。在常识推理任务(XStoryCloze、XCOPA、XWinograd)上,所有模型的性能随着𝑘从0增加到32而提高。随着模型规模的增加,从示例中获得的性能增益也更大,这表明更大的模型能够更好地利用上下文示例。在XNLI任务上,所有模型的性能随着𝑘从0增加到4而提高,但当𝑘达到32及以上时性能下降。在相同数量的示例下,更大的模型并不总是受益更多。

PAWS-X是一个上下文学习表现较差的任务——所有模型的性能在𝑘变化时在随机水平(50%)附近波动。一个可能的原因是PAWS-X的对抗性设计,其释义和非释义对在词汇上有高度重叠。根据当前趋势,我们预计扩展模型规模是构建更强大多语言语言模型的有效方法。

在这里插入图片描述

5 相关工作

语言模型提示。Brown等(2020)首次使用GPT-3模型展示了上下文少样本学习。这种方法消除了对任务特定模型参数更新的需求:通常用于微调的少样本示例在推理时提供给同一模型以完成每个任务。在几种高资源拉丁语言对上,GPT-3仅需少量示例即可达到接近或优于最先进有监督模型的机器翻译性能。这种学习范式的变化引发了关于多语言性的新问题,而这一问题尚未得到广泛研究。Winata等(2021)评估了GPT-2、GPTNEO和T5在三种额外语言(德语、西班牙语、法语)上的上下文少样本学习能力,使用了多种自然语言理解任务,并考虑了单语言提示和跨语言提示,展示了英语GPT和T5模型的多语言上下文学习能力。Zhao和Schutze(2021)评估了XLM-R上的不同微调和提示调优方法(Liu等,2021),并展示了提示在少样本跨语言迁移和多语言掩码语言模型的语言内训练中的有效性。

多语言预训练。早期的多语言预训练工作在多语言语料库上训练词嵌入(Mikolov等,2013)。随后开发了上下文嵌入模型的多语言版本,如BERT(Devlin等,2019)、RoBERTa(Liu等,2019)、BART(Lewis等,2019)和T5(Raffel等,2020)的多语言版本:mBERT(Devlin等,2019)、XLM-R(Conneau等,2020)、mBART(Liu等,2020)和mT5(Xue等,2020)。这些模型在单一的多语言文本语料库(如mC4(Xue等,2020)或CC25(Liu等,2020))上进行了训练。为了促进跨语言迁移,已开发了多种方法,包括支持高效跨语言共享词汇学习的子词分词器(Kudo和Richardson,2018),以及用于跨语言高效知识迁移的联合训练(Pires等,2019;Jiang等,2020;Kassner等,2021)等。一个值得注意的并行工作是BLOOM,它将多语言预训练扩展到46种语言和1750亿参数。

6 结论

我们介绍了四种不同规模的多语言生成语言模型(XGLM),并研究了它们的上下文少样本和零样本学习能力。我们展示了XGLM的少样本学习能力随着模型规模的扩大而稳步提升。我们最大的模型(75亿参数)在超过20种语言(包括中低资源语言)的常识推理、自然语言推理(NLI)和机器翻译任务上,为少样本学习设定了新的技术标准。深入分析表明,这些模型具有高度的跨语言能力,从而在非英语语言中表现出强大的少样本学习性能。

局限性

尽管多语言语言模型是构建包容性通用基础模型的重要一步,但我们当前的模型存在以下局限性:

训练数据。我们的模型是在从CommonCrawl提取的静态多语言语料库上训练的,其中英语文本占总词数的32.6%,相当于1630亿词。语料库中的英语数据部分仅占GPT-3训练数据的约54%。我们应用了多种数据过滤策略作为数据质量的代理(详见附录F中的数据卡片),例如通过URL删除重复文档和段落、过滤掉数字和标点符号比例高的段落、删除包含不当内容的段落、通过最大URL数量和最小长度进行过滤等。这种过滤可能会导致预训练中使用的剩余数据存在偏差,需要进一步分析以理解。此外,原始数据来自静态的CommonCrawl快照,可能不包含快照时间跨度(截至2020年3月)之外的实体和事件,例如COVID-19等。因此,我们还注意到CommonCrawl与GPT-3使用的语料库(包括CommonCrawl、BookCorpus和Wikipedia)之间的潜在差异。

此外,GPT-3在118种语言上进行了训练,尽管93%的数据是英语。相比之下,我们的模型在经过严格语言识别和过滤后,仅在30种语言上进行了训练。

英语任务性能。如第4.7节和图2所示,我们的模型在从常识推理到问答的八项任务上表现不如以英语为中心的模型。造成这种差距的因素可能包括:

  • 训练数据质量的差异(XGLM仅在过滤后的CommonCrawl数据上训练,而以英语为中心的模型在包括CommonCrawl以及BookCorpus和Wikipedia等高质量语料库的数据上训练)和数量(如前所述,多语言模型仅使用了以英语为中心模型的54%的英语数据);
  • 多语言诅咒。以往的多语言训练研究表明,增加共享参数模型中的语言数量会损害所有训练语言的性能,例如英语(Conneau等,2020)。
    通过控制这些因素进行额外实验,可能会更清楚地解释观察到的差距。

模型架构和训练目标。在本研究中,我们仅尝试了具有仅解码器架构的因果语言模型,这些模型之前展示了有前景的少样本学习能力(Brown等,2020)。然而,这种架构和预训练目标并未利用双向上下文,例如掩码语言模型(MLM)或具有去噪自编码器预训练目标的序列到序列架构。

通过上下文学习进行模型评估。我们主要在上下文学习范式中将我们的语言模型与基线进行比较,除非明确指定,否则所有语言模型使用相同的提示。尽管在提示设计上投入了最少的精力,但提示可能在某些模型上效果更好,这为评估引入了偏差。然而,我们预计这一因素的影响较小,鉴于评估任务的数量,模型的相对优势可以可靠地衡量。

更多语言的社会价值任务评估。我们评估并分析了模型在仇恨言论检测和职业性别偏见方面的表现。这些研究受到可用评估数据集的限制。我们的研究仅限于六种语言(英语、法语、西班牙语、意大利语、葡萄牙语和波兰语),其中大多数(5种)属于罗曼语族。在得出明确结论之前,有必要在更广泛和多样化的语言集上研究多语言模型对社会价值任务的影响。此外,我们认为对其他任务(如刻板印象、伦理)的研究将提供更全面的模型行为视角。

伦理考量

设计多语言预训练语言模型可以成为NLP工具箱中的强大工具,原因如下:

能源和维护效率。从工程角度来看,XGLM属于一类模型,这些模型代表了服务于多种语言的单一统一模型,具有广泛的应用。这种单一模型节省了碳足迹和能源消耗(与为不同语言单独训练模型相比),从而提高了能源效率。尽管单一模型存在单点故障的风险,但其易于维护、访问、分发和跟踪的优势显著。

多样性和包容性。像XGLM这样的模型代表了从以英语为中心的NLP世界观向平等服务于所有语言的范式转变。关注此类模型的设计对于确保公平性和包容性至关重要,例如通过平衡语言代表性来体现。XGLM的进一步优势在于其在零样本和少样本设置中能够与以英语为中心的模型相媲美。拥有在这种设置中表现良好的强大多语言模型,特别是对于中低资源语言,有助于减轻为这些语言创建监督数据的负担,尤其是经济困难的语言(中低数字存在通常与经济差距密切相关)。此外,拥有服务于稀缺语言的模型可以促进这些语言的科学研究,从而推动更广泛的NLP多样性和科学多样性。

社会价值。我们进一步研究了我们的模型对仇恨言论检测和偏见等社会价值问题的影响(附录E)。尽管总体结果尚无定论(接近负面),但我们注意到,在数据相对稀缺的设置(波兰语)中,多语言模型优于以英语为中心的模型,这表明XGLM在资源较少的语言上表现良好。这对于社会价值任务尤为重要,因为获取高质量标注数据的固有成本使得获取训练数据非常困难。

透明度和问责制。本着大规模语言建模的透明度和问责精神,我们在模型和论文发布时提供了详细的模型卡片和数据卡片。

相关文章:

多语言生成语言模型的少样本学习

摘要 大规模生成语言模型,如GPT-3,是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言,但其训练数据以英语为主,这可能限制了它们的跨语言泛化能力。在本研究中,我们在一个涵盖多种语言的语料库上训练了…...

基于Python+Django的旅游管理系统

项目介绍 PythonDjango旅游管理系统 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 - 前台功能包括:首页、景点管理、门票管理、旅游资讯、在线反馈、。 - 后台功能包…...

七桥问题与一笔画问题:图论的奠基石

七桥问题与一笔画问题:图论的奠基石 目录 历史背景问题描述数学模型化欧拉的解决方案欧拉定理及证明一笔画问题现代应用总结 历史背景 18世纪的哥尼斯堡(今俄罗斯加里宁格勒)是一座被普雷格尔河分割的城市,河中有两个岛屿&…...

好吧好吧,看一下达梦的模式与用户的关系

单凭个人感觉,模式在达梦中属于逻辑对象合集,回头再看资料 应该是一个用户可以对应多个模式 问题来了,模式的ID和用户的ID一样吗? 不一样 SELECT USER_ID,USERNAME FROM DBA_USERS WHERE USERNAMETEST1; SELECT ID AS SCHID, NA…...

Qt开发:QComboBox的使用

文章目录 一、概述二、QComboBox添加数据三、常用函数四、信号与槽函数 一、概述 QComboBox 是 Qt 提供的一个下拉列表控件,它允许用户从预定义的选项中进行选择,同时也支持手动输入自定义内容(如果启用了可编辑模式)。QComboBox…...

Manacher 马拉车算法

Manacher 马拉车算法 5. 最长回文子串 - 力扣(LeetCode) 马拉车算法是目前解决寻找字符串中最长的回文子串时间复杂度最低的算法(线性O(n)). 中心扩散法 初始化一个长度与字符串 s 相等的 臂长数组 arr 和 最长臂长 max 与 最…...

centos7搭建postgresql12主从

主从搭建 192.168.159.101 node1 主库(读写) 192.168.159.102 node2 备库(只读) 两台机器首先安装postgrsql 主库 postgres用户操作: 修改postgresql.conf # 在文件中修改(此配置仅用于远程访问, 流复制后续还有额外…...

VL开源模型实现文本生成图片

一、 基础知识 根据描述生成图片的视觉-语言模型(Vision-Language Models, VL 模型)是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像,广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…...

动态规划——分组背包问题

动态规划——分组背包问题 分组背包问题分组背包思路分组背包OJ分组背包OJ汇总 分组背包问题 N件物品和一个容量为V的背包。第i件物品的体积是w[i],价值是v[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入…...

Leetcode 3495. Minimum Operations to Make Array Elements Zero

Leetcode 3495. Minimum Operations to Make Array Elements Zero 1. 解题思路2. 代码实现 题目链接:3495. Minimum Operations to Make Array Elements Zero 1. 解题思路 这一题的话核心就是统计对任意自然数 n n n,从 1 1 1到 n n n当中所有的数字对…...

STM32 —— MCU、MPU、ARM、FPGA、DSP

在嵌入式系统中,MCU、MPU、ARM、FPGA和DSP是核心组件,各自在架构、功能和应用场景上有显著差异。以下从专业角度详细解析这些概念: 一、 MCU(Microcontroller Unit,微控制器单元) 核心定义 集成系统芯片&a…...

Linux高级IO

五种IO模型 具象化理解 IO:等 数据拷贝 read/recv: 1、等 - IO事件就绪 - 检测功能成分在里面 2、数据拷贝 问:什么叫做高效的IO? 答:单位时间,等的比重越小,IO的效率越高。 IO模型&am…...

机器人的手眼标定——机器人抓取系统基础系列(五)

机器人的手眼标定——机器人抓取系统基础系列(五) 前言一、机器人标定相关概念1.1 内参标定和外参标定1.2 Eye-in-Hand 和 Eye-to-Hand1.3 ArUco二维码和棋盘格标定区别 二、机器人标定基本原理2.1 机器人抓取系统坐标系2.2 标定原理 三、标定步骤和注意…...

Android 图片加载框架:Picasso vs Glide

引言 在 Android 开发中,图片加载是移动应用的核心功能之一。合理选择图片加载框架不仅能提升用户体验,还能优化内存管理和应用性能。本文将深入对比 Picasso 和 Glide 两大主流框架,结合代码示例分析它们的差异、工作原理及优化策略。 1. …...

uniapp从 vue2 项目迁移到 vue3流程

以下是必须为迁移到 vue3 进行调整的要点,以便 vue2 项目可以在 vue3 上正常运行。 1. 在index.js中创建应用程序实例 // Before - Vue 2 import Vue from vue import App from ./App // with no need for vue3 Vue.config.productionTip false // vue3 is no lon…...

DeepSeek R1 本地部署指南 (2) - macOS 本地部署

上一篇: DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 1.安装 Ollama Ollama https://ollama.com/ 点击 Download - Download for macOS 解压下载 zip 启动程序 3. 选择版本 DeepSeek R1 版本 deepseek-r1 https://ollama.com/library/deepseek-r1 模…...

DeepSeek技术架构解析:MoE混合专家模型

一、前言 2025年初,DeepSeek V3以557万美元的研发成本(仅为GPT-4的1/14)和开源模型第一的排名,在全球AI领域掀起波澜。其核心创新之一——混合专家模型(Mixture of Experts, MoE)的优化设计,不…...

Ubuntu实时读取音乐软件的音频流

文章目录 一. 前言二. 开发环境三. 具体操作四. 实际效果 一. 前言 起因是这样的,我需要在Ubuntu中,实时读取正在播放音乐的音频流,然后对音频进行相关的处理。本来打算使用的PipewireHelvum的方式实现,好处是可以直接利用Helvum…...

2025年2月-3月后端go开发找工作感悟

整体感悟 目标 找工作首先要有一个目标,这个目标尽可能的明确,比如我要字节、拼多多之类的公司,还是要去百度、滴滴这样的,或者目标是创业公司。但是这个目标是会动态调整的,有可能我们的心态发生了变化,一…...

OpenCV图像拼接(1)自动校准之校准旋转相机的函数calibrateRotatingCamera()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::calibrateRotatingCamera 是OpenCV中用于校准旋转相机的函数。它特别适用于那种相机相对于一个固定的场景进行纯旋转运动的情况&…...

【极速版 -- 大模型入门到进阶】快速了解大型语言模型

文章目录 🌊 大模型作为一种生成式人工智慧,厉害在哪儿?-> 通用能力🌊 LLM 如何生成输出:简而言之就是文字接龙🌊 GPT 之前 ...:模型规模和数据规模概览🌊 ChatGPT 有三个训练阶段…...

MySQL 锁机制详解

MySQL 锁机制详解 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、 RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有 效性是所有数…...

牛客网【模板】二维差分(详解)c++

题目链接:【模板】二维差分 1.题目分析 类比一下,因为差分因为差分是在数组里的某一段同时加上一个K二维是在二维数组中选择一个词矩阵,让词矩阵中每一个元素都加上一个K 2.算法原理 解法-:暴力解法 -> 模拟 你告诉我一个左上角和右下…...

从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

我正在参加Trae「超级体验官」创意实践征文, 本文所使用的 Trae 免费下载链接: www.trae.ai/?utm_source… 前言 大家好,我是小Q,字节跳动近期推出了一款 AI IDE—— Trae,由国人团队开发,并且限时免费体…...

【清华大学】AIGC发展研究(3.0版)

目录 AIGC发展研究报告核心内容一、团队简介二、AI哲学三、国内外大模型四、生成式内容(一)文本生成(二)图像生成(三)音乐生成(四)视频生成 五、各行业应用六、未来展望 AIGC发展研究…...

Kafka--常见问题

1.为什么要使用 Kafka,起到什么作用 Kafka是一个高吞吐量、分布式、基于发布订阅的消息系统,它主要用于处理实时数据流 Kafka 设计上支持高吞吐量的消息传输,每秒可以处理数百万条消息。它能够在处理大量并发请求时,保持低延迟和…...

maptalks图层交互 - 模拟 Tooltip

maptalks图层交互 - 模拟 Tooltip 图层交互-模拟tooltip官方文档 <!DOCTYPE html> <html><meta charsetUTF-8 /><meta nameviewport contentwidthdevice-width, initial-scale1 /><title>图层交互 - 模拟 Tooltip</title><style typet…...

【前端】Visual Studio Code安装配置教程:下载、汉化、常用组件、基本操作

文章目录 一、Visual Studio Code下载二、汉化三、常用组件1、Auto Rename Tag2、view-in-browser3、Live Server 四、基本操作五、感谢观看&#xff01; 一、Visual Studio Code下载 下载官网&#xff1a;https://code.visualstudio.com/ 进入官网后点击右上角的Download &…...

datetime“陷阱”与救赎:扒“时间差值”证道

时间工具陷阱&#xff0c;其实是工具引用的误解。 笔记模板由python脚本于2025-03-23 23:32:58创建&#xff0c;本篇笔记适合时间工具研究的coder翻阅。 【学习的细节是欢悦的历程】 博客的核心价值&#xff1a;在于输出思考与经验&#xff0c;而不仅仅是知识的简单复述。 Pyth…...

3DMAX曲线生成器插件CurveGenerator使用方法

1. 脚本功能简介 3DMAX曲线生成器插件CurveGenerator是一个用于 3ds Max 的样条线生成工具&#xff0c;用户可以通过简单的UI界面输入参数&#xff0c;快速生成多条样条线。每条样条线的高度值随机生成&#xff0c;且可以自定义以下参数&#xff1a; 顶点数量&#xff1a;每条…...

Apache漏洞再现

CVE-2021-41773路径穿越漏洞 1、开环境 sudo docker pull blueteamsteve/cve-2021-41773:no-cgid sudo docker run -dit -p 8082:80 blueteamsteve/cve-2021-41773:no-cgid 2、访问8082端口 3、打开工具 4、输入网址&#xff0c;检测漏洞...

git,openpnp - 根据安装程序打包名称找到对应的源码版本

文章目录 git,openpnp - 根据安装程序打包名称找到对应的源码版本概述笔记备注 - 提交时间不可以作为查找提交记录的依据END git,openpnp - 根据安装程序打包名称找到对应的源码版本 概述 想在openpnp官方最新稳定版上改一改&#xff0c;首先就得知道官方打包的安装程序对应的…...

SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)

7.3. 查询计划相关操作符 98&#xff09;Table Scan&#xff1a;该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词&#xff0c;则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…...

编译原理——词法分析

文章目录 词法分析&#xff1a;从基础到自动构造一、词法分析程序的设计一、词法分析程序的设计二、PL/0编译程序中词法分析程序的设计与实现1. 语法特定考量2. 通过状态转移表运用有限状态自动机3. 示例代码片段&#xff08;用于说明的伪代码&#xff09; 三、单词的形式化描述…...

Linux内核,内存分布

x86_64的物理地址范围为64bit&#xff0c;但是因为地址空间太大目前不可能完全用完&#xff0c;当前支持57bit和48bit两种虚拟地址模式。 地址模式单个空间用户地址空间内核地址空间32位2G0x00000000 - 0x7FFFFFFF0x80000000 - 0xFFFFFFFF64位(48bit)128T0x00000000 00000000 …...

AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?

在生态环境保护日益受关注的今天&#xff0c;“鸟类识别”已从专业科研工具演变为推动生态治理数字化的核心技术。无论是湿地保护区的珍稀候鸟监测&#xff0c;还是城市机场的鸟击风险预警&#xff0c;AI技术的精准赋能正在改写人类与自然的互动方式。作为行业领先的智能解决方…...

c++之set

一、set特性及用途&#xff1f; 唯一性&#xff1a;set 中的元素是唯一的&#xff0c;不会存在重复的元素。自动排序&#xff1a;set 中的元素会自动按照默认的升序规则进行排序。底层实现&#xff1a;set 通常基于红黑树实现&#xff0c;具有自平衡功能&#xff0c;因此插入、…...

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek 通义万相制作AI视频流程 4.1 D…...

【操作系统】自旋锁和互斥锁

自旋锁和互斥锁是用于多线程同步的两种常见锁机制&#xff0c;主要区别在于等待锁的方式和适用场景。以下是它们的对比分析&#xff1a; 1. 等待机制 自旋锁&#xff08;Spinlock&#xff09;互斥锁&#xff08;Mutex&#xff09;线程通过 忙等待&#xff08;Busy-Wait&#x…...

人工智能在医疗影像诊断中的应用与实践

引言 随着人工智能技术的飞速发展&#xff0c;其在医疗领域的应用逐渐成为研究和实践的热点。特别是在医疗影像诊断方面&#xff0c;人工智能技术凭借其强大的数据处理能力和模式识别能力&#xff0c;为提高诊断效率和准确性带来了新的希望。本文将探讨人工智能在医疗影像诊断中…...

Java中synchronized 和 Lock

1. synchronized 关键字 工作原理 对象锁&#xff1a;在Java中&#xff0c;每个对象都有一个与之关联的监视器锁&#xff08;monitor lock&#xff09;。当一个线程尝试进入由 synchronized 保护的代码块或方法时&#xff0c;它必须首先获取该对象的监视器锁。如果锁已经被其…...

【C语言系列】数据在内存中存储

数据在内存中存储 一、整数在内存中的存储二、大小端字节序和字节序判断2.1什么是大小端&#xff1f;2.2练习2.2.1练习12.2.2练习22.2.3练习32.2.4练习42.2.5练习52.2.6练习6 三、浮点数在内存中的存储3.1练习3.2浮点数的存储3.2.1 浮点数存的过程3.2.2 浮点数取的过程 3.3题目…...

qt 对QObject::tr()函数进行重定向

在 Qt 中&#xff0c;QObject::tr() 函数用于国际化&#xff08;i18n&#xff09;&#xff0c;它用于标记需要翻译的字符串。通常情况下&#xff0c;tr() 函数会从翻译文件&#xff08;如 .qm 文件&#xff09;中查找对应的翻译字符串。如果你希望重定向 tr() 函数的行为&#…...

C#基础学习(三)值类型和引用类型:编程世界的“现金“ vs “银行卡“,以及string这个“渣男“的叛变行为

开场白 各位程序猿/媛们&#xff0c;今天我们来聊一聊编程世界里的"金钱观"。 你以为只有人类会纠结现金和存款的区别&#xff1f;不不不&#xff0c;C#中的值类型和引用类型每天都在上演这场大戏&#xff01; 而我们的string同学&#xff0c;表面是…...

自动驾驶背后的数学:多模态传感器融合的简单建模

上一篇博客自动驾驶背后的数学:特征提取中的线性变换与非线性激活 以单个传感器为例,讲解了特征提取中的线性变换与非线性激活。 这一篇将以多模态传感器融合为例,讲解稍复杂的线性变换和非线性激活应用场景。 (一)权重矩阵的张量积分解 y = W x + b = [ w 11 ⋯ w 1 n ⋮…...

如何设置sudo权限

打开终端&#xff1a;按 Ctrl Alt T 打开终端。 编辑 sudoers 文件&#xff1a; 使用 visudo 命令编辑 /etc/sudoers 文件&#xff08;visudo 会检查语法&#xff0c;避免错误&#xff09;&#xff1a; sudo visudo 添加用户权限&#xff1a; 在文件中找到以下行&#xff1…...

Codeforces Round 1012 (Div. 2) 3.23

文章目录 2025.3.23 Div2B. Pushing Balls&#xff08;暴力&#xff09;代码 C. Dining Hall题意思路代码 2025.3.23 Div2 Dashboard - Codeforces Round 1012 (Div. 2) - Codeforces B. Pushing Balls&#xff08;暴力&#xff09; 题意很好懂&#xff0c;每一行每一列从左…...

langfuse追踪Trace

介绍 &#x1f9e0; Langfuse 是什么&#xff1f; Langfuse 是一个专门为 LLM 应用&#xff08;如 OpenAI / LangChain / 自定义 Agent&#xff09; 设计的 观测与追踪平台&#xff08;Observability Platform&#xff09;。 简单说&#xff0c;它就像是你为 AI 应用插上的 “…...

Java-模块二-2

整数类型 byte&#xff1a;在 Java 中占用8位&#xff08;1字节&#xff09;&#xff0c;因此它的取值范围是从 -128 到 127。这是最小的整数类型&#xff0c;适合用于节省空间的情况。 short&#xff1a;这种类型的大小是16位&#xff08;2字节&#xff09;&#xff0c;允许的…...

使用VS2022编译CEF

前提 选择编译的版本 CEF自动编译&#xff0c;在这里可以看到最新的稳定版和Beta版。 从这里得出&#xff0c;最新的稳定版是134.0.6998.118&#xff0c;对应的cef branch是6998。通过这个信息可以在Build requirements查到相关的软件配置信息。 这里主要看Windows下的编译要…...