Chapter7-2_BERT and its family - Introduction and Fine-tune

文章目录

  • 1 What is pre-train model
  • 2 How to fine-tune
    • 2.1 Input
    • 2.2 Output
    • 2.3 Fine-tune
    • 2.4 Weighted Features
  • 3 Why fine-tune

本文为李弘毅老师【BERT and its family - Introduction and Fine-tune】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 7-1 Overview of NLP Tasks

下篇 - 7-3_BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more

总目录

1 What is pre-train model

我们这里所说的pre-train model就是输入一串tokens,能够输出一串vectors,且每个vector可以表示对应的token的语义的模型,这些vectors也被称作为embeddings。

以前常用的模型有耳熟能详的word2vec,Glove等等。但是英文的单词太多了,这个时候来一个新单词的话整个embedding的模型就要重新train了,为了解决整个问题,就有了fasttext。fasttext是针对英文的,针对中文的则是输入图片,让模型通过图片中文字的偏旁部首去预测出训练时没见过的文字的embedding。这种训练embedding的方式,根据语言的不同会有不同的方法。
ch7-2-1

不过,这里还有一个问题,就是按照上述的方法,如果输入的token是一样的,那么每次出来的vector也不然hi一样的。但实际情况下并非如此。比如下图中"养只狗"的“狗”和“单身狗”的“狗”显然是不同的意思。

ch7-2-2

于是,我们就希望模型可以在输出某个token的embedding的时候,去考虑上下文的信息,这个叫做contextualized word embedding 。这样的模型基本就是基于LSTM或者self-attention layer去搭建的一个seq2seq的模型(如Bert,Megatron,Turing NLG等),可以理解为之前的文章中讲过的encoder,至于训练的方法,这里暂时先不讲。也有用tree-based model去做的,但是因为效果没有那么强,所以不太流行。

为了让模型的效果变好,所使用的模型也就越来越大,参数已经大到只有那些大公司才可以使用了。
ch7--3
当然,穷人也有穷人的办法,我们可以再不过多地损失模型精度的情况下,把模型变小一点,这里有很多模型压缩方面的技术,这里不细讲了。
ch7-2-4

2 How to fine-tune

那么,我们如何把这个pre-train model应用到各式各样的NLP任务当中去呢?上篇中我们已经讨论过了,NLP的任务可以按输入和输出分别分类,如下图所示。那么接下来就来讲一下,如何去应对每一类。
ch7-2-5

2.1 Input

(1) One sentence

对于输入只有一个句子的,那就直接输入就可以了,因为pre-train model也是一个句子的输入。

(2)multiple sentences
对于输入有多个句子的,我们需要有一个叫做"[SEP]"的分隔符来把两个句子拼成一个句子,然后再输入就可以了。

ch7-2-6

2.2 Output

(1)One class
输出只有一个分类的时候,可以有两种做法,一种做法是,在输入的开头加一个叫做"[CLS]“的toekn,然后在这个”[CLS]“对应的输出的embedding后面加一个head,也就是比较浅的神经网络,可以是一层全连接,然后输出想要的类别数量;另一个做法是,把所有token的输入都输入到一个head当中去,然后输出想要的类别数量。
ch7-2-7
(2)Class for each token
当每个token都要做分类时,那在模型的后面加一个seq2seq的head的就可以了。
ch7-2-8
(2)Copy from input
当我们的任务是Extraction-based QA时,该怎么办呢?因为输入有question和document两个,所以我们需要加入一个”[SEP]"分隔符,然后输出是找出document中的哪个token为答案的start,哪个token为答案的end。这个时候,就要两个额外的向量去分别和document中每个token的输出做dot product,然后和start向量最相关的token就是start token,和end向量最相关的token就是end token。
ch7-2-9

(4)General Sequence
当我们希望模型的输出也是一个sequence的时候,我们可以把pre-train model的输出作为输入,在后面接一个decoder,让这个decoder去完成输出sequence的步骤。这样的一个坏处就是decoder会是一个比较大的模型,而我们是希望没有pre-train过的参数是越少越好的。
ch7-2-10

另一种做法是把pre-train的模型当作decoder去做。这就需要我们在input的后面加一个类似于"[SEP]“的特殊符号,然后把这个符号的输出丢到一个我们自定义的head当中去,输出一个token,然后把这个token当作输入,反复下去,直到输出”"
ch7-2-11

