GPT-1, GPT-2, GPT-3, GPT-3.5, GPT-4论文内容解读

news2024/11/19 11:30:59

目录

  • 1 ChatGPT概述
    • 1.1 what is chatGPT
    • 1.2 How does ChatGPT work
    • 1.3 The applications of ChatGPT
    • 1.3 The limitations of ChatGPT
  • 2 算法原理
    • 2.1 GPT-1
      • 2.1.1 Unsupervised pre-training
      • 2.1.2 Supervised fine-tuning
      • 2.1.3 语料
      • 2.1.4 分析
    • 2.2 GPT-2
    • 2.3 GPT-3
    • 2.4 InstructGPT (GPT-3.5孪生模型)
      • 2.4.1 对齐技术
    • 2.5 GPT-4
  • 3 总结
  • 4 参考

1 ChatGPT概述

1.1 what is chatGPT

ChatGPT (Generative Pre-Trained Transformer) 是由OpenAI团队与2022年11月基于GPT-3.5 (目前已经开放基于GPT-4的ChatGPT模型)开发出来的一个大语言聊天机器人模型。GPT基于Transformer模型结构,ChatGPT通过对输入的指令 (prompt) 来生成文本,更适应聊天机器人,客服等这类型对话应用。模型基于大量的对话语料进行训练,包括网站,书籍,社交媒体等文本语料,目前ChatGPT支持理解生成多种语言的文本,包括英语,中文,法语,德语等。

1.2 How does ChatGPT work

要了解ChatGPT是怎么工作的,首先我们需要来看下ChatGPT是怎么训练出来的,ChatGPT工作阶段主要有如下几个过程:

  • 预训练 (Pre-training) 阶段
    在预训练阶段,ChatGPT使用了来自互联网上的大规模的文本数据集进行训练,这些数据包含了广泛的内容:新闻,维基百科,书籍,网络文本信息等。预训练的目标是让ChatGPT学习自然语言的语法,语义以及常识知识。ChatGPT采样的是Transformer结构作为模型的基础,通过采用自注意力机制 (self-attention) 来捕捉输入序列中单词之间的关系,通过预训练过程,ChatGPT学会了上下文的理解以及句子结构等。在预训练过程中,ChatGPT通过自回归 (autoregressive) 的方式进行训练,通过将输入序列中的一部分作为上下文,预测下一个单词或者标记,通过这种方式,模型逐渐学习到了语言的统计规律和潜在的语义含义

  • 微调 (Fine-tuning) 阶段
    在预训练完成后,ChatGPT需要经过微调来适应特定的任务或应用场景。微调阶段需要特定的对话数据集,这些数据集用于模型进行监督训练。在微调阶段,模型可以学习如何根据上下文生成连贯和有意义的回复,在微调的过程中通常会使用一些技术来引导模型的生成,比如加权重要性采样 (weighted importance sampling) 或使用特定的响应样本作为模型输出的参考。这些技术可以帮助改善模型生成的质量和准确性。

  • 预测 (predict) 阶段
    一旦ChatGPT完成了训练过程,输入一个指令或者一个问题,ChatGPT就可以生成像人类一样的回答。ChatGPT主要基于学到的知识以及对语言的理解进行生成回答,通过给定的上下文输入,ChatGPT从模型中的词汇概率分布中采用生成。ChatGPT可以提供有帮助的有信息的回答,但是毕竟是AI模型,还是可能存在生成不准确或者不可靠的信息。所以有时候需要从可靠的资源信息里确认模型生成的信息是否可靠。

1.3 The applications of ChatGPT

