2022李宏毅机器学习深度学习学习笔记第四周--Self-Supervised Learning

2023-11-04

前言

本文要讲的是Self-Supervised Learning自监督学习,首先列举了Self-Supervised Learning的模型有哪些,再通过与Supervised Learning对比讲解了什么是 Self-Supervised Learning,通过四个例子具体讲了BERT怎么用以及为什么BERT有用,最后讲了自监督学习的另外一个模型GPT。

Self-Supervised Learning

模型介绍:
ELMo(Embeddings from Language Models)
BERT(Bidirectional Encoder Representations from Transformers)
ERNIE (Enhanced Representation through Knowledge Integration)
Big Bird(Transformers for Longer Sequences)

什么是Self-Supervised Learning

Supervised Learning就是有一个model,输入是x,输出是y,要有label(标签)才可以训练Supervised Learning,比如让机器看一篇文章,决定文章是正面的还是负面的,得先找一大堆文章,标注文章是正面的还是负面的,正面负面就是label。Self-Supervised Learning就是机器自己在没有label的情况下,想办法做Supervised Learning。比如把没有标注的资料分成两部分,一部分作为模型的输入,一部分作为模型的输出,模型的输出和label越接近越好。

Masking Input

“完形填空”
BERT的架构和Transformer 的Encoder 一样,一般用在自然语言处理上。BERT的输入是一串文字,将文字的一些部分随机盖住,所谓的盖住具体有两种方法,一种就是将句子中的某个字换成一个特殊的符号mask或者另一种做法就是随机把某一个字换成另外一个字,盖住部分的输出乘一个矩阵,做softmax得到一个输出,BERT学习的目标就是输出和湾字越接近越好。
在这里插入图片描述

Next Sentence Prediction

拿出两个句子,句子中加一个特殊的符号代表分隔,如下图,当做BERT的输入,只取CLS的输出乘上一个矩阵,做二元分类问题,两个句子相接则为yes,否则no;但是这个方法不是很有用,可能是太简单了。
我们现在训练的BERT模型其实只会做2件事情:Masked token prediction:预测盖住的词是什么。Next sentence prediction:预测两个句子是不是前后接起来的。
BERT不止做填空和句子连接,也可以被用在Downstream Tasks(一些我们真正在意的任务,需要一些标注资料)下游任务,BERT可以分化成各式各样的任务,这件事叫做fine-tune,产生BERT的过程叫做pre-train预训练。
在这里插入图片描述
想测试Self-Supervised Learning模型的能力,会把它测试在多个任务上,最知名的任务集叫做GLUE(具体如下图,有九个任务)想知道BERT训练出来的模型好不好,把它作用在九个任务上,看平均正确率是多少,代表了Self-Supervised Learning模型好坏。
在这里插入图片描述
黑线代表人类在这个任务上的正确率为1,每个点代表了一个任务,蓝色的虚线代表GLUE分数的平均。可以看到在某些任务上BERT及其改良模型已经超过的人类。
在这里插入图片描述

BERT如何使用

例一
比如,输入一个句子,输出类别,判断一个句子是正面还是负面问题。
BERT没法凭空解决句子分析的问题,还需要提供一些标注资料(提供大量句子,每个句子是正面还是负面)才能够训练BERT的模型。linear部分的参数是随机初始化的,BERT的初始参数是把可以做填空题的BERT的参数拿来当做初始化的参数。
在这里插入图片描述
例二
输入一个序列,输出同样长的序列,比如POS tagging词性标注。
在这里插入图片描述
BERT处理词性标注的问题,输入三个字,每个字对应一个输出向量,把三个输出向量分别做linear transformer乘上一个矩阵,在做softmax判断属于哪一个类别,BERT本体的参数不是随机初始化的参数。
例三
输入两个句子,输出一个类别,在这里举自然语言处理的例子,机器要做的事情就是判断前提和假设是否矛盾。
BERT对这个问题的处理,给它两个句子,句子中间用SEP分隔开,只取CLS的输出,丢到linear transformer(乘一个矩阵)里面,决定输出类别(判断两个句子是否矛盾)
例四
做一个问答系统(QA),即给机器一篇文章,问一个问题,机器会给你答案。
在这里插入图片描述
输入有文章和问题,把输入丢到QA模型里面,如上图,输出两个正整数s,e,表示从文章的第S个字到第e个字串起来就是正确答案。把文章和问题用SEP隔开作为BERT输入,如下图,需要从头开始训练的东西只有两个向量,两个向量的输出和BERT的输出长度是一样的,把橙色的向量和文章的输出向量做inner product,算出三个数值,做softmax得到三个数,d2对应的向量得到的分数最高,那么s=2,起始位置为2。

