BERT和GPT模型简介

article/2025/9/15 12:33:31

1. 引言

从现在的大趋势来看,使用某种模型预训练一个语言模型看起来是一种比较靠谱的方法。从之前 AI2 的 ELMo,到 OpenAI 的 fine-tune transformer,再到 Google 的 BERT、GPT,全都是对预训练的语言模型的应用。

本文将主要介绍 BERT 和 GPT 这两种常见语言模型及其应用场景,较少涉及具体原理的讲解(自身水平不足)。

2. BERT

2.1 简介

BERT 在2018年出现,被认为是 NLP 的 ImageNet 时刻,可以最好地表示单词和句子,增强对自然语言的理解,进而最好地捕捉基本语义和关系,有效增强了很多下游 NLP 任务的性能。BERT 可以理解为一个非常大的已经训练好的语言模型,涵盖了尽可能多的知识,能够作为很多任务的前置处理模块,类似预处理模块。

BERT 开发的两个步骤:第 1 步,你可以下载预训练好的模型(这个模型是在无标注的数据上训练的,可免费下载)。然后在第 2 步只需要关心模型微调即可。

在这里插入图片描述

BERT 模型都有大量的 Encoder 层,BASE 版本由 12 层 Encoder,Large 版本有 20 层 Encoder。同时,这些 模型也有更大的前馈神经网络(分别有 768 个和 1024 个隐藏层单元)和更多的 attention heads(分别有 12 个和 16 个),超过了原始 Transformer 论文中的默认配置参数。

2.2 举例说明(句子分类)

在这里插入图片描述

为了训练这样一个模型,你主要需要训练分类器(上图中的 Classifier),在训练过程中几乎不用改动BERT模型(可固定这部分的参数不变,仅更新分类器模块的参数)。这个训练过程称为微调,是迁移学习的概念。

2.2.1 模型输入

在这里插入图片描述

第一个输入的 token 是特殊的 [CLS],它 的含义是分类(class的缩写)。

就像 Transformer 中普通的 Encoder 一样,BERT 将一串单词作为输入,这些单词在 Encoder 的栈中不断向上流动。每一层都会经过 Self Attention 层,并通过一个前馈神经网络,然后将结果传给下一个 Encoder。

在这里插入图片描述

在模型架构方面,到目前为止,和 Transformer 是相同的(除了模型大小,因为这是我们可以改变的参数)。我们会在下面看到,BERT 和 Transformer 在模型的输出上有一些不同。

2.2.2 模型输出

每个位置输出一个大小为 hidden_size(在 BERT Base 中是 768)的向量。对于上面提到的句子分类的例子,我们只关注第一个位置的输出(输入是 [CLS] 的那个位置)。

在这里插入图片描述

这个输出的向量现在可以作为后面分类器的输入。论文里用单层神经网络作为分类器,取得了很好的效果。

在这里插入图片描述

如果你有更多标签(例如你是一个电子邮件服务,需要将邮件标记为 “垃圾邮件”、“非垃圾邮件”、“社交”、“推广”),你只需要调整分类器的神经网络,增加输出的神经元个数,然后经过 softmax 即可。

2.3 词嵌入技术

2.3.1 Word2Vec

单词不能直接输入机器学习模型,而需要某种数值表示形式,以便模型能够在计算中使用。通过 Word2Vec,我们可以使用一个向量(一组数字)来恰当地表示单词,并捕捉单词的语义以及单词和单词之间的关系。

在这里插入图片描述

人们很快意识到,相比于在小规模数据集上和模型一起训练词嵌入,更好的一种做法是,在大规模文本数据上预训练好词嵌入,然后拿来使用。因此,我们可以下载由 Word2Vec 和 GloVe 预训练好的单词列表,及其词嵌入。

2.3.2 语境词嵌入

如果我们使用 Glove 的词嵌入表示方法,那么不管上下文是什么,单词 “stick” 都只表示为同一个向量。一些研究人员指出,像 “stick” 这样的词有多种含义。为什么不能根据它使用的上下文来学习对应的词嵌入呢?这样既能捕捉单词的语义信息,又能捕捉上下文的语义信息。于是,语境化的词嵌入模型应运而生。

在这里插入图片描述

