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

BERT相关知识自测

✅ 1. BERT 分为哪两种预训练任务?各自的作用是什么?

BERT 在预训练阶段使用两个无监督任务:

  1. Masked Language Model (MLM) —— 掩码语言模型

    • 做法:随机选择输入序列中 15% 的 token,要求模型根据上下文预测这些位置的原始 token
      • 其中 80% 替换为 [MASK]
      • 10% 替换为随机 token
      • 10% 保持不变
    • 作用:实现双向上下文建模,让模型学习词汇级别的语义表示。
  2. Next Sentence Prediction (NSP) —— 下一句预测

    • 做法:输入两个句子 A 和 B,判断 B 是否是 A 的下一句(50% 是,50% 否)。
    • 作用:学习句子间关系(如连贯性、逻辑),提升问答、自然语言推理等任务表现。

⚠️ 注:后续研究(如 RoBERTa)发现 NSP 效果有限,许多改进模型已移除。


✅ 2. 在计算 MLM 预训练任务的损失函数时,参与计算的 Tokens 有哪些?是全部的 15% 的词汇,还是其中真正被 [MASK] 的那些 tokens?

答案:是被选中用于 MLM 任务的全部 15% 的 tokens,无论它们在输入中是否显示为 [MASK]

详细说明:

  • BERT 随机选择 15% 的 token 作为 MLM 的预测目标。
  • 对这 15% 的 token,输入可能被替换为 [MASK]、随机 token,或保持不变。
  • 但模型的目标是:预测这些位置的原始 token
  • 因此,这 15% 的 token 全部参与损失计算

✅ 关键:参与损失的是“被选中用于预测的 token”,不是“输入中为 [MASK] 的 token”。


✅ 3. 在实现损失函数的时候,怎么确保没有被选中用于 MLM 的 token 不参与到损失计算中去?

通过 labels 张量中的 ignore_index 机制 实现。

实现方式:

  1. 构造一个 labels 张量,形状与模型输入相同。
  2. 对于未被选中用于 MLM 的 token,将其 label 设为 -100
  3. 对于被选中用于 MLM 的 15% 的 token,保留其原始 token ID。
  4. 使用 nn.CrossEntropyLoss(ignore_index=-100),PyTorch 会自动忽略 -100 位置的损失。

代码示例:

Python

编辑

loss_fn = nn.CrossEntropyLoss(ignore_index=-100)
loss = loss_fn(logits.view(-1, vocab_size), labels.view(-1))  # 只计算 15% 的损失

✅ 这样确保只有那 15% 的预测目标参与反向传播。


✅ 4. BERT 的三个 Embedding 为什么可以直接相加?(Token + Segment + Position)

因为:

  1. 维度一致:三者都是 �_modeld_model 维向量(如 768),可以直接相加。
  2. 线性可分性:Transformer 的自注意力机制能够从相加后的向量中“解耦”出不同信息。
  3. 位置编码的传统:Transformer 原始论文使用可学习或正弦位置编码,均采用相加方式。
  4. 实验有效:相比拼接(concat),相加更简洁、参数更少,且效果不差。
  5. 模型可学习:后续的 Attention 和 FFN 层会自动学习如何利用这些融合信息。

✅ 本质上:相加是一种高效、可学习的多源信息融合方式。


✅ 5. BERT 的优缺点分别是什么?

✅ 优点:
  • 双向上下文建模:通过 MLM 实现真正的双向编码。
  • 上下文相关表示:同一词在不同语境下有不同表示。
  • 预训练 + 微调范式:适用于多种 NLP 任务,无需复杂特征工程。
  • 强大的迁移能力:在多项任务上取得 SOTA。
  • 结构简洁:纯 Transformer Encoder,易于扩展。
❌ 缺点:
  • NSP 任务无效:RoBERTa 发现 NSP 对性能帮助不大。
  • 静态 masking(早期):预训练时 masking 固定,缺乏多样性(可通过动态 masking 解决)。
  • [MASK] 标记不一致:预训练用 [MASK],微调时没有,导致分布偏移(通过 10% 不替换缓解)。
  • 计算资源消耗大:尤其是 BERT-Large。
  • 不擅长生成:是 Encoder-only 模型,无法自回归生成。

