什么是BERT(Bidirectional Encoder Representations from Transformers)?
引言
BERT,即Bidirectional Encoder Representations from Transformers,自2018年由谷歌发布以来,极大地改变了自然语言处理(NLP)的格局。BERT的发布在社区引起了极大的兴奋,因为它代表了一种突破,超越了当时使用的模型,如循环神经网络(RNNs)和卷积神经网络(CNNs),并在几乎所有NLP任务中实现了最先进的结果,包括多义词的消歧。
BERT通过三种主要方式与其他模型不同:
双向性:BERT同时考虑一个词在完整句子前后的内容,不像传统模型那样按单一方向——从左到右或从右到左顺序处理文本。
变换器架构:BERT使用带有自注意力机制的变换器架构来捕获上下文并理解长序列。
两阶段训练:BERT在互联网上数十亿或数万亿的未标记数据上进行通用无监督预训练,并且可以通过使用小型标记任务特定(例如,摘要、问答)或领域特定(例如,法律、学术)数据集进行训练来补充。
与传统模型相比,BERT在性能和准确性方面取得了惊人的成果,为BERT驱动的应用开辟了广阔的视野和思维。
尽管在BERT发布近十年后,以及新的大型语言模型(LLMs)的出现,BERT仍然是NLP领域的参考标准。
理解BERT对于有兴趣构建AI世界的人来说是必要的。但要真正欣赏BERT的能力,我们需要探索细节。让我们深入了解。
自然语言处理(NLP)背景
自然语言处理(NLP)弥合了人类交流和计算机理解之间的差距,涵盖了从翻译服务到语音识别再到虚拟助手等一切。在BERT之前,为每个特定任务创建了单独的NLP模型。然而,即使是为单词嵌入生成或上下文预测奠定基础的模型,如Word2Vec和GPT,也因为它们的单向训练数据和限制而难以应对人类语言的复杂和微妙。
BERT通过在几乎所有常见的自然语言处理任务中超越所有现有模型,彻底改变了特定任务的范式。
什么是BERT以及它的工作原理?
BERT,或Bidirectional Encoder Representations from Transformers,是一个先进的深度学习模型,用于自然语言处理(NLP)任务。它是许多流行的大型语言模型(LLMs)的基础,如GPT-3和LLMA。
BERT在大量语料库上进行双向预训练,使其能够更有效地把握上下文和准确性。它使用带有注意力机制的变换器编码器架构来理解单词标记和序列句子依赖之间的复杂语义关系。
BERT在一般语言理解任务中超越了最先进的水平,如自然语言推理、情感分析、问答、释义检测和语言可接受性。
BERT使用双向上下文
BERT使用双向方法来理解上下文。与传统的NLP模型不同,这些模型通常顺序地单向处理文本,BERT同时查看句子中单词的左右上下文。这种双向语义信息处理使BERT能够通过更全面地考虑周围上下文来区分同一个词的多重含义。
例如,考虑单词“酷”的一些例子。在句子“这是一个酷的地方”和“它有一个凉爽的早晨微风”中,传统模型可能无法区分这个词的不同含义——一些有趣的事情或对温度的引用。然而,BERT同时处理完整的句子,理解“酷”在这两个上下文中的含义并不相同。
以下是BERT处理文本的方式:
分词:BERT将句子分词成称为标记的单词片段。
特殊标记:它在生成的标记序列开头添加一个特殊标记[CLS],在结尾添加一个标记[SEP]以分隔句子并指示结束。
转换为向量:每个标记通过嵌入矩阵和多层编码器转换为向量。这些层根据序列中所有其他标记提供的上下文信息细化每个标记的表示。
向量组合:然后所有向量组合成一个统一的密集表示,BERT使用它来理解和预测语言。
例如,用户查询“Milvus是一个为可扩展的相似性搜索而构建的向量数据库”将被分解成标记、编码和处理,以捕获查询的全部含义。
20241105-121406.jpg
20241105-121413.jpg
BERT使用变换器架构
BERT采用专注于理解人类语言输入序列的机器学习算法的变换器编码器架构。编码器接收称为嵌入的向量化输入。嵌入是为标记(文本元素,如单词)、段落(如句子)和输入中标记的位置创建的。然后由其变换器神经网络处理标记序列。
变换器架构允许并行处理,使其极为高效。此外,变换器使用注意力机制(最初在2017年流行的“Attention Is All You Need”论文中提出)来观察单词之间的关系。
BERT的注意力机制
BERT的变换器双向深度学习依赖于一个注意力机制,该机制捕获元素(例如,文本中的单词)之间的关系,使其能够解释含义并识别序列中哪些部分对于上下文和预测至关重要。就像人类倾向于忽略或快速忘记不重要的细节一样,BERT通过差分权重学习,这些权重信号标记了句子中每个单词的重要性。最关键的部分在通过多个神经层时由变换器处理。
BERT使用“自注意力机制”。自注意力使模型能够动态确定序列中不同单词的相对重要性,提高了捕获长距离依赖的能力。关键、值和查询输入来自前一个编码器层的输出。
自然语言处理模型,特别是变换器编码器模型,使用自注意力。编码器中的每个位置都可以从前一个编码器层的每个位置接收注意力分数。这允许模型权衡句子中不同单词的重要性。
以下是它的工作原理:
序列中的每个单词在自注意力中有三个向量与之相关:查询(Q)、键(K)和值(V)。通过取一个单词的查询与另一个单词的键的点积并除以键向量维度的平方根,可以计算两个单词之间的注意力分数。加权和是自注意力机制的输出,分数用于权衡值。
BERT使用两阶段训练:预训练和微调
BERT使用预训练和微调来实现其卓越的性能。
预训练
BERT从大型未标记数据集中学习,预测句子中随机掩蔽的单词,帮助它在没有特定任务输入的情况下理解语言模式和上下文。
具体来说,BERT在包括维基百科(约25亿单词)和谷歌图书语料库(约8亿单词)的庞大语料库上使用新颖的变换器架构进行训练,通过使用64个TPU(张量处理单元)加速了四天。
认识到计算需求后,发布了较小的BERT模型,如DistilBERT,其运行速度提高60%,同时保持BERT性能的95%以上。
微调
预训练后,BERT通过在较小的任务特定数据集上训练来调整特定自然语言处理任务。这个过程提高了特定应用的准确性,如情感分析或问答。这种组合方法允许BERT适应并用于各种下游自然语言生成任务,只需最小的修改,使其成为自然语言理解和处理中多功能且高效的工具。
BERT使用两种学习方法:MLM和NSP
BERT采用了两种主要的深度学习和机器学习方法,即:掩蔽语言模型(MLM)和下一句预测(NSP)。
掩蔽语言模型(MLM)
BERT随机替换15%的标记单词为掩蔽标记,然后尝试预测正确的标记。例如,在句子“She asked for the user [Mask] and password,”中,BERT的双向处理为其提供了更好地猜测掩蔽单词的机会。这种掩蔽技术要求模型在两个方向上查看并使用句子的全部上下文来预测掩蔽的单词。
下一句预测(NSP)
在训练期间,BERT输入句子对并学习预测第二句话是否确实是原始文本中的下一句。一次处理两个句子,50%的第二句话是真正的下一句,而剩下的50%是来自向量化数据集的随机句子。BERT需要预测第二句话是否是随机的。
BERT同时在MLM(50%)和NSP(50%)上进行训练,使其能够理解句子的内部结构和句子之间的语义关系。
BERT的应用
BERT在各种NLP任务中表现出色,包括:
- 文本分类:BERT提高了分类文本是否表达积极或消极情绪的准确性。BERT的预训练语言表示可以微调以提高特定文本分类任务的性能,如垃圾邮件检测、情感分析和文档分类。
- 问答:BERT能够理解自然语言中的问题,并根据可用文本提供精确的答案。BERT的架构显著推进了问答领域,使模型在SQuAD(斯坦福问答数据集)等基准数据集中实现了最先进的结果。
- 摘要:BERT可以快速分析合同等长篇文件并创建准确的摘要。BERT从两个方向捕获上下文的能力使其能够理解文件的精髓,使其成为生成简洁连贯摘要的有效工具。
- 消歧:BERT根据双向上下文区分具有多重含义的单词。这个功能在多义词(具有许多含义的单词)可能导致歧义的任务中很有用。BERT的上下文理解有助于比以往模型更有效地消歧这些单词。
- 命名实体识别(NER):它从文本中提取名称、组织和地点等实体。它用于数据提取和组织任务。BERT的NER能力在自动化文档处理、信息检索和基于实体的搜索应用中广泛使用。
你可能每天在使用谷歌搜索、翻译服务、聊天机器人、语音助手或语音操作的应用程序时都在体验BERT。例如,BERT集成到谷歌搜索引擎中,显著提高了搜索结果的相关性和准确性,特别是对于复杂查询。
BERT的优势和局限性
BERT在自然语言处理方面提供了显著的进步,但它也面临挑战。
优势:
- 增强性能:BERT在各种自然语言处理基准测试中显著提高了性能。其双向性质和变换器架构使其能够更有效地捕获上下文,从而在从文本分类到机器翻译的NLP任务中提高了准确性。
- 多功能性:它可以在多个NLP任务中应用,而无需特定任务的架构修改。BERT的适应性使其成为AI基础应用中的流行选择,包括情感分析、实体识别和文本生成。这种多功能性源于其预训练的语言表示,可以微调以适应不同的下游任务。
局限性:
- 计算资源:BERT需要高计算能力和内存,这可能是实时应用或无法访问强大计算基础设施的应用的障碍。从头开始训练BERT需要大量的计算资源,包括多个GPU或TPU,使其对较小的组织或个人研究者来说不太容易访问。
- 可解释性:BERT的复杂性使其比更简单的模型更不可解释,这在调试和修改模型时提出了挑战。深度学习架构虽然强大,但通常充当“黑箱”,使得理解模型背后的特定预测或决策的推理变得困难。
- 预训练要求:BERT的有效性在很大程度上依赖于广泛的预训练,这需要大量的资源和时间。虽然有预训练模型可用,但针对特定任务微调BERT仍然需要大量的数据和计算能力,这可能对所有用例来说并不可行。
尽管存在这些局限性,BERT的优势通常超过了挑战,使其成为自然语言处理应用中的流行选择。BERT变体和扩展的持续开发也旨在解决其中一些挑战,使模型更易于访问、高效且适用于更广泛的应用范围。
BERT变体和扩展
已经开发了几种BERT变体和扩展,以解决其局限性并扩展其能力:
- RoBERTa(Robustly Optimized BERT Pretraining Approach):BERT的优化版本,调整关键超参数并移除下一句预测机制,提高了各种NLP任务的性能。RoBERTa通过在更多数据上训练和使用更长的序列来增强BERT的鲁棒性,使其更有效地捕获上下文。
- DistilBERT:BERT的更小、更快、更高效版本,适用于资源有限的环境。DistilBERT实现了与BERT几乎相同的性能,同时速度快60%,参数少40%,使其成为对速度和效率至关重要的应用的理想选择。
- ALBERT(A Lite BERT):BERT的轻量版本,减少了模型大小,而不影响效果,解决了BERT的资源需求。ALBERT通过跨层共享参数和分解嵌入矩阵来实现这种缩减,使其成为资源效率更高的替代品,同时保持高准确性。
- ColBERT(Contextualized Late Interaction over BERT):BERT的精炼扩展,专注于在大型文本集合中高效检索。ColBERT旨在用于文档检索和排名任务。它平衡了深度上下文理解和计算效率的需求。
- BGE-M3(BERT-based Generative Encoder Multilingual Model):扩展BERT能力,特别是在多语言任务中的高级机器学习模型。BGE-M3利用BERT的架构,提高不同语言的性能,使其成为全球应用的宝贵工具。
- Splade(Sparse Lexical and Dense Retrieval):在生成学习稀疏嵌入方面的演变,基于BERT架构,采用独特的方法来提炼嵌入稀疏性。Splade结合了稀疏和密集检索方法的优势,为信息检索任务提供了更高效、更有效的方法。
这些变体和扩展展示了BERT的适应性和在不断发展的统计自然语言处理领域中的持续相关性。它们代表了努力克服原始BERT模型所提出的挑战,使模型更易于访问、高效且适用于更广泛的应用范围。
结论
BERT通过使用人工智能,实现了自然语言处理技术的重大突破,使机器对人类语言的理解更加细腻和有效。从语音操作的应用程序和聊天机器人到语音转文本字幕和翻译应用程序等服务,BERT的影响在各个市场细分领域和现代社会的各个部门都显而易见。
BERT的一个关键优势是其开源性质。与其他大型语言模型如GPT-3不同,BERT的代码在GitHub上免费提供,允许开发人员和研究人员为其独特任务进行定制。这种开放性促进了一个充满活力的贡献者社区,并导致了众多BERT变体和扩展的发展,以解决特定挑战并增强模型的能力。
此外,特定用例的预训练BERT模型可用,使用户能够利用BERT的高级能力,而无需大量的计算资源。这种可访问性使BERT成为自然语言处理的基础工具,其应用随着领域的发展而不断扩大。
BERT不仅仅是一个工具,而是机器理解人类语言方式的范式转变。随着新模型和技术在它所建立的基础上构建,BERT的影响将继续被感受到。
如果您想了解更多或开始您的计算机视觉项目,例如,欢迎加入我们的Discord频道。我们提供丰富的资源和支持性社区,帮助您开始。
技术干货
揭秘 Transformer 模型:Transformer 架构和底层原理的研究
本文将从基础的 encoder-decoder 架构开始介绍 Transformer 模型及其机制和能力。通过探索模型精巧的设计和计算过程,我们将揭秘为什么 Transformer 成为了现代 NLP 进步的基石。
2024-11-15技术干货
向量数据库与图数据库
本文将全面比较向量数据库和图数据库,帮助您理解它们的根本差异、优势和理想应用。
2024-11-19技术干货
向量数据库正在革新人工智能应用中的非结构化数据搜索
在最近的巴西非结构化数据聚会上,Zilliz的人工智能和机器学习负责人Frank Liu谈到了向量数据库是如何改变人工智能应用中非结构化数据搜索的格局的。他的见解揭示了这些数据库广泛而深远的能力。
2024-11-19