BERT学习笔记(3)——self-supervised learning and pre-train model

1 self-supervised learning

self-supervised learning (自监督学习)据李宏毅老师的课件说,这是19年提出的一个概念。这是无监督学习的一个子集。其核心思想是:不需要人工标注数据,根据没有label的数据子集产生输入输出对。与有监督学习的区别如下图:

self-sup
上图左边是有监督学习的框架,假设我们是在做文本分类的任务。输入的是一堆带有人工标注数据的文本,将这些文本放入到模型中,输出一个标签 y y y,这个标签再与人工标注的标签 y ^ \hat{y} y^ 作比较,采用均方误差或者交叉熵等计算损失,再传回到模型中调整参数。

而右边则是自监督学习,其核心是在于输入一堆文本,这堆文本会自己生成两个部分,第一部分是模型的输入 x ′ x' x,另一部分是该模型的标签 x ′ ′ x'' x。接着 x ′ x' x 输入到模型中得到结果 y y y,再与自己生成的标签 x ′ ′ x'' x 作对比,计算损失。

这样解释可能会有些抽象,尤其是如何生成 x ′ x' x x ′ ′ x'' x,我们用图像领域的知识来直观解释下[1]:
SimCLR
我们不需要关注这个框架图中文字部分,我们只需要关注这几个图像。图上方部分是只阔耐的小喵咪,这是原始的输入数据 x x x,其输出我们假设是 x ′ ′ = 小 猫 咪 x'' = 小猫咪 x=,现在的问题就是如何构建 x ′ x' x。在上图中我们会发现其构建的方式有两种:将图像做水平旋转,再截取其中一部分,得到 x 11 ′ x'_{11} x11;将图像颜色调深,得到 x 12 ′ x'_{12} x12。下图同样,大象的图像旋转再截取一部分得到 x 21 ′ x'_{21} x21 x 22 ′ x'_{22} x22。当然,对于一张图片还有许多的方式,比如逆时针旋转,顺时针旋转等。我们会发现在图像领域就以这样的方式根据一张图片就可以构建出如此多的输入与标签,而且还不需要人工标注。

BERT就是一个自监督的模型,至于其为什么是自监督的,我们就下篇文章再做介绍。

2 pre-train model

pre-training (预训练)的目的就是得到词语的表示,也就是 word embedding (词嵌入)。词嵌入的优势我个人认为有以下几点:

  1. 能够输入向量而非字符串,对于计算机的处理来说相对方便;
  2. 如果嵌入的向量好的话,那么可以携带上很多信息(比如词语的上下文信息),这种在做downstream task的时候,输入词嵌入也就输入了这些词语的信息,相当于外部知识的输入。

由于pre-training的方法很多,这里也就列举几个具有代表性的方法。

2.1 one-hot

在NLP领域,我相信one-hot是大家都耳熟能详的编码方式。其原理就是为每个词建立了词典中的唯一索引。假设我们词典只有3个词:Floyd, loves, Sally,且有一个句子:
E1: Floyd loves Sally。其one-hot编码为:
Floyd: [ 1 , 0 , 0 ] [1, 0, 0] [1,0,0]
loves: [ 0 , 1 , 0 ] [0, 1, 0] [0,1,0]
Sally: [ 0 , 0 , 1 ] [0, 0, 1] [0,0,1]
但是如果我们将句子改为:
E2: Sally loves Floyd。其one-hot编码为:
Sally: [ 0 , 0 , 1 ] [0, 0, 1] [0,0,1]
loves: [ 0 , 1 , 0 ] [0, 1, 0] [0,1,0]
Floyd: [ 1 , 0 , 0 ] [1, 0, 0] [1,0,0]
这样我们就发现E1E2中每个词的embedding完全一样,但是表达的含义却完全不同。同时由于每个词只有对应的索引位置为1,其余全为0,这种稀疏性会带来大量的空间上的损失。最后我们还会发现,这样每个词之间是没有联系的(两个不同的词之间的内积一定为0),就无法表达出词语的上下文关系。

2.2 BOW

BOW (Bag-of-words model)解决了one-hot空间损耗的问题,也能够统计出词语的词频,用于刻画词语的重要性程度。考虑E1E3
E3: Mike loves Sally too.
E1E3构成的词典为:{‘Floyd’: 1, ‘loves’:2, ‘Sally’: 3, ‘Mike’: 4, ‘too’: 5}。E1的词向量为: [ 1 , 2 , 2 , 0 , 0 ] [1, 2, 2, 0, 0] [1,2,2,0,0]E3的词向量为: [ 0 , 2 , 2 , 1 , 1 ] [0, 2, 2, 1, 1] [0,2,2,1,1](这里词典中的值只是刻画位置信息,向量中的数字代表着词频)。但是BOW模型也有问题,就是依然不能表达词语的上下文信息,同时用词频来刻画词语的重要性程度实际上是不符合直觉的(比如一句话中反复出现的“的”)。

