2018年Google提出的BERT模型彻底改变了自然语言处理领域的游戏规则。作为首个真正实现双向上下文理解的预训练模型,其创新性地采用了Transformer编码器结构和掩码语言建模(MLM)任务。与传统的Word2Vec、GloVe等静态词向量不同,BERT生成的嵌入会随上下文动态变化——比如"苹果"在"吃苹果"和"苹果手机"中会获得不同的向量表示。
这种动态特性源于Transformer的多头自注意力机制。每个注意力头可以学习不同的关注模式:有的聚焦局部语法关系,有的捕捉长距离依赖。12层的基础模型(BERT-base)共包含12个注意力头,每层都能自动发现词语间的潜在关联。当处理"银行"这个多义词时,模型能根据"河岸"或"存款"等周边词汇自动调整表征。
关键提示:BERT的预训练过程消耗大量计算资源。原始论文中使用的TPU v3芯片集群现在仍属高端配置,个人研究者建议从HuggingFace加载预训练权重。
BERT的基础单元是Transformer编码器层,其核心包含:
以BERT-base为例:
BERT的输入嵌入由三部分组成:
特殊token的设计尤为精妙:
与传统语言模型只预测下一个词不同,MLM随机遮盖输入中的token并预测原词:
这种设计迫使模型建立真正的双向理解。例如在句子"The [MASK] sat on the mat"中,模型需要综合"sat"和"mat"的信息推断出可能是"cat"。
为学习句子间关系,BERT用50%正例和50%负例训练:
这个任务显著提升了问答和推理任务的性能,但也引发后续研究对其实效性的讨论。
当目标领域与原始语料差异较大时:
推荐采用分层学习率:
使用线性预热(warmup)策略,前10%训练步数逐步提升学习率。
梯度检查点技术可降低显存消耗:
现象:相同输入得到不同结果
解决方案:
BERT的512token限制导致:
改进方案:
模型架构方面,稀疏注意力(如BigBird)、记忆增强(如Memformer)成为新趋势。训练策略上,对比学习(如SimCERT)开始替代NSP任务。而T5、GPT-3等表明,统一文本到文本的框架可能更具通用性。
实际部署中发现,12层模型在多数业务场景中存在过度参数化。通过神经架构搜索得到的6层精简版(如ALBERT)往往能达到95%的准确率,而推理速度提升3倍。这提示我们在模型选型时需要平衡效果与效率。