论文笔记BERT: Bidirectional Encoder Representations from Transformers

BERT是一种基于Transformer的深度双向预训练模型,通过预训练任务如Masked Language Model (MLM) 和 Next Sentence Prediction (NSP) 提升模型在下游NLP任务的表现。BERT的预训练使用未标记数据,减少了对特定任务结构的需求,而微调阶段则针对有标签数据调整模型参数。实验表明,BERT在多项NLP任务如GLUE和SQuAD中表现出色,验证了其双向预训练的有效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 简介

本文根据2019年《BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding》翻译总结的。

BERT: Bidirectional Encoder Representations from Transformers.

应用预训练模型于下游任务有两种策略,分别是feature-based 和 fine-tuning。fine-tuning方法的主要限制是其单向的。BERT采用的fine-tuning方法,但是BERT使用“masked language model” (MLM)来避免单向的问题,MLM随机mask输入的一部分,目标函数是从masked的词汇(附带上下文)预测原序列。

BERT的贡献如下:

  1. 语言表达双向预训练的重要性;
  2. 预训练采用非监督数据,容易实现预训练。预训练减少了许多精心设计的特定任务结构的需要。预训练模型可以处理很多不同的NLP任务。

2 相关工作

在这里插入图片描述

2.1 非监督feature-based 方法

ELMo模型(2017-2018):分别用LSTM训练左到右、右到左,然后再连接起来生成features。

2.2 非监督fine-tuning 方法

OpenAI GPT、Left-to-right language model、auto-encoder objectives等。OpenAI GPT采用的left-to-right Transformer。

2.3 监督数据的迁移学习

比如计算机视觉领域,有基于ImageNet的预训练模型。

3 BERT

BERT如下图所示,分为两步,分别是pre-training(预训练)、fine-tuning(微调)。pre-training基于unlabeled数据进行训练。微调是基于labeled数据对所有参数进行微调。
在这里插入图片描述

3.1 Input/Output Representations

如下图所示,输入embedding是三部分的累加,这三部分分别是单词(token)的embedding、片段(segmentation)归属embedding、位置(position)embedding。

在这里插入图片描述

GPT uses a sentence separator ([SEP]) and classifier token ([CLS]) which are only introduced at fine-tuning time;
BERT learns [SEP], [CLS] and sentence A/B embeddings during pre-training.。

3.2 Pre-training BERT

需要4-5天的预训练。

3.2.1 Task #1: Masked LM

标准的条件语言模型是单向的,left-to-right 或者 right-to-left。为了训练一个深度的双向表述,我们随机mask输入的一部分,然后预测这些masked部分。我们将该方法叫做Masked LM(MLM)。

该模型的一个缺点是造成了pre-training和fine-tuning的不匹配,因为fine-tuning是没有mask 的。为了减轻这个缺点的影响,引入了一些随机等操作。

3.2.2 Mask说明

在这里插入图片描述

上面的mask步骤的好处是:transformer 不知道它要预测哪个词语,所以它会对每一个输入词语保持上下文的表达。一般是随机替换输入的15%,也不会损害模型语言理解的能力。但是这样会导致模型收敛较慢,不过带来了模型预测能力的改善。

3.2.3 Task #2: Next Sentence Prediction (NSP)

许多重要的下游任务是question answering(QA)和natural language inference任务,它们是理解两个语句间的关系。为了训练一个模型理解语句间的关系,我们引入了一个二值化next sentence prediction任务。

示例如下,上面的两个输入语句是有关系的,所以label=IsNext。下面两个输入没有关系,所以label=NotNext。
在这里插入图片描述

3.3 Fine-tuning BERT

Fine-tuning是比较简单明了的,改造输出层,对所有参数进行微调。微调的时间也很短,在单cloud TPU上,只需要1小时;在GPU上也只是几个小时。

下面参数工作较好:

  1. Batch size: 16, 32
  2. Learning rate (Adam): 5e-5, 3e-5, 2e-5
  3. Number of epochs: 2, 3, 4

如下图所示,不同的任务模型是通过在BERT上附加一个额外的输出层,所以只有很少的参数需要重头开始学习。图a、b是序列水平的任务,图c、d是单词级别(token-level)的任务。
在这里插入图片描述

4 实验结果

4.1 GLUE-语言理解

The General Language Understanding Evaluation (GLUE) benchmark,可以看到BERT优于OpenAI GPT等。
在这里插入图片描述

  1. MNLI: Multi-Genre Natural Language Inference。给定一组语句,预测下一个语句是上面一组语句的继续?还是矛盾?还是中立?
  2. QQP:Quora Question Pairs is a binary classification task。二值分类,两个问题是不是语义上相同。
  3. QNLI: Question Natural Language Inference is a version of the Stanford Question Answering Dataset。二值分类,positive包含正确的答案,negative没有包含正确答案。
  4. SST-2 :The Stanford Sentiment Treebank,二值单语句分类任务。
  5. CoLA :The Corpus of Linguistic Acceptability。判断一个英语句子在语言学上是否可以接受的。
  6. STS-B :The Semantic Textual Similarity Benchmark。判断两个句子在语义上是否相似,分数从1到5.
  7. MRPC: Microsoft Research Paraphrase Corpus。判断两个句子在语义上是否相似。
  8. RTE: Recognizing Textual Entailment,类似MNLI,但数据量较少。
  9. WNLI: Winograd NLI is a small natural language inference dataset.

