预训练语言模型综述(一)—— 预训练语言模型及其历史

2023-05-16

本系列文章是笔者以邱锡鹏老师《Pre-trained Models for Natural Language Processing: A Survey》为主要参考材料所做的关于“预训练语言模型综述”的记录,所涉及之素材也包括其他相关综述与未被纳入此综述的工作,分享出来与大家交流讨论。此篇为系列第一篇,记录预训练语言模型及其历史。

第二、三篇跳转可阅:

预训练语言模型综述(二)—— 预训练任务及训练策略
预训练语言模型综述(三)—— 预训练语言模型的实际使用

补充知识

  1. 一个好的语言模型应该可以从语料中:

    (1)捕获语言的特征(linguistic features),包括但不限于
    语义特征(semantic features):词与句子的语义
    句法1特征(syntactic features):即句子的结构组织以及句子中词语次之间的依赖关系。
    (2)反映语言现象:
    一词多义(polysemy), 指代(anaphora), 语用学(pragmatics,现多指言外之意)等。

  1. 词的表示方法(Word Representations/Word Embeddings)
    把文本向量化通常是自然语言处理的第一步。词的向量表示有最简单的One-hot Representation,以及用低维度稠密向量表示的Distributed Representation2

NLP方法/模型发展简史

1. 非神经网络方法

非神经网络方法通常依赖于离散的人工特征,应用起来也比较困难。

2. 早期神经网络模型

早期神经网络模型多使用RNN、CNN等神经网络,同时网络也较浅。主要原因是缺少针对各种NLP任务的大规模数据集,模型如果过深极易引起过拟合,在实际使用中难以确保泛化能力。

3. 第一代预训练语言模型

第一代预训练语言模型学习Non-contextual(static) word embeddings,即与上下文无关的、静态的词向量。第一代预训练语言模型的做法是把词汇表中的每一个词汇映射到一个lookup table中,训练过程就是得到这个lookup table的过程。得到这个lookup table后,把每个词的One-hot乘以lookup table就得到这个词的词向量了。

第一代预训练语言模型有两个明显的缺陷,一是无法处理一词多义等语言现象,因为它没有把词与词的上下文联系起来;二是OOV(Out of Vocabulary)问题,如果有些词没有在训练数据中出现过,那么通过lookup table中也无法得到它的词向量,为了解决OOV问题,我们可以把词进一步分割,变成字符等形式3,这样就可以一定程度上解决OOV问题了。

第一代预训练语言模型相对于第二代预训练语言模型还是比较浅的。两个经典结构是Continuous Bag-of-Words(CBOW)和Skip-Gram(SG),最典型的实现就是word2vec。还有一个经典结构是GloVe,也被广泛用于获取词向量。
推广开来,同时期还有不少工作研究句向量、段向量乃至篇章向量(如Skip-thought vectors,Paragraph vector,Context2Vec等)。将这些工作也归类为第一代预训练语言模型的原因是他们也是把输入映射为固定维度的向量表示。

4. 第二代预训练语言模型

第二代预训练语言模型学习contextual(dynamical) word embeddings,即与上下文相关的、动态的词向量。

第二代预训练语言模型的重要代表是ElMo(Embeddings from Language Models)、OpenAI GPT (Generative Pre-training) 和BERT(Bidirectional Encoder Representation from Transformer) 。

得益于更强的算力、深度模型的发展、NLP预训练任务的设计、大规模训练语料的利用、各种训练技巧的出现,第二代预训练语言模型蓬勃发展、越来越强大。

第一代与第二代预训练语言模型

5. 扩展的预训练语言模型

随着预训练语言模型的发展,研究人员已经不再满足于使用简单范式和简单语料训练预训练语言模型,由此催生了一系列扩展的预训练语言模型。其中包括:知识增强(Knowledge-Enriched)的预训练模型、多语言/跨语言(Multilingual)的预训练模型、针对特定语言(Language-Specific)的预训练模型、多模态(Multi-Modal,包括视频-文本、图像-文本、声音-文本等)的预训练模型、针对特定领域(Domain-Specific)的预训练模型、针对特定任务(Task-Specific)的预训练模型等。此外,还有一些预训练模型是在大型预训练模型上做出一些修改/压缩等操作所得的,包括修剪、量化、参数共享、蒸馏、模块替换等,这其中也涉及到如何应用预训练语言模型的问题,在讲到预训练模型的应用是还会进一步介绍。下图是邱老师综述中关于扩展的预训练模型及相关工作的归纳:

扩展的预训练语言模型

NLP深度神经网络的发展


当前,NLP任务通用的神经网络架构如图1所示(其实就是第二代预训练语言模型的架构)。
邱老师的文章把Neural Contextual Encoders分为了两类。
一类是Sequence Models,此类模型是按序列顺序来获取词的上下文(包括CNN模型和RNN模型(LSTM和GRU)),无法很好地处理长期依赖(Long-term dependency)。
另一类是Graph-based Models,此类模型按预定义的树形或图结构(如句法结构、语义联系)建立词与上下文的联系,但是如何建立好的此类结构是比较困难的。因此,全连接与自注意力在强大算力的加持下就提供了一个更为直接的方法:可以建立全连接图然后让模型学习两个词之间的联系。

Contextual EncodersNN TypesReferences
Sequence ModelsCNN[1]Y. Kim, “Convolutional Neural Networks for Sentence Classification,” in Proceedings of the 2014 Conference on Empirical Methods in Natural Language Processing (EMNLP), Doha, Qatar, Oct. 2014, pp. 1746–1751, doi: 10.3115/v1/D14-1181.
LSTM[1]A. M. Dai and Q. V. Le, “Semi-supervised Sequence Learning,” arXiv:1511.01432 [cs], Nov. 2015, Accessed: May 17, 2020. [Online]. Available: http://arxiv.org/abs/1511.01432.
[2]P. Liu, X. Qiu, and X. Huang, “Recurrent Neural Network for Text Classification with Multi-Task Learning,” p. 7.
GRU[1]R. Kadlec, M. Schmid, O. Bajgar, and J. Kleindienst, “Text Understanding with the Attention Sum Reader Network,” arXiv:1603.01547 [cs], Jun. 2016, Accessed: May 17, 2020. [Online]. Available: http://arxiv.org/abs/1603.01547.
[2]L. Li, M. Huang, Y. Liu, S. Qian, and X. He, “Contextual label sensitive gated network for biomedical event trigger extraction,” Journal of Biomedical Informatics, vol. 95, p. 103221, Jul. 2019, doi: 10.1016/j.jbi.2019.103221.
Graph-based ModelsRecursive NN[1]R. Socher et al., “Recursive Deep Models for Semantic Compositionality Over a Sentiment Treebank,” in Proceedings of the 2013 Conference on Empirical Methods in Natural Language Processing, Seattle, Washington, USA, Oct. 2013, pp. 1631–1642, Accessed: May 17, 2020. [Online]. Available: https://www.aclweb.org/anthology/D13-1170.
TreeLSTM[1]K. S. Tai, R. Socher, and C. D. Manning, “Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks,” in Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics and the 7th International Joint Conference on Natural Language Processing (Volume 1: Long Papers), Beijing, China, Jul. 2015, pp. 1556–1566, doi: 10.3115/v1/P15-1150.
[2]X. Zhu, P. Sobhani, and H. Guo, “Long short-term memory over recursive structures,” in Proceedings of the 32nd International Conference on International Conference on Machine Learning - Volume 37, Lille, France, Jul. 2015, pp. 1604–1612, Accessed: May 16, 2020. [Online].
GCN[1]T. N. Kipf and M. Welling, “Semi-Supervised Classification with Graph Convolutional Networks,” arXiv:1609.02907 [cs, stat], Feb. 2017, Accessed: May 17, 2020. [Online]. Available: http://arxiv.org/abs/1609.02907.