ChatGPT在许多领域有很多的应用,其中最常见的应用可以归纳如下:

  • 客服问答:ChatGPT可以用来充当各种客服支持,与用户交互,帮助解决用户关于产品或者服务等相关问题。
  • 个性化推荐:ChatGPT可以分析用户的偏好以及过去的一些交互来提供产品,电影,书籍或者音乐等个性化推荐。
  • 语言翻译:ChatGPT可以提供实时的语言翻译,使得用户可以与说不同语言的人进行交流,打破语言障碍。
  • 内容生成:ChatGPT可以协助产生各种不同目的的文本内容,比如写一篇文章,产品描述,社交媒体内容等,也可以产生有创意的建议,主题想法等帮助用户克服书写障碍。
  • 教育协助:ChatGPT可以扮演一个虚拟的导师或者教育者助理,回答学生的问题,解释概念,提供各科的指导。
  • 虚拟个人助理:ChatGPT可以扮演一个虚拟的个人助理,帮助用户管理他们的行程,设置提醒,做预订,找信息等。
  • 心理健康支持:ChatGPT可以提供个人心理健康问题的一些指导和支持,可以提供信息,方案以及富有同情心的协助用户处理压力,焦虑或者沮丧情绪。但是,ChatGPT并不能代替专业的心理健康咨询师。
    上面只是大概举出了一些常见的应用,ChatGPT可以在很多场景中发挥作用。在使用ChatGPT,我们可能需要监控ChatGPT的偏见,保护用户的隐私以及确保透明度等问题。

1.3 The limitations of ChatGPT

ChatGPT有很多益处和应用,但是它也有一些限制,如下是目前ChatGPT的一些问题:

  • 缺乏真实世界的知识:ChatGPT对实时信息以及知识是没法获取的,它的知识受限于训练数据,所以导致对最新的一些事件,新闻等信息是没有感知的。
  • 没有校验信息的能力:ChatGPT可以提供信息以及回复,但是它没有能力去校验它产生信息的真实性和准确性。所以在一些关键或者敏感信息,要是从模型中获取,进行事实性的校验是很重要的。
  • 信息冗余:ChatGPT有时候会产生较长的或者过于详细的细节内容,这样的回答并不是总是有必要,有时候会导致不那么相关或者有必要。ChatGPT并不总是优先考虑简明扼要的回答。
  • 缺乏长期的上下文和记忆信息:在一定程度上,ChatGPT不会保持之前较长时间的对话信息。ChatGPT将用户的每个query当做独立的,所以并不会记得之前的对话详细的信息。这样会导致不连贯以及重复回答的问题。
  • 对输入的短语或者prompt敏感:问问题的方式或者prompt如何构造的都会对ChatGPT的回答结果影响较大。即使对相似的query只是短语构成或者prompt稍微不一样,ChatGPT可能产生不一样的回答。
  • 偏见问题:由于ChatGPT是语言模型,从之前的训练数据学习知识,若训练数据本身存在偏见问题,ChatGPT产生的答案有时候也会带来偏见。

所以,我们可以把ChatGPT当做一个提供信息和协助的工具,能够意识到ChatGPT的局限性,对ChatGPT提供的回答需要做严格的评估。

2 算法原理

2.1 GPT-1

Improving Language Understanding by Generative Pre-Training
2018年发表,训练数据40GB,模型参数大小1.3B。

2.1.1 Unsupervised pre-training

基于大量的语料进行无监督学习,无监督学习建模目标如下:
给定无监督语料的上下文tokens U = { u 1 , u 2 , . . . , u n } U=\{u_1,u_2,...,u_n\} U={u1,u2,...,un},使用标准的语言模型目标函数是最大化如下似然函数:
L 1 ( U ) = ∑ i log ⁡ P ( u i ∣ u i − k , . . . , u i − 1 ; θ ) L_1(U) = \sum_i \log P(u_i|u_{i-k},...,u_{i-1};\theta) L1(U)=ilogP(uiuik,...,ui1;θ)
其中 k k k表示的是文本窗口大小,条件概率 P P P是一般是由参数为 θ \theta θ的神经网络建模预测得到。而在GPT-1算法里,使用的是多层Transformer decoder 作为语言模型,这个模型对输入的上下文tokens通过使用multi-head的self-attention产生目标tokens的向量表征:
h 0 = U W e + W p h_0 = UW_e + W_p h0=UWe+Wp
h l = t r a n s f o r m e r b l o c k ( h l − 1 ) ∀ i ∈ [ 1 , n ] h_l = transformer_{block}(h_{l-1}) \forall i \in [1,n] hl=transformerblock(hl1)i[1,n]
P ( u ) = s o f t m a x ( h n W e T ) P(u) = softmax(h_nW_e^T) P(u)=softmax(hnWeT)
其中 U = ( u − k , . . . , u − 1 ) U = (u_{ -k}, ...,u_{-1}) U=(uk,...,u1)是上下文tokens的索引向量, n n n代表模型层数, W e W_e We是tokens向量矩阵, W p W_p Wp是位置向量矩阵。

