ChatGPT背后的理论基础:从预训练到微调的深度解析
友情提示:本文内容由银河易创(https://ai.eaigx.com)AI创作平台GPT-4o-mini模型生成,仅供参考。请根据具体情况和需求进行适当的调整和验证。
随着人工智能特别是自然语言处理技术的飞速发展,ChatGPT作为一种强大的对话生成模型,已在各个领域展现出其巨大潜力。为了更好地理解ChatGPT的工作原理,本文将深入探讨其背后的理论基础,包括预训练机制、微调过程、模型架构以及优化策略。
一、预训练机制
1.1 语言模型的基础
语言模型是自然语言处理领域的核心组件,其主要任务是根据给定的上下文预测下一个最可能的单词。ChatGPT的预训练阶段旨在通过海量文本数据,让模型学习语言的结构和使用规则。这一阶段通常采用无监督学习方式,使用大量的互联网文本、书籍和其他来源的文档,使得模型能够接触到多样化的语言风格和主题。
在这一过程中,ChatGPT的目标是最小化预测错误,即使得模型生成的词序列在某种意义上接近真实的语言使用。具体来说,模型通过语言建模技术来捕捉上下文之间的依赖关系,从而学会在给定的词序列中进行有效的预测。这意味着模型不仅仅是记忆单词的顺序,还能够理解词语之间的关联和语义。
1.2 自回归模型
ChatGPT采用自回归(Autoregressive)模型的方式进行文本生成。在这种模式下, 模型会逐步生成文本,每生成一个新词时只考虑之前生成的所有词。这种生成方式使得模型能够在生成时保持上下文的一致性,从而更自然地构建句子。这一方法的优势在于,它能有效捕捉语言的局部依赖性,形成更具连贯性和流畅性的输出。
自回归模型在生成过程中每一步都依赖于前面的步骤,这使得模型在处理长文本时能够保持上下文的连贯性。举例而言,当生成一段对话时,模型会在每次生成时参考此前的对话历史,从而产生与上下文更加相关的响应。这样不仅提高了对话的质量,也增强了用户的交互体验。
1.3 大规模数据集的使用
预训练的成功在很大程度上依赖于大规模、高质量的数据集。ChatGPT的训练数据集包含了来自多种来源的文本,例如新闻文章、社交媒体帖子、维基百科内容等。这些数据的多样性使得模型能够学习到不同的语言风格、文化背景和知识领域,从而在生成文本时展现出广泛的适应能力。
大量的数据不仅有助于提升模型的表现,还可以降低过拟合的风险。通过在海量数据上进行训练,模型能够提取出更为一般化的语言特征,而不是仅仅依赖于特定数据的统计模式。这使得ChatGPT在面对不同主题和领域时,能够更灵活地进行应对。
1.4 训练目标与损失函数
在预训练阶段,ChatGPT的目标是最大化对下一个词的预测概率。通常采用的损失函数是交叉熵损失(Cross-Entropy Loss),它衡量模型生成的词概率分布与真实词分布之间的差距。具体来说,模型会计算其预测的每个词的概率,并与实际出现的词的概率进行比较,从而更新模型参数,以此来降低损失。
通过反向传播算法,模型会根据损失信息调整其内部参数,优化自身的预测能力。随着训练的进行,模型会逐渐减少预测误差,从而提高生成文本的质量。
1.5 预训练的输出
经过充分的预训练后,ChatGPT不仅能够生成符合语法规则的文本,还能在一定程度上理解上下文,处理复杂的对话场景。此时,模型已具备了较强的语言理解和生成能力,为后续的微调过程奠定了坚实的基础。微调将进一步优化模型,使其能够针对特定任务或领域进行更为精准的响应。
通过深入理解预训练机制,可以为ChatGPT的应用提供更为清晰的理论支持,帮助开发者和研究人员在实际应用中充分发挥这一模型的优势。
二、微调过程
微调是提升ChatGPT性能的重要步骤,它在预训练模型的基础上进行,以优化模型在特定任务或领域的表现。微调通常是在针对特定数据集上进行的监督学习过程,旨在使模型能够更好地理解用户的需求并生成更符合期望的响应。
2.1 微调的重要性
预训练虽然使得ChatGPT掌握了通用的语言知识,但在实际应用中,用户的需求往往是具体和多样化的。微调的目的就是将模型调整得更适合特定应用场景,例如客服支持、教育辅助或创意写作等。通过微调,模型能够更好地捕捉特定领域的语言模式和语境,同时提高其生成的文本的相关性和准确性。
此外,微调还有助于提升模型的鲁棒性,使其能够更好地应对用户提出的各种问题和请求。随着对特定数据集的学习,模型能够在生成文本时考虑到相关的上下文,从而提高用户的整体交互体验。
2.2 微调的数据集
微调过程中使用的数据集通常是经过精心挑选和标注的,以确保其与目标任务的相关性。这些数据集可以是人工生成的,也可以是从实际对话中收集的真实数据。在某些情况下,微调数据集还可能包含用户反馈,以便更好地调整模型输出。
例如,对于一个客服应用,微调数据集可能包含用户的提问以及专业客服人员的回答。这种高质量的数据集能够帮助模型学习到特定领域的术语和处理用户问题的最佳实践,从而提高其在实际应用中的表现。
2.3 人类反馈的引入
为了进一步提升模型的生成质量,微调过程中常常会引入人类反馈。这一过程通常包括以下几个步骤:
-
生成候选响应:在与用户进行对话时,ChatGPT会生成多个响应候选。
-
人类评估:专业的评估人员对这些候选响应进行评分,考虑因素可能包括响应的相关性、准确性、连贯性和用户满意度等。
-
优化调整:基于评估结果,模型会进行相应的调整,以优化其输出策略。这一过程可以通过强化学习(Reinforcement Learning)实现,模型会根据人类反馈调整生成响应的策略,以最大化用户满意度。
引入人类反馈的微调方式使得模型能够不断适应用户的需求,提升其生成文本的质量和相关性。这种循环的反馈机制为模型的进化提供了持续动力。
2.4 强化学习与奖励机制
在微调的过程中,强化学习(Reinforcement Learning,RL)被广泛应用,以进一步提升模型的性能。具体而言,模型在生成响应时会根据用户的反馈和预设的奖励机制进行自我调整。以下是强化学习在微调过程中的应用要点:
-
奖励信号:根据人类评估的反馈信息,模型将获得相应的奖励或惩罚,例如,如果生成的响应被评为高质量,则模型将获得正向奖励;反之则为负向奖励。
-
策略更新:模型通过不断更新其生成策略,以最大化期望的奖励值。在每次交互后,它会根据获得的奖励信号调整生成的方式,从而形成一个自我优化的循环。
-
长远奖励考虑:在强化学习的框架下,模型不仅考虑即时反馈,还会考虑长远的用户满意度。通过对多轮对话的考虑,模型能够更好地预测哪些响应能够在长时间内维持用户的兴趣和满意度。
这种基于人类反馈的强化学习微调方法使得ChatGPT在特定任务中表现得更加灵活和智能,能够适应动态变化的用户需求。
2.5 微调的挑战与解决方案
尽管微调能够显著提升ChatGPT的性能,但在实际过程中也面临一些挑战。其中之一是数据的质量和多样性,低质量或偏见数据可能导致模型生成不当或有偏见的内容。为了解决这一问题,开发者需要确保用于微调的数据集是经过仔细筛选和标注的,以提高模型的公平性和准确性。
另一个挑战是过拟合。微调过程中,如果模型的参数调整得过于细致,可能会导致其在训练数据上表现良好,但在未见过的数据上表现较差。为了解决这个问题,可以采用正则化技术、早停策略以及数据增强等手段,以提高模型的泛化能力。
通过上述过程,ChatGPT在微调阶段得到了进一步的优化,使其能够更好地适应特定任务和用户需求。微调不仅提升了模型的对话质量,还增强了其灵活性和适应能力,为用户带来了更为满意的交互体验。随着技术的不断进步,微调过程也将不断演化,推动ChatGPT在更广泛的应用场景中发挥更大作用。
三、模型架构
ChatGPT的模型架构基于Transformer结构,这一架构最早于2017年被Vaswani等人提出,是当前许多先进自然语言处理模型的基础。Transformer架构通过自注意力机制和并行处理能力,成功地解决了传统循环神经网络(RNN)在长文本处理中的不足。以下将详细分析ChatGPT的模型架构,包括其基本组件、解码器结构、多层堆叠的特点以及自注意力机制的实现。
3.1 Transformer架构概述
Transformer模型的核心思想是通过自注意力机制来建模输入序列中不同位置之间的关系。与传统的RNN和LSTM等序列模型不同,Transformer允许模型在处理输入数据时同时关注所有位置的信息,从而极大地提高了并行处理能力和计算效率。
Transformer模型主要由以下两个部分组成:
- 编码器(Encoder):将输入序列转换为上下文相关的表示。
- 解码器(Decoder):根据编码器的输出和已有的生成序列,逐步生成目标序列。
ChatGPT仅使用了Transformer的解码器部分,专注于生成自然语言文本。
3.2 解码器结构
ChatGPT的解码器由多个层叠加而成,每一层包括两个主要的组成部分:自注意力机制和前馈神经网络(Feedforward Neural Network)。具体来说,解码器的每一层包括以下组件:
-
自注意力机制(Self-Attention):该机制允许模型在生成每个词时,动态地关注输入序列的不同部分。通过计算输入序列中词与词之间的关系,模型能够自适应地调整生成的内容,确保响应的连贯性与上下文相关性。
-
前馈神经网络:在自注意力层之后,解码器将自注意力层的输出传递给一个前馈神经网络。该网络通常由两层全连接层构成,使用非线性激活函数(如ReLU)来引入非线性特征。这一过程有助于模型捕捉更复杂的模式和结构。
-
层归一化(Layer Normalization):在每个自注意力层和前馈层之后,都应用层归一化,以稳定训练过程并加速收敛。层归一化可以降低内部协变量偏移(Internal Covariate Shift),从而使得网络更加稳定。
-
残差连接(Residual Connection):每个自注意力层和前馈网络的输出会与输入进行相加,形成一个残差连接。这种设计使得信号能够在网络中更有效地传播,缓解了深层网络训练中的梯度消失问题。
3.3 多层堆叠结构
ChatGPT的解码器由多层自注意力和前馈神经网络构成,这种多层堆叠的结构使得模型能够在不同的抽象层次上提取特征。具体来说,随着层数的增加,模型能够学习到更复杂的语言模式和特征,从而提高理解和生成能力。
通常,ChatGPT的层数可以达到数十层,这种深度使得模型能够学习到长距离依赖关系,并在生成文本时有效考虑上下文信息。多层结构的优势在于,它使得模型能够在多个层次上进行推理,捕捉输入数据中的细微差别。例如,对于一段对话,较低的层可能学习到基本的语法规则,而较高的层则能够理解语义和上下文,生成更为恰当的响应。
3.4 自注意力机制的实现
自注意力机制是Transformer架构的核心组件,对于ChatGPT的文本生成能力至关重要。以下是自注意力机制的具体实现过程:
-
输入表示:输入序列中的每个词首先被转换为固定维度的向量表示。这些向量通常是通过预训练的词嵌入(Word Embeddings)获得的,如Word2Vec或GloVe,或是通过上下文相关的嵌入模型(如BERT)获取。
-
计算注意力权重:自注意力机制根据输入词向量计算注意力权重。具体步骤是通过对每个词向量进行线性变换,得到查询(Query)、键(Key)和值(Value)三个向量。在计算注意力得分时,通过将查询向量与所有键向量进行点积,并通过Softmax函数将结果归一化为概率分布,从而得到每个词对于生成目标词的重要性评分。
-
加权求和:根据计算出的注意力权重,将值向量进行加权求和,形成一个新的上下文向量。这个上下文向量综合了输入序列中所有词的信息,能够反映出生成当前词时的重要上下文。
-
输出结合:最后,将自注意力层的输出与原始输入进行残差连接,并通过层归一化处理,形成最终的输出,供后续的前馈神经网络使用。
3.5 位置编码
由于Transformer架构不使用传统RNN中序列的时序信息,因此需要引入位置编码(Positional Encoding)来为每个输入词提供位置信息。位置编码通过正弦和余弦函数对不同位置进行表示,使得模型能够感知词语在序列中的相对位置。这一设计使得模型能够在处理长文本时仍然保持对顺序的敏感性。
3.6 模型的扩展性和灵活性
ChatGPT的模型架构具有很强的扩展性和灵活性,能够根据任务的需求进行调整。模型的层数、隐藏单元数、注意力头的数量等都可以根据具体应用进行配置。这种灵活性使得ChatGPT可以适应多种应用场景,从而满足不同用户的需求。
ChatGPT的模型架构通过结合Transformer的自注意力机制和多层堆叠结构,实现了强大的文本理解和生成能力。其独特的解码器设计、残差连接、层归一化及位置编码等特性,为生成高质量的自然语言提供了坚实的基础。了解这些架构细节,有助于开发者和研究人员更深入地掌握ChatGPT的工作原理,推动其在自然语言处理领域的广泛应用。
四、优化策略
ChatGPT的训练和推理过程涉及多种优化策略,以提高模型的性能、效率和生成文本的质量。这些优化策略不仅包括训练过程中的算法选择,还涉及正则化技术、超参数调整和高效的推理方法等。以下将详细阐述这些优化策略的具体内容及其重要性。
4.1 训练策略
在训练ChatGPT时,选择合适的训练策略至关重要。以下是一些关键的训练策略:
4.1.1 学习率调度
学习率是影响模型训练速度和性能的重要超参数。一般来说,较高的学习率可以加快收敛,但可能导致模型在最优点附近震荡,而较低的学习率则使收敛过程过慢。为了克服这个问题,通常采用学习率调度策略,如:
-
学习率衰减:在训练过程中,逐步降低学习率,这样可以在训练初期快速收敛,而在接近收敛时进行精细调整。
-
余弦退火(Cosine Annealing):根据余弦函数的周期性变化来调整学习率,使其在训练过程中呈现波动。在训练的不同阶段,学习率可以迅速增大或减少,有助于模型逃离局部最优解。
4.1.2 批量归一化(Batch Normalization)
批量归一化是一种常用的正则化技术,通过对每个小批量数据的输出进行标准化,来缓解内部协变量偏移(Internal Covariate Shift)。尽管在Transformer架构中不常用,但使用类似的层归一化(Layer Normalization)技术可以取得显著的效果。层归一化在每层的输入进行归一化,确保每层的输入分布相对稳定,从而加速模型的训练。
4.1.3 动态批量大小
在训练过程中,可以根据模型的收敛情况动态调整批量大小。采用较小的批量大小可以提高模型的泛化能力,而较大的批量大小则有助于加快训练速度。通过动态调整,可以在不同的训练阶段灵活选择最适合的批量大小。
4.2 正则化技术
正则化是防止模型过拟合的重要手段。ChatGPT采用多种正则化技术,以提高模型的泛化能力:
4.2.1 Dropout
Dropout是一种有效的正则化技术,通过在训练过程中随机将部分神经元的输出设为零,来降低模型的复杂度。这样可以防止模型对训练数据的过度依赖,从而增强其在未见过数据上的表现。
4.2.2 早停(Early Stopping)
早停是一种监测模型训练过程的技术,在验证集性能不再提升时提前停止训练。这一策略旨在防止模型在训练集上过拟合,从而保持其在测试集上的表现。通过设置适当的早停策略,可以有效提高模型的泛化能力。
4.3 超参数优化
超参数是影响模型训练过程和性能的关键因素。针对ChatGPT的训练,以下是一些常用的超参数优化策略:
4.3.1 网格搜索(Grid Search)
网格搜索是一种穷举搜索的策略,通过在预设的超参数范围内进行全面搜索,找到最佳的超参数组合。尽管这种方法较为耗时,但可以有效找到最优超参数。
4.3.2 贝叶斯优化(Bayesian Optimization)
贝叶斯优化是一种更为高效的超参数优化方法,通过构建代理模型(如高斯过程)来估计超参数的性能,以更少的实验次数找到最优超参数。与网格搜索相比,贝叶斯优化能够更快地收敛至最佳参数。
4.4 高效的推理方法
在模型的推理阶段,优化策略同样至关重要,尤其是在保证生成质量的同时提高响应速度。以下是一些常见的推理优化策略:
4.4.1 采样方法
在生成文本时,ChatGPT可以采用不同的采样方法来平衡生成的多样性和连贯性。常用的采样方法包括:
-
贪婪搜索(Greedy Search):在每一步选择概率最高的词语,虽然简单但可能导致生成的文本缺乏多样性。
-
温度采样(Temperature Sampling):通过设定“温度”参数来控制生成的随机性。较高的温度增加生成结果的随机性,有助于生成更富创意的文本,而较低的温度则使得生成的文本更加确定。
-
束搜索(Beam Search):通过保留多个最优序列来生成文本,可以在保证连贯性的同时提升生成质量。这种方法在处理长文本时尤为有效。
4.4.2 并行化推理
为了提高推理速度,可以对模型进行并行化处理。通过将输入序列拆分为多个小块并同时进行处理,可以显著减少生成时间。此外,利用现代GPU和TPU等硬件加速计算,也可以大幅提高推理效率。
4.5 模型压缩与量化
在实际应用中,模型的体积和运行速度也是需要考虑的重要因素。为此,可以采用模型压缩(Model Compression)和量化(Quantization)技术:
-
模型压缩:通过剪枝(Pruning)和知识蒸馏(Knowledge Distillation)等技术,减少模型参数的数量,从而降低模型的存储需求和计算复杂度。
-
量化:将模型参数从高精度浮点数转换为低精度表示(如整数),以减小模型大小并加速推理过程。量化技术可以在保持模型性能的同时,提高模型的运行效率。
4.6 持续监控与反馈
为确保ChatGPT在真实环境中的表现,持续的监控和反馈机制显得尤为重要。通过收集用户反馈和使用数据分析,开发者可以不断评估模型的性能,并根据实际应用中的表现进行动态调整。这种反馈机制不仅有助于发现潜在问题,还能为下一轮的模型更新提供依据。
通过上述优化策略,ChatGPT在训练和推理过程中得以提高性能和生成质量。这些策略不仅关注模型的准确性和效率,还重视其在不同应用场景中的适应性。随着技术的不断进步,ChatGPT的优化策略也将不断演化,以应对日益复杂的自然语言处理任务。了解和应用这些优化策略,可以帮助开发者更好地利用ChatGPT,实现更高水平的语言理解与生成。
五、结论
ChatGPT凭借其创新的预训练机制、灵活的微调过程、强大的Transformer模型架构以及多样的优化策略,成为了自然语言处理领域的重要工具。通过深入了解这些理论基础,开发者和研究人员可以更好地利用ChatGPT,推动人工智能技术的进一步发展。
相关文章:
ChatGPT背后的理论基础:从预训练到微调的深度解析
友情提示:本文内容由银河易创(https://ai.eaigx.com)AI创作平台GPT-4o-mini模型生成,仅供参考。请根据具体情况和需求进行适当的调整和验证。 随着人工智能特别是自然语言处理技术的飞速发展,ChatGPT作为一种强大的对话…...
Java八股文(下)
Java八股文下篇 八、JVM高级篇1、JVM的内存模型以及分区介绍一下?2、四种引用方式有什么?3、判断是否为垃圾算法?4、垃圾回收算法介绍一下?5、类的生命周期以及类加载过程6、加载器种类有什么?7、什么是双亲委派模型以…...
软考高级【网络规划设计师】 综合知识
引言:软考高级【网络规划设计师】共分为3个部分,综合知识,案例分析,论文。这里主要讲诉综合知识的相关内容。综合知识一共75道单选,题目跟网工类似,稍难。 第1章 计算机网络基础 考点分析: 本…...
django框架使用
一、app注册: pycharm使用django框架,注意在注册界面时就创建app,如果没有创建app。就在终端中运行 python manage.py startapp [app名] 然后再在settings.py里注册。 格式为: [app名].apps.[首字母大写的app名]Config 二、创…...
Linux主机用户登陆安全配置
Linux主机用户登陆安全配置 在Linux主机上进行用户登录安全配置是一个重要的安全措施,可以防止未经授权的访问。以下是如何创建用户hbu、赋予其sudo权限,以及禁止root用户SSH登录,以及通过ssh key管理主机用户登陆。 创建用户hbu 使用具有…...
MySQL | MySQL库、表的基本操作
MySQL库、表的基本操作01 一、库操作1.1 查看数据库1.2 创建数据库1.3 选择数据库1.4 查看创建数据库的SQL语句1.5 修改数据库1.6 删除数据库 二、表操作2.1 创建数据表2.2 查看表2.3 查看表结构2.4 查看创建数据库的SQL语句2.5 修改表2.6 删除表 ⚠️MySQL版本 8.0 一、库操作…...
【Uniapp-Vue3】在uniapp中使用pinia的基本用法
引入pinia: 在main.js中对pinia进行引入,使用和导出 import * as Pinia from pinia; // 引入pinia app.use(Pinia.createPinia()); // 使用pinia 在项目根目录下创建一个stores文件夹,里面创建一个counter.js文件 我们在counter.js中定义…...
mysql中的计算日期函数 理解、用法
三种计算日期的函数 函数用途示例DATEDIFF()计算两个日期的天数差DATEDIFF(2023-10-05, 2023-10-01) → 4TIMESTAMPDIFF()按指定单位(年、月、小时等)计算差TIMESTAMPDIFF(MONTH, 2023-01-01, 2023-03-01) → 2DATE_ADD()日期加法DATE_ADD(2023-10-01, …...
HTTP实验(ENSP模拟器实现)
目录 HTTP概述 HTTP实验 HTTPS 实验 HTTP概述 HTTP(HyperText Transfer Protocol,超文本传输协议),设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP定义了多种请求方法,常用的包括: …...
Ubuntu指令(一)
一、终端操作指令 打开终端,有两种便捷方式: 直接点击系统中的终端按钮;使用快捷键ctrl alt T。 关闭终端,同样有多种选择: 在终端输入exit指令;使用快捷键ctrl d;直接点击终端窗口的关闭…...
结构型模式 - 装饰者模式 (Decorator Pattern)
结构型模式 - 装饰者模式 (Decorator Pattern) 在展开讲装饰者模式之前,不得不提一下代理模式,因为这两者在一定的层度上是有相似性的, 通过对比可以让我们更好的理解装饰者. 定义与核心目的 装饰者模式 定义:动态地将责任附加到对象上。若要扩展功能,…...
11.Docker 之分布式仓库 Harbor
Docker 之分布式仓库 Harbor Docker 之分布式仓库 Harbor1. Harbor 组成2. 安装 Harbor Docker 之分布式仓库 Harbor Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器,由 VMware 开源,其通过添加一些企业必需的功能特性,例…...
vue2使用xlsx依赖导出excel并封装组件
1. 安装 npm install xlsx file-saver --save2. 简单封装 import * as XLSX from xlsx; import { saveAs } from file-saver;export function exportExcel(data, fileName) {return new Promise((resolve, reject) > {if (!data || !data.length) {return reject(new Erro…...
Python入门12:面向对象的三大特征与高级特性详解
面向对象编程(OOP)是Python编程中非常重要的一部分,它通过封装、继承和多态这三大特征,帮助我们更好地组织和管理代码。除此之外,Python还提供了一些其他特性,如类属性、类方法和静态方法,进一步…...
JVM之JVM的组成
Java 虚拟机(JVM)是 Java 程序的运行核心,它主要由类加载系统、运行时数据区、执行引擎和本地方法接口这几个关键部分组成。 类加载系统(Class Loading System) 类加载系统负责在程序运行时动态地将 Java 类加载到 J…...
计算机毕业设计SpringBoot+Vue.js中小型医院网站(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
滑动验证组件-微信小程序
微信小程序-滑动验证组件,直接引用就可以了,效果如下: 组件参数: 1.enable-close:是否允许关闭,默认true 2.bind:onsuccess:验证后回调方法 引用方式: <verification wx:if&qu…...
【DeepSeek问答】QProcess::start是异步的吗?会使UI卡顿吗?
好的,我现在需要回答用户关于QProcess::start是否是异步的,以及它是否会导致UI卡顿的问题。用户之前已经询问过如何开发一个调用7-Zip的Qt应用,并且我给出了示例代码。现在用户可能在使用过程中遇到了问题,或者想更深入了解QProce…...
WebXR教学 01 基础介绍
什么是WebXR? 定义 XR VR AR Web上使用XR技术的API WebXR 是一组用于在 Web 浏览器中实现虚拟现实(VR)和增强现实(AR)应用的技术标准。它由 W3C 的 Immersive Web 工作组开发,旨在提供跨设备的沉浸式体验…...
数据开发面试:DQL,
DQL常见面试题 where 和 having 的区别 三个排序开窗函数的区别 left join 用where 筛选 和 用on筛选的区别 ON 子句:用于定义连接条件,不会丢失左表的行。 WHERE 子句:用于过滤连接后的结果集,可能会丢失左表中没有匹配的行 …...
sage-huga改进SITAN
Sage-Husa自适应滤波算法 Sage-Husa自适应滤波算法是一种在递推滤波过程中实时估计和修正系统噪声和观测噪声统计特性的算法,从而降低系统模型误差,提高滤波精度。该算法基于卡尔曼滤波,并通过自适应调整噪声协方差矩阵来优化滤波效果。 算法原理 Sage-Husa滤波器的核心思…...
深入解析React useEffect与useLayoutEffect:区别、原理与实践
🌌 深入解析React useEffect与useLayoutEffect:区别、原理与实践 在React函数组件中,useEffect和useLayoutEffect是处理副作用的两个核心Hook。它们看似相似,但在执行时机和应用场景上有本质区别。本文将通过原理剖析、对…...
1分钟用DeepSeek编写一个PDF转Word软件
一、引言 如今,在线工具的普及让PDF转Word成为了一个常见需求,常见的pdf转word工具有收费的wps,免费的有pdfgear,见下文: PDFgear:一款免费的PDF编辑、格式转化软件-CSDN博客 还有网上在线的免费pdf转word工具smallp…...
百度觉醒,李彦宏渴望光荣
文 | 大力财经 作者 | 魏力 2025年刚刚开年,被一家名为DeepSeek的初创公司强势改写。在量化交易出身的创始人梁文锋的带领下,这支团队以不到ChatGPT 6%的训练成本,成功推出了性能可与OpenAI媲美的开源大模型。 此成果一经问世,…...
MySQL知识
1.Navicat客户端连接 打开navicat,点击连接,点击MySQL 输入连接名与密码,如果连接的mysql是windows下的mysql主机号就填写localhost 填写好后点击测试连接 点击确定,mysql连接navicat成功 2.MySQL数据定义语言(DDL) DDL用于数据库…...
从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(三) 实现注册 登录接口
1.划分文件夹 在src目录下创建controllers middleware models routes controllers 放具体的方法 signup login middleware 里面是中间件 请求的验证 models 放对象实体 routes 处理访问路径像/signup /login 等等 2. 接口开发 系统的主要 有用户认证 和 消息 2种类型…...
Pytorch实现之浑浊水下图像增强
简介 简介:这也是一篇非常适合GAN小白们上手的架构文章!提出了一种基于GAN的水下图像增强网络。这种网络与其他架构类似,生成器是卷积+激活函数+归一化+残差结构的组成,鉴别器是卷积+激活函数+归一化以及全连接层。损失函数是常用的均方误差、感知损失和对抗损失三部分。 …...
代码异常(js中forEach)NO.3
1. 环境 Vue3,Element Plsu 2. 示例代码 dataList.value.forEach((x) > {if (x.id ids.value[0]) {x { id: ids.value[0], ...form.value }}})3. 情景描述 循环不能正确改变dataList.value里面的值 4. 原因 在 JavaScript 中,forEach 的回调函…...
Vue 报错error:0308010C:digital envelope routines::unsupported 解决方案
Vue 报错error:0308010C:digital envelope routines::unsupported 解决方案 拿了一个比较老的项目部署在本地,然后先安装依赖npm install,最后npm run serve,在run serve的时候报错:报错error:0308010C:digital envelope routines::unsupportedÿ…...
stm32108键C-B全调性_动态可视化乐谱钢琴
108键全调性钢琴 一 基本介绍1 项目简介2 实现方式3 项目构成 二 实现过程0 前置基本外设驱动1 声音控制2 乐谱录入&基础乐理3 点阵屏谱点动态刷新4 项目交互控制5 录入新曲子过程 三 展示,与链接视频地址1 主要功能函数一览2 下载链接3 视频效果 一 基本介绍 …...
OpenIPC开源FPV之Adaptive-Link安装
OpenIPC开源FPV之Adaptive-Link安装 1. 源由2. 介绍2.1 天空端安装2.2 地面端安装 3. 问题汇总3.1 安装脚本问题3.2 网络安装问题3.3 非SSC30KQ/SSC338Q硬件3.4 代码疑问 4. 总结5. 后续 1. 源由 鉴于飞行过程,发现一些马赛克现象,且60FPS桌面30FPS的录…...
2016年下半年试题二:论软件设计模式及其应用
论文库链接:系统架构设计师论文 论文题目 软件设计模式(Software DesignPatter)是一套被反复使用的、多数人知晓的、经过分类编目的代码设计经验的总结。使用设计模式是为了重用代码以提高编码效率增加代码的可理解性、保证代码的可靠性。软件设计模式是软件开发中的…...
UE(虚幻)学习(五)初学创建NPC移动和遇到的问题
最近在学习UE中遇到一些问题,把这些问题记录一下,因为实在废了很大功夫。 在学习了UE5的例子中的第三人称移动Demo,想实现几个NPC在场景内移动。 本来想自己写一个类,遇到一堆问题花费了好几天时间,所以我把问题写下来…...
《Keras 2 :使用 RetinaNet 进行对象检测》:此文为AI自动翻译
《Keras 2 :使用 RetinaNet 进行对象检测》 作者:Srihari Humbarwadi 创建日期:2020/05/17 最后修改日期:2023/07/10 描述:实施 RetinaNet:用于密集对象检测的焦点损失。 (i) 此示例使用 Keras 2 在 Colab 中查看 • 介绍 目标检测是计算机中非常重要的问题 视觉。在…...
mfy学习笔记
创建表并导入数据 CREATE TABLE sales (id INT,salesperson STRING,region STRING,sales_amount INT,sale_date DATE );INSERT INTO sales (id, salesperson, region, sales_amount, sale_date) VALUES (1, Alice, North, 1000, 2023-01-01), (2, Bob, South, 1500, 2023-01-0…...
mysql 学习19 MYSQL管理以及使用工具
系统数据库 常用工具 mysql [rootCentOS7 home]# mysql -h192.168.245.131 -P3306 -uroot -pmimaroot -e "select * from tb_sanguo_user;" centositcast [rootCentOS7 home]# mysql -h192.168.245.131 -P3306 -uroot -pmimaroot centositcast -e "select * fr…...
Linux | RHEL / CentOS 中 YUM history / downgrade 命令回滚操作
注:英文引文,机翻未校。 在 RHEL/CentOS 系统上使用 YUM history 命令回滚升级操作 作者: 2daygeek 译者: LCTT DarkSun 为服务器打补丁是 Linux 系统管理员的一项重要任务,为的是让系统更加稳定,性能更加…...
JavaScript基础(函数及面向对象)
函数 定义函数 Java定义方法: public 返回值类型 方法名(){ return 返回值 } 定义函数方法一 eg:定义一个绝对值函数 function abs(x) {if (x>0){return x;}else {return -x;}} 调用函数: 注意:一旦执行到return代表函数…...
Open WebUI中的Pipelines是什么
Open WebUI中的Pipelines是什么 Open WebUI中的Pipelines(管道或流水线)是一种允许开发者定制使用大模型流程的机制,能为OpenAI兼容的UI客户端带来模块化、定制化的工作流。以下是一些Pipelines实例及使用方法: 函数调用管道(Function Calling Pipeline) 实例:假设要让…...
伪404兼容huawei生效显示404
根据上述思考,以下是详细的中文分步说明: --- **步骤 1:获取目标设备的User-Agent信息** 首先,我们需要收集目标设备的User-Agent字符串,包括: 1. **iPhone设备的User-Agent**: Mozi…...
Linux 病毒扫描工具 ClamAV 使用
Linux 病毒扫描工具 ClamAV 使用 功能安装包管理器安装手动安装RPM/DEB包配置用户与目录更新病毒库 基本使用命令扫描文件/目录常用参数 高级配置实时监控(clamd服务)定时自动扫描 常见问题解决病毒库更新失败权限错误扫描速度慢 功能 官网:h…...
Mobaxterm服务器常用命令(持续更新)
切换文件夹 cd path # for example, cd /gpu03/deeplearning/进入不同GPU ssh mgmt ssh gpu01 ssh gpu03寻找文件位置 find /path -name file_name #for example, find / -name lib #在根目录下搜寻名为lib文件 #for example, find /home/deeplearning -name "lib"…...
[特殊字符]《封印adb的黑暗通道:让系统文件成为魔法禁书区的终极指南》[特殊字符]
第一章:当adb变成泄密特洛伊木马 "曾经,adb是程序员的阿拉丁神灯,如今却成了产品经理的噩梦!" —— 某秃头CTO的血泪控诉 某日,产品经理惊恐发现:自家黑科技APP竟被竞争对手用adb pull轻松窃取…...
LangChain教程 - RAG - 支持的100种向量数据库
系列文章索引 LangChain教程 - 系列文章 随着人工智能和机器学习应用的快速发展,尤其是在自然语言处理(NLP)、图像识别、推荐系统等领域,对高效的向量存储和检索需求日益增长。向量存储用于保存来自深度学习模型或其他机器学习算…...
如何使用tushare pro获取股票数据——附爬虫代码以及tushare积分获取方式
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据 总结 一、Tushare 介绍 Tushare 是一个提供中国股市数据的API接口服务,它允许用户…...
ESP32S3:解决RWDT无法触发中断问题,二次开发者怎么才能使用内部RTC看门狗中断RWDT呢?
目录 基于ESP32S3:解决RWDT无法触发中断问题引言解决方案1. 查看报错日志2. 分析报错及一步一步找到解决方法3.小结我的源码基于ESP32S3:解决RWDT无法触发中断问题 引言 在嵌入式系统中,RWDT(看门狗定时器)是确保系统稳定性的重要组件。然而,在某些情况下,RWDT可能无法…...
如何在视频中提取关键帧?
在视频处理中,提取关键帧是一项常见的任务。下面将介绍如何基于FFmpeg和Python,结合OpenCV库来实现从视频中提取关键帧的功能。 实现思路 使用FFmpeg获取视频的关键帧时间戳:FFmpeg是一个强大的视频处理工具,可以通过命令行获取…...
基于 Python 的电影市场预测分析系统设计与实现(源码 + 文档)
大家好,今天要和大家聊的是一款基于 Python 的“电影市场预测分析”系统的设计与实现。项目源码以及部署相关事宜请联系我,文末附上联系方式。 项目简介 基于 Python 的“电影市场预测分析”系统主要面向以下用户角色:电影制片方、电影发行…...
2022年全国职业院校技能大赛网络系统管理赛项模块A:网络构建(样题6)-网络部分解析-附详细代码
目录 附录1:拓扑图 附录2:地址规划表 1.SW1 2.SW2 3.SW3 4.SW4 5.VSU 6.SW7 7.R1 8.R2 9.R3 10.AC1 11.AC2 12.EG1 13.EG2 附录1:拓扑图 附录2:地址规划表...
道路三维数字化技术产品方案介绍(软硬件一体,适用于各等级公路)
目录 1、方案介绍2、设备系统简介3、设备系统技术指标4、数据处理软件简介5、数据管理平台简介6、成果展示 1、方案介绍 交通运输部印发《关于推进公路数字化转型加快智慧公路建设发展的意见》,推动公路建设、养护、运营等全流程数字化转型。提出了2027年和2035年的…...