Self-Supervised Learning(李宏毅老师系列)

自学参考:
BERT: Pre-training of Deep Bidirectional Transformers for
Language Understanding

BERT 论文逐段精读
视频课
课件+资料
笔记

一、概述

自监督学习模型与芝麻街~
在这里插入图片描述

  • 参数量

    • ELMO:94M
    • BERT:340M
    • GPT-2:1542M
    • Megatron:8B
    • T5:11B
    • Turing NLG:17B
    • GPT-3:175B
    • Switch Transformer:1.6T
  • “自监督学习”数据本身没有标签,所以属于无监督学习;但是训练过程中实际上“有标签”,标签是“自己生成的”。
    想办法把训练数据分为“两部分”,一部分作为作为“输入数据、另一部分作为“标注”。
    在这里插入图片描述

二、BERT

BERT是一个transformer的Encoder,BERT可以输入一行向量,然后输出另一行向量,输出的长度与输入的长度相同。

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

BERT一般用于自然语言处理,一般来说,它的输入是一串文本。当然,也可以输入语音、图像等“序列”。

Masking Input

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

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

两种方法都可以使用,使用哪种方法也是随机决定的。
在这里插入图片描述

train

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

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

application

Next Sentence Prediction

不太有用!
从数据库中拿出两个句子,两个句子之间添加一个特殊标记[SEP],在句子的开头添加一个特殊标记[CLS]。这样,BERT就可以知道,这两个句子是不同的句子。
只看CLS的输出,我们将把它乘以一个Linear transform,做一个二分类问题,输出yes/no,预测两句是否前后连续。
在这里插入图片描述

ALBERT

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

  • 挑选的两个句子是相连的。可能有两种可能性供BERT猜测:
    • 句子1在句子2后面相连,
    • 句子2在句子1后面相连。

Downstream Tasks

  • 预训练:产生BERT的过程

  • 微调:利用一些特别的信息,使BERT能够完成某种任务
    在这里插入图片描述
    BERT只学习了两个“填空”任务。

  • 一个是掩盖一些字符,然后要求它填补缺失的字符。

  • 预测两个句子是否有顺序关系。

但是,BERT可以应用在其他任务上,可能与“完形填空”无关甚至完全不同。类似于干细胞的功能,当我们想让BERT学习做某些任务时,只需一些标记信息,就能“激发潜能”

Evaluation

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

  • GLUE(General Language Understanding Evaluation):对BERT的评价任务集
    在这里插入图片描述
  • 性能衡量:人类的准确度是1,如果他们比人类好,这些点的值就会大于1在这里插入图片描述

How to use BERT

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 需要少量的标记数据

POS tagging

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

Natural Language Inference(NLI)

给出前提和假设,机器要做的是判断,是否有可能从前提中推断出假设。
⇒预测“赞成、反对”
在这里插入图片描述
你只要给它两个句子,我们在这两个句子之间放一个特殊的标记SEP,并在最开始放CLS标记。最终考察CLS标记对应的输出向量,将其放入Linear transform的输入得到分类。
在这里插入图片描述

Extraction-based Question Answering (QA)

输入序列包含一篇文章和一个问题,文章和问题都是一个序列。
对于中文来说,每个d代表一个汉字,每个q代表一个汉字。把d和q放入QA模型中,希望它输出两个正整数s和e。根据这两个正整数,可以直接从文章中截取一段,它就是答案。这个片段就是正确的答案。
在这里插入图片描述
对于BERT来说,你必须向它展示一个问题,一篇文章,以及在问题和文章之间的一个特殊标记,然后我们在开头放一个CLS标记。
在这个任务中,你唯一需要随机初始化从头训练两个向量,分别对应与答案的开始与结束,用橙色向量和蓝色向量来表示,这两个向量的长度与BERT的输出相同。

  • 首先,计算这个橙色向量和那些与document相对应的输出向量(黄色向量)的内积,计算内积,通过softmax函数,找到数值最大的位置,即为答案的开始位置。
    【这个内积和attention很相似,可以把橙色部分看成是query,黄色部分看成是key,这是一个attention,那么我们应该尝试找到分数最大的位置】
  • 类似地,利用蓝色向量可以找到答案的结尾位置。
    在这里插入图片描述
    在这里插入图片描述

Pre-training a seq2seq model

输入是一串句子,输出也是一串句子,中间用cross attention连接,其中故意在encoder的输入上做一些干扰。
encoder看到的是被破坏的结果,decoder应该输出被破坏前的结果,训练这个模型实际上是预训练一个seq2seq模型

在这里插入图片描述

  • 破坏方式
    • MASS⇒MASK
    • BART⇒删除一些词,打乱词的顺序,旋转词的顺序。或者插入一个MASK,再去掉一些词。
    • T5(Transfer Text-To-Text Transformer)⇒在C4语料库(Colossal Clean Crawled Corpus)上尝试了各种组合
      在这里插入图片描述
  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自我监督学习是一种机器学习方法,通过对数据进行合理的预测任务,从中获得有用的表示。与传统的监督学习不同,自我监督学习不需要人工标注的标签来指导训练,而是利用数据自身的信息进行训练。 自我监督学习的基本思想是从未标记的数据中构造有意义的标签,然后将这些标签用作训练数据,以学习有用的特征表示。通过对输入数据进行某种形式的变换或遮挡,可以生成一对相关的样本。其中一个样本称为正样本,另一个则被视为负样本。例如,在图像领域中,可以通过将图像进行旋转、裁剪或遮挡等变换来生成正负样本对。模型的目标是通过学习从一个样本到另一个样本的映射,从而使得正样本对之间的相似度更高,负样本对之间的相似度更低。 自我监督学习在许多任务中都取得了很好的效果。例如,在自然语言处理任务中,可以通过遮挡句子中的某些单词或短语来生成正负样本对,然后通过学习从一个句子到另一个句子的映射来进行训练。在计算机视觉任务中,可以通过图像的旋转、裁剪、遮挡或色彩变换等方式来生成正负样本对。 自我监督学习的优点是不需要人工标注的标签,可以利用大量的未标记数据来进行训练,从而扩大训练数据的规模。此外,自我监督学习还可以通过学习到的特征表示来提高其他任务的性能,如分类、目标检测和语义分割等。 总之,自我监督学习是一种有效的无监督学习方法,通过构造有意义的预测任务,从未标记的数据中学习有用的特征表示。它在各种任务中都有广泛的应用,并具有很高的潜力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值