掘金 人工智能 07月02日 10:38
预训练模型(BERT)是什么?是基于Transformer的双向编码器吗?
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

文章深入探讨了BERT模型的核心原理、结构、预训练任务以及在问答系统和聊天机器人中的应用,并强调了其在提升搜索效率和辅助性导航方面的优势,展现了BERT在自然语言处理领域的广泛适用性和重要性。

💡BERT的核心架构基于多层Transformer编码器,它整合了Tokenization、多元Embeddings和任务适配的输出层,实现了对文本双向上下文特征的高效提取。

🧩BERT的输入经过分词、TokenEmbeddings、SegmentEmbeddings和PositionEmbeddings的处理,最终形成每个Token的完整输入表示,为模型提供丰富的语义和上下文信息。

⚙️BERT的预训练任务包括Masked Language Model (MLM)和Next Sentence Prediction (NSP),前者预测被遮盖的词汇,后者理解句子间的逻辑关系,这些任务使模型学习到语言的内在规律。

🎯BERT在问答系统和聊天机器人中有广泛应用,前者涉及检索和问答判断阶段,后者则涵盖用户意图分类、槽位填充以及多轮对话中的上下文信息利用。

🚀BERT的优势在于其广泛适用性、无需复杂结构调整、无监督预训练方式以及对各类NLP任务的参数优化,这使得它在提升搜索效率和辅助性导航等方面具有显著优势。

一、BERT的本质

BERT架构

作为预训练语言模型的代表,其核心由多层Transformer编码器构成。

该架构整合了Tokenization技术、多元Embeddings机制以及任务适配的输出层设计,实现了对文本双向上下文特征的高效提取,进而在多样化自然语言处理任务中展现卓越性能。

AI大模型全套学习资源【点击蓝字获取】

1、输入层 (lnput)

BERT的输入是一个原始的文本序列;它可以是单个句子或者两个句子(例如,问答任务中的问题和答案)。在输入到模型之前,这些文本需要经过特定的预处理步骤。

2、Tokenization和Embeddings

Tokenization: 原始文本首先会被送入分词器(Tokenizer)进行切分处理,生成Token序列。这一过程通常包含文本标准化(如转为小写)、标点符号过滤以及词语切分等步骤。

BERT模型采用WordPiece分词算法,能够将完整单词分解为更细粒度的子词单元(subwords),从而有效平衡词汇表容量与模型泛化性能。

TokenEmbeddings: 经过分词的Token会被转换为高维向量表示,即TokenEmbeddings。

该转换过程通过查询预训练的词嵌入矩阵完成,该矩阵为每个Token分配一个维度固定的特征向量。

SegmentEmbeddings: 为支持双句输入场景(如句子对分类任务),BERT引入了SegmentEmbeddings机制。

该嵌入层为每个Token附加一个标识向量,用于区分其所属的句子类别(通常标记为"A"或"B")。

PositionEmbeddings: 考虑到Transformer架构本身不具备序列位置感知能力,模型通过PositionEmbeddings来编码Token的位置信息。

每个位置索引对应一个独特的嵌入向量,这些向量在模型训练过程中动态学习调整。

最终,将TokenEmbeddings、SegmentEmbeddings和PositionEmbeddings三者进行向量相加,形成每个Token的完整输入表示。

3、BERT的网络结构(Network Structure of BERT)

BERT的核心是由多个Transformer编码器层堆叠而成的。每个编码器层都包含自注意力机制和前馈神经网络,允许模型捕捉输入序列中的复杂依赖关系。

自注意力机制: 允许模型在处理序列时关注不同位置的Token,并计算Token之间的注意力权重,从而捕捉输入序列中的依赖关系。

前馈神经网络: 对自注意力机制的输出进行进一步转换,以提取更高级别的特征。

残差连接和层归一化: 用于提高模型的训练稳定性和效果,有助于缓解梯度消失和梯度爆炸问题。

4、输出层(Output)

BERT的输出取决于特定的任务。在预训练阶段,BERT采用了两种任务: MaskedLanguageModel(MLM)和NextSentence Prediction(NSP)。

MLM: 在这种任务中,BERT预测输入序列中被随机遮盖的Token。模型的输出是每个被遮盖Token的概率分布,通过Softmax层得到。

NSP: 这种任务要求BERT预测两个句子是否是连续的。模型的输出是一个二分类问题的概率分布。

5、BERT模型的输入:

通过结合Token Embeddings、Segment Embeddings和Position Embeddings三种嵌入方式,BERI等模型能够全面捕获文本的语义和上下文信息,为各类自然语言处理任务提供强大的基础表示能力。

5.1 Token Embeddings

在BERT中,输入文本首先被分割成Token序列(单词、子词等),每个Token都会被映射到一个高维向量空间,形成Token Embeddings。

这些嵌入捕获了Token的语义信息,是模型理解文本的基础。

Token Embeddings是通过在大规模语料库上进行无监督预训练得到的,这使得BERT能够理解和处理各种复杂的语言现象和语义关系。

5.2 Segment Embeddings