✅ 6. 你知道有哪些针对 BERT 的缺点做优化的模型?

模型针对的缺点改进点
RoBERTaNSP 无效、静态 masking、训练不足去掉 NSP、动态 masking、更大 batch、更多数据
ALBERT参数量大、内存消耗高参数共享、嵌入分解、支持更大模型
DistilBERT模型大、推理慢知识蒸馏,6 层小模型,速度快,性能高
SpanBERT无法建模短语/片段引入 span masking,更好恢复名词短语
ELECTRAMLM 效率低(只预测 15%)使用“替换检测”任务,判别式训练,更高效
DeBERTa未充分利用 token 和位置分解 attention,显式建模 token 和位置关系

✅ 7. BERT 怎么用在生成模型中?

BERT 本身是 Encoder-only 模型不能直接用于自回归生成(如 GPT 那样逐词生成),但可通过以下方式用于生成任务:

  1. 作为 Encoder + 外接 Decoder

    • 例如:在问答、摘要任务中,用 BERT 编码输入,接一个 Transformer Decoder 生成答案。
    • 类似 BART、T5 的思想。
  2. 提供上下文表示

    • 在生成模型中,将 BERT 的输出作为额外特征输入到生成器中,提升生成质量。
  3. 完形填空式生成

    • 用于短文本补全,如 The capital of France is [MASK]. → 生成 Paris
    • 但这不是真正的长文本生成。
  4. 统一建模架构(如 UniLM)

    • 修改注意力掩码,让 BERT 支持单向生成,实现“统一语言模型”。

✅ 总结:BERT 本身不生成,但可作为强大编码器服务于生成系统


🎯 总结:术语统一与逻辑一致性

易混淆术语正确定义
“被 mask”在损失计算中,指“被选中用于 MLM 预测的 15% 的 token”,不是“输入中为 [MASK] 的 token”
参与损失的 token是那 15% 的预测目标,其余 85% 通过 ignore_index=-100 忽略
MLM 目标预测原始 token,无论输入中是 [MASK]、随机词,还是原词
http://www.dtcms.com/a/469811.html

相关文章:

  • 【完整源码+数据集+部署教程】 真菌孢子图像分割系统源码&数据集分享 [yolov8-seg-convnextv2等50+全套改进创新点发刊_一键训练
  • 遵义市网站制作如何申请域名网站注册
  • GitHub 热榜项目 - 日榜(2025-10-11)
  • MySQL数据库之DBA命令
  • 4.打造个人Z-Library镜像
  • CoRL-2025 | 物体相对控制赋能具身导航!ObjectReact:学习用于视觉导航的物体相对控制
  • 长春seo网站优化做企业网站接单
  • word超链接网站怎么做网站建设网页设计网站模板
  • spring boot 整合 activiti 教程
  • 免费网站电视剧下载不支持下载的视频怎么保存下来
  • 接口自动化测试流程、工具与实践
  • 【C++继承】深入浅出C++继承机制
  • Mysql杂志(三十一)——Join连接算法与子查询、排序优化
  • HashMap - 底层原理
  • Python第二次作业
  • Vspy使用教程
  • 通用网站模板网站备案要幕布照
  • 网站三要素关键词 描述怎么做青海项目信息网官网
  • JavaScript学习笔记(二十八):JavaScript性能优化全攻略
  • mooc自动互评脚本笔记---2025年10月11日
  • 什么是语言模型
  • 免费网站正能量不用下载网站程序是什么?
  • 海外住宅IP的分类方式
  • wpf之ToggleButton控件
  • 【传奇开心果系列】基于Flet框架实现的文件选择文件保存和目录选择的样例自定义模板特色和实现原理深度解析
  • 做网站什么数据库用的多低价建站在哪里买
  • 从零搭建 React Native 到项目运行全记录(0.73.6 稳定版)
  • HTML DOM 对象
  • 红日靶场(四)——个人笔记
  • b树,b+树,红黑树