2.1.2 Supervised fine-tuning

基于上述的pre-train训练完后,接下来就是基于有标签的数据进行fine-tune。每一个样本由输入序列 x 1 , . . . , x m {x^1,...,x^m} x1,...,xm以及对应的标签 y y y组成,输入经过我们Pre-trained的模型获得最后的transformer block提取的向量 h l m h_l^m hlm,然后将其输入到一层参数为 W y W_y Wy的线性输出层预测 y y y值:
P ( y ∣ x 1 , . . . , x m ) = s o f t m a x ( h l m W y ) P(y|x^1,...,x^m) = softmax(h_l^mW_y) P(yx1,...,xm)=softmax(hlmWy)
目标函数是最大化如下函数:
L 2 ( C ) = ∑ ( x , y ) l o g P ( y ∣ x 1 , . . . , x m ) L_2(C) = \sum_{(x,y)}logP(y|x^1,...,x^m) L2(C)=(x,y)logP(yx1,...,xm)
论文中发现加入语言模型建模作为辅助任务有利于提升fine-tune阶段的模型的泛化能力以及加速模型的收敛速度。所以,在fine-tune阶段,加入了语言模型的学习辅助任务,所以最终的目标函数如下:
L 3 ( C ) = L 2 ( C ) + λ × L 1 ( C ) L_3(C) = L_2(C) + \lambda \times L_1(C) L3(C)=L2(C)+λ×L1(C)
在Fine-tune阶段,我们只需要fine-tune的参数是 W y W_y Wy以及分隔符tokens的词向量。整体结构如下所示:
在这里插入图片描述
其中fine-tune过程的任务有文本分类,语言推理,句子相似性,问答任务,如上图所示,详细细节如下:

  • Natural Language Inference (NLI): 也被称为文本蕴涵识别,任务旨在评估计算机系统对于理解和推断自然语言文本之间关系的能力。具体而言,NLI 要求系统阅读一对句子(通常是前提和假设),并判断这两个句子之间的关系,这个关系通常被归为三类:
    蕴涵(Entailment): 如果一个句子的意义包含在另一个句子中,那么这两个句子之间存在蕴涵关系。
    矛盾(Contradiction): 如果一个句子的意义与另一个句子的意义相矛盾,那么这两个句子之间存在矛盾关系。
    中性(Neutral): 如果两个句子之间没有蕴涵关系,也没有矛盾关系,那么它们被认为是中性的,即彼此之间的关系是中立的。
    NLI 是自然语言处理领域中一个重要的任务,它涉及到语义理解和推理,对于许多应用,如问答系统、机器翻译和对话系统等,都具有关键性的作用。

  • Question answering and commonsense reasoning:
    Question Answering (QA): 问题回答任务旨在使计算机系统能够理解和回答自然语言中提出的问题。这包括阅读理解任务,其中系统需要从给定的文本中提取信息来回答问题,以及开放领域的问答任务,其中系统需要回答用户提出的任意问题。
    Commonsense Reasoning: Commonsense reasoning 是指计算机系统理解和应用常识知识来推理和解决问题的能力。这涉及到对于日常情境和人类行为的理解,而这些情境和行为可能在文本中没有直接提及,但是基于常识知识可以进行推断。

  • Semantic Similarity: 预测两个句子是否是语义等同,这一概念涉及到对语言意义的理解,而不仅仅是表面的语法结构。

  • Classification: 文本分类任务是比较常见的,论文基于两种不同的语料库进行了两种文本分类任务。一种是基于CoLA语料库判断一个句子是不是语法正确的,另外一个分类任务是基于SST-2语料库的情感分类。

2.1.3 语料

无监督学习的训练语料来自BooksCorpus dataset书籍语料库文本信息,包括冒险,科幻,浪漫等题材7000多本书籍。

2.1.4 分析

