Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

BERT (Bidirectional Encoder Representations from Transformers)

BERT 是 Google 推出的双向 Transformer 编码器,通过预训练同时利用被遮蔽词语两侧的上下文来预测这些词语。本文介绍其工作原理、微调和变体。

BERT(来自 Transformer 的双向编码器表示)是一种 Transformer 编码器,它一次读取整个句子,并根据每个词左右两侧的词构建该词的表示。Google AI Language 的 Jacob Devlin、Ming-Wei Chang、Kenton Lee 和 Kristina Toutanova 于 2018 年 10 月推出了 BERT;他们的论文 BERT:用于语言理解的深度双向 Transformer 预训练获得了 NAACL 2019 最佳长论文奖。一个经过微调、仅增加一个输出层的预训练 BERT,在 11 项自然语言处理(NLP)任务上创下新的最先进成绩:GLUE 基准得分提升至 80.5%,绝对提升 7.7 个百分点;SQuAD v1.1 问答测试 F1 得分则达到 93.2。

BERT 如何进行预训练#

BERT-Base 由 12 个编码器层组成,隐藏状态维度为 768,具有 12 个注意力头,约有 1.1 亿个参数;BERT-Large 则有 24 层、1,024 维、16 个注意力头和 3.4 亿个参数。输入文本通过 WordPiece 分词拆分为 30,000 个词元的词汇表,每个序列以特殊的 [CLS] 词元开头,句子对中的两个片段则由 [SEP] 分隔。Google 使用 BooksCorpus(8 亿个词)和英文维基百科(25 亿个词),通过两个自监督目标对这两种规模的模型进行了预训练。

掩码语言建模(MLM)会选取 15% 的词元位置,其中 80% 替换为 [MASK],10% 替换为随机词元,另外 10% 保持不变;模型需要预测原始词元。BERT 的自注意力没有因果掩码,因此每次预测都能利用两侧的上下文,而从左到右的语言模型做不到这一点。下一句预测(NSP)会让每个片段有一半概率与其真实后续句配对,另一半概率与随机句子配对;基于 [CLS] 输出的分类器则学习区分这两种情况。

预训练检查点会保留其掩码词预测头,因此原始模型可以直接填补空白:

from transformers import pipeline

# BERT 根据空白两侧的词预测被掩码的词
fill = pipeline("fill-mask", model="bert-base-uncased")

for text in ["She went to the [MASK] to buy bread.", "She went to the [MASK] to see a doctor."]:
    predictions = fill(text, top_k=3)
    print(text, [(p["token_str"], round(p["score"], 2)) for p in predictions])

两个句子只有空白之后的部分不同,而 BERT 的最高概率预测也随之从“market”(0.82)变为“hospital”(0.78)。从左到右读取的模型在两个句子中看到的都是“She went to the”,没有任何信息可以区分二者。

微调与应用#

微调会添加一个小型任务层,并使用带标签的样例训练所有权重;这种方法让迁移学习成为 NLP 中的默认做法。[CLS] 向量输入句子级分类器,例如情感分析;每个词元向量输入标注任务,例如命名实体识别(NER);而对词元计算的起始和结束分数则用于提取答案片段。

Google 表示,2019 年 10 月,BERT 开始用于美国 10% 的英语搜索;Google 举例说明了查询“2019 brazil traveler to usa need a visa”,BERT 能识别出“to”描述的是一名前往美国的巴西旅客。到 2020 年 10 月,BERT 已用于几乎所有英语查询。BERT 系列编码器还可生成嵌入,为语义搜索提供支持:Sentence-BERT 对 BERT 进行微调,将每个句子映射为一个向量,用于向量搜索;ColBERT为每个词元保留一个向量;而交叉编码器重排序器则在检索增强生成(RAG)流水线中为查询与文本段落配对打分。

在视觉语言检测中,Grounding DINO会先使用 BERT-base 编码器对文本提示进行编码,然后将其与图像区域匹配。Ultralytics Platform 托管 Grounding DINO,用于类别提示智能标注:它会将数据集的类别名称转换为可编辑边界框,以便训练 YOLO26检测器。掩码预测也扩展到了图像领域:视觉 Transformer(ViT)借用了 BERT 的 [CLS] token 进行分类;掩码自编码器(MAE)则通过隐藏 75% 的图像图块并重建它们来预训练图像编码器。

BERT 与 GPT 及后续编码器的对比#

GPT模型基于带因果掩码的 Transformer 解码器构建,因此会根据前面的词元预测下一个词元,适用于文本生成。BERT 会为每个输入词元输出一个向量,适用于分类、提取和检索,但没有内置的从左到右文本生成能力。拥有数十亿参数的大语言模型(LLM)可以通过提示处理许多相同的理解任务,但每次查询的成本可能是拥有 1.1 亿参数的编码器的许多倍。

后续编码器改进了这一方案。Meta 的 RoBERTa 移除了 NSP,在更大的批次上训练更长时间,使用约 160 GB 的文本,证明 BERT 的训练明显不足;Hugging Face 的 DistilBERT 则通过知识蒸馏将参数量减少 40%、运行速度提升 60%,同时保留 BERT 97% 的语言理解性能。由 Answer.AI 和 LightOn 于 2024 年 12 月发布的 ModernBERT,使用 2 万亿个词元进行训练,原生上下文长度为 8,192 个词元,是 BERT 512 个词元限制的 16 倍。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来