为了处理像问答这样的任务,BERT引入了SegmentEmbeddings来区分两个不同但相关的句子(例如问题和答案)。

这些嵌入帮助模型理解句子间的关系和边界。

在文本分类任务中,Segment Embeddings的作用可能不那么明显,因为输入通常是一个连续的文本段落。

然而,它们仍然可以用于区分不同部分的文本,特别是在处理长文档或多个句子时。

5.3 Position Embeddings

由于Transformer结构本身不具备处理序列顺序的能力,BERT引入了Position Embeddings来捕获文本中Token的位置信息。

这些嵌入确保模型能够区分不同位置的相同Token,例如区分“hello,world”和“world,hello”中的“hello”和“world”。

Position Embeddings与Token Embeddings和Segment Embeddings相加,形成最终的输入嵌入,这些嵌入随后被送入Transformer编码器进行处理。

二、BERT的原理

1、BERT的工作原理:

通过在大规模未标注数据上执行预训练任务(如Masked Language Model来捕获文本中词汇的双向上下文关系。

以及Next Sentence Prediction来理解句子间的逻辑关系),再将预训练的模型针对特定任务进行Fine tuning,从而在各种自然语言处理任务中实现高性能。

2、模型的预训练任务:

在大量未标注数据上进行自我学习的过程,通过这些任务,模型能够学习到语言的内在规律和模式,从而为其在后续的具体任务(如文本分类、问答等)中提供有力的支持。

以下是两个核心的预训练任务:

2.1 无监督预训练

2.1.1 Masked Language Model (MLM)

任务描述: 在输入的文本中,随机地遮盖或替换一部分词汇,并要求模型预测这些被遮盖或替换的词汇的原始内容。

目的: 使模型能够利用双向的上下文信息来预测被遮盖的词汇,从而学习到更深层次的语义表示。

实现方式: 在预训练阶段,BERT随机选择文本中15%的Token进行遮盖,其中80%的时间用[MASK]标记替换,10%的时间用随机词汇替换,剩下的10%保持不变。

这种遮盖策略被称为动态遮盖,因为它在每次输入时都会随机改变遮盖的位置和词汇。

2.1.2 Next Sentence Prediction (NSP)

任务描述: 给定一对句子,判断第二个句子是否是第一个句子的后续句子。

目的: 使模型能够理解句子间的逻辑关系,如连贯性、因果关系等,从而提高其在处理长文档或复杂文本时的能力。

实现方式: 在预训练阶段,BERT构造了一个二分类任务,其中50%的时间B是A的真正后续句子(标签为“IsNext”)。

另外50%的时间B是从语料库中随机选择的句子(标签为“NotNext”)模型通过最后一层Transformer输出的[CLS]标记的嵌入来进行预测。

3、模型Fine tuning:

BERT的fine-tuning过程是针对特定任务对预训练模型进行调整的过程,使其能更好地适应和解决具体任务。

根据任务类型的不同,对BERT模型的修改也会有所不同,但通常这些修改都相对简单,往往只需要在模型的输出部分加上一层或多层神经网络。

3.1任务类型:

根据具体任务的不同,BERT的fine-tuning可以分为以下几种类型:

句子对分类任务(SentencePairClassification) : 该任务旨在分析两个句子之间的关联性,例如判断文本蕴含关系或问答是否匹配。

在模型微调阶段,需要同时输入两个句子,使用首个token([CLS])的向量表征作为整个句子对的语义表示,最后通过额外的softmax分类层完成关系判定。

单句分类任务(SingleSentenceClassification): 这类任务要求对独立句子进行类别划分,典型应用包括情感极性判断和文本主题分类。

微调过程中,模型接收单个句子输入,利用[CLS]标记的输出向量作为分类依据。

问答任务(QuestionAnswering): 该任务的目标是从上下文文本中定位问题答案。

微调时将问题和相关文本联合输入模型,通过预测答案片段在输出序列中的起始和终止位置来确定最终答案。

序列标注任务(SequenceTagging,如命名实体识别NER): 此类任务需要对序列中每个token进行细粒度分类,常见于实体识别和词性标注场景。

微调时提取所有token在最终Transformer层的输出表示,通过附加的softmax层实现逐个token的分类预测。

3.2 模型修改:

在进行fine-tuning时,对BERT模型的修改通常包括以下几个方面:

1.输入处理: 根据任务类型的不同,对输入数据进行相应的处理。eg:如将句子对拼接Z在一起、添加特殊标记等。

2.输出层: 在BERT模型的输出部分添加一层或多层神经网络,用于将模型的输出转换为任务所需要的格式。

对于分类任务,通常添加一个softmax层进行概率分布的计算;对于序列标注任务,则逐token进行分类。

3.损失函数: 根据任务类型选择合适的损失函数,如交叉损失函数用于分类任务、平方差损失函数用于回归任务等。

三、BERT的应用

AlQuestion Answer(OA,问答系统):

BERT在问答系统(QA)中的应用通常涉及两个阶段: 检索阶段和问答判断阶段。

1、检索阶段

1.1 文档处理:

切割: 将长文档切割成较短的段落或句子(Passage),这些片段更容易处理和索引。

