2022最新版-李宏毅机器学习深度学习课程-P51 BERT的各种变体

news2024/11/17 22:32:08

之前讲的是如何进行fine-tune,现在讲解如何进行pre-train,如何得到一个pre train好的模型。

CoVe

其实最早的跟预训练有关的模型,应该是CoVe,是一个基于翻译任务的一个模型,其用encoder的模块做预训练。

但是CoVe需要大量的翻译对,这是不容易获得的,能不能通过一大段没有标注的语料进行预训练呢?

因为有监督的标注是十分费时费力的,因此采用自监督的方法。即给定一个无标签的语料,之后利用语料库自己产生一系列的标签,之后再进行对应的训练。

Predict Next Token

比较直觉的自己监督方法就是预测下一个单词是什么。给出的解法就是将一个token输入到网络中,经过softmax之后,得到下一个token的概率分布。

最早的自监督的方法就是预测下一个token是什么。

elmo & ulmfit 

其中使用LSTM做predict next token的工作有elmo,以及ulmfit。

使用self-attention的方式进行next token prediction。这种方法就是避免模型知道下一个词是什么。

语言学家认为,一个单词应该与其经常出现的单词一起出现。因此使用LSTM的时候,用隐向量编码其左边context的所有向量,就表示其前面出现的所有单词。

elmo不但关心其左边的context,还关心其右边的context。但是有一个缺点,就是其左边lstm进行编码的时候只能看到左边的token,右边的lstm进行编码的时候,只能看到右边的token。看到的句子是不完整的,这就存在问题,bert是完整的,可以解决这个问题。

但是随机的进行mask往往是会产生不好的效果的,有时候mask掉的是一个短语中的一个token,这样的话是不好出比较好的效果的。因此有方法提出了三个比较好的mask方法,其一是先分词,之后将分词(word)整个mask掉,其二是phrase-level(就是好几个word),其三是实体level的mask,就是先做ner,之后再将整个entity给mask掉,就是ERNIE模型

spanbert

spanbert方法就是也不考虑是盖住一个词,一个短语,还是一个entity了。就直接盖住一排的token。

spanBert中添加了一个新的预训练任务,SBO,即根据被盖住的左边token和右边token,之后预测被盖住的词中的第n个token。

BERT的一个太好的点就是其不善于处理生成任务,语言模型往往是给定左边的token,之后去预测右边的token,但是BERT是双向的模型,在生成任务中只能看到左边的token,是无法看到右边的token的,所以效果比较一般,

MASS/BART

之前的MASS和BART训练的是一个seq2seq的任务。但是都在输入端对原句子进行一定程度的破坏。

UniLM

UniLM是可以做encoder可以做decoder可以做seq2seq

UniLM本质上其实是一堆的transformer层的组合,并没有明确区分哪些是encoder,哪些是decoder。我们可以通过区分训练任务来对实现的任务进行区分。可以像bert一样做一个encoder,这时候可以看到整个句子中的token,像bert一样进行训练。可以像GPT一样进行decoder的训练,但是在生成的时候只能看左边的token,右边的token是不可以看的。也可以像BART和MASS一样,做encoder和decoder的任务,输入是两个句子,第一个句子可以看到全部的token,第二个句子则只可以看到左边的token。

 ELECTRA

预测mask掉的token有时候是一个比较难得事情,因此有模型ELECTRA随机得替换原始句子中的一些token,生成一些文法没有问题,但是语义怪怪得句子,之后为模型识别出哪些token被替换了,哪些token没有被替换。

但是如果随机找一个不相关的词直接替换的话,模型应该学不到什么有用的信息,所以在ELECTRA中,训练了一个小的BERT,让其生成替换的词,从而对ELECTRA进行训练

之前都是对各个token进行embedding,如何得到一个sentence的embedding呢?

Skip Thought & Quick Thought

RoBERTa & ALBERT

T5 & C4

ERNIE

还有语音版bert

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

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

相关文章

解析SOLIDWORKS教育版与企业版:选择合适版本,助力创新设计

SOLIDWORKS作为领先的三维CAD软件,旨在为工程设计、产品开发和创新提供全面支持。在SOLIDWORKS产品线中,教育版和企业版是两种常见的版本。让我们来了解一下它们之间的区别和特点。 SOLIDWORKS教育版:学习、探索、启发创新 面向教育和学术&…

KyLin离线安装OceanBase

去OceanBase下载若干文件 1 首先安装ob-deploy-2.3.1-2.el7.x86_64.rpm rpm -ivh ob-deploy-2.3.1-2.el7.x86_64.rpm# 运行此命令的时候他会报错 RPM should not be used directly install RPM packages, use Alien instead! 这个需要用Alien去转换为deb的包,不…

美国DDoS服务器:如何保护你的网站免遭攻击?