论文对比了几种试验变量的效果对比,整体试验结论如下:

  • 在fine-tune阶段,将pre-train阶段学习的模型层数参数迁移越多效果越好
    在这里插入图片描述

  • 生成性预训练有效性验证
    论文给出了只用pre-training的模型观察试验效果的表现,发现预训练模型在训练过程中预测也稳步增加,表明生成性预训练支持学习广泛的与任务相关的功能,试验结果如下:
    在这里插入图片描述

2.2 GPT-2

Language Models are Unsupervised Multitask Learners
2019年发表,GPT-2有1.5B (billion 十亿)也就是15亿的参数,训练样本40G。从paper内容来看,GPT-2相比GPT核心变化点如下:

  • 训练数据重点是来自网上高质量信息,包含了45 million个链接,抽取了800w的文本,大概有40G的文本量。

  • 论文中探测了训练集与测试集重合度对模型表现的影响。论文提出了Bloom filters,给定一个数据集,通过计算8-grams与WebText数据集的重合比率来判断测试集和训练集重合度情况

  • 证明了预训练模型不做进一步有监督的调整在具体的任务中也可以取到不错的效果,基于无监督的pre-train学习是一个很值得探索的一个研究领域

2.3 GPT-3

Language Models are Few-Shot Learners
2020年发表,训练数据数十TB数据,模型参数大小175B。如下是论文作者公开训练GPT-3的数据来源:
在这里插入图片描述
其中最主要数据来源是Common Crawl数据。
在GPT-3论文中,作者给出了一些一些比较有意思的试验发现。

  • 模型越大,对于in-context learning效果越明显,如下图所示:
    在这里插入图片描述

  • 模型越大,对于few-shot学习效果增速更快,如下图所示:
    在这里插入图片描述
    如下是对few-shot, one-shot, zero-shot学习的一个示例图:
    在这里插入图片描述

few-shot学习通过给模型一些例子进行推测,但不更新模型的参数,few-shot学习最主要的优点是可以减少了对任务特定数据的需求,并降低了从大而狭窄的微调数据集中学习过于狭隘分布

数据清洗(Common Crawl Filtering)
数据主要来自网上数据,所以需要对数据质量进行清洗,论文作者给出了几个方案:

  • 生成一个自动过滤低质量文本器,训练一个能够判断文档是高质量还是低质量文本的分类器
    (正样本是:WebText,Wikiedia,and our web books corpu,负样本: unfiltered Common Crawl)
    特征使用Spark’s standard tokenizer and HashingTF。
    基于帕累托分布采样如下:在这里插入图片描述
    其中a=9。

  • 为了加强模型的鲁棒性避免模型过拟合,作者将文档与其它文档重合度高的进行删除,使用spark中的MinHashLSH进行判别,同时将WebText内容从CommonCrawl库中删除。

2.4 InstructGPT (GPT-3.5孪生模型)

Training language models to follow instructions with human feedback
在openAI的官网里面,写了这一段内容:

We’ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests. ChatGPT is a sibling model to InstructGPT, which is trained to follow an instruction in a prompt and provide a detailed response.

所以可以看出chatgpt(gpt-3.5)与InstructGPT是一对孪生姐妹模型,训练方式和模型结构完全一致,只是在采集训练数据的时候不一样。
相比上述的GPT-1,GPT-2, GPT-3,论文摘要里就指出无监督的大语言模型给出的结果存在不真实以及对用户无用的回答等,所以在InstructGPT用不同任务的有监督数据对GPT-3进行fine-tune,同时用用户的反馈基于强化学习对模型进一步fine-tune。论文指出经过fine-tune只有1.3B参数InstructGPT比175B参数的GPT-3效果好,虽然参数少了100倍多。作者给出的结论是:基于用户反馈对大模型进行fine-tune是一个很用潜力值得研究的方向
如下图是各模型的对比结果:
在这里插入图片描述
其中GPT, GPT(prompted)都是基于GPT-3作为baseline,SFT (175B的GPT-3进行Supervised Fine-Tune)。PPO-ptx (InstructGPT),PPO (无pretrain)。
如下是论文给出的训练模型流程步骤说明:
在这里插入图片描述
论文也给出了试验中的一些发现和总结如下:

  • InstructGPT比GPT-3在答案的真实性上有提高

  • 通过修改我们的RLHF(Reinforcement Learning with Human Feedback)微调,可以最小化在公共自然语言处理数据集上的性能退化

  • 尽管instructions与在RLHF微调阶段的分布不一样,InstructGPT也表现出很强的范化能力,这表明模型能够根据"给的instruction"自己产生出一些概念。

  • InstructGPT也会犯一些小的错误

