NLP | 自然语言处理经典seq2seq网络BERT详解及代码

文摘   2024-11-09 12:14   菲律宾  
👆点击上方名片关注哟👆

2019论文:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding用于语言理解的深度双向变换器的预训练

论文地址:https://arxiv.org/abs/1810.04805

1. BERT概述

BERT,全称 "Bidirectional Encoder Representations from Transformers",是由 Google AI Language 于 2018 年开发的深度学习模型。它在 NLP(自然语言处理)领域表现出色,成功解决了超过 11 项语言任务,包括 情感分析命名实体识别(NER) 等问题。

过去,计算机虽然能读取文本,但无法像人类一样理解上下文。为此,NLP 诞生了,旨在让机器能够 读取、分析、解释和提取语言中的含义。传统方法通常为每个任务训练独立模型,而 BERT 改变了这一现状。

BERT 是 深度双向、无监督的语言模型,通过大规模纯文本语料库进行预训练,能理解文本上下文中的深层含义。

2. BERT 能做什么?

BERT 是多功能的 NLP 工具,广泛应用于以下任务:

  • 情感分析:判断电影评论是积极还是消极。

  • 问题回答:帮助聊天机器人给出精准回答。

  • 文本预测:在 Gmail 等应用中预测下一句文本。

  • 文本生成:根据几句提示生成文章。

  • 长文总结:如快速总结法律合同。

  • 多义词解析:根据上下文区分“bank”(银行/河岸)等词的不同含义。

它还应用于 语音助手(如 Alexa 和 Siri)、聊天机器人Google 搜索语音导航 等多个领域。

3. BERT 的原理

BERT 基于 Transformer 架构。Transformer 是一种通过 自注意力机制 学习文本中单词之间关系的模型。它包括两个模块:编码器(处理输入文本)和 解码器(生成预测)。而 BERT 只需要编码器部分,因为它的目标是生成语言模型。

BERT 的核心思想是 将词汇转换为向量,使机器学习模型能在数字空间中处理语言。这些转换后的向量可以与其他类型的数据一起,用于进一步预测和分析。

训练策略

为了训练 BERT,采用了两种关键策略:

  1. Masked Language Model (MLM)

  2. Next Sentence Prediction (NSP)


4. Masked Language Model (MLM)

在输入 BERT 之前,随机替换每个句子中 15% 的单词为 [MASK] 标记。模型根据上下文预测被掩盖单词的原始值。

预测步骤:

  • 在编码器的输出上添加分类层。

  • 将输出向量与词嵌入矩阵相乘,转化为词汇表维度。

  • softmax 计算词汇表中每个单词的概率。

BERT 的损失函数只考虑掩盖词的预测,这种设计提高了模型的 上下文感知能力。尽管训练收敛速度较慢,但模型的最终表现显著优于定向语言模型。

注意:实际实现中,并非所有 15% 的词都被替换为 [MASK]。

5. Next Sentence Prediction (NSP)

在训练 BERT 时,模型会接收成对句子作为输入,并预测第二个句子是否为第一个句子的自然续句。

训练过程:

  • 50% 的句子对是连续的,另 50% 是随机组合的。

  • 在输入时,使用 [CLS] 作为句首标记,[SEP] 作为句尾标记。

  • 添加 句子嵌入位置嵌入,以帮助模型区分句子。

预测步骤:

  • 通过 Transformer 编码整个输入序列。

  • 用分类层将 [CLS] 标记的输出转化为 2x1 形状的向量。

  • softmax 计算续句的概率。

BERT 同时训练 MLM 和 NSP,通过最小化两者的组合损失来优化模型性能。

6. BERT 的输入表示

BERT 的输入表示由以下三种嵌入的总和组成:

  • Token 嵌入:使用词片嵌入,将常见词作为单个单元,稀有词拆解为更小的子词。

  • 段嵌入:通过掩码分割句子,区分不同段落。

  • 位置嵌入:编码每个词在句子中的位置,使模型能处理序列信息。

这些嵌入加在一起,作为 BERT 的输入向量。

7. BERT 的模型架构

BERT 提供两种架构:BERT-BaseBERT-Large,根据网络层数和隐藏层维度有所不同:

模型Transformer 层数 (L)隐藏层维度 (H)自注意力头数 (A)
BERT-Base1276812
BERT-Large24102416

BERT 有大小写敏感(case-sensitive)和非敏感(uncased)两种版本,可根据应用需求选择使用。

8. 如何使用 BERT?

环境安装

Win10 + PyCharm + PyTorch 环境中,安装 Transformer 库:

pip install transformers


示例代码

以下是一个简单的 BERT 应用示例,使用 BERT 模型预测掩盖单词:

from transformers import pipeline
# 初始化 BERT 填空任务模型unmasker = pipeline('fill-mask', model='bert-base-uncased')
# 测试 BERT 的预测能力result = unmasker("Artificial Intelligence [MASK] take over the world.")print(result)


9. 总结

BERT 是 Transformer 架构的代表作,为 NLP 领域带来了革命性进展。通过 MLMNSP 策略,BERT 实现了对语言上下文的深度理解,并成为 情感分析、文本生成、问答系统 等任务的强大工具。



想要了解更多内容,可在小程序搜索🔍AI Pulse,获取更多最新内容。

AI Pulse
"AI Pulse - AI脉动",探索AI技术前沿,深入解析算法精髓,分享行业应用案例,洞察智能科技未来。欢迎关注,与我们共赴AI学习之旅。
 最新文章