ERNIE(Enhanced Representation through kNowledge Integration)模型
ERNIE(文心,全称 Enhanced Representation through kNowledge Integration)是 百度(Baidu)在 2019 年提出的预训练语言模型,在 BERT 的基础上 引入了 知识增强(Knowledge Integration),特别适用于 中文 NLP 任务。
论文:ERNIE: Enhanced Representation through kNowledge Integration
ERNIE 通过整合外部知识,使预训练语言模型在多种 NLP 任务(如命名实体识别、阅读理解、文本分类等)上表现更好,特别适用于 中文 NLP 场景。
1. 为什么需要 ERNIE?
BERT 在 NLP 任务上表现优秀,但在某些方面存在问题:
- 缺乏对世界知识(Knowledge)的理解,无法建模 实体(Entity)、关系(Relation)等信息。
- 仅基于单词和子词(Subword),未充分利用语义知识,特别是中文语言的 多义性、成语、固定搭配 等。
ERNIE 通过 知识增强,使模型:
- 更好地理解中文语言现象(如成语、谚语、多义词)
- 在命名实体识别(NER)、阅读理解、问答等任务上超越 BERT
2. ERNIE 的核心创新
ERNIE 主要在 BERT 结构 上做了以下 三大优化:
- 知识增强(Knowledge Integration)
- 动态 Mask 机制(Dynamically Masking Strategy)
- 跨粒度建模(Multi-Granularity Learning)
2.1 知识增强(Knowledge Integration)
BERT 主要基于上下文训练,但 ERNIE 结合了外部知识库(如 Wikipedia、百度百科):
-
实体知识(Entity Knowledge):如 “姚明” 是篮球运动员,模型能捕捉 姚明与篮球的关系。
-
世界知识(World Knowledge):如 “牛顿提出万有引力定律”,模型能捕捉 “牛顿” 与 “万有引力” 的联系。
-
语言知识(Linguistic Knowledge):如 成语 “画蛇添足” 的整体语义,而不仅仅是字面意思。
-
相比 BERT,ERNIE 可以理解更多真实世界知识
-
增强了中文 NLP 任务的效果,如实体识别、阅读理解
2.2 动态 Mask 机制(Dynamically Masking Strategy)
BERT 的问题
- BERT 采用静态 Mask,即训练时 每个 token 被 Mask 的方式固定。
- 缺点:BERT 无法学习不同粒度(字、词、短语、句子)的语义关系。
ERNIE 解决方案
- 采用动态 Mask,在预训练过程中:
- 随机 Mask 不同粒度的文本(字、词、实体、短语)。
- 让模型学习更丰富的上下文信息。
示例
-
BERT Mask:
“华为推出了一款 [MASK] 手机。” → 预测单词
-
ERNIE Mask(实体级 Mask):
“华为 [MASK] 了一款新手机。” → 预测 “推出”
“华为推出了一款 [MASK]” → 预测 “新手机” -
ERNIE 让模型更适应中文 NLP 任务,提高语义理解能力
2.3 跨粒度建模(Multi-Granularity Learning)
BERT 的问题
- BERT 仅基于子词级别进行 Mask,但中文具有 丰富的短语、成语、句法结构。
ERNIE 解决方案
-
在训练过程中,Mask 不同粒度的文本:
- 字级(Character Level)
- 词级(Word Level)
- 短语级(Phrase Level)
- 句子级(Sentence Level)
-
相比 BERT,ERNIE 可以理解更复杂的语言结构,特别适用于中文 NLP
3. ERNIE 主要模型版本
百度不断升级 ERNIE,提供多个版本:
模型 | 年份 | 主要优化 | 适用任务 |
---|---|---|---|
ERNIE 1.0 | 2019 | 结合知识图谱 | 适用于中文 NLP 任务 |
ERNIE 2.0 | 2019 | 动态 Mask + 多任务学习 | 适用于阅读理解、NER、问答 |
ERNIE 3.0 | 2021 | 更大规模 + 知识增强 | 适用于长文本、对话、生成任务 |
ERNIE-ViLG | 2022 | 文生图能力(类似 DALL·E) | 适用于图像生成 |
ERNIE 4.0 | 2023 | 强化对话、逻辑推理 | 适用于 Chatbot、复杂推理任务 |
ERNIE Bot(文心一言) | 2023 | 强化 ChatGPT 竞品 | 适用于智能助手 |
ERNIE 主要针对中文 NLP 任务优化,并不断扩展至 AI 生成内容(AIGC)领域。
4. ERNIE 在 Hugging Face transformers
库中的使用
百度开放了 ERNIE 预训练模型,可以通过 Hugging Face 加载。
4.1 安装 transformers
pip install transformers
4.2 加载 ERNIE 分词器
from transformers import AutoTokenizer
# 加载 ERNIE 预训练的分词器
tokenizer = AutoTokenizer.from_pretrained("nghuyong/ernie-3.0-base-zh")
# 对文本进行分词
text = "百度推出了 ERNIE 模型。"
tokens = tokenizer(text, return_tensors="pt")
print(tokens)
4.3 加载 ERNIE 并进行文本表示
from transformers import AutoModel
# 加载 ERNIE 预训练模型
model = AutoModel.from_pretrained("nghuyong/ernie-3.0-base-zh")
# 前向传播
outputs = model(**tokens)
# 获取 ERNIE 输出的隐藏状态
hidden_states = outputs.last_hidden_state
print(hidden_states.shape) # (batch_size, sequence_length, hidden_dim)
4.4 ERNIE 进行文本分类
from transformers import AutoModelForSequenceClassification
# 加载 ERNIE 文本分类模型(2 分类)
model = AutoModelForSequenceClassification.from_pretrained("nghuyong/ernie-3.0-base-zh", num_labels=2)
# 计算 logits
outputs = model(**tokens)
print(outputs.logits)
5. ERNIE 的应用场景
ERNIE 适用于各种 中文 NLP 任务:
- 文本分类(情感分析、新闻分类)
- 命名实体识别(NER)
- 问答系统(QA)
- 机器翻译
- 对话系统(Chatbot)
- 文生图(ERNIE-ViLG)
特别适用于中文语义理解任务,在多个 中文 NLP 评测基准(CLUE, CMRC, DuReader) 上超过 BERT。
6. 结论
- ERNIE 是百度开发的中文 NLP 预训练模型,在 BERT 基础上增强了知识整合能力。
- 采用 知识增强(Knowledge Integration)、动态 Mask、多粒度学习,使其在中文任务上表现优异。
- 比 BERT 更适合中文 NLP 任务,特别是命名实体识别(NER)、阅读理解、问答系统等。
- 可以通过 Hugging Face
transformers
直接加载 ERNIE 进行推理和微调。
ERNIE 是中文 NLP 领域的重要突破,在知识增强、中文理解、对话 AI 领域具有广泛应用。