2022最新版-李宏毅机器学习深度学习课程-P50 BERT的预训练和微调

news2024/11/24 7:26:18

模型输入无标签文本(Text without annotation),通过消耗大量计算资源预训练(Pre-train)得到一个可以读懂文本的模型,在遇到有监督的任务是微调(Fine-tune)即可。

最具代表性是BERT,预训练模型现在命名基本上是源自于动画片《芝麻街》。

 芝麻街人物

经典的预训练模型:

  • ELMo:Embeddings from Language Models
  • BERT:Bidirectional Encoder Representations from Transformers
  • 华丽分割线,命名逐渐开始离谱
  • ERNIE:Enhanced Representation through Knowledge Integration
  • Grover:Generating aRticles by Only Viewing mEtadaya Records

一、pre-train model 是什么

(一)预训练概念

预训练模型的概念并不是由BERT时才出现。

预训练的任务一般是实现 词语token -> 词向量embedding vector, vector中包含token的语义,比如我们语文中常学习的近义词,语义相近,那么要求其词向量也应该近似。

(二)多语义多语境

存在的问题:同一个token就可以指代同一个vector。解决方法Word2vec、Glove...

但是语言有无穷尽的词语,咱们现在就一直在创造新词语,如 “雪糕刺客”、“栓Q”等等新兴词汇不断迭代更新,一个新的词汇就要增加一个向量,显然是不太OK的。

那么,研究者就想到可以将词语再分,英文可以拆分为字符(FastText),中文可以拆分为单个字,或者将一个中文字看作一张图片输入CNN等模型,可以让模型学习到字的构成。

但分解为单个character后面临的就是语义多意的问题,“养只狗”、“单身狗”其中的“狗”都是狗,但是我们知道,两个“狗”其实是不同的,然鹅他们又不能完全分开,毕竟都用了一个字,其实咱们是将考虑到其语义的。

考虑上下文后,就诞生了语境词向量(Contextualized Word Embedding),输入模型的是整个句子,模型会阅读上下文,而不是仅仅考虑单个token,考虑语境后得到一个词向量表示。【Encoder行为】

语境词向量的模型一般模型会由多层组成,层结构常使用LSTM、Self-attention layers或者一些Tree-based model(与文法相关)。但Tree-base Model经过检验效果不突出,在文法结构严谨(解决数学公式)时,效果突出。

李老师列举了“苹果”在10个句子中的向量表示,两两计算相似度,得到一个10*10的混淆矩阵。可以明显观察到,水果苹果和苹果公司两个苹果语义有所区别。

预训练模型训练参数逐渐增加,网络结构逐渐复杂,各个公司都争相发布“全球最大预训练模型”。

(三)穷人的BERT

预训练模型参数量大,在训练时会消耗大量计算资源,都是一些互联网公司在做,像我们这些“穷人”,没有那么大的GPU算力,就会搞一些丐版BERT。

举例:

  • Distill BERT

[1910.01108] DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter (arxiv.org)​arxiv.org/abs/1910.01108

  • Tiny BERT

[1909.10351v5] TinyBERT: Distilling BERT for Natural Language Understanding (arxiv.org)​arxiv.org/abs/1909.10351v5

  • Mobile BERT

[2004.02984] MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices (arxiv.org)​arxiv.org/abs/2004.02984

  • ALBERT(相比于原版BERT, 12层不同参数,ALBERT12层参数完全一致,效果甚至超过原版BERT一点点)

[1909.11942] ALBERT: A Lite BERT for Self-supervised Learning of Language Representations (arxiv.org)​arxiv.org/abs/1909.11942

模型压缩技术:网络剪枝(Network Pruning)、知识蒸馏(Knowledge Distillation)、参数量化(Parameter Quantization)、架构设计(Architecture Design)

(四)架构设计(Architecture Design)

在该领域架构设计的目标,意在处理长文本语句。

典型代表,读者可以自行检索学习

  • Transformer-XL: Segment-Level Recurrence with State Reuse

[1901.02860] Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context (arxiv.org)​arxiv.org/abs/1901.02860

  • Reformer

[2001.04451] Reformer: The Efficient Transformer (arxiv.org)​arxiv.org/abs/2001.04451

  • Longformer

[2004.05150] Longformer: The Long-Document Transformer (arxiv.org)​arxiv.org/abs/2004.05150

Reformer和Longformer意在降低Self-attention的复杂度。

二、怎么做 Fine-tune

预训练+微调范式是现在的主流形式,我们可以拿到大公司训练好的大模型,只需要根据自己的下游任务加一些Layer,就可以应用某一个具体的下游任务上。