[1] https://www.zhihu.com/question/31370551?sort=created
[2] Z. S. Harris, “Distributional Structure,” WORD, vol. 10, no. 2–3, pp. 146–162, Aug. 1954, doi: 10.1080/00437956.1954.11659520.


  1. 容易混淆的概念有语法与词法,词法是分析词与词的变形,即形态学(morphology);而语法是一个更完整的概念,包括音韵学(phonology)、形态学(morphology)与造句法(syntax)[1]。 ↩︎

  2. Distributed Representation与Distributional Representation容易混淆。通常认为,Distributed Representation是与Local Representation(One-hot Representation就属于Local Representation)相对的,用到低维稠密向量来表示词的语义,单独的维度是不表达什么含义的,只有整个向量表达出含义;而One-hot Representation则是高维稀疏向量来表示词的语义,只有一个维度表示含义。而Distributional Representation的理论基础则是Harris在1954年提出的分布假说(Distributional Hypothesis)[2],即上下文相似的词,其语义也相近。所以说凡是用到上下文的Representation都可以称为Distributional Representation,如传统的基于计数的词向量、Word2Vec以及contextualized word vector都属于Distributional Representation。 ↩︎

  3. 代表工作有CharCNN、FastText和Byte-Pair Encoding (BPE)等。 ↩︎

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

预训练语言模型综述(一)—— 预训练语言模型及其历史 的相关文章

  • 直方图均衡化及算法步骤

    2019 07 16 xff0c 科学家首次拍摄到一种量子纠缠的照片 量子领域还不懂 xff0c 先不研究 猛一看和今年刚出的黑洞照片倒有几分相似 黑洞照片看起来还是比较清晰地 xff0c 这个是黑白的 xff0c 亮度不均 xff0c 肉
  • 解决mongodb启动报错ERROR: child process failed, exited with error number 14的问题

    在使用mongodb导入数据时 xff0c 数据库无法链接 xff0c 关闭service 后仍然无法启动 可能的原因 xff1a service mongodb restart时启动失败没有正常关闭mongodb引起的 xff0c 比如直
  • 面向对象分析(4):步骤

    面向对象分析通常按照下面的步骤来进行 xff1a xff08 1 xff09 标识对象和类 可以从应用领域开始 xff0c 逐步确定形成整个应用的基础类和对象 这一步需要分析领域中目标系统的责任 xff0c 调查系统的环境 xff0c 从而
  • NTFS for Mac - 免费让 Mac 原生支持NTFS读写

    使用 Mac 电脑的朋友可能都遇过 xff0c 在使用 NTFS 文件格式的移动硬盘或U盘时 xff0c 默认只能以 只读 模式打开 xff0c 也就是说你只能读取复制文件而不能移动 修改 重命名或删除里面的东西 这确实很不便 xff0c
  • C++ 将十六进制字符串转换为二进制字符串

    C 43 43 将十六进制字符串转换为二进制字符串 前言一 源代码 前言 一种简单的方法将十六进制字符串转为二进制字符串 xff0c 不限制十六进制的字节数 一 源代码 传入的十六进制字符串需要转换为大写 xff01 X toupper s
  • python——paramiko详解

    目录 一 SSHClient类 ssh远程连接服务器 connet 远程主机没有本地主机密钥或HostKeys对象时的连接方法 xff0c 需要配置set missing host key policy policy 远程执行命令 在远程服
  • 绿盟网站安全防护服务(vWAF)

    平台 xff1a linux 类型 xff1a 虚拟机镜像 软件包 xff1a basic software devops nsfocus security waf 服务优惠价 按服务商许可协议 云服务器费用 查看费用 立即部署 产品详情
  • 华为服务器操作系统EulerOS V2.0

    平台 xff1a linux 类型 xff1a 虚拟机镜像 软件包 xff1a java 1 8 0 php 5 4 16 python 2 7 5 qt 4 8 5 tomcat 7 0 69 basic software euleros
  • 星环一站式大数据平台-4.6

    平台 xff1a arm 类型 xff1a ARM 模板 软件包 xff1a 星环一站式大数据平台 basic software big data hadoop tdh tos transwarp 大数据 星环科技 星环一站式大数据平台 云
  • 故障排除:无法启动、访问或连接到 Azure 虚拟机上运行的应用程序

    有多种原因可导致无法启用或连接到在 Azure 虚拟机 VM 上运行的应用程序 原因包括应用程序未在预期端口上运行或侦听 侦听端口受到阻止 xff0c 或网络规则未将流量正确传递到应用程序 本文说明有条理地找到问题并更正问题 如果在使用 R
  • 文件系统损坏导致虚拟机无法正常启动的问题及解决方法

    简介 计算机的文件系统是一种存储和组织计算机数据的方法 xff0c 它使得对其访问和查找变得容易 xff0c 文件系统使用文件和树形目录的抽象逻辑概念代替了硬盘和光盘等物理设备使用数据块的概念 xff0c 用户使用文件系统来保存数据不必关心
  • 连接到 Azure (Resource Manager) 上的 SQL Server 虚拟机

    概述 本主题介绍如何连接到运行于 Azure 虚拟机的 SQL Server 实例 它介绍了一些常规连接方案 xff0c 并提供了在 Azure VM 中配置 SQL Server 连接的详细步骤 Note Azure 具有用于创建和处理资
  • 网络安全组(NSG)简介

    韩源 xff0c 资深工程师 xff0c 存储和灾备专家 Azure 网络安全解析 作为公有云最重要环节之一 xff0c 网络安全一直是 Azure 的重中之重 在 Azure 中 xff0c 多种安全技术共同构成了立体的网络保护 xff1
  • gnome manjaro设置无法打开

    本文转载自 xff1a https joshtronic com 2018 04 02 unable to open gnome settings on arch linux after gnome upgrade 我经常会写关于主题的博客
  • 手动将经典 VM 从 VHD 迁移到新的 ARM 托管磁盘 VM

    本部分有助于将现有 Azure VM 从经典部署模型迁移到资源管理器部署模型中的托管磁盘 计划迁移到托管磁盘 本部分可帮助你针对 VM 和磁盘类型做出最佳决策 位置 选取 Azure 托管磁盘可用位置 如果要迁移到高级托管磁盘 xff0c
  • 适用于 Azure 虚拟网络的常见 PowerShell 命令

    如果想要创建虚拟机 xff0c 需要创建虚拟网络或了解可在其中添加 VM 的现有虚拟网络 通常情况下 xff0c 创建 VM 时 xff0c 还需考虑创建本文所述资源 有关安装最新版 Azure PowerShell 选择订阅和登录到帐户的
  • 创建包含多个子网的虚拟网络

    本教程介绍如何创建包含独立公共子网和专用子网的基本 Azure 虚拟网络 虚拟网络中的资源可以彼此通信 xff0c 并可以与连接到虚拟网络的其他网络中的资源通信 可在虚拟网络中相同或不同的子网中创建 Azure 资源 xff0c 如虚拟机