蓝色部分代表答案结束的位置,蓝色向量和对应的每个黄色向量做inner product,算出三个数值,做softmax得到三个数,d3对应的向量得到的分数最高,那么e=3,结束位置为3。正确答案就是d2 d3。
在这里插入图片描述
BERT 一般pre-trainingEncoder ,也有办法pre-training decoder。
给encoder的输入故意做一些扰动弄坏,decoder的输入希望跟弄坏前的结果一样。弄坏的方法有mass(把一些地方盖起来)、把词汇的顺序弄乱等等。

为什么BERT 有用呢?

输入一串文字,对应的输出向量我们叫它embedding,这些向量代表了输入的字的意思。
在这里插入图片描述
上面说的代表字的意思就是假设把向量划出来,发现意思越相近的字,他们的向量就越接近。很多语言都有一字多义的问题,BERT可以考虑上下文,同一个字,上下文不同,它的向量embedding也不同。
假设考虑果这个字,比如喝苹果汁,苹果电脑都就到BERT里面,计算每个“果”所对应的embedding,计算两个果之间的相似度。
在这里插入图片描述
值偏黄色算出来的值越大,所以自己和自己的相似度最高,对角线为黄色的,前五个果的相似度比较高,后五个果的相似度比较高,前五个果和后五个果的相似度就比较低。
一个词汇的意思可以从它的上下文中看出来,BERT可以从上下文中抽取资讯来预测W2,如下图,像这样的想法在BERT之前就已经有了,叫Word embedding,所以BERT抽出的向量又叫contextualized word embedding。在这里插入图片描述

Multi-lingual BERT 多语言BERT

神奇之处在于拿英文的QA的资料去做训练,它自动就会学做中文的QA的问题。
在这里插入图片描述
在没有BERT之前,最强的问答模型叫QANet,正确率只有78.1,如果用BERT在中文上学会做填空题,在中文的QA资料上做fine-tune ,测试在中文的问题上,正确率只有89.1,如果是多语言的BERT,fine-tune在英文上,测试在中文上也有78.8的正确率。

GPT

Self-Supervised Learning除了BERT还有GPT系列的模型,BERT做的是填空题,GPT做的是预测接下来的token是什么。
举例,训练资料的句子是台湾大学,输入begin of sentence,GPT输出一个embedding,预测下一个出现的token“台”,详细来看就是有一个embedding(h1表示)通过一个linear transform,再通过softmax,得到一个结果。
在这里插入图片描述
后面是一样的,给“台”,预测出“湾”,“湾”预测出“大”
在这里插入图片描述
假设要GPT模型做翻译
给它一段描述,告诉他要做翻译,给出几个例子,让他直接翻译出结果,这个叫做“Few-shot” Learning,但它和一般的“Few-shot” Learning不一样,完全没有调参数的意思,所以叫“In-context” Learning,不做gradient descent;只看一个例子就知道要做翻译这件事叫“one-shot” Learning,直接叙述说要做翻译就看懂的叫“Zero-shot”Learning。
在这里插入图片描述
测试了42个任务,纵轴是正确率,三条实线是42个任务的平均正确率,分别代表了Few-shot、one-shot、Zero-shot,横轴代表了模型的大小。
在这里插入图片描述
Self-Supervised Learning不只可以用在文字上,在图像上、语音上也可以使用。

总结

通过学习了解了什么是自监督学习,是无监督学习里面的一种,主要是希望能够学习到一种通用的特征表达用于下游任务 (Downstream Tasks)。 其主要的方式就是通过自己监督自己。对于BERT来讲,其自监督训练的部分就是训练 BERT 做简单的填空题,训练好之后的BERT具有了 Word Embedding 的能力,且这里的 Word Embedding 是可以自动地考虑上下文的。这样的预训练好的 BERT 模型,只需要少量的带标签数据集,就可以在无数下游任务 (Downstream Tasks) 中完成微调 (Fine-tune),得到一个个不同的适用于下游任务的性能卓著的model。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

2022李宏毅机器学习深度学习学习笔记第四周--Self-Supervised Learning 的相关文章