预训练微调效果的实现,需要预训练模型针对该问题进行针对性设计。

(一)Input & Output

这里总结了NLP Tasks的常见输入输出。

  • Input:
    • one sentence: 直接丢进去。
    • multiple sentences: Sentence1 SEP Sentence2, 句子分割。
  • Ouput:
    • one class: 加一个 CLS,或者直接将所有Embedding表示接下游任务分类
    • class for each token
    • copy from input: 可以解决阅读理解问题,QA。
    • General Sequence: 用到Seq2Seq Model
      • v1:将预训练模型看作Encoder,将下游任务模型看作Decoder。
      • v2:给出一个特别符号 SEP,得到字符再输入到预训练模型,让预训练模型encoder-decoder。

 

 

(二)How to fine-tune

如何微调也有两种,一种是冻结预训练模型,只微调下游任务对应的Task-specific部分;另一种是连同预训练模型,将整体网络结构进行参数微调(预训练模型参数不是随机初始化,可以有效避免过拟合)。

Adaptor

        考虑到模型巨大,微调代价太大,且消耗存储大。引入Apt,只微调Pre-train Model中的一部分Apt。这样只需要存储Apt和Task specific. 此处举一个例子。

现在很多预训练模型中都是使用了Transformer的结构,研究者在Transformer结构中插入Adaptor层,通过训练微调Adaptor,而不去修改其他已经训练好的参数。

三、Why Pre-train Models?

研究者提出了GLUE指标,用来衡量机器与人在不同语言任务上的表现,随着深度学习的发展,预训练模型的迭代更新,现在预训练模型使得模型效果已经同人类水平相差无几。

四、Why Fine-tune?

EMNLP19年刊发的一篇文章做了分析,在网络模型上fine-tune与否,Training Loss变化是不同的。

在有Fine-tune的情况下,Training Loss可以很好的实现收敛,而从头训练则会出现较大的波动。

同时考虑泛化能力,因为基于预训练模型将Training Loss降低到很低,有没有可能是过拟合导致的。海拔图可以表示,如果海拔图中,变化越陡峭,模型泛化能力越差,变化越平稳,模型泛化能力越强。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1194877.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Arcgis连接Postgis数据库(Postgre入门十)

效果 步骤 1、矢量数据首先有在postgis数据库中 这个postgis数据库中的一个空间数据,数据库名称是test3,数据表名称是test 2、Arcgis中连接postgis数据库中 3、成功连接 可以将数据拷贝或导入到gdb数据库中

Python---练习:把8名讲师随机分配到3个教室

案例:把8名讲师随机分配到3个教室 列表嵌套:有3个教室[[],[],[]],8名讲师[A,B,C,D,E,F,G,H],将8名讲师随机分配到3个教室中。 分析: 思考1:我们第一间教室、第二间教室、第三间教室,怎么表示…

FPGA运算

算数运算中,输入输出的负数全用补码来表示,例如用三位小数位来表示的定点小数a-1.625和b-1.375。那么原码分别为a6b‘101101, b6b101011, 补码分别是a6’b110011,b6‘b110101; 如果想在fpga中实现a*b,则需要将a和b用补…

口水战,余承东从没输过,小鹏最终只能低头和解

小鹏汽车创始人何小鹏近日发言称与余承东握手言和,感谢余总的大度,还表示与余承东探讨了技术路线,双方成为好朋友,可以看出这场口水战最终的赢家还是余承东。 这场口水战先以何小鹏吐槽友商的AEB误触太多,还声言99%是假…

Git应用(1)

一、Git Git(读音为/gɪt/。中文 饭桶 )是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 了解更多可到GIT官网:Git - Downloads GIT一般工作流程如下: 1.从远程仓库中克隆 Git 资源作为本地…

jenkins CSV编码导致乱码问题解决

问题:生产报告会乱码的问题,一般是有编码格式引起的。我遇到的问题是,jmeter需要读取csv的数据作为参数。但是我们并不知道csv保存是什么编码格式,有可能不是utf-8的编码格式,所以会导致中文乱码的问题 解决方案&#…

【广州华锐互动】太空探索VR模拟仿真教学系统

随着科技的不断发展,人类对宇宙的探索欲望愈发强烈。火星作为距离地球最近的行星之一,自然成为了人类关注的焦点。近年来,火星探测取得了一系列重要成果,为人类了解火星提供了宝贵的信息。然而,实地考察火星仍然面临着…

Linux安装MySQL8.0服务