训练InstructGPT的流程如下:

Step 1:用人工标注的数据在预训练GPT-3上进行fine-tune。
Step 2:对多个模型输出的结果(选择模型个数K=4,K=9),用标注人员对其模型产出结果排序,然后训练一个奖励模型预测两两对比的效果,具体一点的奖励模型的损失函数如下:
l o s s ( θ ) = − 1 ( 2 k ) E ( x , y w , y l ) ∼ D [ l o g ( σ ( r θ ( x , y w ) − r θ ( x , y l ) ) ) ] loss(\theta)=-\frac{1}{(^k_2)}E_{(x,y_w,y_l)} ∼D[log(\sigma(r_{\theta}(x,y_w)-r_{\theta}(x,y_l)))] loss(θ)=(2k)1E(x,yw,yl)D[log(σ(rθ(x,yw)rθ(x,yl)))]
其中 r θ ( x , y ) r_{\theta}(x,y) rθ(x,y)是奖励模型对于prompt x以及基于 θ \theta θ参数的模型y,对于pair对 y θ y_{\theta} yθ以及 y w y_w yw,其中 y w y_w yw是更高的排序输出。D是基于人对比出来的数据集。

Step 3:使用PPO (Proximal Policy Optimization) 算法优化策略。
在这里插入图片描述
从论文研究中,作者给出了一些工作结论如下:

  • 提升模型对齐的能力相对于预训练而言是适度的。作者还指出,RLHF(Reinforcement Learning from Human Feedback)使语言模型对用户更有帮助方面非常有效,尤其是相对于模型尺寸增加超过100倍。这表明目前增加对现有语言模型的对齐性投资相对于培训更大模型而言更具成本效益。
  • 试验也表面,InstructGPT能够将“遵循指令“范化到没有进行监督学习过的任务中。比如,能够在非英语任务以及编程任务进行学习。这是非常重要的,因为在每个任务中都获得人类反馈数据是十分昂贵的。需要更多的研究去学习当一个模型的能力越来越强的时候,如何提升模型的范化能力。
  • 论文验证了来自研究的对齐技术。在机器学习和人工智能领域,"对齐技术"通常指的是一系列方法和策略,旨在确保训练出的模型的行为与人类期望一致,以及符合一定的价值观和规范。这是为了使机器学习模型更好地适应实际应用场景和用户需求。对齐研究历来相对抽象,主要集中在理论结果、小规模合成领域或在公共NLP数据集上训练ML模型。论文中的工作为在17个真实世界客户中投入生产使用的AI系统的对齐研究提供了基础。这使得对这些技术的有效性和局限性有了一个重要的反馈循环。

2.4.1 对齐技术

通常对齐技术是将模型产出的结果更加符合人的偏好。在论文工作中,给出的对齐尝试如下:

  • 直接基于标注者标注结果对模型进行fine-tune,但是发现标注者在很多标注样本中表现出了不一致的结论。
  • 基于标签的说明,然后让标注者根据说明准则选择一个他们偏好的一个结果。然后大家会集中一个聊天室中,关于边缘问题进行回答说明。
  • 训练数据是由OpenAI客户通过OpenAI API Playground发送给模型的提示确定的,因此在隐性地对齐于客户认为有价值的内容
  • penAI的客户并不能代表所有潜在或当前语言模型用户,更不能代表所有受语言模型使用影响的个人和群体。在这个项目的大部分时间里,使用OpenAI API的用户是从等待列表中选择的。等待列表的初始种子是OpenAI的员工,使最终的用户群体偏向整个网络群体

总而言之,设置一个公平、透明,并且合适的问责机制的对齐过程是十分困难的。这篇论文的目标是展示这种对齐技术可以与特定人类参考群体在特定应用中保持一致。