2.3 Fine-tune

在训练的时候,我们可以把pre-trained model的weights都固定住,然后只去训练最后自定义加上去的head。
ch7-2-12
我们也可以直接训练整个模型,虽然整个模型很大,但大部分的weights是预训练过的,所以训练起来不会坏掉。实际经验也是这种方法要优于上面的方法。
ch7-2-13

如果我们要用第二种方法的话,不同的task我们就需要train一个不同的模型,而这样的模型往往非常大,这就很浪费资源(计算资源,存储资源),所以就有了Adaptor。Adaptor是我们在pretrained-model里去加一些layer,然后训练的时候就训练这些layer和最后的head。这样pretrained model还是不动的。
ch-2-14
比如下图就是一种插入Adaptor的方式。实验证明,Adaptor可以让模型调很少的参数,却达到fine-tune整个模型的效果。当然,这个Adaptor如何加,还是一个值得深究的地方。
ch7-2-15

2.4 Weighted Features

由于pre-trained model往往很大,不同层得到的feature代表的意义也不同,所以也可以把各层的feature抽出来加权后输入head中去,加权的weights可以是模型自己去学的。
ch7-2-16

3 Why fine-tune

那我们为什么要用fine-tune这样的方法呢?一方面是因为trainning loss可以更快收敛,下图是对比了随机初始化训练和预训练后训练的training loss随着epoch的变化过程,虚线为随机初始化,实线为预训练的。很明显,预训练的模型效果更好。
ch7-2-17
另一方面是因为fine-tune得到的模型有更好的泛化能力。下图就是讲模型变成二维下可视化的结果。可见右边预训练的模型找到的极小值点的区域更加平缓,也就意味着泛化能力更好。
ch7-2-18

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

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

相关文章

【BZOJ-2435】道路修建 (树形DP?)DFS

2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3115 Solved: 1002[Submit][Status][Discuss]Description 在 W 星球上有 n 个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都…

CSRF跨站请求伪造

一、CSRF跨站请求伪造 CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。 CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品&a…

升级 ubuntu_Ubuntu 19.04 已经到期!现有用户必须升级到 Ubuntu 19.10

Ubuntu 19.04 已在 2020 年 1 月 23 日到期,这意味着运行 Ubuntu 19.04 的系统将不再会接收到安全和维护更新,因此将使其容易受到攻击。-- Abhishek Prakash(作者)Ubuntu 19.04 发布于 2019 年 4 月 18 日。由于它不是长期支持(LTS)版本,因此…

Chapter7-3_BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more

文章目录1 How to pre-train2 Predict next token3 Mask Input4 seq2seq的pre-train model5 ELECTRA6 Sentence Embedding本文为李弘毅老师【BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more】的课程笔记,课程视频youtube地址…

python中split函数_python strip()函数和Split函数的用法总结

strip函数原型 声明:s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串。不能删除中间的字符或是字符串。 s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处&#xff0c…

express项目搭建 初始化详细步骤

案例 一、对每一个POST请求都设置CSRF防护 实际上,不仅仅转账需要CSRF防护,每一个post请求都需要做csrf的防护措施。 webA项目中的app.js: const router express.Router();router.all("/register",(res,req)>{.... })funct…

Chapter7-4_來自獵人暗黑大陸的模型 GPT-3

文章目录1 为何来自暗黑大陆2 GPT-3的野心3 GPT-3的效果4 Beyond GPT-3本文为李弘毅老师【來自獵人暗黑大陸的模型 GPT-3】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PPT,若有侵权…

二、PHP框架Laravel学习笔记——路由的定义和控制器

一.路由的定义 什么是路由?路由就是提供接受 HTTP 请求的路径,并和程序交互的功能; 简单点理解,就是为了提供访问程序的 URL 地址,所做的一些设置工作; phpstorm 支持 cmd 操作,左…

Chapter7-5_Multilingual BERT

文章目录1 什么是Multilingual BERT2 Zero-shot Reading Comprehension3 Cross-lingual Alignment4 How alignment happens本文为李弘毅老师【Multilingual BERT】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自…

deepin tim(wine)无法安装_浅析国产操作系统深度deepin

