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

【大模型系列篇】预训练模型:BERT GPT

2018 年,Google 首次推出 BERT(Bidirectional Encoder Representations from Transformers)。该模型是在大量文本语料库上结合无监督和监督学习进行训练的。 BERT 的目标是创建一种语言模型,可以理解句子中单词的上下文和含义,同时考虑到它前后出现的单词。

2018 年,OpenAI 首次推出 GPT(Generative Pre-trained Transformer)。与 BERT 一样,GPT 也是一种大规模预训练语言模型。但是,GPT 是一种生成模型,它能够自行生成文本。 GPT 的目标是创建一种语言模型,该模型可以生成连贯且适当的上下文文本。

BERT和GPT是两种基于Transformer架构的预训练模型,BERT侧重于理解句子中的上下文和含义,适合词语级别的任务;而GPT则专注于生成连贯的文本,适用于生成式任务。两者在训练方式、任务目标和适用场景上有所不同,BERT使用掩码语言模型和下一句预测,GPT采用自回归语言模型。

首先我们拿BERT、GPT和ELMo【关于ELMO在上篇《词向量 - 从Word2Vec到ELMo》中已经有介绍】的模型结构图做一个简要对比,可以帮助更清晰的理解三类模型的差异。

BERT是基于Transformer架构的双向编码器。它通过掩码语言建模和下一个句子预测的任务进行无监督预训练。

GPT是基于Transformer架构,它是一个单向的生成式模型。GPT通过自回归方式预训练,即根据前面的词预测下一个词。

简单来说,如果我们把 ELMO 的特征抽取器(LSTM)换成Transformer,那么我们会得到 BERT模型结构。如果我们把 GPT 预训练阶段换成双向语言模型,也会得到 BERT模型结构。

BERT, GPT之间的不同点

  • 关于特征提取器:

    • GPT和BERT采用Transformer进行特征提取;

    • BERT采用的是Transformer架构中的Encoder模块;

    • GPT采用的是Transformer架构中的Decoder模块。

  • 单/双向语言模型:

    • GPT和BERT都源于Transformer架构;

    • GPT的单向语言模型采用了经过修改后的Decoder模块,Decoder采用了look-ahead mask,只能看到context before上文信息,未来的信息都被mask掉了;

    • BERT的双向语言模型采用了Encoder模块,Encoder只采用了padding mask,可以同时看到context before上文信息,以及context after下文信息。

很多NLP任务表明Transformer的特征提取能力强于LSTM,

对于ELMo而言,采用1层静态token embedding + 2层LSTM,提取特征的能力有限。

BERT, GPT各自的优点和缺点

  • GPT:

    • 优点:GPT使用了Transformer提取特征,使得模型能力大幅提升。

    • 缺点:GPT只使用了单向Decoder,无法融合未来的信息。

  • BERT:

    • 优点:BERT使用了双向Transformer提取特征,使得模型能力大幅提升。添加了两个预训练任务, 掩蔽语言模型(MLM) + 下一句预测(NSP)的多任务方式进行模型预训练。

    • 缺点:模型过于庞大,参数量太多,需要的数据和算力要求过高,训练好的模型应用场景要求高。更适合用于语言嵌入表达,语言理解方面的任务,不适合用于生成式的任务。


http://www.mrgr.cn/news/13235.html

相关文章:

  • zookeeper集群安装
  • 什么是YAML?学这一篇就够了
  • 系统编程-多线程1
  • 学懂C++(四十三):深入剖析现代C++设计模式:从常用经典到前沿的全面解析
  • 关于异常断电后jmeter的jmx文件异常变成二进制文件并成功恢复的心酸历程
  • 如何使用ssm实现投稿系统+vue
  • 力扣3224.使差值相等的最少数组改动次数
  • ZooKeeper 的特性及其在分布式系统中的锁应用
  • FFmpeg源码:avio_read函数分析
  • 谷粒商城实战笔记-问题记录-Feign远程调用丢失请求头问题
  • 提升学术论文质量的智能助手:ChatGPT
  • 自动化常用元素定位
  • 找到K个最接近的元素(LeetCode)
  • 自动化分支合并:一键切换到Master并完成合并操作的脚本
  • C++——STL——栈(stack)
  • Go语言开发通过本地数据xdb文件​查询获取IP地址的归属地区及运营商名称
  • CSS中的Flexbox布局和Grid布局有什么区别?适用场景
  • WPF—画刷(使用画刷实现背景颜色渐变效果)
  • C语言—字符函数和字符串函数
  • 基于SpringBoot+Vue+MySQL的小区物业管理系统