2.5 GPT-4

GPT-4 Technical Report 升级GPT-4没有在训练数据集以及模型结构和大小上公开,但是作为一个多模态模型,可以接收文本和图片信息然后产出文本信息。从论文试验结果看出GPT-4在很多的测试任务中,都比GPT-3.5效果好,如下是一个试验数据对比:
在这里插入图片描述
在GPT-4中,作者给出了用GPT-4基础版与GPT-4经过强化学习后的性能在基准测试中的比较。基础模型的平均分数为73.7%,而经过强化学习后的模型的平均分数为74.0%,发现经过强化学习训练并未显著改变基础模型的能力 (在GPT-3.5中RLHF却效果显著啊),试验数据如下:在这里插入图片描述
GPT-4显示出了很强的图片理解能力,如下例子所示:
在这里插入图片描述
也能够很好的解读pdf内容:
在这里插入图片描述

3 总结

模型发表年份模型参数训练数据主要改进点
GPT-120181.3B40GB引入了Transformer模型,并使用自回归生成的方式进行预训练
GPT-220191.5B40GB增加了模型规模,引入了更多的参数,提高训练文本的质量
GPT-32020175B数十TB在规模上进一步提升,引入了更多的参数,并采用了更多的数据进行训练
GPT-3.52022175B数十TB引入用户反馈的强化学习(RLHF)进行微调
GPT-42023未公开未公开未公开

4 参考

How ChatGPT actually works
How does Chat GPT work?
Proximal Policy Optimization (PPO)
Chatbots to ChatGPT in a Cybersecurity Space
Scaling Laws for Neural Language Models
Emergent Abilities of Large Language Models
Proximal Policy Optimization Algorithms

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

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

相关文章

【计算机网络】计算机网络复习资料(期末)

