NLP学习笔记(七) BERT简明介绍 上

简介: NLP学习笔记(七) BERT简明介绍

前言


大家好,我是半虹,这篇文章来讲(Bidirectional Encoder Representations from Transformers)


目录


0  概述

1  模型架构

2  模型输入

3  预训练和微调


正文


0  概述


从某种程度上来说,深度学习至关重要的一环就是表征学习,也就是学习如何得到数据的向量表示


对于自然语言领域,一个典型的场景是学习文本的向量表示,关于这一点,前人已经做了很多探索



从一开始的 one-hot,到后来的 word2vec ,然后到 ELMo ,最后到现在的 BERT 及其众多变种


这些技术的发展代表着自然语言表征学习的历史进程,为各项自然语言处理任务提供了有力的支撑



在这里,我们不会展开说每种技术的细节以及它们之间的发展关系,这些内容会在之后有一篇文章单独介绍


现在大家只需要清楚,本文介绍的 BERT \text{BERT}BERT 本质上就是一个语言表征模型,用来获取文本向量表示


1  模型架构


事实上,BERT 的模型架构非常简单,就是 Transformer 的编码器,具体的结构如下图所示


编码器由若干个编码层堆叠而成,而且模型中上一个编码层的输出会作为下一个编码层的输入


编码层包括多头注意力机制和前馈神经网络两个子模块,每个子模块后有残差连接和层正则化


由于我们在上一篇文章中已经非常详细介绍过模型细节,所以这里就不再重复

九九九.png

BERT 有两个版本,它们的架构是一样的,不同之处仅在于超参,具体的区别如下 :


BERT-BASE  :编码层数量是 12,多头注意力头数是 12,隐藏层维度是 768  ,总参数量是 110M

BERT-LARGE:编码层数量是 24,多头注意力头数是 16,隐藏层维度是 1024,总参数量是 340M


2  模型输入


首先明确一件事情, BERT 这个模型的输入输出究竟是啥


给定一段文本序列, BERT 的目标是得到序列中每个词元的向量表示



然而,计算机是无法直接识别文本的,我们需要先将其转化成数字表示,这样才能够作为模型的输入


通常,只需要将输入文本经过嵌入层,得到对应每个词元的可学习向量,然后通过数据进行训练即可

目录.png

除了词元本身之外,模型还需要词元的位置信息以及用于区分不同句子的分割信息

这些都可以通过添加不同的嵌入层解决,最后同一词元的各种嵌入会以按元素相加的方式来进行融合

零零.png

这里注意,对于原始输入文本,模型会在其中插入一些特殊标记后才将其送进嵌入层,特殊标记如下:


[CLS]:将该标记插入到文本开头,当模型训练完后,该标记的向量表示可表征整段文本的语义

[SEP]:当文本中包含两个句子时,将该标记插入到两个句子中间,可起到相当于分隔符的作用

[PAD]:将该标记插入到文本末尾,使得同一批量里文本长度相同,要注意该标记可以多次插入

这样说可能还不是很清晰,下面看一个实际的例子


有.png


最后再来对比一下 Transformer 和 BERT 两个模型间输入表示的差异


Transformer的输入表示由词元表示、位置表示相加得到


BERT的输入表示由词元表示、位置表示、分割表示相加得到


Transformer 的位置表示不需要学习,能够直接计算得到


BERT 的位置表示由嵌入层中的可学习向量经过数据训练得到

目录
相关文章
|
机器学习/深度学习 自然语言处理
预训练语言模型:从BERT到GPT,NLP的新纪元
自然语言处理(NLP)近年来因预训练语言模型(PLMs)的崛起而发生巨大变革。BERT和GPT等模型在学术与工业界取得突破性进展。本文探讨PLMs原理、发展历程及其实际应用,涵盖文本分类、命名实体识别、问答系统等场景,并通过实战案例展示如何使用这些强大的工具解决复杂的NLP任务。
|
自然语言处理 PyTorch 算法框架/工具
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
【10月更文挑战第1天】随着深度学习技术的进步,预训练模型已成为自然语言处理(NLP)领域的常见实践。这些模型通过大规模数据集训练获得通用语言表示,但需进一步微调以适应特定任务。本文通过简化流程和示例代码,介绍了如何选择预训练模型(如BERT),并利用Python库(如Transformers和PyTorch)进行微调。文章详细说明了数据准备、模型初始化、损失函数定义及训练循环等关键步骤,并提供了评估模型性能的方法。希望本文能帮助读者更好地理解和实现模型微调。
1495 2
掌握从零到一的进阶攻略:让你轻松成为BERT微调高手——详解模型微调全流程,含实战代码与最佳实践秘籍,助你应对各类NLP挑战!
|
机器学习/深度学习 存储 自然语言处理
【NLP-新闻文本分类】3 Bert模型的对抗训练
详细介绍了使用BERT模型进行新闻文本分类的过程,包括数据集预处理、使用预处理数据训练BERT语料库、加载语料库和词典后用原始数据训练BERT模型,以及模型测试。
466 1
|
自然语言处理 数据挖掘
【自然语言处理NLP】Bert中的特殊词元表示
【自然语言处理NLP】Bert中的特殊词元表示
584 3
|
数据采集 机器学习/深度学习 存储
【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案–5 Bert 方案
在讯飞英文学术论文分类挑战赛中使用BERT模型进行文本分类的方法,包括数据预处理、模型微调技巧、长文本处理策略以及通过不同模型和数据增强技术提高准确率的过程。
293 0
|
机器学习/深度学习 自然语言处理 PyTorch
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
【自然语言处理NLP】Bert预训练模型、Bert上搭建CNN、LSTM模型的输入、输出详解
1206 0
|
机器学习/深度学习 数据采集 人工智能
【NLP】Datawhale-AI夏令营Day3打卡:Bert模型
【NLP】Datawhale-AI夏令营Day3打卡:Bert模型
|
机器学习/深度学习 自然语言处理 数据格式
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
训练你自己的自然语言处理深度学习模型,Bert预训练模型下游任务训练:情感二分类
|
存储 人工智能 自然语言处理
Pandas数据应用:自然语言处理
本文介绍Pandas在自然语言处理(NLP)中的应用,涵盖数据准备、文本预处理、分词、去除停用词等常见任务,并通过代码示例详细解释。同时,针对常见的报错如`MemoryError`、`ValueError`和`KeyError`提供了解决方案。适合初学者逐步掌握Pandas与NLP结合的技巧。
536 20
|
自然语言处理 API C++
阿里通义推出SmartVscode插件,自然语言控制VS Code,轻松开发应用,核心技术开源!
SmartVscode插件深度解析:自然语言控制VS Code的革命性工具及其开源框架App-Controller
2354 1
阿里通义推出SmartVscode插件,自然语言控制VS Code,轻松开发应用,核心技术开源!

热门文章

最新文章

下一篇
开通oss服务