​  在当今数字化时代,互联网已经成为人们生活中不可或缺的一部分。随着互联网的普及和发展,网络安全问题也日益严重。其中,DDoS攻击是目前最常见和具有破坏性的网络攻击之一。那么,如何保护你的网站免遭DDoS攻击呢?下面将介绍…

【Axure高保真原型】3D环形图_移入显示数据标签

今天和大家分享3D环形图_移入显示数据标签的原型模板,鼠标移入环形区域时,对应区域会变绿,可以查看该区域对应的项目、数据和占比,这个原型模板是用Axure原生元件制作的,所以无需联网,而且可以自由修改样式…

【网络编程】简述TCP通信程序,三次握手,四次挥手

文章目录 🎄TCP通信程序⭐打印字符串✨中文乱码问题🎈解决方法 🌺TCP三次握手🌺TCP四次挥手🛸其他 🎊专栏【网络编程】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 &#x1f386…

Hive安装配置 - 本地模式

文章目录 一、Hive运行模式二、安装配置本地模式Hive(一)安装配置MySQL1、删除系统自带的MariaDB2、上传MySQL组件到虚拟机3、在主节点上安装MySQL组件4、在主节点上配置MySQL(1)查看MySQL服务状态(2)查看M…

每日一题(LeetCode)----数组--螺旋矩阵(一)

每日一题(LeetCode)----数组–螺旋矩阵(一) 1.题目(54. 螺旋矩阵) 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1…

电脑连有线和无线网络如何设置网络的优先级?

电脑同时连接有线和无线网络怎么设置网络的优先级: 我们知道在 笔记本电脑系统 中,可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况,应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有Wi…

磐舟CI-Web前端项目

整体介绍 磐舟作为一个devops产品,它具备基础的CI流水线功能。同时磐舟的流水线是完全基于云原生架构设计的,在使用时会有一些注意事项。这里首先我们要了解磐舟整体的流水线打包逻辑。 文档结构说明 一般来说,磐舟推荐单个业务的标准git库…

基于Python实现用于实时监控和分析 MySQL 服务器的性能指标和相关信息工具源码

MySQL命令行监控工具 - mysqlstat 介绍 mysqlstat 是一个命令行工具,用于实时监控和分析 MySQL 服务器的性能指标和相关信息。 它可以帮助 DBA(数据库管理员)和开发人员定位和解决数据库性能问题。 以下是 mysqlstat 工具的主要功能&#…

数据结构【DS】图的应用

图的连通性问题 最少边数 最多边数 无向图非连通 𝒎𝟎 𝒎𝒏−𝟐∗(𝒏−𝟏)/𝟐 无向图连通 𝒎𝒏−𝟏 𝒎𝒏∗(&#…

python数据可视化之matplotlib.pyplot

文章目录 模块引用折线条图实际应用案例关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①Python工具包②Python实战案例③Python小游戏源码五、面试资料六、Python兼职渠道 不论是数据挖掘还是数据…

【U8+】用友U8账套引入/还原,提示:逻辑文件‘UFModel’不是数据库的一部分。

【问题描述】 用友U8+账套引入(恢复账套)的时候,提示: 逻辑文件‘UFModel’不是数据库‘UFDATA_001_2015’的一部分。 请使用RESTORE FILELISTONLY来列出逻辑文件名。-2147217900 【解决方法】 查看用友U8+账套库正确的逻辑名称为【UFMODEL】和【UFMODEL_log】。 【案例…

【软件测试】一位优秀测试工程师具备哪些知识和经验?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 根据观察&#xf…

「C++」AVL树的实现(动图)

💻文章目录 AVL树概念AVL的查找AVL树的插入 代码部分AVL树的定义查找插入旋转 📓总结 AVL树 概念 AVL树又名高度平衡的二叉搜索树,由G. M. Adelson-Velsky和E. M. Landis发明,顾名思义,其任意节点的左右子树最大高度…

哈希表HashTable

散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。 哈希表中关键码就是数组的索引下标,然后通过下标直接访问数组中的元素,复杂度O(1) 哈希表本质…

外贸ERP系统是什么?推荐的外贸管理软件?

外贸ERP管理系统有哪些?海洋建站管理软件的功能? 为了更有效地处理外贸业务,许多企业正在寻找先进的工具和技术。为了提高效率、降低成本并增强竞争力,越来越多的外贸企业正在转向外贸ERP系统。那么,外贸ERP系统究竟是…

深度学习之基于Django+Tensorflow动物识别系统

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Django和TensorFlow的动物识别系统可以被设计成能够使用深度学习算法自动识别上传的图像中的动物种类&#xff…

CrystalDiskInfo/CrystalDiskMark/DiskGenius系统迁移

CrystalDiskInfo 主要用于看硬盘的各种信息,包括但不限于硬盘通电时间、通电次数、硬盘好坏状态 CrystalDiskMark 主要用于测试硬盘的读写速度、连续读写速度 DiskGenius 主要用于通过U盘装操作系统后进行,磁盘分区,更改磁盘名、隐藏部分…