ELMo 没有对每个单词使用固定的词嵌入,而是在为每个词分配词嵌入之前,查看整个句子,融合上下文信息。它使用在特定任务上经过训练的双向 LSTM 来创建这些词嵌入。

2.4 下游任务的迁移学习

BERT 的论文展示了 BERT 在多种任务上的应用。

在这里插入图片描述

使用 BERT 并不是只有微调这一种方法。就像 ELMo 一样,你可以使用预训练的 BERT 来创建语境化的词嵌入。然后你可以把这些词嵌入用到你现有的模型中。论文里也提到,这种方法在命名实体识别任务中的效果,接近于微调 BERT 模型的效果。

在这里插入图片描述

尝试 BERT 的最佳方式是通过托管在 Google Colab 上的 BERT FineTuning with Cloud TPUs。如果你之前从来没有使用过 Cloud TPU,那这也是一个很好的尝试开端,因为 BERT 代码可以运行在 TPU、CPU 和 GPU。

3. GPT

GPT 更多地用于自然语言生成,比如写文章、写诗等创作型任务,它本质上是一个语言模型。语言模型基本上是一个机器学习模型,它可以根据句子的一部分预测下一个词。最著名的语言模型就是手机键盘,它可以根据你输入的内容,提示下一个单词。从这个意义上讲,GPT-2 基本上就是键盘应用程序中预测下一个词的功能,但 GPT-2 比你手机上的键盘 app 更大更复杂。GPT-2 是在一个 40 GB 的名为 WebText 的数据集上训练的,OpenAI 的研究人员从互联网上爬取了这个数据集,作为研究工作的一部分。

GPT-2 是使用 Transformer 的 Decoder 模块构建的。另一方面,BERT 是使用 Transformer 的 Encoder 模块构建的。这些模型的实际工作方式是,在产生每个 token 之后,将这个 token 添加到输入的序列中,形成一个新序列。然后这个新序列成为模型在下一个时间步的输入。这是一种叫“自回归(auto-regression)”的思想。这种做法可以使得 RNN 非常有效。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/klB5mnmb.shtml

相关文章

BERT模型简介

基础架构-Transformer的Encoder: 由下到上,依次三个部分为输入、注意力机制和前馈神经网络 基础的Bert,六个encoder,六个decoder。 输入部分 input token embedding segment embedding position embedding bert预训练的NSP&am…

BERT 模型详解

BERT 结构 上图是 BERT 的结构图,左侧的图表示了预训练的过程,右边的图是对于具体任务的微调过程 BERT 的输入 BERT 的输入可以包含一个句子对 (句子 A 和句子 B),也可以是单个句子。同时 BERT 增加了一些有特殊作用的标志位: …

如何从零开始训练BERT模型

我的许多文章都专注于 BERT——这个模型出现并主导了自然语言处理 (NLP) 的世界,标志着语言模型的新时代。 对于那些之前可能没有使用过 Transformer 模型(例如 BERT 是什么)的人,这个过程看起来有点像这样: pip 安装…

BERT模型详解

Auto-Regressive & Auto-Encoding 在介绍当下最火热的BERT模型之前,我们先来看两个概念,Auto-Regressive和Auto-Encoding。 Auto-Regressive Auto-Regressive如上图所示,其实很像是一个语言模型,遵循的是链式法则&#xff0…

BERT(预训练Transformer模型)

目录 一、前言 二、随机遮挡,进行预测 三、两句话是否原文相邻 四、两者结合起来 五、总结 六、参考链接 一、前言 Bert在18年提出,19年发表,Bert的目的是为了预训练Transformer模型encoder网络,从而大幅提高准确率 Bert …

详细介绍BERT模型

文章目录 BERT简介BERT, OpenAI GPT, 和ELMo之间的区别相关工作BERT的改进 BERT 的详细实现输入/输出表示预训练BERT微调BERT BERT用在下游任务GLUE(一个自然语言任务集合)SQuAD v1.1(QA数据集)SQuAD v2.0SWAG 消融实验预训练任务的影响模型大小的影响基于特征的BERT方法 结论 …

BERT模型—2.BERT模型预训练与微调