复习要点 一、填空题 1.计算机网络的两个重要基本特点 连通性、共享 2.计算机中的端口号类型 两类端口号 { 服务器端 { 熟知端口号(系统端口号)数值为0~1023 登记端口号,1024~49151 } 客户端使用的端口号:短…

uniapp vue3怎么调用uni-popup组件的this.$refs.message.open() ?

vue2代码 <!-- 提示信息弹窗 --><uni-popup ref"message" type"message"><uni-popup-message :type"msgType" :message"messageText" :duration"2000"></uni-popup-message></uni-popup>typ…

架构学习(四):scrapy下载中间件实现动态切换User-Agent

scrapy下载中间件实现动态与固定UserAgent 前言关卡&#xff1a;实现动态切换User-Agentscrapy设置User-Agent方式梳理User-Agent生效梳理为何选择在下载中间件中实现自定义User-Agent下载中间件 结束 前言 请求头User-Agent是比较常规的反爬手段&#xff0c;不同站点对其检测…

uniapp+uView 【详解】录音,自制音频播放器

效果预览 代码实现 <template><view class"btnListBox"><view class"audioBox" v-if"audioLength"><u-row><u-col span"2"><u--text aligncenter :text"currentTime"></u--text>…

seatunnel数据集成(三)多表同步

seatunnel数据集成&#xff08;一&#xff09;简介与安装seatunnel数据集成&#xff08;二&#xff09;数据同步seatunnel数据集成&#xff08;三&#xff09;多表同步seatunnel数据集成&#xff08;四&#xff09;连接器使用 seatunnel除了单表之间的数据同步之外&#xff0c;…

BC100 有序序列合并

描述 输入两个升序排列的序列&#xff0c;将两个序列合并为一个有序序列并输出。 数据范围&#xff1a; 1≤n,m≤1000 1≤n,m≤1000 &#xff0c; 序列中的值满足 0≤val≤30000 输入描述&#xff1a; 输入包含三行&#xff0c; 第一行包含两个正整数n, m&#xff0c;用空…

前端使用pdf.js进行pdf文件预览的第二种方式:Viewer.html

背景 最近需要实现一个PDF文档预览的功能&#xff0c;按理说&#xff0c;如果只是简单的预览&#xff0c;使用<embed>、<object>等就可以实现。 但是&#xff0c;我们的需求要实现搜索&#xff01;而且&#xff0c;文档还都超大&#xff0c;均300页以上。那<e…

【网站项目】039菜匣子优选生鲜电商系统

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

网络编程-序列化和反序列化/应用层协议/

预备知识 理解为什么要应用层协议&#xff1f; 在学过套接字编程后&#xff0c;我们对协议的理解更深了一步&#xff0c;协议也就是一种约定&#xff0c;也可以通俗理解为一种口头约定&#xff0c;对于通信双方来说是必须要遵守的。TCP和UDP协议它们是传输层控制协议&#xf…

XAI:探索AI决策透明化的前沿与展望

文章目录 &#x1f4d1;前言一、XAI的重要性二、为什么需要可解释人工智能三、XAI的研究与应用四、XAI的挑战与展望 &#x1f4d1;前言 随着人工智能技术的快速发展&#xff0c;它已经深入到了我们生活的方方面面&#xff0c;从智能手机、自动驾驶汽车到医疗诊断和金融投资&…

[UI5 常用控件] 07.SplitApp,SplitContainer

文章目录 前言1. SplitApp1.1 组件结构1.2 Demo1.3 mode属性 2. SplitContainer 前言 本章节记录常用控件SplitApp&#xff0c;SplitContainer。主要功能是在左侧显示Master页面&#xff0c;右侧显示Detail页面。 Master页面和Detail页面可以由多个Page组成&#xff0c;并支持…

2024数学建模美赛F题Reducing Illegal Wildlife Trade原创论文讲解(含完整python代码)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了数学建模美赛本次F题目非法野生动物贸易完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 F题论文共42页&…

ios设备解锁 --Apeaksoft iOS Unlocker

Apeaksoft iOS Unlocker是一款针对iOS系统的密码解锁工具。其主要功能包括解锁多种锁屏类型&#xff0c;包括数字密码、Touch ID、Face ID和自定义密码。此外&#xff0c;它还可以帮助用户删除iPhone密码以进入锁屏设备&#xff0c;忘记的Apple ID并将iPhone激活为新的&#xf…

2023年12月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,共50分) 第1题 下列有关分治算法思想的描述不正确的是?( ) A:将问题分解成的子问题具有相同的模式。 B:将问题分解出的各个子问题相互之间有公共子问题。 C:当问题足够小时, 可以直接求解。 D:可以将…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之QRCode组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之QRCode组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、QRCode组件 用于显示单个二维码的组件。 子组件 无。 接口 QRCode(value: st…

MongoDB的操作和理解

什么是MongoDB? MongoDB&#xff1a;基于分布式文件存储的数据库由C语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库(nosql)之间的产品&#xff0c;是非关系数据库当中功能最丰富&#xff0c;最像关系数据库的。 Mo…

【LeetCode】每日一题 2024_2_4 Nim 游戏(找规律,博弈论)

文章目录 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01;题目&#xff1a;Nim 游戏题目描述代码与解题思路 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 题目&#xff1a;Nim 游戏 题目链接&#xff1a;292. Nim 游戏 题目描述 代码与解题…

ubuntu系统下c++ cmakelist vscode debug(带传参的debug)的详细示例

c和cmake的debug&#xff0c;网上很多都需要配置launch.json&#xff0c;cpp.json啥的&#xff0c;记不住也太复杂了&#xff0c;我这里使用cmake插件带有的设置&#xff0c;各位可以看一看啊✌(不知不觉&#xff0c;竟然了解了vscode中配置文件的生效逻辑&#x1f923;) 克隆…

go test单元测试详解

目录 介绍&测试范围 测试函数 执行机制 常用执行模式 子测试 帮助函数Helper() 测试覆盖率 介绍&测试范围 go test测试是go自带的测试工具&#xff0c;主要包括单元测试和性能测试两大类。 包括了工程目录下所有以_test.go为后缀名的源代码文件&#xff0c;这…

C++ 语法文件

程序运行时产生的数据都属于临时数据&#xff0c;程序结束就会被释放。 通过文件可以可以将数据持久化 c中对文件操作需要包含头文件fstream 文件的类型分为两种 1.文本文件 文件以文本的ASCII码形式存储在计算机中 2.二进制文件 稳重以文本的二进制形式存储在计算机中 用…