深入解析Transformers、BERT与SBERT:从原理到应用 原创 精华

发布于 2025-2-7 16:28
浏览
0收藏

01、概述

在人工智能领域,尤其是自然语言处理(NLP)中,Transformer、BERT和SBERT已经成为技术发展的基石。然而,很多人对它们的工作原理、优缺点以及实际应用还不够了解。本篇文章将深入解析这些技术,从基础概念到最新进展,帮助你掌握背后的关键逻辑。

02、Transformers:NLP领域的“革命性武器”

1) 什么是Transformer?

深入解析Transformers、BERT与SBERT:从原理到应用-AI.x社区

Transformer模型诞生于2017年,最初是为了解决机器翻译问题。如今,它已经成为几乎所有大规模语言模型(LLM)的核心。

Transformer模型的架构由两个主要模块组成:编码器(Encoder)和解码器(Decoder)。

  • 编码器:将输入转换为矩阵表示,用于捕捉上下文信息。
  • 解码器:基于编码器输出生成最终的结果,如翻译句子或预测下一步文本。

经典的Transformer模型每个模块由6层堆叠而成,而这些层都依赖一个核心机制:多头自注意力机制(Multi-Headed Self-Attention)。

2) Transformer的优势:捕捉全局上下文

与早期的RNN或LSTM不同,Transformer模型可以捕捉整个输入序列的全局上下文,而不仅仅是单个词的局部信息。这种特性让它在处理长文本时表现出色。

3) Transformer的局限性

尽管Transformer在许多任务中表现出色,但在某些场景下仍存在不足。例如:

  • 仅考虑历史信息:Transformer的注意力层通常只关注“过去的上下文”,对于某些需要前后双向理解的任务(如问答)表现会受限。

举个例子:

“John带着Milo参加了聚会。Milo在聚会上玩得很开心。他是一只白色的猫。”


如果我们问:“Milo是否和John在聚会上喝酒了?”


仅依赖前两句,模型可能回答“玩得开心可能意味着喝酒了”;但如果能结合第三句——“Milo是一只猫”,答案显然是“不可能”。

这时,我们需要一个能够同时理解前后文的模型,这便是BERT。

03、BERT:双向编码的“语义大师”

1) 什么是BERT?

深入解析Transformers、BERT与SBERT:从原理到应用-AI.x社区

BERT(Bidirectional Encoder Representations from Transformers)是基于Transformer编码器开发的模型,但与Transformer不同的是,BERT采用双向自注意力机制,能够同时理解句子前后文的信息。

BERT的设计使其特别适合处理像问答、文本摘要等任务。它通过引入特殊的标记(如[CLS]和[SEP]),让模型能够更好地区分问题和答案,进而进行上下文推理。

深入解析Transformers、BERT与SBERT:从原理到应用-AI.x社区

2) BERT的训练方法

BERT的强大来源于两种预训练任务:

  • 掩码语言模型(Masked Language Model, MLM):随机遮盖输入文本的15%的词汇,模型需要预测被遮盖的词是什么。
  • 下一句预测(Next Sentence Prediction, NSP):判断两句输入文本是否是相邻句。

深入解析Transformers、BERT与SBERT:从原理到应用-AI.x社区

深入解析Transformers、BERT与SBERT:从原理到应用-AI.x社区

3) BERT的局限性

尽管BERT在语义理解上表现强大,但它在处理大规模相似性搜索任务时表现欠佳。例如,当需要在10,000条句子中找到与某个句子最相似的一条时,BERT需要对每个句子对进行两两比较,计算量巨大。这种二次复杂度使其难以在大规模语义搜索中应用。

于是,SBERT应运而生。

04、SBERT:专注于语义相似度的革新模型

1) 什么是SBERT?

深入解析Transformers、BERT与SBERT:从原理到应用-AI.x社区

SBERT(Sentence-BERT)通过在BERT的基础上引入Siamese网络(孪生网络),解决了大规模相似性搜索的计算瓶颈。

与BERT不同,SBERT不需要每次都对句子对进行比较,而是先对每个句子生成独立的固定长度向量(如1×768维度),然后再通过简单的数学运算(如余弦相似度)来比较句子间的相似性。

2) SBERT的架构与特点

SBERT的架构引入了池化层(Pooling Layer),将BERT的输出从高维度(如512×768)简化为低维度(如1×768),大幅降低了计算复杂度。此外,它还支持三种训练方式:

  • 自然语言推理(NLI):基于分类任务(如“推断”“中性”“矛盾”)进行训练。
  • 句子相似度(Sentence Similarity):直接优化余弦相似度,适合语义相似任务。
  • 三元组损失(Triplet Loss):通过比较锚点句、正样本句和负样本句的距离,优化语义表示。

深入解析Transformers、BERT与SBERT:从原理到应用-AI.x社区

3) SBERT的实际应用

SBERT已经成为构建检索增强生成(RAG)流水线的核心工具。通过开源库sentence-transformers,你可以轻松生成句子嵌入,并进行语义搜索。以下是简单的代码示例:

# 安装库
!pip install sentence-transformers

# 加载模型
from sentence_transformers import SentenceTransformer
model = SentenceTransformer('bert-base-nli-mean-tokens')

# 生成句子嵌入
sentences = [
    "今天的天气真好。",
    "外面阳光明媚!",
    "他开车去了体育场。",
]
embeddings = model.encode(sentences)

# 计算相似度
similarities = model.similarity(embeddings, embeddings)
print(similarities)

05、总结:从Transformer到SBERT,探索NLP的未来

从Transformer的全局上下文捕捉,到BERT的双向语义理解,再到SBERT的大规模相似性搜索优化,这些模型展现了NLP领域的不断突破。


本文转载自公众号Halo咯咯    作者:基咯咯

原文链接:​​https://mp.weixin.qq.com/s/N1AsVsONulrwicwmWJf9eA​


©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2025-2-7 17:03:50修改
收藏
回复
举报
回复
相关推荐