随机推荐

  • matplotlib笔记

    文章目录 matplotlib笔记cmap选择cmap创建cmap 子图断点轴 Broken axis 子图大小 坐标轴scale matplotlib笔记 有一个在线使用matplotlib的网址 cmap 选择cmap choose c
  • Fortran pgplot安装

    pgplot 首先确保已经安装了gfortran 以下为linux下安装流程 从这里下载安装包解压tar zxvf pgplot5 2 tar gz到某个目录比如 src pgplot创建一个文件夹xxx pgplot用于安装 xff0c
  • CUDA和Compute Capability

    CUDA Enabled GPUs Cuda支持的GPU 在这个参考包含了GPU的Compute Capacity列表 比如我的笔记本搭载了一块Geforce830m xff0c 查询列表就可以发现如下图 那么这块830M GPU的Comp
  • Javascript笔记

    数据类型 基本类型 primitive value 简单的数据段 xff0c 包括 Undefined Null Boolean Number String初始化只使用2原始字面量形式 xff0c 如果使用new则会创建Object无法加入
  • 前端面试题笔记

    前端面试八股 发现了一个地方包含了很多前端面试八股 1 用户喜好 为了不断优化推荐效果 xff0c 今日头条每天要存储和处理海量数据 假设有这样一种场景 xff1a 我们对用户按照它们的注册时间先后来标号 xff0c 对于一类文章 xff0
  • Matlab:数据写入Excel

    使用xlswrite 可以help xlswrite查看用法 xlswrite filename A xlswrite filename A sheet xlswrite filename A xlRange xlswrite filena
  • python处理FITS 1:astropy介绍与安装

    1 1介绍 astropy是一个开源的python库 xff0c 专门用于处理天文方面的数据 astropy包是Astropy 项目的内核 xff0c 这个项目致力于发展一个鲁棒性较好的伴随子包 xff08 能兼容优秀的astropy这个库
  • 使用sublime编译运行C程序

    1 打开sublime xff0c 找到顶部工具 xff08 Tool xff09 菜单 gt 编译系统 xff08 Build System xff09 gt 新编译系统 xff08 New Build System xff09 xff1
  • python处理FITS文件 2:astropy.io.fits介绍及打开FITS文件

    astropy这个库有很多功能 xff0c 因为本文主要涉及FITS文件 xff0c 因此仅仅使用astropy io fits 1介绍 astropy io fits包提供FITS文件操作的函数接口 xff0c 使得用户可以忽略FITS文
  • python处理FITS 3:处理头文件和数据单元

    1头文件处理 在获得hdul后 xff0c 可以使用两个属性 header data分别获得头文件和数据单元 gt gt gt hdul 61 fits span class hljs built in open span fits ima
  • Django使用pip安装

    1 pip安装 pip是python的包管理器 xff0c 使用这个工具可以很轻松安装各种python库 直接运行 pip install django 然后就可以安装了 1 1安装问题 输入 pip install django 报错 x
  • 内网穿透方式

    ssh 内网中的机器A 需要访问内网中的c 64 C 公网中的机器B xff0c 用户名b 内网中的机器A ssh CNR 7280 C 22 b 64 B 公网中的机器B ssh fCNL 7279 localhost 7280 loca
  • vue笔记

    rollup 专注于JavaScript打包不包含无关代码 对比webpack tree shaking 最开始由rollup实现 xff0c 之后被webpack借鉴配置output format xff0c 选择输出资源的模块形式 xf
  • geant4学习

    文章目录 配置vscode configuration materialgeant4的类及成员函数physicsList选择构建Physics List 粒子粒子类型能量损失重子和离子 杂项getEnergyoptical photon的速
  • C++枚举与字符串转换工具类

    C 43 43 枚举与字符串转换工具类 最近需要一个能够在字符串和枚举值之间互相转换的功能 xff0c 因为C 43 43 没有对枚举值进行遍历 反射之类的操作 xff0c 不像Java那样可以轻松搞定 网上找到一些代码感觉用起来有点不爽
  • iOS 使用xmpp做聊天客户端

    可以号称史上最详细的xmpp做iOS客户端聊天介绍 简介 xff1a XMPP协议是一种基于Socket长连接 以XML格式进行基本信息交换 C S S S多种架构的聊天协议 XMPPServer 基于XMPP协议的服务端 例如eJabbe
  • 基于树莓派的蓝牙出勤追踪系统

    本文介绍一个基于树莓派的蓝牙出勤追踪系统 xff0c 用于记录和监督自己的工作时长情况 代码与安装指引已更新在GitHub上 xff1a 树莓派蓝牙出勤追踪系统 该系统使用树莓派扫描附近的蓝牙或蓝牙低功耗设备 xff0c 以无感方式收集出勤
  • Python的开发环境与实用工具

    Python的各种实用工具 xff0c 大致可以分为包管理 环境管理 编辑相关 xff08 代码补全 snippet等 xff09 调试工具 xff08 集成开发环境 xff09 笔记本构建工具Jupyter 接下来就介绍下我常用的工具吧
  • 更新系统grub

    1 查看分区 grub rescue gt ls 列出磁盘分区 hd0 hd0 msdos9 hd0 msdos8 hd0 msdos7 hd0 msdos6 hd0 msdos5 hd0 msdos2 hd0 msdos1 2 寻找ubu
  • 预训练语言模型综述(一)—— 预训练语言模型及其历史

    本系列文章是笔者以邱锡鹏老师 Pre trained Models for Natural Language Processing A Survey 为主要参考材料所做的关于 预训练语言模型综述 的记录 xff0c 所涉及之素材也包括其他相