Linux安装MySQL8.0服务 文章目录 Linux安装MySQL8.0服务一、卸载1.1 查看mariadb1.2 卸载 二、安装2.1 下载2.2 上传2.3 解压2.4 重命名2.5 删除2.6 创建目录2.7 环境变量2.8 修改配置2.9 配置文件2.9 用户与用户组2.10 初始化2.11 其它 三、开启远程连接MySQL 一、卸载 首先第…

【分布式id生成系统——leaf源码】

分布式id生成系统——leaf源码 号段模式双buffer优化id获取 Leaf ,分布式 ID 生成系统,有两种生成 ID 的方式: 号段模式Snowflake模式 号段模式 由于号段模式依赖于数据库表,我们先看一下相关的数据库表: biz_tag&…

大模型+人形机器人,用AI唤起钢筋铁骨

《经济参考报》11月8日刊发文章《多方布局人形机器人赛道,智能应用前景广》。文章称,工信部日前印发的《人形机器人创新发展指导意见》,按照谋划三年、展望五年的时间安排,对人形机器人创新发展作了战略部署。 从开发基于人工智能大模型的人…

SQL优化之MySQL执行计划(Explain)及索引失效详解

1、执行计划基础 1.1、执行计划(Explain)定义 在 MySQL 中可以通过 explain 关键字模拟优化器执行 SQL语句,从而解析MySQL 是如何处理 SQL 语句的。 1.2、MySQL查询过程 客户端向 MySQL 服务器发送一条查询请求服务器首先检查查询缓存&am…

为什么我一直是机器视觉调机仔,为什么一定要学一门高级语言编程?

​ 为什么我是机器视觉调机仔,为什么一定要学一门高级语言编程,以后好不好就业,待遇高不高,都是跟这项技术没关系,是跟这个技术背后的行业发展有关系。 你可以选择离机器视觉行业,也可以选择与高级语言相关…

中国电信终端产业联盟5G Inside行业子联盟正式成立!宏电股份作为副理事单位受邀加入

11月9日,中国电信于广州召开“2023中国电信终端生态合作暨中国电信终端产业联盟(以下简称CTTA)第十四次会员大会”,联盟成员齐聚现场。作为CTTA大会的一个重要环节,中国电信终端产业联盟5G Inside行业子联盟正式成立&a…

LeetCode(5)多数元素【数组/字符串】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 169. 多数元素 1.题目 给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示…

jenkins邮件告警

构建失败邮件通知 配置自己的邮箱 配置邮件服务,密码是授权码 添加构建后操作 扩展 配置流水线 添加扩展 钉钉通知 Jenkins安装钉钉插件 钉钉添加机器人 加签 https://oapi.dingtalk.com/robot/send?access_token98437f84ffb6cd64fa2d7698ef44191d49a11…

ios安全加固 ios 加固方案

​ 目录 一、iOS加固保护原理 1.字符串混淆 2.类名、方法名混淆 3.程序结构混淆加密 4.反调试、反注入等一些主动保护策略 二 代码混淆步骤 1. 选择要混淆保护的ipa文件 2. 选择要混淆的类名称 3. 选择要混淆保护的函数,方法 4. 配置签名证书 5. 混淆和测…

原型模式(创建型)

一、前言 原型模式是一种创建型设计模式,它允许在运行时通过克隆现有对象来创建新对象,而不是通过常规的构造函数创建。在原型模式中,一个原型对象可以克隆自身来创建新的对象,这个过程可以通过深度克隆或浅克隆来实现。简单说原型…

【Java SE】类和对象(上)

目录 一. 面向对象的初步认知 1.1 什么是面向对象 1.2 面向对象与面向过程 二. 类定义和使用 2.1 简单认识类 2.2 类的定义格式 三. 类的实例化 3.1 什么是实例化 3.2 实例化对象 四. this引用(重点) 4.1 为什么要有this引用 4.2 this的使用 4.3 this引…

lua环境安装

文章目录 Linux 系统上安装Mac OS X 系统上安装Window 系统上安装 Lua第一个 Lua 程序 Linux 系统上安装 Linux & Mac上安装 Lua 安装非常简单,只需要下载源码包并在终端解压编译即可,本文使用了5.3.0版本进行安装: curl -R -O http://…

openMMLab的mmcv和mmdet、mmdet3d、mmseg版本对应关系

openmmlab提供了MIM来统一安装其多个mm功能框架包https://github.com/open-mmlab/mim,但是需要不借助MIM安装时,这里怎么确定要安装什么版本的mmcv和mmdet、mmdet3d、mmseg,在openmmlab网站主页上没有一个容易能找到的完整表格页面来详细记录…