文章目录 引言一、预训练语言模型1.为什么要进行预训练?2. BERT预训练-掩码预测任务3.BERT预训练-下句预测任务 二、BERT的文本处理—subword tokenizer1. 为什么要学习subword tokenizer?2. 词表生成与分词 三、BERT embedding四、BERT微调—句子分类任务五、BERT…

图解BERT模型:从零开始构建BERT

转载:https://cloud.tencent.com/developer/article/1389555 本文首先介绍BERT模型要做什么,即:模型的输入、输出分别是什么,以及模型的预训练任务是什么;然后,分析模型的内部结构,图解如何将模…

BERT模型—1.BERT模型架构

文章目录 引言一、Bert模型总览二、注意力机制1.Seq2seq中的注意力操作2.注意力的一般形式(三步曲)3. transformer中的自注意力机制—Self.Attention4. transformer的多头注意力机制5. scaling6. 模型优化技巧:残差连接 三、BERT其他结构特性…

【科研】BERT模型理论详解

原文:https://cloud.tencent.com/developer/article/1389555 本文首先介绍BERT模型要做什么,即:模型的输入、输出分别是什么,以及模型的预训练任务是什么;然后,分析模型的内部结构,图解如何将模…

BERT模型的详细介绍

1.BERT 的基本原理是什么? BERT 来自 Google 的论文Pre-training of Deep Bidirectional Transformers for Language Understanding,BERT 是“Bidirectional Encoder Representations from Transformers”的首字母缩写,整体是一个自编码语言…

图解BERT模型

1. 模型的输入/输出 BERT模型的全称是:BidirectionalEncoder Representations from Transformer。从名字中可以看出,BERT模型的目标是利用大规模无标注语料训练、获得文本的包含丰富语义信息的Representation,即:文本的语义表示&…

BERT模型

BERT模型 Paper: https://arxiv.org/abs/1810.04805 BERT 全称为Bidirectional Encoder Representation from Transformers(来自Transformers的双向编码表示),谷歌发表的发的论文Pre-traning of Deep Bidirectional Transformers for Langu…

BERT模型的结构,特点和实践

BERT模型介绍,特点,资源 一、背景介绍二、BERT与语言模型1.feature-based2.fine-tuning3.BERT的语言模型 三、BERT整体概览1. BERT框架2. BERT模型结构2.1输入部分2.2 BERT的预训练任务任务1:Masked Language Model(MLM)任务2:Nex…

Bert算法:语言模型-BERT详细介绍

本文的目的是向NLP爱好者们详细解析一个著名的语言模型-BERT。 全文将分4个部分由浅入深的依次讲解。1.Bert简介 BERT是2018年10月由Google AI研究院提出的一种预训练模型。 BERT的全称是Bidirectional Encoder Representation from Transformers。BERT在机器阅读理解顶级水平…

Bert 模型学习

一、Bert 模型 BERT 模型的全称是 BidirectionalEncoder Representations from Transformer,基于 Transformer 的双向编码器表示,是一个预训练的语言表征模型,它强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼…

【理论篇】是时候彻底弄懂BERT模型了(收藏)

引言 本文对BERT模型的理论进行了一个非常详尽的解释,相信看完本篇文章后,你对BERT模型的理解会上升🚀一个层次。 本文是理论篇,下篇是实战篇。 BERT的基本思想 BERT如此成功的一个原因之一是它是基于上下文(context-based)的嵌…

Hive !!!

文章目录 Hive数据处理方法论step1 了解产品/运营的需求step2 数据收集(数据准备)step3 数据处理(数据调研)step4 数据分析 Hive背景Hive简介引入原因安装hive注意事项一些代码Hive SQL VS SQL Hive的数据类型数据类型Hive架构 Hi…

Shark简介

简介 Shark是一个新的数据分析系统,在集群上进行查询处理和复杂分析。Shark使用一种新的分布式内存抽象,为SQL查询和复杂分析函数提供了统一的运行引擎,并能够有效的容错。这种新的分布式内存抽象使得shark执行SQL查询的速度比Hive快100倍&a…

Vue3中shallowReactive 与 shallowRef 的用法

shallowReactive 与 shallowRef shallowReactive:只处理对象最外层属性的响应式(浅响应式)。 shallowRef:只处理基本数据类型的响应式, 不进行对象的响应式处理。 什么时候使用? 如果有一个对象数据,结构比较深, 但…