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

之前讲的是如何进行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
相关文章:
2022最新版-李宏毅机器学习深度学习课程-P51 BERT的各种变体
之前讲的是如何进行fine-tune,现在讲解如何进行pre-train,如何得到一个pre train好的模型。 CoVe 其实最早的跟预训练有关的模型,应该是CoVe,是一个基于翻译任务的一个模型,其用encoder的模块做预训练。 但是CoVe需要…...
JavaFX中Application、Stage、Scene和Parent的区别
在JavaFX中,Application、Stage、Scene和Parent是用于构建图形用户界面(GUI)的关键组件,它们各自有不同的作用和责任。以下是它们之间的主要区别: 1、Application(应用程序) Application是Java…...
ubuntu18.04 terminal打不开的解决方法
目录 现象解决 现象 打开terminal时,一直转圈,然后消失,总是打不开terminal. 解决 编辑文件sudo vim /etc/default/locale,修改为 # File generated by update-locale LANG"en_US.UTF-8" LANGUAGE"en_US:en"重启系统,问题解决....
部署Kubernetes Dashboard
Dashboard简介 Dashboard 是基于网页的 Kubernetes 用户界面。 可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中,也可以对容器应用排错,还能管理集群资源。 Dashboard创建 #创建pods kubectl apply -f https://raw.githubusercontent.com/kub…...
Java对List的操作
List<Person>转成map,并自定义key 假设有一List中有如下数据 Person{id100, name张三0100} Person{id101, name张三1100} Person{id102, name张三2100} Person{id103, name张三3100} Person{id104, name张三4100} Person{id105, name张三5100} Person{id106…...
git 将本地已有的一个项目上传到新建的git仓库的方法
将本地已有的一个非git项目上传到新建的git仓库的方法一共有两种 一、 克隆拷贝 第一种方法比较简单,直接用把远程仓库拉到本地,然后再把自己本地的项目拷贝到仓库中去。然后push到远程仓库上去即可。此方法适用于本地项目不是一个git仓库的情况。 具…...
基于Docker的安装和配置Canal
基本介绍 Canal介绍:Canal 是用 Java 开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件(数据库同步需要阿里的 Otter 中间件,基于 Canal)。 Canal背景:阿里巴巴 B2B 公司,因为…...
去除IDEA中代码的波浪线(黄色警示线)
去除IDEA中代码的波浪线 首先是点击File—>Settings 操作如下图所示: 然后点击Editor—>Inspections—>General—>Duplicated code fragment(去掉勾选)—>Apply—>OK 即可,详情请看下图所示:...
【Qt之QSplashScreen】开场动画使用:进度条加载及设置鼠标指针不转圈
效果 开场动画效果如下: 开场动画 介绍 QSplashScreen小部件提供了一个启动屏幕,可以在应用程序启动期间显示。 启动屏幕是一个小部件,通常在应用程序启动时显示。启动屏幕通常用于启动时间较长的应用程序(例如需要花费时间建立连接的数据…...
WPF Button点击鼠标左键弹出菜单
目录 ContextMenu介绍WPF实现点击鼠标左键弹出菜单如何禁用右键菜单如何修改菜单样式菜单位置设置 本篇博客介绍WPF点击按钮弹出菜单,效果如下: 菜单的位置、央视可以自定义。 实现技巧:不在xaml里菜单,在按钮左键按下的点击事件里…...
http库requests
http库requests requets简介第一个requestsrequests发送基本的HTTP请求requests处理请求参数requests处理响应requests处理Cookiesrequests处理sessionrequests使用代理requests设置请求头requests处理SSL证书验证requests错误处理和异常处理requests连接池requests请求重试...
package.json 依赖版本中的符号含义
依赖包的版本问题 实例说明~1.2.3主版本次要版本补丁版本;1.2.3 < version < 1.3.0;~1.2主版本次要版本;1.2.0 < version < 1.3.0~1主版本;1.0.0 < version < 2.0.0 符号实例版本范围说明1.0.01.0.0锁定1.0.0版本,必须这个版本。^会匹配最新的大…...
Python try except 用法
关键字解释trytry 就是执行代码的部分,但是对这部分代码没有信心就试一试嘛,这就是tryexcept很不幸,试的时候有错误,没事儿,except 帮你来兜底,它会输出错误,并继续执行下去else程序没有错误&am…...
代码随想录二刷 | 链表 | 翻转链表
代码随想录二刷 | 链表 | 翻转链表 题目描述解题思路 & 代码实现双指针法递归法 206.翻转链表 题目描述 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4…...
每日一题(LeetCode)----链表--两两交换链表中的节点
每日一题(LeetCode)----链表–两两交换链表中的节点 1.题目([24. 两两交换链表中的节点](https://leetcode.cn/problems/spiral-matrix/)) 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内…...
竞赛选题 身份证识别系统 - 图像识别 深度学习
文章目录 0 前言1 实现方法1.1 原理1.1.1 字符定位1.1.2 字符识别1.1.3 深度学习算法介绍1.1.4 模型选择 2 算法流程3 部分关键代码 4 效果展示5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 毕业设计 图像识别 深度学习 身份证识别…...
什么时候用@MapperScan 注解?
hello,我是小索奇,给大家讲解一下MapperScan注解的用法。 MapperScan 注解是 MyBatis 框架中的一个注解,它的主要作用是扫描指定包路径下的 Mapper 接口,将其注册为 Spring 的 Bean。这样,在使用 MyBatis 进行数据库操作时&#…...
MQTT.js
MQTT.js mqtt.js简介MQTT测试工具mqttboxMQTTX mqtt使用mqtt引入(方式一)mqtt引入(方式二)创建mqtt客户端连接到mqtt代理订阅topic处理接收到的消息重新连接取消订阅发布消息断开连接关闭客户端MQTT APIMQTT在VUE中使用MQTT在Reac…...
html滑动文章标题置顶
position: sticky; 基于用户的滚动位置来定位 首先封装一个组件 例如:AAA组件(注意,只能有一层盒子,不能在外面继续包一层div) <template><div class"box">{{title}}</div> </templa…...
Android11 桌面默认横屏导致任务键近期任务布局UI显示错误!
/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 定义变量:private boolean stch false; keyCode KeyEvent.KEYCODE_APP_SWITCH 取消原来逻辑,采用广播打开近期任务后台 /*/ if (!keyguardOn…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...