2.3 TF-IDF

TF-IDF (Term Frequency-Inverse Document Frequency)用于解决词语重要性程度的问题。TF代表的是词频,即在单个文档中出现的次数:
t f i j = n i j ∑ k n n j tf_{ij} = \frac{n_{ij}}{\sum_kn_{nj}} tfij=knnjnij

其中, i i i 代表词语 w i w_{i} wi j j j 表示文档 d j d_j dj n i j n_{ij} nij 表示词语 i i i 在文档 j j j 中出现的频次。IDF指的是逆文本频率指数:
i d f i = l o g ( ∣ D ∣ 1 + ∣ D i ∣ ) idf_i = {\rm log}\left(\frac{|D|}{1 + |D_i|}\right) idfi=log(1+DiD)

其中 ∣ D ∣ |D| D代表文档集中总文档数, ∣ D i ∣ |D_i| Di为文档集中出现词 i i i 的文档数量。加一是做拉普拉斯平滑(如果看不懂这个IDF公式的同学可以画一个 l o g {\rm log} log图像,词语在不同文档中出现的频率越多,就说明这个词语越不能代表这个文档的重要性)。而TF-IDF就是将TFIDF乘起来:
t f − i d f = t f i j × i d f i tf-idf=tf_{ij}\times idf_i tfidf=tfij×idfi

TF-IDF解决了BOW中无意义词语数量多的问题,也可以识别出文档中重要的词语,但是依旧不能解决无法表达上下文的问题。

2.4 n元语言模型

n元语言模型解决了词向量无法表达词向量的问题,其可以识别出词语 i i i 的历史词语,最后用BOW模型的编码方式得出结果。以二元模型为例,E1E3构成的词典为:{‘Floyd loves’: 1, ‘loves Sally’: 2, ‘Mike loves’: 3, ‘Sally too’: 4}。其词表示为:E1 [ 1 , 1 , 0 , 0 ] [1, 1, 0, 0] [1,1,0,0]E3 [ 0 , 1 , 1 , 1 ] [0, 1, 1, 1] [0,1,1,1]。虽然该方法可以有效表达词语之间的上下文关系,但是依旧有维度灾难的问题,随着n的增大,向量的维数也会指数级爆炸。

2.5 Word2vec and GloVe

接着过度到深度学习引入到词嵌入领域,由于较复杂,大家如果有需要可以看看我之前写的文章:Word2Vec原理与公式详细推导GloVe原理与公式讲解

这一类型的模型,主要是将一个一个token放入到一个模型中(有可能是一次输入几个,比如Word2Vec中的窗口),然后吐出其中每个token的embedding。但是这样做有一个很致命的问题:
单身狗
这两句话中都有个相同的token:,但是两个却不是同一个狗。前者的狗是这样的:
柯基
后者的狗是这样:
单身狗
嗷,不对,不是狗,是你我他

2.6 contextualized word embedding

为了解决这种这种问题,所以现在的解决方案是contextualized word embedding。这样的方法是根据词语的上下文不同,而输出不同的embedding。也就是说模型吃一个句子,再给每一个token一个embedding。

尽管这样做会造成输出结果很多,但是这样却可以解决词语上下文不同而造成不同含义的问题。就比如下图:
BERT-苹果
这张图展示的就是苹果在不同的语境环境中的不同词向量。上面5句的苹果就是吃的苹果;下面5句的苹果指的就是那家公司。而关于两者的余弦相似度,上面5句的相似度是相近的,下面5句的相似度是相似的,但是上面5句与下面5句的颜色差异就很明显了。

参考

[1] ronghuaiyang. 图解SimCLR框架,用对比学习得到一个好的视觉预训练模型[EB/OL]. (2020-05-20)[2021-08-31]. https://blog.csdn.net/u011984148/article/details/106233313/
[2] 爱学习的凉饭爷. 李宏毅机器学习2021课程 《自监督学习》合集 从芝麻街开始的故事[EB/OL]. (2021-04-17)[2021-08-31]. https://www.bilibili.com/video/BV1Gf4y1p7Yo?p=1
[3] 越前小龙马. 李宏毅-BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, and more[EB/OL]. (2020-05-07)[2021-08-31]. https://www.bilibili.com/video/BV1eV411d7Kp?p=1

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值