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 的位置表示由嵌入层中的可学习向量经过数据训练得到

目录
相关文章
|
7月前
|
人工智能 自然语言处理 机器人
掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(2)
掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(2)
86 0
|
7月前
|
机器学习/深度学习 自然语言处理 数据可视化
掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(1)
掌握 BERT:自然语言处理 (NLP) 从初级到高级的综合指南(1)
95 0
|
9月前
|
人工智能 自然语言处理 PyTorch
NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践
NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践
NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 36 NLP中常见的任务+BERT模型+发展阶段+数据集
是一种类似于卷积思想的网络。它通过矩阵相乘,计输入向量与目的输出之间的相似度,进而完成语义的理解。
266 0
|
自然语言处理 算法
NLP学习笔记(十) 分词(下)
NLP学习笔记(十) 分词(下)
103 0
|
机器学习/深度学习 自然语言处理
NLP学习笔记(八) GPT简明介绍 下
NLP学习笔记(八) GPT简明介绍
131 0
|
自然语言处理
NLP学习笔记(八) GPT简明介绍 上
NLP学习笔记(八) GPT简明介绍
112 0
|
自然语言处理
NLP学习笔记(七) BERT简明介绍 下
NLP学习笔记(七) BERT简明介绍
152 0
NLP学习笔记(七) BERT简明介绍 下
|
机器学习/深度学习 自然语言处理 计算机视觉
NLP学习笔记(六) Transformer简明介绍
NLP学习笔记(六) Transformer简明介绍
142 0
|
机器学习/深度学习 自然语言处理
NLP学习笔记(五) 注意力机制
NLP学习笔记(五) 注意力机制
114 0