经过两天的努力,终于实现了win10下跟deepin 的双系统,经过我实际操作,发现win7环境下装双系统还是有问题的。虽然deepin系统也能安装成功,但是win系统却是无法顺利启动,一直卡在系统初始界面无限循环。而更换win10之后…

三、PHP框架Laravel学习笔记——路由参数、重定向、视图

一.路由参数 我们已经学习了部分路由参数的功能,比如动态传递{id};那么,有时这个参数需要进行约束,我们可以使用正则来限定必须是数字; Route::get(task/read/{id}, TaskControllerread) ->where(id, …

Chapter7-6_Text Style Transfer

文章目录1 什么是Text Style Transfer2 Cycle GAN2.1 Gumbel-softmax2.2 Continuous Input for Discriminator2.3 Reinforcement Learning2.4 效果3 Star GAN4 Feature Disentangle5 Unsupervised Abstractive Summarization6 Unsupervised Translation7 Unsupervised Speech R…

Student学生管理系统

1.定义各个层 2.添加各个层之间的引用 DAL 层调用Model BLL层调用DAL和Model UI层调用BLL和Model层 Model层供各个层调用 3.根据数据库建立实体类,每张表对应一个实体类 4.在DAL层调用MyTool类和SQLhelper类,添加system.Configuration 引用 并编写app.config 在SqlHelper类调用…

一、PHP框架Laravel——入门和安装

一.版本化方案 Laravel 框架是一款简洁、优秀且优雅的 PHP 开发框架;Laravel 到底怎么读,由于不是真实的单词,导致争论较多目前已知:[lrəvel][lɑːrəvel][lɑːrvl]有这几种;Laravel 从 6.x 开始进入到…

iscsi没有可用于使用快速连接登陆的目标_【解密】5G商用在即 OPPO快速网络切换方法;高管宣布华为河图商标注册成功;小米折叠屏专利曝光 类似于摩托罗拉Razr...

1.【专利解密】5G商用在即 OPPO快速网络切换方法2.好消息!高管宣布华为河图商标注册成功3.小米折叠屏专利曝光 类似于摩托罗拉Razr4.索尼Xperia提交新专利 上下双升降结构1.【专利解密】5G商用在即 OPPO快速网络切换方法【嘉德点评】OPPO发明的网络切换专利&#xf…

搞懂DEtection TRanformer(DETR)

文章目录1 bipartite matching loss2 模型总体框架2.1 backbone2.2 transformer2.2.1 encoder2.2.2 decoder2.2.3 prediction heads3 模型效果参考文献本文描述了笔者在阅读了一些文献之后,对 End-to-end Object Detection with Transformers(DETR) 的理解。DETR是一…

四、PHP框架Laravel学习笔记——路由命名和分组

一.路由命名 给一个制定好的路由进行命名,可以生成 URL 地址或进行重定向; Route::get(task, TaskControllerindex)->name(task.index); 在控制器区域,使用助手函数 route()来获取路由生成的 URL 地址; //生成 ur…

echart 数据点可以加链接吗_地理可视化就这么简单、酷炫,蚂蚁金服AntV 空间数据可视化引擎 L72.0发布...

导读L7 是由蚂蚁金服 AntV 数据可视化团队推出的基于 WebGL 的开源大规模地理空间数据可视分析开发框架。L7 中的 L 代表 Location,7 代表世界七大洲,寓意能为全球位置数据提供可视分析的能力。L7 以图形符号学为理论基础,将抽象复杂的空间数…

论文阅读 - Large-scale weakly-supervised pre-training for video action recognition

文章目录1 概述2 数据的收集方式3 使用的模型4 预训练时的一系列问题4.1 预训练的数据是不是越多越好?4.2 用于预训练的模型是不是越大越好?4.3 预训练数据的标签种类和数量是不是越多越好?4.4 用于预训练的每个video有长有短,时长…

excel记账本模板_原来这才是老板最喜欢看的财务报表!这些模板送你,录入自动生成...

【原来这才是老板最喜欢看的财务报表!这些模板送你,录入自动生成】都说财务报表做好,会计下班会很早!财务报表做的妙,升职加薪少不了!会计每到下班拖后腿的就是要整理好各种报表然后发给领导,会…