2022最新版-李宏毅机器学习深度学习课程-P46 自监督学习Self-supervised Learning(BERT)

一、概述:自监督学习模型与芝麻街

参数量

  • ELMO:94M
  • BERT:340M
  • GPT-2:1542M
  • Megatron:8B
  • T5:11B
  • Turing NLG:17B
  • GPT-3:175B
  • Switch Transformer:1.6T

二、Self-supervised Learning⇒Unsupervised Learning的一种

“自监督学习”数据本身没有标签,所以属于无监督学习;但是训练过程中实际上“有标签”,标签是“自己生成的”

想办法把训练数据分为“两部分”,一部分作为作为“输入数据、另一部分作为“标注”。

三、BERT

💡 作为transformer,理论上BERT的输入长度没有限制。但是为了避免过大的计算代价,在实践中并不能输入太长的序列。 事实上,在训练中,会将文章截成片段输入BERT进行训练,而不是使用整篇文章,避免距离过长的问题。

BERT是一个transformer的Encoder,BERT可以输入一行向量,然后输出另一行向量,输出的长度与输入的长度相同。BERT一般用于自然语言处理,一般来说,它的输入是一串文本。当然,也可以输入语音、图像等“序列”。

Masking Input

随机盖住一些输入的文字,被mask的部分是随机决定的。

MASK的方法

  • 第一种方法是,用一个特殊的符号替换句子中的一个词,我们用 "MASK "标记来表示这个特殊符号,你可以把它看作一个新字,这个字完全是一个新词,它不在你的字典里,这意味着mask了原文。
  • 另外一种方法,随机把某一个字换成另一个字。中文的 "湾"字被放在这里,然后你可以选择另一个中文字来替换它,它可以变成 "一 "字,变成 "天 "字,变成 "大 "字,或者变成 "小 "字,我们只是用随机选择的某个字来替换它

两种方法都可以使用,使用哪种方法也是随机决定的。

训练方法

  1. 向BERT输入一个句子,先随机决定哪一部分的汉字将被mask。
  2. 输入一个序列,我们把BERT的相应输出看作是另一个序列
  3. 在输入序列中寻找mask部分的相应输出,将这个向量通过一个Linear transform(矩阵相乘),并做Softmax得到一个分布
  4. 用一个one-hot vector来表示MASK的字符,并使输出和one-hot vector之间的交叉熵损失最小。

💡 本质上,就是在解决一个分类问题。BERT要做的是预测什么被盖住。

Next Sentence Prediction(不太有用)

从数据库中拿出两个句子,两个句子之间添加一个特殊标记[SEP],在句子的开头添加一个特殊标记[cls]。这样,BERT就可以知道,这两个句子是不同的句子。

只看CLS的输出,我们将把它乘以一个Linear transform,做一个二分类问题,输出yes/no,预测两句是否前后连续。

Robustly Optimized BERT Approach(RoBERTa)

Sentence order prediction,SOP(句子顺序预测)⇒ALBERT

挑选的两个句子是相连的。可能有两种可能性供BERT猜测:

  • 句子1在句子2后面相连,
  • 句子2在句子1后面相连。

BERT的实际用途 ⇒ 下游任务(Downstream Tasks)

预训练与微调

  • 预训练:产生BERT的过程
  • 微调:利用一些特别的信息,使BERT能够完成某种任务

BERT只学习了两个“填空”任务。

  • 一个是掩盖一些字符,然后要求它填补缺失的字符。
  • 预测两个句子是否有顺序关系。

但是,BERT可以被应用在其他的任务【真正想要应用的任务】上,可能与“填空”并无关系甚至完全不同。【胚胎干细胞】当我们想让BERT学习做这些任务时,只需要一些标记的信息,就能够“激发潜能”

对BERT的评价任务集——GLUE(General Language Understanding Evaluation)

为了测试Self-supervised学习的能力,通常,你会在一个任务集上测试它的准确性,取其平均值得到总分。

性能衡量

人类的准确度是1,如果他们比人类好,这些点的值就会大于1。

四、How to use BERT——[CLS]+Fine Tune

Case 1:Sentiment analysis

给机器一个句子,让它判断这个句子是正面的还是负面的。

给它一个句子,把CLS标记放在这个句子的前面,只看CLS的部分。CLS在这里输出一个向量,我们对它进行Linear transform+Softmax,得到类别。

对下游任务,需要标注资料。

在训练的时候,Linear transform和BERT模型都是利用Gradient descent来更新参数的。

  • Linear transform的参数是随机初始化
  • 而BERT的参数是由学会填空的BERT初始化的。⇒将获得比随机初始化BERT更好的性能。

