BERT面试题(大模型必问)

BERT(双向编码器表示来自Transformer的模型)是由Google开发的一种革命性的自然语言处理(NLP)模型。它改变了语言理解任务的格局,使机器能够理解语言中的上下文和细微差异。

一、BERT的面试题

  • 什么是BERT?
  • BERT 为何重要?
  • BERT 模型有不同的版本,其中 BERT-base 和 BERT-large 的层数(block 数量)、参数量分别是多少?它们的主要结构是否相同?请简要说明。
  • BERT的输入由哪些部分组成?它们的作用是什么?
  • BERT训练包含两个阶段,那两个?
  • 为什么需要语言掩码模型(MLM)?
  • 用了掩码有没有弊端?
  • BERT 如何进行下一句预测(NSP)?它的作用是什么?
  • 什么是 BERT 微调(Fine-tuning)?和预训练(Pre-training)有什么区别?
  • BERT 需要添加什么层才能用于文本分类任务?
  • BERT 能用于文本生成任务吗?为什么?
  • BERT 微调时,常见的超参数有哪些?如何选择?
  • BERT 训练时,为什么要使用 warmup?
  • BERT 微调时,梯度消失问题如何解决?
  • ELMO、BERT、GPT的对比,区别?
  • 为什么说是ELMO伪双向编码?

二、BERT简介与解答面试题

什么是BERT?

BERT(Bidirectional Encoder Representations from Transformers)是一种基于Transformer的预训练语言模型,由Google AI在2018年提出。它在自然语言处理(NLP)任务中取得了突破性的进展。BERT代表双向编码器来自 Transformer 的表示,它代表了机器理解语言方式的转变,使它们能够理解使人类沟通丰富而有意义的复杂细微差异和上下文依赖关系。

BERT 为何重要?

BERT 理解到上下文驱动的单词关系在推导意义方面发挥了关键作用。它捕捉到了双向性的本质,使其能够考虑每个单词周围的完整上下文,从而彻底改变了语言理解的准确性和深度。

先讲解一下Bert模型结构:

下面是结构图:

img

BERT的模型结构就是 Transformer Encoder 的堆叠,Transformer拥有比较强的特征提取能力,通过堆善block能够提取到多层的信息。也就是说每个时刻的Attention计算都能因为使用 Transformer Encoder 作为block,BERT是双向的语言模型,够得到全部时刻的输入,而GPT由于Decoder的掩码注意力的限制,每个时刻的Attention计算只能依赖于。该时刻前的输入,所以GPT是单向语言模型。

BERT 模型有不同的版本,其中 BERT-base 和 BERT-large 的层数(block 数量)、参数量分别是多少?它们的主要结构是否相同?请简要说明。

BERT-base 和 BERT-large 主要区别在于层数和参数量:

  • BERT-base:12 层(block),参数量约 110M(1.1 亿)。
  • BERT-large:24 层(block),参数量约 340M(3.4 亿)。

它们的结构相同,均采用 Transformer Encoder 作为基本单元,每层包含以下组件:

  • 多头自注意力(Multi-Head Self-Attention):用于学习不同子空间的语义信息。
  • 残差连接(Residual Connection)+ 层归一化(Layer Normalization):稳定训练,提高梯度传播。
  • 前馈神经网络(FFN,Feedforward Neural Network):由两层全连接层组成,使用 ReLU(Rectified Linear Unit) 作为激活函数。

主要区别是:

BERT-large 层数增加,每层的注意力头数从 12 增加到 16,隐藏层维度也从 768 增加到 1024,使得模型学习更复杂的语义信息,但计算成本更高。

-----------------------------------------------------------------------------

BERT处理流程,然后顺带着题。

1、输入部分

💡 BERT 的输入由哪些部分组成?它们的作用是什么?具体操作实现

✅ 回答:
BERT 的输入由 Token Embeddings、Segment Embeddings、Position Embeddings 组成:

  • Token Embeddings(词嵌入):将输入文本转化为词向量。
  • Segment Embeddings(句子标识):区分两句话(如问答任务)。
  • Position Embeddings(位置编码):保留单词的顺序信息。

如图所示:

img

扩展对句子打标签部分,特殊字符的使用:

imgimg

imgimg

具体操作实现:

img

2、中间的transformer部分,请参考:https://mp.weixin.qq.com/s/5J7SnKoQmlN1DCVSrCQZEw

下面开始训练部分:

💡训练BERT任务包含两个阶段,那两个?

✅回答: 第一阶段使用易获取的大规模无标签语料来训练语言模型(LM),第二阶段利用下游任务的有标签训练语料,进行微调训练。