随机推荐

  • vue项目中高德地图根据城市名定位到城市中心位置,并在该位置做标记

    先看效果 首先记得引入高德地图 并且要带上 plugin AMap DistrictSearch 如下
  • 加密方式

    目录 MD5和RSA 1 MD5 a MD5简介 MD5一种不可逆的加密算法 什么意思呢 网站一般会保存用户密码 为了不让数据库管理员看到用户的密码 你输入的密码是这样的 12345 网站加密后的密码可能是这样的 E10ADC3949BA5
  • 缓存穿透,缓存雪崩的四种解决方案

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 前言 设计一个缓存系统 不得不要考虑的问题就是 缓存穿透 缓存击穿与失效时的雪崩效应 缓存穿透 缓存穿透是指查询一个一定不存在的数据 由于缓存是不命中时被动写的 并且出于容
  • [管理与领导-60]:IT基层管理者 - 扩展技能 - 3 - 通过面试招到合适的人选

    目录 前言 一 招聘 1 1 什么是招聘 1 2 招聘 VS 招募 1 3 甄选 1 4 招聘中的重要原则 1 5 招聘的本质 1 6 人才匹配的维度 1 7 人员招聘中的误区 二 面试 2 1 何为面试 2 2 为什么面试 2 3 面试的
  • PRESENT加密算法(c++实现)

    简介 PRESENT加密算法在2007 年由来自德国波鸿鲁尔大学的 Bogdanov 在 CHES 会议中发表 PRESENT加密算法为一种轻量级分组密码算法 采用了 置换网络 SPN 结构 一共迭代 31 轮 分块 组 长度为 64 比特
  • 局域网可用IP网段

    C类局域网专用网段 192 168 0 1 192 168 255 254 很多公司网吧都是用这个网段 hoho B类局域网专用网段 172 16 0 1 172 31 255 254 A类局域网专用网段 10 0 0 1 10 255 2
  • 工作3周年小记

    时间荏苒 入职那天的情景还历历在目 却不经意的成为了组里的老员工 一直渴望着静好的岁月 不曾想 过去的岁月这般忙碌 匆匆 似乎没有留下太多彩色的记忆 蓦然回首 做了很多项目 看到各种同事的来去 也经历了组里的盛衰 内心没有波澜 只是遗憾没有
  • chatgpt赋能python:Python编译成pyd文件是什么?如何提高SEO排名?

    Python编译成pyd文件是什么 如何提高SEO排名 Python是一种非常强大的编程语言 它非常适合用于开发各种不同类型的应用程序 然而 Python虽然易于学习和使用 但是由于它的解释性质 它的运行速度相对较慢 在某些情况下 这可能会
  • docker 覆盖 entrypoint_跟我一起学docker(八)--Dockerfile

    1 利用Dockerfile创建镜像 什么是Dockerfile 定义 Dockerfile是一个文本格式的配置文件 用户可以使用Dockerfile快速创建自定义镜像 基本结构 Dockerfile由一行行的命令语句组成 并且支持以 开头
  • 一文解读Vision Transformer(ViT)

    前言 Vision Transformer 论文 https arxiv org pdf 2010 11929 pdf 跟李沐学AI https www bilibili com video BV15P4y137jb spm id from
  • 【ThreadPoolTaskSchedule】实现手动开启关闭定时任务

    最近在公司呢 有一个需求 大概意思就是需要我去调用远程接口 但如果出现异常或者响应失败的时候 就需要开启重试机制 直到返回成功的响应为止 我很疑惑 按理说这种情况通常都应该有一个最大重试次数吗 最终在我像组长确认这个需求之后 还是要求我按照
  • ELK 日志分析系统

    ELK 日志分析系统 2015 10 08 13 18 58 标签 elk 原创作品 允许转载 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http 467754239 blog 51cto com 4
  • 软件测试 - 边界值法

    文章目录 介绍 等价类划分法的区别 常见的边界值 步骤 案例 介绍 边界值分析法就是对输入或输出边界值进行测试的 也是一种黑盒测试 边界值分析法通常作为等价类划分法的补充 其测试用例来自等价类的边界 长期的经验得知 大量的错误是发现在输入或
  • 二叉树的遍历方式(前序遍历、中序遍历、后序遍历、层序遍历、深度优先遍历、广度优先遍历)

    前序 中序 后序 层序 一 前序遍历 步骤 根节点 gt 左子节点 gt 右子节点 适用场合 在第一次遍历到节点时就执行操作 一般只是想遍历执行操作 或输出结果 可选用前序遍历 二 中序遍历 步骤 左子节点 gt 根节点 gt 右子节点 适
  • 服务器虚拟化集群部署

    多服务器虚拟化集群部署 介绍 服务器虚拟化有有利于节省服务器开支 提高服务器资源利用率 将服务器物理资源逻辑化 动态分配内存 cpu 磁盘等物理资源 以dell的R730服务器为例 VMware ESXi5 5虚拟化软件 虚拟化服务器 1
  • ps命令解析

    ps命令用于报告当前系统的进程状态 可以搭配kill指令随时中断 删除不必要的程序 ps命令是最基本同时也是非常强大的进程查看命令 使用该命令可以确定有哪些进程正在运行和运行的状态 进程是否结束 进程有没有僵死 哪些进程占用了过多的资源等等
  • [mp4]The audio codec for mp4 atom

    In the esds atom there are a few fields of relevance to determining the codec used The first byte of content of the esds
  • 基于Spring Cloud Alibaba搭建nacos

    关系 Spring Boot是框架 将各个组件集合在一起 方便快速开发web应用 Spring Cloud基于Spring Boot 限定了一组特定的组件 从而可以方便地进行微服务工程的开发 Spring Cloud Alibaba在Spr
  • C/C++中如何获取数组的长度

    1 算术表达式 include
  • 2022李宏毅机器学习深度学习学习笔记第四周--Self-Supervised Learning

    文章目录 前言 Self Supervised Learning 什么是Self Supervised Learning Masking Input Next Sentence Prediction BERT如何使用 为什么BERT 有用呢