建立索引: 利用倒排索引技术,为每个切割后的片段(Passage)建立索引,以便快速查询。

1.2 检索模型:

BM25模型: 使用BM25或类似的检索函数(如BM25+RM3)计算问句与每个候选段落或句子的相关性得分。

候选选择: 根据得分选择TopK个最相关的候选段落或句子。

2、问答判断阶段

2.1 模型准备:

Fine-tuning数据: 选择适当的问答数据集(如SQUAD)或任务数据进行BERT模型的fine-tuning

模型结构: 在BERT模型的基础上,添加必要的输出层以适应问答任务,如分类层或起始/终止位置预测层。

2.2 问答处理:

输入构建: 将用户问句和每个候选段落或句子组合成BERT模型的输入格式。

模型预测: 使用fine-tuned BERT模型对每个输入进行预测,判断候选段落或句子是否包含正确答案,或者预测答案的精确位置。

2.3 答案选择:

评分机制: 根据BERT模型的预测结果,为每个候选段落或句子分配得分。

最终答案: 选择得分最高的候选段落或句子作为最终答案。

B | 聊天机器人:

BERT在聊天机器人中的应用主要涉及两个方面: 用户意图分类和槽位填充(对于单轮对话),以及多轮对话中的上下文信息利用。

1、BERT在单轮对话中的应用

1.1 用户意图分类:

输入: 将用户的话语作为BERT模型的输入。

模型结构: 在BERT模型的基础上添加分类层,用于将用户意图分类到不同的服务类型中。

训练: 使用带有意图标签的用户话语数据集进行fine-tuning,使模型能够准确识别用户意图。

任务描述: 从用户的话语中解析出用户的意图,如订餐、点歌等。

1.2 槽位填充:

输入: 将用户的话语以及预定义的槽位作为BERT模型的输入。

模型结构: 采用序列标注的方式,对每个输入token进行槽位标签的预测。

训练: 使用带有槽位标签的用户话语数据集进行fine-tuning,使模型能够准确填充槽位信息。

任务描述: 根据用户意图抽取关键元素,如订机票时的出发地、目的地等。

2、BERT在多轮对话中的应用

2.1 上下文信息利用:

输入: 将当前用户话语以及历史对话内容作为BERT模型的输入。

模型结构: 可以采用多种策略来融入历史信息,如将历史对话与当前用户话语拼接、使用历史对话的嵌入表示等。

训练: 使用多轮对话数据集进行fine-tuning,使模型能够正确理解和利用上下文信息来生成应答。

任务描述: 在多轮对话中,利用历史交互信息来改进模型的应答。

2.2 模型改进:

增加模型容量: 通过增加BERT模型的层数或隐藏单元数来捕捉更多的上下文信息。

引入注意力机制: 使用注意力机制来加权历史信息的重要性,使模型能关注与当前应答最相关部分。

记忆网络: 结合记忆网络来存储和检索历史信息,以便在需要时提供给型进行应答生成。

关键问题: 如何有效融入更多的历史信息,并在上下文中正确地使用这些信息。

四、为什么选择 BERT?BERT的优势在哪儿?

自然语言处理已成为当前商业人工智能领域的重要研究方向。以搜索引擎为代表,NLP技术还广泛应用于智能语音助手、自动客服系统和车载导航系统等多个场景。

BERT作为一项创新性技术,采用大规模数据集训练的统一架构,经实验验证可在多种NLP任务中实现显著性能提升。

该模型具有广泛适用性(涵盖问题解答和语义推理等场景),且不需要针对特定任务进行复杂的结构调整。

由于BERT采用无监督预训练方式,可直接利用原始文本数据进行学习。

该模型支持对各类NLP任务进行参数优化,特别适合应用于机器翻译、智能问答、情绪识别以及文本分类等语言理解任务。

1.目标式搜索

尽管现代搜索引擎已能精准捕捉用户意图(当查询语句格式正确时),搜索体验仍有诸多优化空间。

对于语言表达能力有限或不熟悉搜索平台语言的用户,当前交互过程仍存在障碍。实际使用中,用户往往需要反复调整关键词组合才能获得满意结果。

Google每日处理的35亿次搜索若能提升10%的效率,长期将显著节约时间成本、网络带宽及服务器负载。

从商业价值考量,优化后的系统不仅能更精准捕捉用户画像以提升广告投放效果,还能通过降低非技术用户的检索门槛,减少因表述不当导致的误判,进而增强自然语言处理能力,为数据分析和商业决策提供更优质的底层支持。

2.辅助性导航

在美国,每八个人中就有一个是残障人士,这些人群在实体环境和数字世界中的行动能力往往面临诸多障碍。

对于那些依赖语音指令操控轮椅、浏览网页或使用智能设备的使用者来说,自然语言处理技术已成为不可或缺的日常工具。

像BERT这样的先进技术通过优化语音交互的精准度和响应速度,不仅能显著改善用户的生活品质,在紧急情况下更能为使用者提供关键的安全保障。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

BERT 自然语言处理 人工智能 NLP
相关文章