第一阶段:使用易获取的大规模无标签语料来训练语言模型(LM),为了能够同时利于 token-level task 和sentence-level task,作者采用如下两种预训练任务来建立语言模型(多任务训练目标),从而更好的支持下游任务:掩码语言模型:Masked Language Model(MLM),目的是提高模型的语义理解能力;下句预测:Next Sentence Prediction(NSP),目的是训练句子之间的理解能力;

第二阶段:利用下游任务的有标签训练语料,进行微调训练。不同于GPT等标准语言模型使用为目标函数进行训练,能看到全局信息的BERT使用为目标函数进行训练。

3、预训练任务

💡为什么需要语言掩码模型(MLM)?

解答怎么进行的掩码:BERT 借鉴了 CBOW 思想(完形填空任务),使用语言掩码模型(MLM )方法训练模型,具体做法为:随机 mask 掉语料库中15%的词在输入的时候再去预测被 mask 的词是什么。注意只有训练阶段才会这样做,测试阶段不会mask。

c: 因为BERT采用 Transformer Encoder作为特征提取器,所以它就无法使用标准语言模型的训练模式了。换句话说,因为Encoder block 是双向的,它是无法使用完形填空思想的,或者说它无法采用预测下一个词的方式了,因为模型会看到要预测的值。被 mask 的词称为掩码词,这样实际上已经不是传统的神经网络语言模型了而是单纯作为分类问题,根据这个时刻的 hidden state 来预测这个时刻的token 应该是什么,而不是预测下一个时刻的词的概率分布了。BERT的本质是提取特征向量(高级语义),通过 mask 方法只是为了让BERT提取的特征向量更准确,主要目的不是预测被 mask 的token,主要目的是提取特征向量。所以利用 mask 打破文本的原有语义信息,让模型不知道。在预训练的时候,让其对有mask的文本进行重建,绞尽脑汁的从周围的上下文中学习各种信息,来让自己预测的mask的词汇更接近原本的词汇。

💡用了掩码有没有弊端?

✅回答: 有,在模型微调阶段或推理阶段(测试阶段),输入的文本中没有mask,这样会出现由训练和预测数据偏差导致的性能损失。

扩展:考虑到这个问题并没有总用 mask 替换掩码词,而是按照一定比例选取替换词,在随机的15%的词作为掩码词后,这些掩码词有三类替换选项:

img

💡BERT 如何进行下一句预测(NSP)?它的作用是什么?

✅ 回答:如问答(QA)和自然语言推断(NU),都基于两个句子做逻辑推理,而语言模型并不具备直接捕获句子之间的语义联系的能力,或者可以说成单词预测粒度的训练到不了解句子关系这个层级,为了学会捕捉句子之间的语义联系,使得模型能够很好的理解两个句子之间的关系,BERT采用了下句预测(NSP)作为无监督预训练的一部分,即第二个预训练任务。

具体实现:

img

img

img

总的前向传播过程:

img

4、BERT 微调(Fine-tuning):

BERT 根据NLP下游任务的输入和输出的形式,将微调训练支持的任务分为四类,分别是句对分类、单句分类、文本问签和单句标注(命名实体识别(NER)任务)

BERT 通过微调训练句对分类、单句分类的任务

img

img

3、文本问答任务: 给定一个问句和一个蕴含答案的句子,找出答案在后句的位置,称为文本问答,例如给定一个问题(句子 A),在给定的段落(句子 B)中标注答案的起始位置和终止位置。

4、单句标注任务: 给定一个句子,标注每个词的标签,称为单句标注。例如给定一个句子,标注句子中的人名、地名和机构名。其实就是把所有的token输出,做一个softmax,看它属于实体中的哪一个。

综上,BERT 在微调时,根据下游任务的输入和输出形式,将任务分为 四大类

任务类型任务示例BERT 处理方式
句对分类(Sentence Pair Classification)自然语言推理(NLI)、文本匹配[CLS] 句子A [SEP] 句子B [SEP],使用 [CLS] 进行分类
单句分类(Single Sentence Classification)情感分析、垃圾邮件检测[CLS] 句子 [SEP],使用 [CLS] 进行分类
文本问答(Machine Reading Comprehension, MRC)SQuAD 任务、开放域问答[CLS] 问题 [SEP] 文本 [SEP],预测答案的起始和终止位置
单句标注(Token-Level Classification)命名实体识别(NER)、词性标注[CLS] 句子 [SEP],对每个 token 进行分类

💡什么是 BERT 微调(Fine-tuning)?和预训练(Pre-training)有什么区别?

