【李宏毅】Bert家族

news2024/9/21 19:01:48

课程资料来自李宏毅老师油土鳖频道的BERT家族教程:上,下。

这两章主要是如何在pre-train的模型上做fine-turn,如何利用大模型来做自己的task。

目录

前言

什么是预训练 What is pre-train model

如何微调 How to fine-tune

入参

出参

每句生成一个class:

每个token都有一个class:

从输入做Copy

生成句子

针对预训练模型参数的策略

Weighted Features不同的layer也可以综合

为什么Fine-tune?

预训练是怎么做出来的 How to pre-train

HW4 Self-Attention

数据集

算法处理过程


前言

思想:让机器稍微了解人类的语言后,然后再针对具体的任务做训练。通过大量的无标注资料让机器先pre-train,然后用少量的有标注资料fine-tune。

哈哈,李老师讲了大家在硬凑芝麻街的任务来命名模型。时间顺序是LMo/BERT/ERNIE/Groover。

 

什么是预训练 What is pre-train model

核心思想:输入token得到vector。

岁月史书:

①过去是同样的token就会有同样的vector,比如Word2Vector(13年)/Glove(14年)。【这里可以看下向量表征,了解更详细的发展历程】

存在的问题:

  1. 不会有上下文间交互,无法处理一语多义👉 见②;

  2. 对于没见过的单词不知道怎么去处理 👉 英文可以根据字母编码,例如fastText(17年),中文可以根据图像编码(利用象形文字的特点),如Su的方法(17年)。

②现在是Contextualized Word Embedding,喂一整个句子进去,一般会比较deep(10~20层),每层的网络选择也比较多,比如LSTM(ELMo在用)/Self-Attention(BERT用的)/Tree-based(想要利用文法的资讯,但其实效果普普,只有文法特别严谨,比如公式,的时候才有效果)。

就比如这个例子,前五个是苹果(水果)与后五个苹果(iPhone),他们的cosine相似度就有区别,可视化这个方法是work的。

 

 但是现在模型越来越大,如上图,只有大公司可以用了。可以看看穷人Bert:

在其中ALBERT效果比较好,后期可以看看,至于是怎么压缩的,有一个总结。

还有在sequence长度上做的,希望方法能够读更长的sequence,于是要降低self-attention的复杂度 :

如何微调 How to fine-tune

 在NLP任务上改造方法,如下是NLP不同任务的输入输出,根据具体的入参和出参来进行改造。

入参:一句or多句;出参:一整个句子分类/标注/从输入中选取/生成。

入参

一句的情况直接用原生bert就可以了,多句情况例子如QA/前提和假设,中间用[SEP]分割。

出参

每句生成一个class:

原来BERT的解法是用cls的符号,这样cls的符号对应的输出就是与整个句子有关的embedding,然后再加上别的层;或者是直接把所有的token做组合。

每个token都有一个class:

如下图所示:

从输入做Copy

比如提取式QA,输入有一篇文章Document和一个问题Query,输出有两个integer是答案的上标s和下标e,答案范围就是从ds到de 。BERT里面原生的具体做法是做点乘(非常的simple)然后softmax看最大概率的那个向量就是了:

如果觉得太简单也可以加LSTM层。

 

生成句子

比如seq2seq模型:

但是decoder都完全没有pre-train过,效果并不好。

还有v2版本的,利用pre-train的encoder自己decoder:

 

针对预训练模型参数的策略

固定模型参数,只调整fine-tune部分;pre-train和fine-tune都调整。具体任务要看具体performance。

 但是存在问题:

 如果说,每一个任务都需要训练新的模型,存的参数非常巨大。所以又有Adaptor的思想:

只要存Apt参数就足够了,具体实现示例如下,有圈圈的层就是要训练的部分:

 具体效果如图,橙色是base-line,就是fine-tune整个模型能达到的效果,参数量就是整个模型的参数。蓝色是adaptor,曲线越往右就参数越多,fine-tune最后倒数的层数越多,也就越接近全局fine-tune。实际adaptor怎么设计要插在模型哪里,还是有发展空间。

Weighted Features不同的layer也可以综合

之前说的都是最后的top-layer输出embeddings,也许每层抽取的资讯不一样,所以有人也会想把不同层的输出:

 这里的w1/w2和Task Specific都可以被学出来。

为什么Fine-tune?

因为确实work,上图是network的size一致时跑epochs的效果 ,实线是有预训练,虚线是直接train from scratch。

预训练是怎么做出来的 How to pre-train

这里开始就是下的视频部分,从这部分开始将大模型他们不同的预训练方法。

#还没看#

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

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

相关文章

[架构之路-174]-《软考-系统分析师》-5-数据库系统-7-数据仓库技术与数据挖掘技术

5 . 7 数据仓库技术 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。近年来,人们对数据仓库技术的关注程度越来越尚,其原因是过去的几十年中,建设了无数的应用系统,积累了…

5G 智慧教育解决方案(ppt可编辑)

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除 5G智慧教育-系统架构图 教学-远程互动教学系统架构图 平安校园-整体系统架构 平安校园:安全管理 平安校园-安全管理 视频监控 统一接入 统一管理 应急联动 系统通…

设计模式:结构型模式 - 代理模式

文章目录 1.概述2.结构3.静态代理4.JDK动态代理5.CGLIB动态代理6.三种代理的对比7.优缺点8.使用场景 1.概述 由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象…

DataX-阿里开源离线同步工具在Windows上实现Sqlserver到Mysql全量同步和增量同步