4.2 SQuAD –QA问答

Stanford Question Answering Dataset(SQuAD v1.1)。
在这里插入图片描述

4.3 SWAG—语句补充

Situations With Adversarial Generations(SWAG):包括113k个语句对补充例子,用来评估常识推理。给定一个句子,任务是在4个选项中选择最合适的一个。
在这里插入图片描述

5 Ablation Studies

5.1 Pre-training Tasks的效果

可以看到NSP、masked LM(双向机制)对BERT有很多的作用。
在这里插入图片描述

5.2 模型大小的影响

可以看到,大模型有利于效果提升。
在这里插入图片描述

5.3 使用feature-based 方法

可以看到BERT如果使用feature-based方法也可以取得较好的效果,但基于fine-tuning的BERT-large依然表现最优。
在这里插入图片描述

<think>嗯,用户想了解BERT技术的概念。首先,我需要回忆一下BERT的基本信息。根据引用[1],BERT是Google在2018年提出的,全称是基于Transformer的双向编码器表示。它由多个Transformer编码器堆叠而成,输入输出形状不变。然后,引用[2]提到,BERT强调双向编码,不同于GPT的单向。GPT用的是Transformer解码器,适合生成文本,但只能利用前序信息,而BERT用编码器,能利用所有上下文,增强了语义理解。 接下来要说明BERT的核心结构。Transformer编码器是关键,每个包含自注意力机制和前馈网络。引用[3]提到了encoder_inputs的结构,可能涉及到输入的处理,比如词嵌入、位置编码等。另外,BERT的预训练任务有MLM和NSP,引用[2]里的掩码训练方法应该是指MLM,随机掩盖部分词让模型预测,这样模型可以学习双向上下文。NSP是判断句子关系,提升句子级别的理解。 然后,BERT的应用和影响。引用[4]指出,BERT启发了许多变体如RoBERTa、ALBERT等,这些改进适应不同需求。应用场景包括文本分类、问答系统、命名实体识别等,说明BERT的通用性。 还要注意用户可能混淆的地方,比如BERT和GPT的区别。需要明确两者在结构(编码器vs解码器)和训练目标上的不同。此外,用户可能想知道为什么双向编码有效,或者BERT如何处理长文本等问题,但用户的问题主要是概念介绍,所以先集中在核心点。 最后,生成相关问题要考虑用户可能的后续疑问,比如BERT的优缺点、训练细节、变体比较等。确保问题覆盖技术细节和应用场景,帮助用户深入理解。</think>### Bidirectional Encoder Representations from Transformers (BERT) 技术介绍 #### 1. **基本概念** BERTBidirectional Encoder Representations from Transformers)是Google于2018年提出的预训练语言模型,其核心是通过**双向Transformer编码器**对文本进行深度语义编码。与传统的单向语言模型(如GPT)不同,BERT在训练时能同时利用词汇的**前序和后序上下文信息**,从而更全面地捕捉语义关联[^1][^2]。 #### 2. **核心结构** - **Transformer编码器堆叠**:BERT由多个Transformer编码器层堆叠而成,每层包含**自注意力机制**(Multi-Head Attention)和**前馈神经网络**。输入输出的形状保持一致,便于逐层提取特征[^1][^3]。 - **输入表示**:输入文本通过**词嵌入**(Token Embedding)、**位置编码**(Position Embedding)和**段落编码**(Segment Embedding)组合而成,支持处理句子对任务(如问答)。 #### 3. **预训练任务** BERT通过以下两种任务进行预训练: - **掩码语言模型(MLM, Masked Language Model)**:随机掩盖输入文本中的部分词汇(如15%),要求模型预测被掩盖的词。这一任务迫使模型学习双向上下文依赖。 - **下一句预测(NSP, Next Sentence Prediction)**:判断两个句子是否为连续上下文,增强模型对句子间关系的理解。 #### 4. **关键优势** - **双向编码能力**:通过Transformer编码器的双向处理,BERT能同时利用词汇的左右上下文信息,显著提升语义理解效果。 - **通用性强**:预训练后的BERT可通过微调(Fine-tuning)适配多种下游任务(如文本分类、命名实体识别、问答系统等)[^4]。 #### 5. **应用与影响** - **应用场景**:BERT在自然语言处理(NLP)领域广泛应用,例如搜索引擎优化、情感分析、机器翻译等。 - **后续发展**:BERT的成功催生了多个改进模型,如**RoBERTa**(优化训练策略)、**ALBERT**(减少参数量)、**DistilBERT**(轻量化版本)等,形成庞大的“BERT家族”。 ```python # 示例:使用Hugging Face库调用BERT模型 from transformers import BertTokenizer, BertModel tokenizer = BertTokenizer.from_pretrained('bert-base-uncased') model = BertModel.from_pretrained('bert-base-uncased') inputs = tokenizer("Hello, BERT!", return_tensors="pt") outputs = model(**inputs) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值