回答:

  • 预训练(Pre-training) 是在大规模无监督数据(如 Wikipedia)上进行通用的语言模型训练(MLM 和 NSP)。
  • 微调(Fine-tuning) 是在具体的 NLP 任务(如文本分类、问答、命名实体识别)上进行小规模有监督训练,使 BERT 适应特定任务。
  • 预训练的 BERT 共享所有任务的参数,微调时针对具体任务调整参数

💡BERT 需要添加什么层才能用于文本分类任务?

回答:

  • BERT 的 [CLS] token 代表整个句子,可以将其输出传递给 全连接层(Fully Connected Layer, FC),然后使用 softmax 进行分类。
  • 具体结构:BERT → [CLS] → FC → softmax → 预测类别

微调过程请进入:https://zh.d2l.ai/chapter_natural-language-processing-applications/natural-language-inference-bert.html

💡BERT 能用于文本生成任务吗?为什么?

回答: BERT 主要用于理解任务,而非生成任务**,因为:

  • BERT 是 双向编码模型(Encoder-based),适合分类、命名实体识别、问答等任务。

  • 生成任务(如机器翻译、对话)通常使用 自回归(Auto-regressive)模型,如 GPT(基于 Decoder)。

  • 解决方案:使用 BARTT5,它们结合了 Encoder 和 Decoder,可以用于文本生成。

💡BERT 微调时,常见的超参数有哪些?如何选择?

回答: 重要超参数:

参数说明推荐值
batch_size批大小16 或 32
learning_rate学习率2e-5 到 5e-5
epochs训练轮数3-5
max_seq_length最大输入长度128-512
warmup_steps预热步数训练步数的 10%
weight_decay权重衰减0.01

选择方法小数据集:降低 learning_rate,减少 epochs,防止过拟合。大数据集:适当增加 batch_sizeepochs

💡BERT 训练时,为什么要使用 warmup?

回答:Warmup(预热) 是指在训练开始时,学习率逐渐增加,以避免梯度爆炸。

原因:预训练模型的权重在训练初期较为脆弱,骤然增大学习率会导致模型不稳定。预热后逐渐降低学习率(如 linear decay),可以提高模型收敛效果。

💡BERT 微调时,梯度消失问题如何解决?

回答:

梯度消失可能的原因:1、网络层数较深,梯度在反向传播时逐渐缩小。2、学习率过大或 batch_size 过小。

解决方案LayerNorm(BERT 结构自带)。残差连接(Residual Connection) 维持梯度流。调整学习率:使用 warmup + 线性衰减

算法对比部分:

💡ELMO、BERT、GPT的对比,区别?

img

回答: ELMO使用自左向右和自右向左编码的两个LSTM 网络,分别以和为目标函数独立训练(它是上文一个,下文一个,而不是同时获得上下文)将训练得到的特征向量以拼接的形式实现双向编码,本质上还是单向编码,只不过是两个方向上的单向编码的拼接而成的伪双向编码。

BERT用的是 Transformer 的 Self-Attention,Self-attention 是可以直接看到前后文的,所以说BERT的双向编码是真正意义的双向编码,因为它考虑了上下文。这也是Self-Attention解决LSTM无法利用上下文信息的问题。

BERT和ELMO的区别在于使用Transformer block 作为特征提取器加强了语义特征提取的能力。

BERT和GPT的区别在于使用Transformer Encoder作为block,并将GPT的单向编码改为双向编码,也就是说BERT舍弃了文本生成能力,换来了更强的语义理解能力。

BERT基于 Encoder 做的是特征提取得到特征向量,用于下游任务。GPT基于Decoder 做的是生成式任务。从任务属性的角度来讲BERT和ELMO更相似,目的都是获取特征向量。

💡为什么说是ELMO伪双向编码?

回答: 因为ELMO用的是LSTM:比如对于,虽然能够获取它的上文和下文,它将获取到的上文和下文是拼成个双向编码,但是它受限于LSTM,所以是伪双向编码,也就是说在某一时间段,当它获取上文的时候它获取不到下文信息,当获取下文信息的时候它看不到上文信息。

BERT的变几种体:

img

RoBERTa

img

ALBERT

img

DistilBERT

img

那么,如何系统的去学习大模型LLM?

作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。

所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。

由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
在这里插入图片描述

👉大模型学习指南+路线汇总👈

我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
在这里插入图片描述
在这里插入图片描述

👉①.基础篇👈

基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
在这里插入图片描述

👉②.进阶篇👈

接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
在这里插入图片描述

👉③.实战篇👈

实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
在这里插入图片描述

👉④.福利篇👈

最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
在这里插入图片描述
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值