自然语言处理|深入解析 PEGASUS:从原理到实践
一、引言
在信息爆炸的时代,互联网上的文本数据以极快的速度增长。无论是新闻资讯、学术论文、社交媒体动态,还是各类报告文档,我们每天接触到的文字信息量巨大。如何快速、准确地提取关键内容成为一项重要任务。文本摘要技术通过将长篇文本浓缩为简短的核心信息摘要,大幅提升了信息处理效率。
文本摘要在多个领域具有重要应用。在新闻行业,它能快速生成简讯,帮助读者了解事件概要;在学术研究中,学者可借助其迅速掌握论文核心观点;在企业中,文本摘要能从商务文档中提取关键信息,辅助决策。PEGASUS(Pre-training with Extracted Gap-sentences for Abstractive Summarization)模型是一种高效的文本摘要解决方案,通过独特的预训练方法在下游任务中表现出色。本文将深入探讨其原理、架构、训练方法及应用。
二、PEGASUS 是什么
(一)模型诞生背景
在 PEGASUS 出现前,文本摘要领域已有多种方法,但存在局限。早期抽取式摘要模型仅从原文提取句子,简单高效,但摘要缺乏连贯性,无法充分表达核心思想。基于循环神经网络(RNN)的序列到序列(seq2seq)模型引入了抽象式摘要,能生成更自然的摘要,但因梯度消失等问题,难以处理长文本。
Transformer 架构的出现解决了这些问题,通过多头注意力机制并行处理序列,捕捉全局依赖关系。PEGASUS 基于 Transformer 设计,通过创新的预训练方式提升文本摘要性能。
(二)基本概念
PEGASUS 是一种基于 Transformer 的预训练模型,专为文本摘要任务设计。其架构包括编码器和解码器:编码器将输入文本转化为特征向量,解码器根据这些向量生成摘要。PEGASUS 的独特之处在于**提取间隙句子(GSG)**预训练方法:从文本中移除重要句子,让模型预测这些句子,从而学习文本核心信息,提升摘要生成能力。
三、PEGASUS 的原理剖析
(一)独特的预训练目标 GSG
PEGASUS 的核心创新在于其预训练目标——间隙句子生成(Gap Sentence Generation,GSG)。与传统预训练语言模型(如 BERT)依赖掩码语言模型(MLM)或下一句预测(NSP)不同,GSG 更贴近文本摘要任务的本质。传统方法主要优化模型对文本的理解能力,而 GSG 则通过模拟摘要生成过程,直接提升模型的生成能力。
GSG 的具体实现是从输入文档中随机选择若干完整句子(通常占总句子数的 15%-30%),将其移除并用特殊标记(如 [MASK1]
、 [MASK2]
等)替代。模型的任务是根据剩余文本预测这些被移除的句子。这种方法不仅要求模型理解文本的语义和上下文,还需要其具备提炼关键信息并生成连贯句子的能力。例如,对于一段包含五句话的文本:“句子 1:今天天气晴朗。句子 2:小明决定去公园散步。句子 3:公园里有很多人在放风筝。句子 4:小明遇到了他的朋友小李。句子 5:他们一起度过了愉快的下午。” GSG 可能移除句子 3 和句子 4,输入变为:“句子 1:今天天气晴朗。句子 2:小明决定去公园散步。[MASK1][MASK2] 句子 5:他们一起度过了愉快的下午。” 模型需根据前后文生成“公园里有很多人在放风筝。小明遇到了他的朋友小李。”。
为了进一步优化训练效果,PEGASUS 将被移除的句子拼接成一个“伪摘要”,作为解码器的目标输出。这种设计让模型在预训练阶段就熟悉摘要生成的任务模式。此外,GSG 的灵活性允许调整掩码句子的数量和比例,例如在短文本中掩码 1-2 句,在长文档中掩码更多句子,从而适应不同长度的输入。实验表明,GSG 显著提高了模型在下游摘要任务中的 ROUGE 分数,尤其是在需要高度概括的场景中。
(二)模型架构
PEGASUS 采用经典的 Transformer 编码器-解码器架构,结合了多头注意力机制的高效性和并行处理能力。编码器由多个 Transformer 块组成,每个块包含多头自注意力(Multi-Head Self-Attention)、前馈神经网络(Feed-Forward Neural Network)和层归一化(Layer Normalization)模块。输入文本首先通过词嵌入层转换为向量表示,随后进入编码器。多头注意力机制通过计算查询(Query)、键(Key)和值(Value)之间的关系,捕捉文本中的长距离依赖。例如,在句子“人工智能在医疗领域大放异彩”中,注意力机制能同时关注“人工智能”和“医疗领域”的语义联系。注意力计算公式为:
Attention ( Q , K , V ) = softmax ( Q K T d k ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dkQKT)V
其中 d k d_k dk是键向量的维度,用于缩放防止数值过大。编码器输出的特征向量包含文本的语义和结构信息,作为解码器的输入。
解码器同样由多个 Transformer 块组成,但增加了掩码自注意力(Masked Self-Attention),确保生成过程中只依赖之前的输出词。解码器通过交叉注意力(Cross-Attention)机制与编码器输出交互,关注输入文本的关键部分。例如,在生成摘要“人工智能优化医疗诊断”时,解码器会重点关注编码器中与“人工智能”和“医疗”相关的特征。生成过程采用自回归方式,每次预测一个词,直至遇到结束标记 <EOS>
。PEGASUS 在此基础上优化了参数配置,如调整注意力头数(通常为 12 12 12 或 16 16 16)和隐藏层维度(如 768 768 768 或 1024 1024 1024),以平衡性能和计算效率。
此外,PEGASUS 支持束搜索(Beam Search)解码,通过保留多个候选序列(如 beam size = 5)提高生成摘要的质量。相比贪婪解码,束搜索能更好地避免局部最优解,使摘要更连贯、自然。
(三)句子选择策略
GSG 的有效性依赖于被掩码句子的选择,PEGASUS 提供了三种策略:Random、Lead 和 Ind-Orig,并在不同场景中各有优劣。
-
Random(随机选择)
该策略从文档中均匀随机挑选 m m m 个句子进行掩码。例如,一篇 10 10 10 句的文档,设 m = 3 m = 3 m=3,则随机选择 3 3 3 句移除。优点是实现简单,能覆盖文本的不同部分;缺点是可能选中次要句子,降低模型对关键信息的学习效率。为缓解这一问题,可通过增大掩码比例(如 30%)增加重要句子被选中的概率,但这会提高计算成本。 -
Lead(前 m m m 句选择)
Lead 策略选择文档开头的前 m m m 个句子,基于新闻或论文中关键信息常集中于开头的假设。例如,一篇新闻报道的前 3 句可能包含事件的时间、地点和主体。优点是适用于信息分布偏前的文本;缺点是忽略了后文可能的重要信息,尤其在叙述性或论证性文档中效果有限。实验中,Lead 在新闻数据集(如 CNN/Daily Mail)上表现良好,但在学术论文摘要任务中逊于其他策略。 -
Ind-Orig(基于重要性分数选择)
Ind-Orig 策略通过计算句子重要性选择掩码对象,采用 ROUGE 分数作为评估标准。ROUGE-N 计算生成的摘要与参考文本的 ( n )-gram 重叠率,公式为:ROUGE-N = ∑ S ∈ { 参考摘要 } ∑ gram n ∈ S Count match ( gram n ) ∑ S ∈ { 参考摘要 } ∑ gram n ∈ S Count ( gram n ) \text{ROUGE-N} = \frac{\sum_{S \in \{\text{参考摘要}\}} \sum_{\text{gram}_n \in S} \text{Count}_{\text{match}}(\text{gram}_n)}{\sum_{S \in \{\text{参考摘要}\}} \sum_{\text{gram}_n \in S} \text{Count}(\text{gram}_n)} ROUGE-N=∑S∈{参考摘要}∑gramn∈SCount(gramn)∑S∈{参考摘要}∑gramn∈SCountmatch(gramn)
在此,PEGASUS 计算每个句子与文档其余部分的 ROUGE-1 或 ROUGE-2 分数,分数越高表明该句子越能代表文档核心内容。例如,在一篇科技文章中,描述主要创新的句子通常与其他句子有更高重叠。选择得分最高的前 ( m ) 个句子进行掩码,确保模型聚焦关键信息。实验验证,Ind-Orig 在多样化数据集(如 XSum、Multi-News)上表现最佳,因其能动态适应文本结构。
此外,PEGASUS 允许结合多种策略。例如,在预训练初期使用 Random 增加泛化能力,后期切换至 Ind-Orig 强化对关键信息的学习。这种混合策略进一步提升了模型的鲁棒性。研究还探索了基于 TF-IDF 或 PageRank 的句子重要性评估方法,但 ROUGE 的简单性和有效性使其成为首选。
四、PEGASUS 的优势展现
(一)强大的语言理解与生成能力
PEGASUS 在处理复杂文本时表现出色。以量子计算领域学术论文摘要生成为例,面对涉及高深理论和复杂实验的论文,PEGASUS 凭借独特的编码器 - 解码器架构和预训练目标,能理解专业术语、理论推导及实验结果分析等关键信息,精准提炼核心观点,如新型量子算法、关键数据和重要突破等,生成逻辑连贯、语言流畅的摘要。和人类生成的摘要比,其内容涵盖主要要点,语言自然,能帮读者快速把握关键,节省阅读时间。
(二)低资源下的卓越性能
在低资源场景下,PEGASUS 表现同样出色。实验数据显示,在文本摘要任务中,标注样本极少(如仅 1000 个)时,许多传统模型性能大幅下降,摘要质量难满足需求。而 PEGASUS 凭借创新预训练方式,能充分利用有限标注数据学习和微调。在对包含多领域的低资源数据集实验时,PEGASUS 仅用 1000 个样本微调,在多个数据集上 ROUGE 分数超之前最先进结果,展现出少量数据下良好适应性和泛化能力。这意味着实际应用中获取大量标注数据困难时,PEGASUS 仍能提供高质量文本摘要服务,拓展了应用范围和实用性。
(三)开箱即用与便捷的训练推理流程
PEGASUS 基于 FasterGeneration 推理加速,能快速生成文本摘要。实际应用中,用户输入待摘要文本就能迅速获得结果,提升工作效率。它还提供全面定制训练流程,涵盖数据准备到模型推理部署。开发者可按需和数据特点对模型训练优化,如在特定领域文本摘要任务中用领域数据微调,让其生成更贴合需求的摘要。这种便捷的训练推理流程降低应用门槛,推动文本摘要技术在更多领域广泛应用。
五、PEGASUS 应用领域与案例
(一)新闻领域
在新闻行业,信息快速传播和准确呈现至关重要。许多媒体机构用 PEGASUS 自动生成新闻稿件摘要,提升了新闻编辑和发布效率。某知名国际新闻媒体每天接收海量多领域新闻素材,此前编辑手动提取关键信息写摘要,耗时费力,突发新闻集中时难以快速处理。
引入 PEGASUS 模型后情况改善,它能快速处理大量新闻文本,生成准确简洁摘要。比如国际政治会议报道,PEGASUS 可提取关键信息,生成涵盖核心内容、语言流畅的摘要,满足快速发布传播需求。据该媒体统计,使用 PEGASUS 后,新闻稿件从接收至发布时间平均缩短 30%,读者点击率和阅读完成率显著提升,这表明 PEGASUS 既提高了新闻生产效率,又提升了新闻内容质量和吸引力。
(二)客服通话分析
客服中心是企业与客户沟通的重要桥梁,每天产生大量通话记录。对通话文本有效分析处理,能助企业了解客户需求、提升服务质量。PEGASUS 用于提取通话文本摘要,给客服工作带来便利。
以大型电商企业客服中心为例,以往客服处理完电话需手动记录客户诉求和问题,不仅增加工作负担,还因人工记录主观性和不规范性,易遗漏或误解关键信息。现在将 PEGASUS 应用于客服通话分析系统,通话结束后系统能立即对语音转文字文本提取摘要。如客户反映商品质量问题要求退换货,PEGASUS 可准确提取商品名称、订单编号等关键信息并简洁呈现给客服,提高处理效率和准确性。据统计,应用 PEGASUS 后,客服处理单个客户问题平均时间缩短 20%,客户满意度提升 15 个百分点。
(三)文档处理
在学术研究、企业办公等场景中,常需处理大量篇幅长、内容复杂的文档,快速获取核心信息是挑战。PEGASUS 在文档处理方面的应用,为解决此问题提供有效途径。
学术研究中,科研人员阅读大量论文,手动提取关键信息耗时费力,用 PEGASUS 输入论文文本就能快速获得含研究目的、方法、主要结论等关键内容的摘要,提高文献阅读和筛选效率。
企业办公场景也有类似需求。如跨国企业战略决策时需参考大量文档,内容繁杂,决策层难短时间了解关键信息。应用 PEGASUS 对文档自动摘要处理,转化为简洁摘要报告,为决策层提供快速准确信息支持,辅助科学决策。
六、使用 PEGASUS 的实操指南
(一)环境搭建
在使用 PEGASUS 进行文本摘要任务之前,需要确保环境满足一定的条件。首先,Python 是必不可少的,建议使用 Python 3.6 及以上版本,因为这个版本以上的 Python 在语法和性能上都有更好的表现,能够更好地支持 PEGASUS 相关的代码运行 。
其次,相关依赖库的安装也至关重要。主要依赖库包括transformers
,它是 Huggingface 提供的一个强大的自然语言处理工具库,包含了各种预训练模型和工具,PEGASUS 模型也在其中 。可以使用pip install transformers
命令进行安装。另外,torch
库也是必需的,它是一个广泛应用于深度学习的框架,PEGASUS 模型基于torch
进行构建和运行。根据自己的系统和硬件配置,选择合适的torch
版本进行安装,例如在支持 CUDA 的 GPU 环境下,可以安装带有 CUDA 支持的torch
版本,以加速模型的训练和推理过程。
- Python:3.6+ 版本。
- 依赖库:安装命令如下:(这里假设 CUDA 版本为 11.7,具体根据实际情况调整) 。
pip install transformers torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
(二)模型加载与调用
借助 Huggingface 的 transformers
库,可以方便地加载和调用 PEGASUS 模型。以下是一个简单的代码示例:
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM# 加载预训练的PEGASUS模型和分词器
tokenizer = AutoTokenizer.from_pretrained("google/pegasus-xsum")
model = AutoModelForSeq2SeqLM.from_pretrained("google/pegasus-xsum")# 待摘要的文本
text = "这是一篇很长的文章,包含了许多信息,比如关于人工智能的最新发展趋势,以及在医疗、交通等领域的应用。人工智能在医疗领域可以辅助医生进行疾病诊断,提高诊断的准确性;在交通领域,能够优化交通流量,减少拥堵。"# 对文本进行编码
input_ids = tokenizer.encode(text, return_tensors='pt')# 生成摘要
outputs = model.generate(input_ids)# 解码生成的摘要
summary = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(summary)
在上述代码中:
- 首先通过
AutoTokenizer.from_pretrained
方法加载预训练的 PEGASUS 分词器,分词器的作用是将输入的文本转换为模型能够处理的数字序列。 - 然后使用
AutoModelForSeq2SeqLM.from_pretrained
方法加载预训练的 PEGASUS 模型 。 - 接着对待摘要的文本进行编码,将其转换为模型可以接受的输入格式。
- 最后,通过模型的
generate
方法生成摘要,并使用分词器的decode
方法将生成的数字序列转换回文本形式,得到最终的摘要结果 。
(三)训练与微调
根据特定任务对 PEGASUS 模型进行训练和微调,可以进一步提升模型在该任务上的性能 。首先是数据准备阶段,需要收集与任务相关的文本数据,并将其整理成合适的格式。例如,对于新闻摘要任务,可以收集大量的新闻文章及其对应的人工撰写的摘要,将每篇新闻文章作为输入文本,对应的摘要作为目标文本 。数据通常需要进行预处理,包括清洗(去除噪声、特殊字符等)、分词等操作。可以使用 NLTK、spaCy 等工具进行文本清洗和分词,也可以使用 transformers
库中的分词器进行统一的分词处理 。
在参数设置方面,需要根据任务的特点和数据规模进行合理的调整。常见的参数包括学习率(learning rate),它控制着模型在训练过程中参数更新的步长,一般设置在 0.0001 - 0.001 之间,例如对于 PEGASUS 模型在一些文本摘要任务的微调中,学习率设置为 0.0003 时能够取得较好的效果 。批次大小(batch size)决定了每次训练时输入模型的样本数量,较大的批次大小可以加快训练速度,但可能会导致内存不足,通常根据硬件条件设置为 16、32 等,在 GPU 内存充足的情况下,可以设置为 64 以提高训练效率 。训练轮数(epochs)表示模型对整个训练数据进行训练的次数,一般设置在 3 - 10 次之间,具体需要通过实验来确定最优值 。例如在对 PEGASUS 进行特定领域的文本摘要微调时,经过多次实验发现,当学习率为 0.0003,批次大小为 32,训练轮数为 5 时,模型在该领域的摘要生成任务上表现最佳 。
下面是一个使用 Huggingface 的 transformers
库进行 PEGASUS 模型微调的简单示例代码:
from transformers import PegasusForConditionalGeneration, PegasusTokenizer
from datasets import load_dataset
from transformers import TrainingArguments, Trainer# 加载预训练的PEGASUS模型和分词器
tokenizer = PegasusTokenizer.from_pretrained("google/pegasus-xsum")
model = PegasusForConditionalGeneration.from_pretrained("google/pegasus-xsum")# 加载自定义数据集,这里假设数据集格式为有'text'(原文)和'summary'(摘要)字段
dataset = load_dataset('your_dataset_name', split='train')def preprocess_function(examples):inputs = examples["text"]targets = examples["summary"]model_inputs = tokenizer(inputs, max_length=512, truncation=True)# Setup the tokenizer for targetswith tokenizer.as_target_tokenizer():labels = tokenizer(targets, max_length=128, truncation=True)model_inputs["labels"] = labels["input_ids"]return model_inputstokenized_dataset = dataset.map(preprocess_function, batched=True)# 定义训练参数
training_args = TrainingArguments(output_dir='./results',num_train_epochs=3,per_device_train_batch_size=16,save_steps=10_000,save_total_limit=2,
)# 初始化Trainer
trainer = Trainer(model=model,args=training_args,train_dataset=tokenized_dataset
)# 开始训练
trainer.train()
在这个示例中,首先加载预训练的 PEGASUS 模型和分词器,然后加载自定义的数据集 。preprocess_function
函数对数据集中的样本进行预处理,将输入文本和目标摘要进行编码,并将编码后的目标摘要作为标签 。接着使用 TrainingArguments
定义训练参数,包括输出目录、训练轮数、批次大小等 。最后,通过 Trainer
类进行模型的训练 。
七、挑战与局限思考
(一)特定领域数据适应性问题
PEGASUS 在通用领域文本摘要任务表现出色,但面对特定领域文本存在适应性不足问题。不同领域文本有独特风格、术语和知识背景,PEGASUS 预训练基于通用语料库,对专业知识覆盖不全,处理时易抓不准关键信息、误解术语。虽可用领域专业数据微调提升性能,但获取大量高质量标注数据困难且昂贵,限制其在小众或专业领域应用,且微调后面对复杂场景仍需优化改进。
(二)生成摘要的准确性和逻辑性
PEGASUS 生成摘要时虽能捕捉关键信息,但存在不足。当原始文本含复杂逻辑关系,如因果、转折、并列等,它可能无法准确理解与表达,导致摘要逻辑不连贯甚至信息错误。比如在关于科技对环境影响的文章中,它生成的摘要可能仅罗列内容,未表达内在联系,逻辑性和完整性欠佳。此外,PEGASUS 还受文本长度、噪声影响。文本过长,模型难以全面处理,导致摘要丢失关键内容;文本有噪声(错别字、语法错误、无关信息等)时,生成摘要质量也会受影响。
(三)未来发展方向
为克服 PEGASUS 目前挑战,未来研究可从几方面展开。一方面,改进预训练方式,如在预训练阶段引入更多领域特定语料库或设计专门任务,增强模型对专业知识的理解与掌握。另一方面,优化模型生成摘要的逻辑性和准确性,改进模型架构,引入逻辑推理模块,结合语义理解技术和知识图谱,提供背景知识。同时,研究处理长文本和噪声数据,提高模型鲁棒性和适应性,不断探索创新,提升 PEGASUS 在文本摘要任务中的性能和应用价值。
八、未来展望
未来,PEGASUS 在文本摘要领域前景广阔、潜力无限。随着技术进步创新,PEGASUS 有望在多方向突破发展。
在模型改进上,研究人员可能优化架构与预训练方式,比如探索更强注意力机制,开发新预训练任务,结合知识图谱等技术,提升性能与摘要质量。
PEGASUS 与其他技术融合也是发展方向,如与计算机视觉、语音识别技术结合,还能与强化学习、迁移学习等人工智能分支领域结合,提高泛化与适应能力。
在应用领域,PEGASUS 有望在金融、医疗、教育等多行业广泛应用,也可用于智能家居、智能客服等领域,带来便利与价值。
PEGASUS 作为重要文本摘要模型,未来发展空间巨大,通过技术创新与应用拓展,将为处理和理解海量文本提供强大支持,推动自然语言处理技术在各领域深入发展。
九、结语
PEGASUS 是文本摘要领域的优秀模型,凭借独特预训练目标、强大架构和出色性能,在众多场景展现巨大价值与潜力,为处理海量文本提供高效方案,推动自然语言处理技术应用发展。虽存在挑战和局限,但随研究深入与技术进步有望解决。未来它将在更多领域广泛应用,带来便利。若对文本摘要技术感兴趣,可尝试使用 PEGASUS 模型体验其强大功能。
相关文章:
自然语言处理|深入解析 PEGASUS:从原理到实践
一、引言 在信息爆炸的时代,互联网上的文本数据以极快的速度增长。无论是新闻资讯、学术论文、社交媒体动态,还是各类报告文档,我们每天接触到的文字信息量巨大。如何快速、准确地提取关键内容成为一项重要任务。文本摘要技术通过将长篇文本…...
矩阵指数的定义和基本性质
1. 矩阵指数的定义 矩阵指数 e A t e^{\boldsymbol{A}t} eAt 定义为幂级数的形式: e A t ∑ k 0 ∞ ( A t ) k k ! e^{\boldsymbol{A}t} \sum_{k0}^\infty \frac{(\boldsymbol{A}t)^k}{k!} eAtk0∑∞k!(At)k 当 A \boldsymbol{A} A 为 n n n \times n …...
react 技术栈请问该如何优化 DOM 大小
针对 React 应用中 DOM 大小过大 的问题,以下是详细的优化方案和具体操作步骤,帮助你提升 Lighthouse 性能评分和用户体验: 一、问题根源分析 DOM 大小过大(如超过 1500 个节点或深度超过 32 层)会导致: …...
redis,tar.gz安装后,接入systemctl报错解决
1. WARNING Memory overcommit must be enabled! 这种报错,有两种解决方法 1.1 修改系统参数 编辑 /etc/sysctl.conf 文件,设置 overcommit_memory 为 1 vm.overcommit_memory 11.2 修改redis的最大使用内存 修改配置文件 redis.conf maxmemory 1g…...
YOLOv5部署全场景问题解决方案手册(2025版)
YOLOv5部署全场景问题解决方案手册(2025版) 文章目录 YOLOv5部署全场景问题解决方案手册(2025版)[TOC]一、环境配置问题1.1 CUDA与PyTorch版本冲突1.2 依赖库缺失问题 二、模型转换问题2.1 ONNX导出失败2.2 TensorRT转换问题 三、…...
Canal 解析与 Spring Boot 整合实战
一、Canal 简介 1.1 Canal 是什么? Canal 是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析(Binlog)中间件,它模拟 MySQL 的从机(Slave)行为,监听 MySQL 主机的二进制日志(Binl…...
AI第一天 自我理解笔记--微调大模型
目录 1. 确定目标:明确任务和数据 2. 选择预训练模型 3. 数据预处理 (1) 数据清洗与格式化 (2) 划分数据集 (4) 数据加载与批处理 4. 构建微调模型架构 (1) 加载预训练模型 (2) 修改模型尾部(适配任务) (3) 冻结部分层(…...
SpringBoot日志
目录 一、日志的用途 二、日志的使用 1.打印日志 2.在程序中得到日志对象 3.使用日志对象打印日志 4.日志格式说明 5.日志框架的了解 门面模式(外观模式) 6.日志级别 7.日志配置 配置日志级别 日志持久化 配置日志文件分割 配置日志格式 三、…...
Redis数据结构详解--列表
Redis 列表是简单的字符串列表,按照插入顺序排序,常用命令: LPUSH key value1 [value2...] 在列表头部插入一个或多个值RPUSH key value1 [value2...] 在列表尾部插入一个或多个值LPOP key 移除并获取列表头部第一个元素RPOP key 移除并获取…...
[项目]基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信
基于FreeRTOS的STM32四轴飞行器: 六.2.4g通信 一.Si24Ri原理图二.Si24R1芯片手册解读三.驱动函数讲解五.移植2.4g通讯(飞控部分)六.移植2.4g通讯(遥控部分)七.通讯模块的完成(遥控部分)七.通讯模块的完成&a…...
ElasticSearch 7.x 集群 + Kibana 部署完全指南(5节点)
ElasticSearch 7.x 集群 Kibana 部署完全指南(5节点) 一、基础环境准备 1. 系统要求 CentOS 7/Ubuntu 18.04JDK 11(Elasticsearch 7自带JDK)内存:建议每个节点≥8GB磁盘:≥50GB(根据数据量调…...
前端项目中应该如何选择正确的图片格式
在前端项目中选择正确的图片格式是优化页面性能、提升用户体验的关键步骤之一。以下是常见图片格式的特点、适用场景及选择建议,帮助你在不同场景下做出最优决策: 一、常见图片格式对比 格式特点适用场景不适用场景JPEG- 有损压缩,文件小- 不…...
Python实现WYY音乐下载
一、需求背景 WYY音乐作为国内主流音乐平台,其歌曲资源丰富但下载接口存在多重加密保护。本文将通过Python结合JS逆向技术,解析其核心加密逻辑,实现免费歌曲的下载功能。 二、技术难点分析 1. 接口加密机制 通过抓包分析可知,网易云核心接口使用两次加密: 第一次:获取…...
药房链路轨道“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用
总论 随着智能医疗技术的快速发展,药房自动化系统已成为现代医院运营的核心基础设施。本文以“空间拓扑优化动态算法决策多级容错控制”三重链式编程技术为核心研究对象,探讨其如何通过跨学科技术融合实现药房链路轨道系统的精准化、高效化与可靠化运行…...
笔记本运行边缘计算
笔记本电脑可以用来运行PCDN(Peer-to-Peer Content Delivery Network)服务。实际上,如果你有闲置的笔记本电脑,并且它具备一定的硬件条件和网络环境,那么它可以成为一个不错的PCDN节点。 运行PCDN的基本要求 硬件需求…...
IMX8MP Android 10系统编译SDK
概述: 本文描述了在Ubuntu 20.04操作系统上搭建IMX8MP Android10系统编译环境。 ubuntu主机端设置 1. ubuntu 20.04 1. 450G Free Disk space 2. 16GB RAM以上 3. 安装 sudo apt-get install uuid uuid-dev zlib1g-dev liblz-dev liblzo2-2 liblzo2-dev lzop …...
项目实战:基于瑞萨RA6M5构建多节点OTA升级-创建系统最小框架<三>
MCUBoot项目创建完成后,接下来我们需要搭建多节点OTA系统最小框架,再将系统分模块搭建逐层完善,直到实现最终完整系统。开始动手干吧! 目录 一、创建项目 二、配置FSP 2.1 配置RS485属性 2.2 配置定时器0 2.3 创建初始化进程并配置属性 2.4 创建RS485进程并…...
汇能感知高品质的多光谱相机VSC02UA
VSC02UA概要 VSC02UA是一款高品质的200万像素的光谱相机,适用于工业检测、农业、医疗等领域。VSC02UA 包含 1600 行1200 列有源像素阵列、片上 10 位 ADC 和图像信号处理器。它带有 USB2.0 接口,配合专门的电脑上位机软件使用,可进行图像采集…...
Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点
Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点 目录 Fisher 信息矩阵公式原理:使用似然估计,二阶导数等知识点Fisher 通过似然估计求解真实数据和权重参数之间的差异**1. Fisher 信息矩阵的定义****2. 计算对数似然函数的二阶导数****3. 代入 Fisher 信息矩阵定义…...
Xilinx系列FPGA视频采集转HDMI2.0输出,基于HDMI 1.4/2.0 Transmitter Subsystem方案,提供6套工程源码和技术支持
目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目我已有的 GT 高速接口解决方案我已有的FPGA图像处理方案 3、详细设计方案设计框图硬件设计架构FPGA开发板输入Sensor之-->OV5640摄像头动态彩条Video In To AXI4-S…...
dify重磅升级:从0.15.3安全升级1.1.0新手避坑指南
Docker Compose 部署 备份自定义的 docker-compose YAML 文件(可选) cd docker cp docker-compose.yaml docker-compose.yaml.-$(date +%Y-%m-%d-%H-%M).bak从 main 分支获取最新代码 git checkout main git pull origin main停止服务,命令,请在 docker 目录下执行...
工业相机选型
工业相机选型 一、工业相机分类二、相机的主要参数2.1 分辨率2.2 速度2.3 光学接口 / 接口类型2.4 相机靶面尺寸2.5 像元尺寸2.6 精度 三、镜头介绍及选型方法3.1 工作距离(WD)3.2 视场角(FOV)3.3 (镜头)靶面尺寸3.4 帧率3.5 光圈…...
Vue3:构建高效用户界面的利器
一、Vue.js 简介 Vue.js(读音 /vjuː/, 类似于 view)是一套构建用户界面的渐进式框架。它只关注视图层,采用自底向上增量开发的设计。Vue 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件 ,学习起来非常简单…...
mysql与redis的日志策略
MySQL 和 Redis 在日志记录方面采用了不同的策略,分别对应写前日志(Write-Ahead Logging, WAL)和写后日志(Write-After Logging)。以下是它们的详细说明: 1. MySQL:写前日志(Write-A…...
在 Spring Boot 中调用 AnythingLLM 的发消息接口
整体逻辑: 自建系统的web UI界面调用接口: 1.SpringBoot接口:/anything/chatMessageAnything 2.调用anythingLLM - 调用知识库deepseek r1 . Windows Installation ~ AnythingLLMhttps://docs.anythingllm.com/installation-desktop/windows http://localhost:3…...
Kotlin 基础语法
1. 🌟 Kotlin:Java 的“超级进化体”? Kotlin 是一门由 JetBrains 开发的 现代静态类型编程语言,支持 JVM、Android、JavaScript、Native 等多平台: Kotlin 与 Java 深度兼容,Kotlin 会编译为 JVM 字节码,…...
设计模式使用Java案例
代码设计要有可维护性,可复用性,可扩展性,灵活性,所有要使用设计模式进行灵活设计代码 创建型 简单工厂模式(Simple Factory) 简单工厂模式(Simple Factory Pattern)是一种创建型…...
LORA的AB矩阵是针对Transformer的多头还是MLP
LORA的AB矩阵是针对Transformer的多头还是MLP Transformer中的矩阵是一个整体还是分开的每个小矩阵 在LORA(Low-Rank Adaptation)中,AB矩阵的应用位置和Transformer中的矩阵拆分方式如下: 1. LORA的AB矩阵作用对象 LORA的AB矩阵主要作用于Transformer的多头注意力模块和…...
【Gitee】删除仓库的详细步骤
文章目录 1、点击个人主页2、点击仓库3、点击想要删除的仓库4、点击管理5、点击侧边栏的删除仓库 1、点击个人主页 进入gitee官网,登录后点击个人主页 2、点击仓库 点击仓库跳转,如下图所示: 3、点击想要删除的仓库 这个页面会展示你所…...
DNS缓存使用中有什么问题?DNS缓存有哪些作用?
此前已经给大家介绍过刷新dns缓存的方法和流程以及dns缓存中毒和清楚dns缓存的知识介绍。那么你知道dns缓存使用中有什么问题吗?dns缓存有哪些作用? 以下是有关dns缓存的一些知识介绍。 一、DNS缓存使用中有什么问题? 1、缓存刷新不受控 当企业的域名发生变更时…...
Ollama + Open WebUI 本地部署DeepSeek
文章目录 前言一、环境准备最低系统要求必要软件 二、安装 Ollama通过 Docker 部署验证安装 三、部署 Open WebUI快速启动配置说明 四、加载 DeepSeek 模型通过 Ollama 拉取模型支持模型列表 五、使用 Web 界面交互首次使用功能特性 六、高级配置GPU 加速(NVIDIA&am…...
STM32-汇编
学习arm汇编的主要目的是为了编写arm启动代码,启动代码启动以后,引导程序到c语言环境下运行。换句话说启动代码的目的是为了在处理器复位以后搭建c语言最基本的需求。因此启动代码的主要任务有: 初始化异常向量表; 初始化各工作模…...
word中老是有一个空白页删不掉
1、首先第一种:最后一页空白页删除方法 如果空白页是出现在最后一页的话,一般的删除方法是可行的,我们可以直接按Backspace或者Delete直接删除 2、缩小行距 如果空白页只有一行,而且还删不掉,我们可以在这一行点击鼠…...
docker需要sudo才能使用
一种方法是添加当前用户到docker组里去,当时添加的时候貌似是没问题的,但是现在又不可以了 产生的报错 ❯ docker images Cannot connect to the Docker daemon at unix:///home/ying/.docker/desktop/docker.sock. Is the docker daemon running?解决…...
Unity导出WebGL,无法显示中文
问题:中文无法显示 默认字体无法显示中文 在编辑器中设置了中文和英文的按钮,中文按钮无法显示 导出后无法显示中文 解决办法: 自己添加字体,导入项目,并引用 示例 下载一个字体文件,这里使用的阿里…...
理解大模型的function call ,思维链COT和MCP 协议
在大模型中,function call 是指模型调用外部功能或工具以完成特定任务的过程。这种机制使得模型不仅能生成文本,还能执行特定的操作,如生成图像、获取数据或进行计算。 关键特点 功能扩展:通过调用外部函数,模型可以实…...
K8S学习之基础三十三:K8S之监控Prometheus部署程序版
部署 Prometheus 通常包括以下步骤: 1. 下载 Prometheus 首先,从 Prometheus 官方网站 下载适用于你操作系统的最新版本。 bash 复制 wget https://github.com/prometheus/prometheus/releases/download/v2.30.0/prometheus-2.30.0.linux-amd64.tar…...
c语言笔记 结构体指针运用
目录 1.结构体指针与结构体变量 2.结构体指针与结构体数组 c语言其实有时候基本知识还是一样只是说换了一个名称但是所表示的含义是一样的。 结构体指针是指针的一种类型,可以指向结构体变量或者结构体数组,下面我们来探究一下结构体指针跟结构体变量的…...
科普类——双目立体视觉与 RGBD 相机的简单对比
双目立体视觉与 RGBD 相机生成的深度图在原理、性能和应用场景上有显著差异。以下是两者的详细对比和分析: 1. 原理差异 (1) 双目立体视觉 (Stereo Vision) 原理: 通过两个摄像头模拟人眼视差,计算匹配像素点的水平位移(视差&…...
为什么要用linux?
使用 Linux 有许多独特的优势,尤其适合技术爱好者、开发者和企业用户。以下是 选择 Linux 的主要理由,涵盖不同场景的需求: --- 1. 开源与自由 🆓 - 完全免费:无需支付系统或软件授权费用,节省成本。 - 开放…...
Linux系统管理与编程05:网络管理番外篇
兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 0.安装VMware workstation(以下简称VW)、MobaXterm和CentOS7.x minimal版 CentOS7.x minimal安装时选择网卡连接为nat,过程参照我的博客(略)。 1.…...
(2025|ICLR|华南理工,任务对齐,缓解灾难性遗忘,底层模型冻结和训练早停)语言模型持续学习中的虚假遗忘
Spurious Forgetting in Continual Learning of Language Models 目录 1. 引言 2. 动机:关于虚假遗忘的初步实验 3. 深入探讨虚假遗忘 3.1 受控实验设置 3.2 从性能角度分析 3.3 从损失景观角度分析 3.4 从模型权重角度分析 3.5 从特征角度分析 3.6 结论 …...
RabbitMQ 集群降配
这里写自定义目录标题 摘要检查状态1. 检查 RabbitMQ 服务状态2. 检查 RabbitMQ 端口监听3. 检查 RabbitMQ 管理插件是否启用4. 检查开机自启状态5. 确认集群高可用性6. 检查使用该集群的服务是否做了断开重连 实操1. 负载均衡配置2. 逐个节点降配(滚动操作…...
Git——分布式版本控制工具使用教程
本文主要介绍两种版本控制工具——SVN和Git的概念,接着会讲到Git的安装,Git常用的命令,以及怎么在Vscode中使用Git。帮助新手小白快速上手Git。如果想直接上手用Vscode操作远程仓库则直接看7和9即可! 目录 1. SVN和Git介绍 1.1 …...
在 Offset Explorer 中配置多节点 Kafka 集群的详细指南
一、是否需要配置 Zookeeper? Kafka 集群的 Zookeeper 依赖性与版本及运行模式相关: Kafka 版本是否需要 Zookeeper说明0.11.x 及更早版本✅ 必须配置Kafka 完全依赖 Zookeeper 管理元数据2.8 及以下版本✅ 必须配置Kafka 依赖外置或内置的 Zookeeper …...
nvm 安装某个node.js版本后不能使用或者报错,或不能使用npm的问题
安装了nvm之后发现不能使用某个版本的node.js,报错之后,不能使用npm这个命令。可以这样解决: 1、再node.js官网直接下载node.js 的压缩包。 找到nvm的安装目录 2、直接将文件夹解压到这个安装目录中修改一下名字即可。...
C++20 中的同步输出流:`std::basic_osyncstream` 深入解析与应用实践
文章目录 一、std::basic_osyncstream 的背景与动机二、std::basic_osyncstream 的基本原理三、std::basic_osyncstream 的使用方法(一)基本用法(二)多线程环境下的使用(三)与文件流的结合 四、std::basic_…...
美摄接入DeepSeek等大模型,用多模态融合重构视频创作新边界!
今年以来,DeepSeek凭借其强大的深度推理分析能力,在AI领域掀起新的热潮。美摄科技快速响应市场需求,迅速接入以DeepSeek、通义千问、商汤、文心一言为代表的大模型,为企业视频创作生产带来全新体验。 传统视频创作面临着同质化、…...
Git 使用笔记
参考链接: 创建版本库 - Git教程 - 廖雪峰的官方网站 Git使用教程,最详细,最傻瓜,最浅显,真正手把手教 - 知乎 命令使用 cd f: 切换目录到 F 盘 cd gitCxl 切换目录到 gitCxl 文件夹 mkdir gitCxl 创建新文件…...
C#:深入理解Thread.Sleep与Task.Delay
1.核心区别概述 特性Thread.SleepTask.Delay阻塞类型同步阻塞当前线程异步非阻塞,释放线程适用场景同步代码中的简单延时异步编程中的非阻塞等待资源消耗占用线程资源(线程挂起)不占用线程(通过计时器回调)精度依赖操…...