对比预训练与随机初始化

  • "fine-tune"是指模型被用于预训练,这是网络的BERT部分。该部分的参数是由学习到的BERT的参数来初始化的,以填补空白。
  • scratch表示整个模型,包括BERT和Encoder部分都是随机初始化的。

scratch与用学习填空的BERT初始化的网络相比,损失下降得比较慢,最后,用随机初始化参数的网络的损失高于用学习填空的BERT初始化的参数。

使用BERT的整个过程是连续应用Pre-Train + Fine-Tune,它可以被视为一种半监督方法(semi-supervised learning)

  • 当你进行Self-supervised学习时,你使用了大量的无标记数据⇒unsupervised learning
  • Downstream Tasks 需要少量的标记数据

Case 2 :POS tagging

BERT部分,即网络的Encoder部分,其参数不是随机初始化的。在预训练过程中,它已经找到了不错的参数。

Case 3:Natural Language Inference(NLI)

给出前提和假设,机器要做的是判断,是否有可能从前提中推断出假设。⇒ 预测“赞成、反对”

你只要给它两个句子,我们在这两个句子之间放一个特殊的标记SEP,并在最开始放CLS标记。最终考察CLS标记对应的输出向量,将其放入Linear transform的输入得到分类。

Case 4:Extraction-based Question Answering (QA)→答案必须出现在文中

        入序列包含一篇文章和一个问题,文章和问题都是一个序列。对于中文来说,每个d代表一个汉字,每个q代表一个汉字。你把d和q放入QA模型中,我们希望它输出两个正整数s和e。根据这两个正整数,我们可以直接从文章中截取一段,它就是答案。这个片段就是正确的答案。

模型细节

对于BERT来说,你必须向它展示一个问题,一篇文章,以及在问题和文章之间的一个特殊标记,然后我们在开头放一个CLS标记。

在这个任务中,你唯一需要随机初始化从头训练两个向量,分别对应与答案的开始与结束,用橙色向量和蓝色向量来表示,这两个向量的长度与BERT的输出相同。

  • 首先,计算这个橙色向量和那些与document相对应的输出向量(黄色向量)的内积,计算内积,通过softmax函数,找到数值最大的位置,即为答案的开始位置。

    【这个内积和attention很相似,你可以把橙色部分看成是query,黄色部分看成是key,这是一个attention,那么我们应该尝试找到分数最大的位置】

  • 类似地,利用蓝色向量可以找到答案的结尾位置。

BERT难以训练

  • 数据量大
  • 训练过程困难

自己训练BERT后,可以观察到BERT什么时候学会填什么词汇,它是如何提高填空能力的?

https://arxiv.org/abs/2010.02480

五、Pre-training a seq2seq model

        输入是一串句子,输出是一串句子,中间用Cross Attention连接起来,然后你故意在Encoder的输入上做一些干扰来破坏它。Encoder看到的是被破坏的结果,Decoder应该输出句子被破坏前的结果,训练这个模型实际上是预训练一个Seq2Seq模型

如何“破坏”句子?MASS/BART/T5

  • MASS⇒MASK
  • BART⇒删除一些词,打乱词的顺序,旋转词的顺序。或者插入一个MASK,再去掉一些词。
  • T5(Transfer Text-To-Text Transformer)⇒在C4语料库(Colossal Clean Crawled Corpus)上尝试了各种组合

六、为什么BERT有用?

当输入一串文本时,每个文本都有一个对应的向量,称之为embedding。这些向量代表了输入词含义

更具体地说,如果你把这些词所对应的向量画出来,或者计算它们之间的距离。意思比较相似的词,它们的向量比较接近

词嵌入:一种将词语映射到向量空间的技术,用于表示词语的语义信息。通过将词语表示为向量,可以在计算机中进行词语之间的计算和比较。

Embedding in BERT

训练BERT时,我们给它w1、w2、w3和w4,我们覆盖w2,并告诉它预测w2,而它就是从上下文中提取信息来预测w2。所以这个向量是其上下文信息的精华,可以用来预测w2是什么。

BERT的这些向量是输出向量代表了该词的含义,可以认为BERT在填空的过程中已经学会了每个汉字的意思

相关技术:CBOW

CBOW所做的,与BERT完全一样。做一个空白,并要求它预测空白处的内容。这个CBOW,这个word embedding技术,可以给每个词汇一个向量代表这个词汇的意义。由于算力原因,CBOW是一个非常简单的模型,只使用了两个变换。今天的BERT,就相当于一个深度版本的CBOW