场景 Kettle-开源的ETL工具集-实现SqlServer到Mysql表的数据同步并部署在Windows服务器上: Kettle-开源的ETL工具集-实现SqlServer到Mysql表的数据同步并部署在Windows服务器上_etl实现sqlserver报表服务器_霸道流氓气质的博客-CSDN博客 上面讲过Kettle的使用&am…

2.19 信号概述

1.信号的概念 1.1 信号的概念 信号是 Linux 进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也 称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号 可以导致一个正在运行的进程…

【Prompt使用场景】

Prompt使用场景 场景1:问答问题(技巧1)场景2:基于示例回答(技巧2)场景3:推理场景4:无中生有——写代码(技巧3)场景5:锦上添花——改写内容(技巧4)场景6:锦上添花——信息解释场景7:化繁为简——信息总结(技巧5)场景8:化繁为简——信息提取(技巧6)场景1:问…

化工厂5G+蓝牙+LoRa室内人员定位系统解决方案

随着化工行业的不断发展,化工厂的生产和管理工作变得越来越复杂和繁琐。人员定位成为一项重要的任务,尤其是在化工厂室内,为了确保员工的安全和提高工作效率,需要实现对人员的快速准确定位。因此,化工厂室内人员定位系…

催收公司承信科技申请纳斯达克IPO上市,募资1500万美元

来源:猛兽财经 作者:猛兽财经 猛兽财经获悉,来自苏州的催收公司,承信信息科技有限公司(下称“承信科技”)近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克I…

vue yarn npm

2016年左右 ,facebook针对npm包管理工具存在的性能问题进行了针对性开发并发布了yarn新的node包开发管理工具,具体对比,同学们自行网上搜索资料对比。 配置 1、先下载好NodeJS,然后输入如下命令安装yarn npm install -g yarn 2、…

【并发基础】一篇文章带你彻底搞懂Java线程中断的底层原理——interrupt()、interrupted()、isInterrupted()

目录 〇、Java线程中断与阻塞的区别 0.1 线程中断 0.2 线程阻塞 一、线程的中断 二、中断方法 2.1 void interrupt() 2.1.1 可中断的阻塞 2.1.2 不可中断的阻塞 2.1.3 实践案例 2.2 boolean isInterrupted() 2.3 boolean interrupted() 2.4 代码案例 三、源码分析…

5.数据权限

根据配置的权限字段,自动拼接sql,例如想要做部门的数据权限,每张表保存dep_id,然后查询的时候拼接 where dep_id?,这样就实现了数据隔离。 1.示例 例如部门列表查询 角色管理授予本部门权限,然后给用户分配这个角色 查询部门分…

一文搞懂java集合框架

一文搞懂java集合框架 目录 一文搞懂java集合框架什么是集合?有什么特点?框架图Collection基本介绍:接口常用方法使用代码示例 List基本介绍常用方法使用代码示例ArrayList注意事项和细节 Vector注意事项和细节 ArrayList和Vector如何创建与使…

Ddocker cgroups资源限制

目录 一、概述 1、简介 2、cgroups四大功能 3、cpu时间片概念 二、查看容器的默认CPU使用限制 1、进行CPU压力测试 三、创建容器时设置CPU使用时间限制 四、设置CPU资源占用比(设置多个容器时才有效 1、分别进入容器进行压测 查看容器运行状态 五、设置容器…

音视频八股文(4)--ffmpeg常见命令(3)

17 FFmpeg滤镜 17.1 filter的分类 按照处理数据的类型,通常多媒体的filter分为: ● 音频filter ● 视频filter ● 字幕filter 另一种按照处于编解码器的位置划分: ● prefilters: used before encoding ● intrafilters: used while encod…

ML之DR:sklearn.manifold(流形学习和降维的算法模块)的简介、部分源码解读、案例应用之详细攻略

ML之DR:sklearn.manifold(流形学习和降维的算法模块)的简介、部分源码解读、案例应用之详细攻略 目录 sklearn.manifold的简介 sklearn.manifold(流形学习和降维的算法模块)的概述 外文翻译 sklearn.manifold的部分源码解读 sklearn.manifold的简介 sklearn.ma…

常用数据加密

一、加密和解密 1、 加密 数据加密的基本过程,就是对原来为明 的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为 “密文”。通过这样的途径,来达到保护数据不被 非法人窃取、阅读的目的。 2、解密 加密的逆…

VUE规范及常见问题

规范: props需要写明数据类型并加上注释 多用computed属性,少用变量赋值和watch 只要一个值能用另一个或几个值计算出来,我们都用computed,这样可以减少代码量并避免因为忘记修改值而导致bug路由(pages里边的组件)用小写和-命名…

人机交互有哪些SCI期刊推荐? - 易智编译EaseEditing

以下是几个人机交互领域的SCI期刊推荐: ACM Transactions on Computer-Human Interaction (ACM TOCHI): 由ACM(Association for Computing Machinery)出版的人机交互领域的顶级期刊之一,发表关于计算机和人之间相互作…

python通过setuptools打包与分发

目录 一:setup.py文件的书写 二:setup.py 各个打包命令的使用:所需要用到的只有4个命令build / install / sdist / bdist 1:build: python setup.py build 2:install: python setup.py install 3: sdist &#xf…

Android Apk加固原理解析

前言 为什么要加固 对APP进行加固,可以有效防止移动应用被破解、盗版、二次打包、注入、反编译等,保障程序的安全性、稳定性。 常见的加固方案有很多,本文主要介绍如果通过对dex文件进行加密来达到apk加固的目的; APK加固整体…