Advertisement

李宏毅老师-自监督学习(Self-supervised Learning)Part2

阅读量:

慢慢来,会更好!
大家好,我是一个想研究又不会研究的研究生
陪伴大家一起学习成长!

复制代码
    我们先来学习Bert这个model
复制代码
    什么是Self-supervised Learning呢?
    
    supervised:比如说现在输入一篇文章,判断它是正面还是负面文章
    我们就需要文章和label(它是正面还是负面)才能够进行train
    
    self-supervised:在没有label的情况下,自己想办法做supervised
    假设现在只有一堆文章,没有标注
    想办法让一部分文章作为model的输入,另一部分作为label
    让y与x11越接近越好
在这里插入图片描述
复制代码
    接下来,我们拿BERT这个model详细说一下self-supervised到底是怎么做的呢?
    
    BERT一般用在自然语言、文字上,输入一排向量,输出一排向量
    用的是Transformer Encoder架构
    
    随机的遮住一些tokens,盖住哪些,随机决定。
    1.把句子里面的某一字换成特殊的符号(可以想像成新的中文的字,在字典里从来没有出现过)
    2.随机把某一个字换成另一个字(随便换成某一个字)
    
    被遮盖的单位输出的向量经过linear(乘上一个矩阵),再经过softmax输出一个向量,
    去和所有的字体做对比,通过计算minimize cross entropy,来找出被遮盖的字最可能是什么字。
在这里插入图片描述
复制代码
    Next sentence Prediction (观察两个数据是相连还是不相连)
    
    input:两个句子  output:YES/NO
    SEP:分隔符号,代表两个不同的句子
    CLS:输出Yes/No:这两个句子是不是相接的,如果是输出YES,反之NO
    
    但是这个Next sentence Prediction对于接下来BERT想做的事情是不太有用的
    原因可能是对于BERT来说,要分辨两个句子是不是相接可能是容易的
    没有借由Next sentence Prediction这个任务学到太多的东西
    
    而另一招和Next sentence Prediction相像的SOP是有用的
    SOP(让BERT分辨哪一句在前面,这两句是相接的,让判断顺序)
在这里插入图片描述
复制代码
    那BERT怎么用呢?
    
    BERT除了做填空题(Masked),还能用在解各式各样的任务呢
    BERT真正的任务就是DownStream Tasks
    
    1.产生BERT的过程叫做Pre-train,
    该过程一般需要进行masking input 和next sentence prediction这两个操作。
    2.产生出来的BERT只会做填空题,BERT做过fine-tune(微调)之后才能做各式各样的任务。
    3.pre-train过程是unsupervised learning,fine-tune过程是supervised learning,
    所以整个过程是semi-supervised。
在这里插入图片描述
复制代码
    在学习BERT是怎样Fine-tune之前,我们先来看看它的能力
在这里插入图片描述
复制代码
    GLUE(用来测试BERT的能力)
    
    GLUE是自然语言处理任务,总共有九个任务。
    BERT分别微调之后做这9个任务,将9个测试分数做平均后代表BERT的能力高低。
在这里插入图片描述
复制代码
    那么,BERT到底是怎么被使用的呢?我们会举四个BERT的case来说明。
    
    这四个案例的BERT都是经过pre-train的BERT,会做填空题了,同时这个BERT的初始化参数来自学会做填空题的BERT。
复制代码
    Case1
    输入:句子
    输出:类别
    我们仍然需要下游任务的标注资料,提供给大量的句子和label
    才能去训练这个model
    
    linear的参数是随机初始化的。训练就是更新BERT和linear这两个模型里的参数。
在这里插入图片描述
复制代码
    会做填空题BERT的初始化参数比随机初始化要好
在这里插入图片描述
复制代码
    Case2
    输入:sequence
    输出:长度和输出一样
在这里插入图片描述
复制代码
    输入:两个句子
    输出:一个类别
    
    注意:虽然Bert举的例子都是文字上的,但是也可以把它用在语音方面

在这里插入图片描述
在这里插入图片描述

复制代码
    Case4 问答系统
    针对回答能在文中找到的问答。输入问题和文章,输出两个正整数s,e,表示第s个字到第e个字之间的字就是答案。
在这里插入图片描述
复制代码
    经过内积之后通过softmax,分数最高的位置就是起始或终止位置。
    橙色向量代表答案的起始位置,蓝色向量代表答案的结束位置。
在这里插入图片描述
复制代码
    在一个transformer的模型中,输入的序列损坏,输出的是还原损坏的输入。
    如何损坏输入数据呢?
    
    可以采用mass或BART手段
    1.mass是盖住某些数据(类似于masking)
    2.BART是下图右边所有的方法(盖住数据、删除数据、打乱数据顺序、旋转数据等等)
    
    可见,BART要比mass好
在这里插入图片描述

全部评论 (0)

还没有任何评论哟~