contextualized embedding

语言存在“歧义”,同一token在不同的上下文中会有不同的含义。BERT在Encoder中存在Self-Attention,会考虑上下文,根据不同的语境,从同一个词汇产生不同的embedding。

奇怪的应用——DNA、蛋白质、音乐的分类

把一个DNA序列/蛋白质/音乐预处理成一个无意义的token序列,并使用BERT进行分类,也能得到比较好的结果。

 💡 也许它的力量并不完全来自于对实际文章的理解。 还有其他原因。例如,也许BERT只是一套更好的初始参数,与语义不一定有关,只是在训练大型模型时更好。

More BERT

七、Multi-lingual BERT——Zero-shot reading comprehension

它是由很多语言来训练的,比如中文、英文、德文、法文等等,用填空题来训练BERT,这就是Multi-lingual BERT的训练方式。

google训练了一个Multi-lingual BERT,它能够做这104种语言的填空题。神奇的地方来了,如果你用英文问答数据训练它,它就会自动学习如何做中文问答。

Why?

Cross-lingual Alignment?

一个简单的解释是:也许对于multi-lingual的BERT来说,不同的语言并没有那么大的差异。无论你用中文还是英文显示,对于具有相同含义的单词,它们的embedding都很接近。汉语中的 "跳 "与英语中的 "jump "接近,汉语中的 "鱼 "与英语中的 "fish "接近,汉语中的 "游 "与英语中的 "swim "接近,也许在学习过程中它已经自动学会了。

验证:MRR(Mean Reciprocal Rank)的值越高,同样意思不同语言的词汇向量越接近,也就是不同embedding之间的Alignment就越好

数据量是一个非常关键的因素。基于大量数据与大算力支撑,才能够把不同的语言排列在一起。

语言之间的关系/差距?

当训练多语言的BERT时,如果给它英语,它可以用英语填空,如果给它中文,它可以用中文填空,它不会混在一起,这说明它知道语言的信息也是不同的。

将某一语言的所有Embedding求平均作为“语言向量”,两个向量相减可以视为“语言的差距向量”。将某一语言的向量加上这一“差距向量”,能够实现“无监督翻译”

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

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

相关文章

[HXPCTF 2021]includer‘s revenge

文章目录 方法一前置知识Nginx 在后端 Fastcgi 响应过大产生临时文件竞争包含绕过include_once限制 解题过程 方法二前置知识Base64 Filter 宽松解析iconv filter 解题过程 方法一 NginxFastCGI临时文件 前置知识 Nginx 在后端 Fastcgi 响应过大产生临时文件 www-data用户在n…

SharePoint 页面中插入自定义代码

我们都知道 SharePoint 是对页面进行编辑的。 对于一些有编程基础的人来说,可能需要对页面中插入代码,这样才能更好的对页面进行配置。 但是在新版本的 SharePoint modern 页面来说,虽然我们可以插入 Embed 组件。 但是 Embed 组件中是不允…

【C++基础 】类和对象(上)

C基础 类和对象(上) 1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1 访问限定符4.2 封装 5.类的作用域6.类的实例化7.类对象模型7.1 如何计算类对象的大小7.2 类对象的存储方式猜测7.3 结构体内存对齐规则 8.this指针8.1 t…

Kubernetes实战(四)-部署docker harbor私有仓库

1 Docker原生私有仓库Registry 1.1 原生私有仓库Registry概述 Docker的仓库主要分两类: 私有仓库公有仓库 共有仓库只要在官方注册用户,登录即可使用。但对于仓库的使用,企业还是会有自己的专属镜像,所以私有库的搭建也是很有…

分享vmware和Oracle VM VirtualBox虚拟机的区别,简述哪一个更适合我?

VMware和Oracle VM VirtualBox虚拟机的区别主要体现在以下几个方面: 首先两种软件的安装使用教程如下: 1:VMware ESXI 安装使用教程 2:Oracle VM VirtualBox安装使用教程 商业模式:VMware是一家商业公司,而…

HTTP和HTTPS详解

一)什么是HTTP协议 1)HTTP协议是倾向于相遇业务层次上面的一种协议,传输层协议主要考虑的是端对端之间的一个传输过程,TCP重点进行关注的是可靠传输;咱们的HTTP/1,HTTP/2是基于TCP的,但是咱们的HTTP/3是基于UDP的&…

uniapp H5预览PDF支持手势缩放、分页、添加水印、懒加载、PDF下载

