收藏级教程:预训练语言模型发展史——从ELMo、BERT到GPT,大模型的必经之路

NLP理解层次模型:从认知地图到高效学习实践 在认知科学和系统思维领域,理解层次模型是一个揭示人类思维与行为逻辑层次的元认知框架。该模型将认知结构分为环境、行为、能力、信念/价值观、身份和精神六个层级,高层次的变化会向下辐射影响低层次,而低层次的努力未必能解决高层次问题。这一原理在个人成长、问题解决和技能习得中具有重要技术价值,它提供了一种诊断卡点、规划路径的系统方法。在技术学习特别是NLP(自然语言处理)领域,该模型能帮助学习者跳出盲目收集资料或无效行动的陷阱,通过自上而下的愿景对齐和自下而上的执行迭代,构建内在统一的学习体系。例如,从身份层(如“成 阅读详情

本文系统梳理了大模型之前的预训练语言模型发展历程,从ELMo、GPT、BERT等里程碑模型,到各类改进创新如RoBERTa、ALBERT、ELECTRA等知识增强型模型,以及UniLM、XLNet等新型架构。文章详细分析了各模型的核心思想、技术突破和优缺点,揭示了预训练语言模型如何通过pretrain-finetune范式推动NLP发展,为理解大模型演进提供了坚实基础。

1、预训练语言模型的里程碑

预训练语言模型要从词向量说起。词向量利用文本数据,构造出词之间的共现关系,一般将在一句话中共现的词作为正样本,随机负采样构造负样本,采用CBOW或Skip-Gram的方式进行训练,以此达到让经常共现的词,能够具有相似向量化表示。其本质是NLP中的一个先验:频繁在文本中共现的两个词,往往语义是相近的。然而,词向量的问题也比较明显,同一个词在不同的语境中,含义往往是不同的,而词向量对于某一个词只能生成一个固定的向量,无法结合语境上下文信息进行调整。

Deep contextualized word representations(ACL 2018) 提出了ELMo模型,利用双向LSTM模型结合上下文语境信息生成词的embedding。ELMo和以往的词向量模型最大的差别是,每个词的embedding都是整个句子的一个函数,即每个词的embedding和这个句子的上下文信息是相关的。ELMo语言模型的模型结构采用了一个正向LSTM和一个反向LSTM联合训练的方式,优化两个方向的语言模型优化目标。在完成训练后,每个单词在每层LSTM都会产生正向、反向两个embedding,对每个单词所有层的embedding拼接在一起,得到这个词在这句话中的embedding。ELMO在使用到下游任务时,会把数据每句话先过一遍ELMo,得到每个词的embedding,然后将ELMo生成的embedding和通过词向量得到的embedding拼接到一起,用于后续任务预测。

此后,语言模型预训练成为NLP中的核心之一。在Improving Language Understanding by Generative Pre-Training(2018) 中提出了GPT模型。相比ELMo,GPT真正意义实现了pretrain-finetune的框架,不再需要将模型中的embedding取出来,而是直接把预训练好的模型在下游任务上finetune,对于不同任务采用不同的输入或输出层改造,让下游任务更贴近上游预训练模型。值得一提的是,在后续的prompt等优化中,又将下游任务向上游任务的贴近更近了一步,即将下游任务的输入和输出逻辑也进行变化去适应上游任务。让下游任务向上游任务对齐,是一个NLP中的发展方向。GPT模型主体采用的是Attention Is All You Need(NIPS 2017) 提出的Transformer模型,使用的优化目标是正向语言模型。

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(2018) 提出了Bert模型,也是目前在NLP中应用最广泛的预训练模型之一。相比GPT和ELMo,Bert采用了一种Mask Language Model(MLM)这一不同的目标,通过随机mask掉输入文本中的某些token,然后利用上下文信息进行预测,实现对数据语义关系的提取。这种MLM相比之前的语言模型优化目标优点是,可以从多个方向同时进行信息抽取来预测当前token,而传统的语言模型(前向后后向)每一次只能从一个方向提取信息。即使将前向和后向结合,也无法实现真正意义上的同时利用前后文信息预测当前token。同时,Bert还引入了Next Sentence Prediction(NSP)任务,在预训练阶段构造了两个文本pair对输入,预测这两个文本的相关性。这个任务相当于是在sentence维度的信息提取,和下游的文本匹配类任务更加契合,这在单纯的语言模型中是难以学到的。

对Bert、GPT、ELMo三者模型结构图的一个简要对比如下,可以帮助更清晰的理解三类模型的差异。

上文介绍了ELMo、GPT、Bert等3个预训练语言模型的代表工作。下面我们梳理一下,在此之后,学术界对这些经典的预训练语言模型进行了哪些方面的改进和创新。

2、针对GPT的改进创新

在GPT之后,OpenAI进一步提出了GPT-2、GPT-3,旨在通过更大的模型容量、更多的训练语料进一步提升预训练语言的效果。Language Models are Unsupervised Multitask Learners(2018) 提出了GPT-2。本文相比GPT增加了语料、增大了模型尺寸,模型的基本结构和GPT差不多。GPT-2的核心思想是,任何一个有监督NLP任务,都可以看成是语言模型的一个子集,只要预训练语言模型的容量足够大,理论上就能解决任何NLP任务。任何NLP任务都可以表示成p(output | input, task)的形式,语言模型就是无监督的多任务学习。因此GPT-2的核心就是提升模型的容量和数据多样性,让语言模型能够达到解决任何任务的程度。

在随后的Language Models are Few-Shot Learners(2020) 中提出了GPT-3,进一步增大了模型尺寸,模型参数量是GPT-2的100倍。GPT-3的核心思想在于不进行finetune(zero-shot learning)就可以对下游任务生成预测结果,其做法为将下游任务转换为一系列的文本,直接通过语言模型预测出结果。下图为一个例子,对比了finetune方法和GPT-3中提出的zero-shot方法的区别,便于对这种预测方法进行理解。通过增加对任务的描述文本,来让模型知道当前要解决什么任务,进而实现预测。

可以看出,GPT的后续优化思路,建立在不断提升训练语料丰富度和模型容量,使语言模型能够从大量文本中学习到各个NLP任务的解决方法,再通过zero-shot learning的方式实现不进行finetune,而是将下游任务转换成语言模型的输入形式,来让预训练模型直接进行下游任务预测。

在GPT的基础上,Meta在LLaMA: Open and Efficient Foundation Language Models中提出了LLaMA,LLaMA是目前很多SOTA开源大模型的基础,包括DeepSeek、千问等在内的很多大模型的模型机构大体上都沿用了LLaMA。LLaMA的主体结构仍然基于Transformer,相比于GPT主要引入进行了一些结构上的细节优化,包括Pre-Normalization、RMSNorm、SwiGLU激活函数、Rotray Embedding等模块进一步提升语言模型效果。

3、针对BERT的改进创新

在Bert的基础上,有很多针对其的改进,这里我们主要介绍3个模型。RoBERTa: A Robustly Optimized BERT Pretraining Approach(2019) 细致的对Bert模型的训练方式进行了对比实验和分析,并基于此总结出了能够提升Bert效果的训练方法。相比Bert,RoBerta的主要改进在于3个方面。首先采用了dynamic mask,即每个文本进入训练时动态mask掉部分token,相比原来的Bert,可以达到同一个文本在不同epoch被mask掉的token不同,相当于做了一个数据增强。其次,分析了训练样本应该如何构造,原来的Bert采用segment pair的形式,训练样本为两个segment组合到一起并使用NSP任务预测两个任务是否相关。RoBERTa发现从同一个document构造输入单句子的输入文本而非pair对,并且不使用NSP任务,效果会有一定提升。最后,RoBERTa增大了batch size以及对BPE(输入文本的分词方法进行了升级。

ALBERT: A LITE BERT FOR SELF-SUPERVISED LEARNING OF LANGUAGE REPRESENTATIONS(2020) 提出了一个轻量级的Bert模型,以此降低Bert的运行开销。为了减少Bert资源开销,本文主要提出了两个优化:Factorized embedding parameterization以及Cross-layer parameter sharing。Factorized embedding parameterization对输入的embedding进行分解,原始的Bert将token输入的embedding维度E和模型隐藏层维度H绑定了,即E=H,前者表示每个token固有信息,后者表示每个token结合了上下文的动态信息,后者被证明是更重要的。因此本文提出可以让E和H接绑,选择一个较小的E不会影响模型效果,同时显著降低了由于输入词表V变大带来的内存开销上升。具体的,将E变成远小于H的维度,再用一层全连接将输入embedding映射到H维。这样模型embedding部分参数量从V*H下降到了V*E+E*H。Cross-layer parameter sharing让Bert每层的参数是共享的,以此来减小模型参数量。

除了上述两个降低Bert运行开销的优化外,ALBERT提出了inter-senetnce loss这一新的优化目标。原来Bert中的NSP任务可以理解为topic prediction和coherence prediction两个任务。其中topic prediction是一种特别简单的任务,由于其任务的简单性,导致coherence prediction学习程度不足。本文提出将coherence prediction单独分离出来,相比Bert,正样本仍然是一个document相邻的两个segment,负样本变成这两个segment的顺序交换。

ELECTRA: PRE-TRAINING TEXT ENCODERS AS DISCRIMINATORS RATHER THAN GENERATORS(ICLR 2020) 对pretrain阶段的MLM任务进行了优化。该方法的核心思路采用了GAN的思路。模型包括一个generator 和一个discriminator。输入文本仍然会被随机mask,然后generator会生成被mask掉的token,这里和MLM类似。而discriminator会判断每个位置的token是否是generator生成的(如果generator正好生成了正确的token,也认为其生成的是正确的)。通过这种对抗学习的方式,让discriminator预测被mask掉的token能力逐渐增强,也即从文本中提取信息的能力增强。最终的预训练模型使用的是discriminator部分。ELECTRA的缺点在于由于有了一个单独的Generator,模型整体开销会更大,Generator一般采用一个参数量较少的MLM。

4、 引入知识的预训练

ERNIE: Enhanced Language Representation with Informative Entities(2019) 从知识增强的角度对Bert进行优化。相比原来的Bert,ERNIE引入了如知识图谱等外部知识信息。这样的好处在于,有一些文本如果不知道某些词组代表一个实体的话,模型是很难学习的,例如一些人名、地名等。如下面的例子,不知道橘子中的这些实体是书名、歌名,就无法识别出作者的职业。

ERNIE在Bert中引入了知识图谱中的实体信息,模型结构如下图。模型主要分为T-Encoder和K-Encoder两个部分。T-Encoder类似Bert,从输入的文本上提取每个token的信息表示。K-Encoder主要是引入知识信息,将输入文本中的实体识别出来,然后获取这些实体的embedding(利用TransE在构造好的知识图谱上预训练得到),然后将token的embedding和实体的embedding进行一个融合,融合方法是将实体embedding添加到对应token序列的位置。每层融合输入上一层的token embedding和entity embedding,生成新的token embedding和entity embedding,公式可以表示为:

此外,ERNIE在预训练阶段增加了token-entity relation mask任务,在20%的entity上,会mask掉token和entity的对齐关系,让模型来预测当前token对应的是哪个entity。

此外,还有一个同名工作***ERNIE: Enhanced Representation through Knowledge Integration(2019)***也使用了类似的思路,希望通过引入外部知识信息提升预训练模型效果。和Bert主要差别在于,本文将MLM任务分成basic-level、phrase-level、entity-level三种类型,在entity-level mask中,mask掉的不是单个token,而是输入文本中某个entity对应的连续多个token,其和Bert的差异如下图。

后面这篇工作后续又推出了2.0版本,ERNIE 2.0: A Continual Pre-Training Framework for Language Understanding(2019)。该工作在pretrain阶段引入了很多task来辅助pretrain阶段的学习。首先构造pretrain阶段的任务,主要是无监督或弱监督的训练数据容易获得的任务,同时也会引入知识图谱中的信息构造一些训练任务。接下来,本文采用continual multitask learning的方式,不断构造新的任务,并且以增量的方式进行多任务学习,每来一个任务都把历史所有任务放到一起进行多任务学习,避免忘记历史学到的知识。本文的核心点在于提出的多种构造预训练任务的方式,包括Knowledge Masking Task(即上一篇ERNIE中的对entity或phrase进行mask)、Capitalization Prediction Task、Token-Document Relation Prediction Task等,感兴趣的同学可以阅读论文深入了解。

5、 其他类型的预训练语言模型

在GPT和BERT的启发下,后续涌现了很多其他类型的预训练语言模型,这里主要介绍UniLM、XLNet、BART、T5等4种。

Unified Language Model Pre-training for Natural Language Understanding and Generation(NIPS 2019) 提出了UniLM预训练语言模型。本文首先总结了之前语言模型的特点:EMLo采用前向+后向LSTM、GPT采用从左至右的单向Transformer、BERT采用双向Attention。虽然BERT的双向Attention取得很好效果,但是这种特性也导致其无法像GPT等使用单向方法的语言模型一样适用于文本生成这种任务。UniLM融合了3种语言模型优化目标,通过精巧的控制mask方式来在一个模型中同时实现了3种语言模型优化任务,在pretrain过程交替使用3种优化目标。下图比较形象的描述了UniLM是如何利用mask机制来控制3种不同的优化任务,核心思路是利用mask控制生成每个token时考虑哪些上下文的信息。

XLNet: Generalized Autoregressive Pretraining for Language Understanding(NIPS 2019) 提出了XLNet模型,融合了BERT和GPT这两类预训练语言模型的优点,并且解决了BERT中pretrain和finetune阶段存在不一致的问题(pretrain阶段添加mask标记,finetune过程并没有mask标记)。本文将无监督语言模型分成两类,一类是AR自回归模型,如GPT、ELMo这种使用单向语言模型建模概率分布的方法;另一类是AE自编吗模型,如BERT这种通过预测句子中token的方法。XLNet融合了AR模型和AE模型各自的优点,既能建模概率密度,适用于文本生成类任务,又能充分使用双向上下文信息。XLNet实现AR和AE融合的主要思路为,对输入文本进行排列组合,然后对于每个排列组合使用AR的方式训练,不同排列组合使每个token都能和其他token进行信息交互,同时每次训练又都是AR的。但是,实现这种模式也存在很多问题,文中针对这些问题提出了解法,由于篇幅原因具体内容我们会在后续相关文章再进行详细介绍。

BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension(2019) 提出了一种新的预训练范式,包括两个阶段:首先原文本使用某种noise function进行破坏,然后使用sequence-to-sequence模型还原原始的输入文本。下图中左侧为Bert的训练方式,中间为GPT的训练方式,右侧为BART的训练方式。首先,将原始输入文本使用某些noise function,得到被破坏的文本。这个文本会输入到类似Bert的Encoder中。在得到被破坏文本的编码后,使用一个类似GPT的结构,采用自回归的方式还原出被破坏之前的文本。

文中尝试了多种类型的noise function,如token masking、sentence permutation、text infilling等,其中sentence permutation+text infilling的方式取得了最好的效果。Text infilling指的是随机mask某些span。下图展示了文中提出的一些noise function方法。

Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer(2023) 统一了各种类型的文本到文本任务,提出了一种统一的Encoder-Decoder语言模型,该方法也是目前业内很多其他领域的大模型使用最多的架构。文中对Encoder-Decoder、纯Decoder、UniLM等方式进行了对比验证,发现Encoder-Decoder的效果是最优的。通过prompt将所有NLP任务都统一成文本到文本的生成任务,训练统一的T5模型。

6 、 总结

本文介绍了预训练语言模型的发展历程,包括EMLo、BERT、GPT等经典模型,也包括在此基础上的一些改进创新。这一阶段属于深度学习语言模型高速发展的阶段,整体基于pretrain-finetune的范式解决各类NLP问题。在后续的章节中,会为大家介绍大模型阶段语言模型的进一步发展,包括ChatGPT、DeepSeek、PaLM等各类成熟的大模型。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

在这里插入图片描述

为什么要学习大模型?

我国在A大模型领域面临人才短缺,数量与质量均落后于发达国家。2023年,人才缺口已超百万,凸显培养不足。随着AI技术飞速发展,预计到2025年,这一缺口将急剧扩大至400万,严重制约我国AI产业的创新步伐。加强人才培养,优化教育体系,国际合作并进是破解困局、推动AI发展的关键。

在这里插入图片描述

在这里插入图片描述

大模型入门到实战全套学习大礼包

1、大模型系统化学习路线

作为学习AI大模型技术的新手,方向至关重要。 正确的学习路线可以为你节省时间,少走弯路;方向不对,努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划,带你从零基础入门到精通!

img


2、大模型学习书籍&文档

学习AI大模型离不开书籍文档,我精选了一系列大模型技术的书籍和学习文档(电子版),它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。

在这里插入图片描述

3、AI大模型最新行业报告

2025最新行业报告,针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

img

4、大模型项目实战&配套源码

学以致用,在项目实战中检验和巩固你所学到的知识,同时为你找工作就业和职业发展打下坚实的基础。

img

5、大模型大厂面试真题

面试不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我精心整理了一份大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

img

适用人群

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范
  • …
第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署
  • …
第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建
  • …
第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案
  • …

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

https://img-blog.csdnimg.cn/img_convert/05840567e2912bcdcdda7b15cba33d93.jpeg

一文读懂「PTMs , Pre-training models」预训练模型 预训练模型是指在大规模数据集上预先进行训练的神经网络模型,通常在通用任务上学习到的特征可以被迁移到其他特定任务中。预训练模型的思想是利用大规模数据的信息来初始化模型参数,然后通过微调或迁移学习,将模型适应在特定的目标任务上。即在训练结束时结果比较好的一组权重值,研究人员分享出来供其他人使用。我们可以在github上找到许多具有权重的库。 阅读详情

相关推荐

从零开始:构建自己的预训练语言模型

1. 背景介绍 1.1 什么是预训练语言模型? 预训练语言模型(Pre-trained Language Model,简称PLM)是一种基于大量无标注文本数据进行预训练的深度学习模型,可以捕捉自然语言的语法、语义和一些常识知识。通过预训练和微调(Fine-tuning)两个阶段,PLM可以迁移

AI天才研究院 340

预训练语言模型笔记

在图片分类任务中,常使用(Convolutional Neural Network,CNN)网络,对于由多个层级结构组成的CNN来说,不同层学到的图像特征是不一样的,越浅的层学到的特征越通用,越深的层学到的特征和其体任务的关联性越强。语言模型:给定一句由n个词组成的句子W=w1,W2,......,wn,计算这个子的概率P(w1,W2,...,wn),或者根据前文计算下一个词的概率P(wn/w1,W1,W2..,wn-1)的模型。从机器学习的角度看,语言模型是对语句的概率分布的建模。

2401_83617942的博客 1680

预训练模型详细介绍

预训练模型的思想是利用大规模数据的信息来初始化模型参数,然后通过微调或迁移学习,将模型适应到特定的目标任务上。预训练模型的优势在于它们能够捕捉大规模数据中的通用特征,从而提高模型在特定任务上的性能,尤其是在数据有限的情况下。预训练模型的原理是利用大规模数据集进行初始训练,从而在无监督或自监督的方式下,捕捉数据中的通用特征。预训练模型的常见做法是在大规模的数据集上进行无监督或自监督的预训练。总之,预训练模型在多个领域都具有广泛的应用,可以帮助加速模型的训练、提高性能,并且在数据量不足的情况下仍然表现出色。

优快云 精品推荐 3690

预训练模型是什么

你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整参数,直到网络的损失越来越小。在训练的过程中,一开始初始化的参数会不断变化。当你觉得结果很满意的时候,你就可以将训练模型的参数保存下来,以便训练好的模型可以在下次执行类似任务时获得较好的结果。这个过程就是 pre-training。之后,你又接收到一个类似的图像分类的任务。这时候,你可以直接使用之前保存下来的模型的参数来作为这一任务的初始化参数,然后在训练的过程中,依据结果不断进行一些修改。

qq_34425255的博客 5643

IAP固件升级(附代码)-- Bootloader接收BIN文件(带Xmodem和CRC16/32校验)

祝各位在新的一年发大大大大大大大大大大大财、涨涨涨涨涨涨涨涨涨涨涨工资

m0_69014205的博客 5589

CrackerXI+脱壳实战:解决iOS应用逆向中的加密文件问题

本文详细介绍了如何使用CrackerXI+工具对iOS应用进行脱壳,解决App Store应用因FairPlay DRM加密而无法进行静态分析的难题。通过图形化界面一键操作,CrackerXI+能高效获取解密后的可执行文件,为逆向工程奠定基础。文章涵盖工具选型、实战步骤及常见问题排查,是iOS逆向入门与进阶的实用指南。

seed的博客 261

预训练语言模型

预训练语言模型

关于我的学习记录 2903

数学建模传染病模型_【数学建模】之传染病模型

点击【拇指笔记】,关注我的公众号。SE模型缺点:没有考虑接触到的人中还有一部分病人,所以所有人并不会全部被感染。建立模型:已感染人数(病人)每个病人每天有效接触(足以使人致病)人数为根据(1)(2)可以建立模型:等式两边同时除以\Delta t由导数定义有同时,取\Delta t = 1天由(1)(5)两式可得最终的模型:Logistic模型缺点:区分已感染者(病人)和未感染者(健康人)...

weixin_39590453的博客 2228

预训练模型

1 预训练模型由来 预训练模型是深度学习架构,已经过训练以执行大量数据上的特定任务(例如,识别图片中的分类问题)。这种训练不容易执行,并且通常需要大量资源,超出许多可用于深度学习模型的人可用的资源,我就没有大批次GPU。在谈论预训练模型时,通常指的是在Imagenet上训练的CNN(用于视觉相关任务的架构)。ImageNet数据集包含超过1400万个图像,其中120万个图像分为1000个类别(大...

lucca的专栏 3万+

Frida实战:如何用adb快速连接网易mumu模拟器进行参数Hook(附常见CPU架构问题排查)

本文详细介绍了如何使用Frida和adb快速连接网易MuMu模拟器进行参数Hook,包括环境配置、架构适配、Frida-server部署及常见问题排查。特别针对CPU架构兼容性问题提供了实用解决方案,帮助开发者高效完成逆向调试任务。

weixin_29274969的博客 291

数据库:关系运算整理大全(包括关系代数、元组关系演算、域关系演算)

数据库关系运算: 1. 关系代数(基本关系代数、附加关系代数、扩展关系代数) 2. 元组关系演算 3. 域关系演算

ysji's blog 2万+

一网打尽:14种预训练语言模型大汇总

每天给你送来NLP技术干货!来自:圆圆的算法笔记作者:Fareise预训练语言模型是NLP中的核心之一,在pretrain-finetune这一阶段的NLP发展中发挥着举足轻重的作用。预训练语言模型的无监督训练属性,使其非常容易获取海量训练样本,并且训练好的语言模型包含很多语义语法知识,对于下游任务的效果会有非常明显的提升。本文首先介绍预训练语言模型的里程碑方法,然后进一...

zenRRan的博客 1万+

华为OD机试 - 素数之积 - 数学问题(Java 2025 A卷 100分)

每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天优快云在线答疑。

学Java,找哪吒 2134

详解预训练模型 ——从词向量到GPT模型

摘要:本文介绍了GPT模型的基本概念,讲解了GPT模型所需要的基本知识,包括词嵌入,自注意力机制,Transformer框架和Softmax函数,同时还详细阐述了GPT模型的数学原理和实现过程。对于人们了解并掌握预训练模型具有较好的帮助作用。 一、预训练模型简介 预训练模型是一个通过大量数据上进行训练并被保存下来的网络。可以将其通俗的理解为前人为了解决类似问题所创造出来的一个模型,有了前人的模型,当我们遇到新的问题时,便不再需要从零开始训练新模型,而可以直接用这个模型入手,进行简单的学习便可解决该新问题。

haojiangcong的博客 1万+

FPGA 学习笔记:Vitis IDE launch failed 的解决方法

FPGA 学习笔记:Vitis IDE launch failed 的解决方法

坚韧与专注 1万+

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

uniapp显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于uniApp实现vr全景预览,加载全景图,uni-app全景预览插件,UNI-APP实现3D全景图,实现720°全景图展示,uniapp全景视频播放,uniapp项目实现vr720度全景图片预览,在网页上展示760全景图片和视频,全景图场景切换,UNIAPP全景VR图,uniapp加载720全景图_uniapp怎么加载vr图片,uniapp实现vr全景看房,uni-app实现全景效果,加载很慢卡怎么办,实现全景预

🏆 前端领域优质创作者 1万+

深度学习中预训练模型是指什么?如何得到?

转自: 作者:微软亚洲研究院 链接:https://www.zhihu.com/question/327642286/answer/1465037757 来源:知乎 预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 根据微软亚洲研究院副院长、国际计算语言学会(ACL)前任主席、中国计算机学会副理事长周明在2020年中国人工智能大会做的主题为《预训练模型在多语言、多模态任务的进展》的特邀报告,我们整理了以下答案,希望能对你有所帮助~ 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮

ZhangJingHuaJYO的博客 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【2025年最新】一文读懂预训练模型(非常详细),零基础入门到精通,看这一篇就够了

对于希望学习算法或尝试现有框架的人来说,预训练的模型是一个很好的帮助。由于时间限制或计算资源的限制,不可能总是从头构建模型,这就是为什么存在预训练模型!通常而言,预训练好的网络参数,尤其是底层的网络参数,若抽取出特征跟具体任务越无关,越具备任务的通用性,所以这是为何一般用底层预训练好的参数初始化新任务网络参数的原因。而高层特征跟任务关联较大,实际可以不用使用,或者采用Fine-tuning用新数据集合清洗掉高层无关的特征抽取器。预训练模型是指在大规模数据集上预先进行训练的神经网络模型,通常在。

2401_84205765的博客 2939

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【深度学习】预训练语言模型-BERT

BERT是一种预训练语言模型(pre-trained language model, PLM),其全称是Bidirectional Encoder Representations from Transformers。

Dong_ZH的博客 2万+

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

预训练语言模型综述(一)—— 预训练语言模型及其历史

先引入一些概念: Features: 语言有哪些基本特征: syntactic or semantic features of the language universal language representations (through large corpus) 特征的表示方法: Distributed Representation 发展史: 模型发展简史 Non-neural network methods Neural models (CNN, RNN, GNN, Attention Mechan

Forskamse's Blog 4895

【大语言模型】5分钟了解预训练、微调和上下文学习

预训练)是语言模型学习的初始阶段。在预训练期间,模型会接触到大量未标记的文本数据,例如书籍、文章和网站。在大量未标记文本数据上训练语言模型。比如说在包含数百万本书、文章和网站的数据集上预训练像 GPT-3 这样的语言模型。预训练目标是捕获文本语料库中存在的底层模式、结构和语义知识。预训练(Pre-training)是指在目标任务之前,使用大规模数据集和无监督学习的方法对模型进行初始训练。在预训练阶段,模型通过学习输入数据的内部表示来获取知识和特征,以便在后续的具体任务上进行微调或迁移学习。

小哲的博客 1万+

预训练语言模型(GPT,BERT)

预训练语言模型:GPT 与 BERT 介绍

myDarling_的博客 2028

预训练语言模型(PLMs)综述

预训练语言模型(PLMs)是在大规模语料库上以自监督方式进行预训练的语言模型。在过去的几年中,这些PLM从根本上改变了自然语言处理社区。传统的自监督预训练任务主要涉及。在对这些PLM进行预训练后,可以对下游任务进行微调。按照惯例,这些微调包括。在下游任务上对PLM进行微调通常会带来非凡的性能提升,这就是plm如此受欢迎的原因。在本教程中,从两个角度提供广泛而全面的介绍:为什么这些PLM有效,以及如何在NLP任务中使用它们。

weixin_45828972的博客 9882
上一篇: 【必收藏】保姆级教程:从零开始手把手教你构建RAG知识库,附完整代码+调优策略
下一篇: 【深度收藏】大模型+Agent智能客服实战:技术原理与应用案例解析
冻感糕人~
博客等级 码龄3年 8926粉丝 2393原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值