预训练语言模型综述(三)—— 预训练语言模型的实际使用

2023-05-16

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

第一、二篇跳转可阅:
预训练语言模型综述(一)—— 预训练语言模型及其历史
预训练语言模型综述(二)—— 预训练任务及训练策略

预训练语言模型的实际使用

预训练语言模型的实际使用也是一个复杂的问题,我将其归纳为两个方面。一方面,如何将预训练语言模型应用到NLP的下游任务中,提升模型在下游任务的性能才是预训练语言模型这项技术最终的目标;另一方面,尽管预训练语言模型能给各种NLP任务带来性能上的提升,其带来的大量能源消耗以及对计算资源的依赖也始终受到诸多诟病。

迁移学习

大量的文献已经表明,预训练语言模型在通用基准测试、问答、情感分析、命名实体识别、机器翻译、摘要等众多下有任务中可以带来喜人的性能提升。目前,将预训练语言模型应用到下游任务中主要还是依赖于迁移学习进行,迁移学习可以把从预训练语言模型从大规模语料(Source Dataset)中学习到的通用语言知识迁移到特定的下游任务(Target Dataset)上,如下图所示。

(1)预训练任务、模型结构、语料的选择

如在预训练语言模型综述(二)—— 预训练任务及训练策略中所述,我们需要考虑预训练任务对下游任务的影响。例如:NSP可以使预训练语言模型理解两句话之间的关系,因此针对问答、自然语言推理等下游任务,可以考虑NSP作为预训练任务训练预训练语言模型。

模型结构、语料方面,也需要根据下游任务进行选择。如BERT模型,由于其不具备Encoder-Decoder结构,因此其难以用于生成类任务,相比之下,GPT系列预训练模型则可能在生成类任务上带来更好的性能。语料方面亦是如此,如果具备条件,即有大量domain-specific或是language-specific的语料可用于预训练或有现成预训练模型,使用这些模型或可在相关的下游任务上带来更多提升。

(2)层的选择

一个预训练语言模型的不同层可能提取到的特征是不尽相同的。利用这些特征的方式有多种,如仅使用静态的Embedding、顶层表示、全部层的综合表示(按一定方式进行融合)。至于哪一种表示更好或是更适合哪类任务,目前并无定论,还是得通过具体任务的实验来选择。

(3)微调阶段预训练模型参数是否固化

我们知道,通常迁移学习包含两个阶段,一是预训练,二是微调。对于一些任务,在微调阶段,预训练模型作为特征抽取器,其参数被固化(如Word Embedding、ELMo(更为典型))。而对于大多数任务,微调阶段预训练模型的参数不固化,仍在微调阶段进行调整,以适应下游任务。前者做法对比后者做法的优点我暂时还无法明确,个人还是倾向于后者。

模型压缩与加速

为解决大规模预训练语言模型大量消耗能源以及对计算资源依赖的问题,使其可以为更多人员、行业、计算平台所应用,模型压缩与加速是必不可少的。

其实模型压缩这个话题并不限于预训练语言模型,而是与深度学习模型的发展相伴相生。常见的方法,如剪枝、量化、参数共享、低秩分解、知识蒸馏等,在预训练模型上都已有应用案例,具体文献大家可以看邱老师的综述。

笔者在此想指出的是硬件加速方面的工作似乎没有得到邱老师这篇Survey的关注,硬件加速将更有利于预训练模型向更多计算平台(尤其是算力有限的平台)。笔者推荐以下一些工作供大家参考:

[1]S. Pati, S. Aga, N. Jayasena, and M. D. Sinclair, “Demystifying BERT: implications for accelerator design,” p. 17.
[2]Y. J. Kim and H. H. Awadalla, “FastFormers: highly efficient transformer models for natural language understanding,” arXiv:2010.13382 [cs], Oct. 2020, Accessed: Sep. 26, 2021. [Online]. Available: http://arxiv.org/abs/2010.13382
[3]Z. Liu, G. Li, and J. Cheng, “Hardware acceleration of fully quantized BERT for efficient natural language processing,” arXiv:2103.02800 [cs], Mar. 2021, Accessed: Sep. 26, 2021. [Online]. Available: http://arxiv.org/abs/2103.02800
[4]Y. You et al., “Large batch optimization for deep learning: training BERT in 76 minutes,” arXiv:1904.00962 [cs, stat], Jan. 2020, Accessed: Sep. 26, 2021. [Online]. Available: http://arxiv.org/abs/1904.00962

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

预训练语言模型综述(三)—— 预训练语言模型的实际使用 的相关文章

  • 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 所涉及之素材也包括其他相
  • 在远程服务器上部署JupyterLab 3.0

    近期 xff0c JupyterLab刚刚升级到3 0版本 xff0c 在安装与使用方面都有不小改进 xff0c 加之之前部署在树莓派上时遇到偶尔需要跟服务器之间做些文件交换的情况 xff0c 处理起来还是稍微麻烦了点 xff0c 所以趁着
  • 基于TensorFlow 2.x的一些CNN模块/网络的实现

    开源一些基于TensorFlow 2 x的CNN模块 网络的实现 xff0c 可能不定时更新 仓库链接 xff1a TensorFlow 2 Implementations of CNN Based Networks 目前的实现包括 xff
  • 预训练语言模型综述(二)—— 预训练任务及训练策略

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

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