效果预览 项目说明 uniapp vue2 node:v14.18.3 npm: 6.14.15 安装pdfh5.js插件 pdfh5 - npm (npmjs.com)pdfh5.js 基于pdf.js和jQuery pdfh5 - npm (npmjs.com) npm install pdfh5 由于我安装最新的pdfh5.js后运行时报错 所以我选择降低版本,可能是node…

Wireshark学习 与 TCP/IP协议分析

Wireshark简介和工具应用 如何开始抓包? 打开wireshark,显示如下网络连接。选择你正在使用的,(比如我正在使用无线网上网),双击 可以先看下自己的ip地址和网关ip地址(看抓包数据时候会用到&…

索尼RSV文件怎么恢复为MP4视频

索尼相机RSV是什么文件? 如果您的相机是索尼SONY A7S3,A7M4,FX3,FX3,FX6,或FX9等,有时录像会产生一个RSV文件,而没有MP4视频文件。RSV其实是MP4的前期文件,经我对RSV文件…

[Android]_[初级]_[配置gradle的环境变量设置安装位置]

场景 在开发Android项目的时候, gradle是官方指定的构建工具。不同项目通过wrapper指定不同版本的gradle。随着项目越来越多,使用的gradle版本也增多,导致它以来的各种库也增加,系统盘空间不足,怎么解决? 说明 grad…

C/C++调试工具 - gdb详解

C/C调试工具 -gdb详解 1 简介 2 常用的命令 3 使用的条件 4 程序调试 4.1 直接运行程序 4.2 断点调试(在某一行) 4.3 断点调试(在函数入口处打断点) 5 调试core文件 5.1 生成core文件的方法 5.2 调试core文件 1 简介 GDB是Linux下非常好用且强大的调试工具。GD…

一种ADC采样算法,中位值平均滤波+递推平均滤波

前言 在实际AD采集场景中,会出现周期性变化和偶然脉冲波动干扰对AD采集的影响 这里使用中位值平均滤波递推平均滤波的结合 参考前人写好的代码框架,也参考博主GuYH_下面这篇博客,在此基础上稍作修改,写出这篇博客,能…

NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑,这么多知识点该如何组织…

【腾讯云 HAI域探秘】探索AI绘画之路:利用腾讯云HAI服务打造智能画家

目录 前言1 使用HAI服务作画的步骤1.1 注册腾讯云账户1.2 创建算力服务器1.3 进入模型管理界面1.4 汉化界面1.5 探索AI绘画 2 模型参数的含义和调整建议2.1 模型参数的含义和示例2.2 模型参数的调整建议 3 调整参数作画的实践和效果3.1 实践说明3.2 实践效果13.3 实践效果23.4 …

Leetcode-94 二叉树的中序遍历

递归实现 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

creo6.0教程之拉伸

目录 一、实体拉伸:1.拉伸基本操作:2.其他常用的拉伸选项:3.移除材料的拉伸: 一、实体拉伸: 1.拉伸基本操作: 1、点击-拉伸,进入拉伸操作界面 2、选择绘制草图放置的平面,选择放置…

765. 情侣牵手(困难)

首先不考虑已经正确坐在一起的组合在没有坐在一起的组合中,只有当两对情侣互相配对时只需要一次交换操作就可以使得两对情侣完成匹配,其余情况交换数等于情侣对数可以把所有情侣看成一个大集合,这个大集合是可以拆成若干小集合的,…

Powerpoint不小心被覆盖?PPT误删文件如何恢复?

PowerPoint不小心删除了,这可能是众多学生和工作人员最头痛的事情了。PPT被覆盖或误删可能意味着几个小时的努力付之东流。那么PPT覆盖的文档要如何救回来呢?小编将会在本篇文章中为大家分享几个解决方案,使PPT文档覆盖还原操作成为可能&…

CCLink转Modbus TCP网关_MODBUS报文配置

兴达易控CCLink转Modbus TCP网关是一种功能强大的设备,可实现两个不同通信协议之间的无缝对接。它能够将CCLink协议转换为Modbus TCP协议,并通过报文配置实现灵活的通信设置。兴达易控CCLink转Modbus TCP网关可以轻松实现CCLink和Modbus TCP之间的数据转…

Swift 常用类别整理

生成颜色,传入16进制数字生成对应颜色 个人不喜欢传字符串的写法,比如 "0x0080FF" 或者 "0080FF",原因如下: 传了字符串最后还是要解析成数字参与颜色运算的,需要额外做字符串转数字的操作&…