Lesson 12 Self-supervised Learning for Speech and Image
听课(李宏毅老师的)笔记,方便梳理框架,以作复习之用。本节课主要讲了Self-supervised Learning for Speech and Image,之前Lesson 11是讲的将Self-supervised Learning用在自然语言处理上。
Introduction
Review: Self-supervised Learning for Text
self-supervised learning 在文字上的应用最知名的是Bert。Bert的训练资料是无标签的文字,输入是文字,输出是向量。有4种使用Bert的场景(分类问题,标注问题,自然语言处理,问答系统)。忘记的可以去复习Lesson 11。
Self-supervised Learning for Speech
用于Speech的自监督学习和用于NLP的自监督学习框架相差不大,只是训练资料换成了语音数据,下游任务的输入换成标注好的语音数据。也可以用标注好的语音数据微调语音bert,但实际上不需要微调效果已经不错了。
Speech Processing Universal Performance(SUPERB)
SUPERB是适用于语音处理的任务评测数据集,一共包括14项任务,用于观测模型是否能在14个任务上有好的表现。简单解释几个:
ASR: audio speech recognizer语音识别
Keyword Spotting: 比如喊"hey, siri" 就会被识别到并且被唤醒
要详细查看自监督学习在语音上的应用,可以参考以下论文。
Self-supervised Learning for Image
下面这张图中,supervision这条线表示,在训练阶段就使用有标签的数据。随着更多模型提出,自监督学习的模型表现甚至超过了supervision的表现。
Generative Approaches
Masking
Bert用在语音处理上时,训练过程和文字基本一样。首先输入语音数据,随机mask掉一部分语音,然后训练模型还原出这些被mask掉的语音数据。其中有个模型叫做Mockingjay(学舌鸟)。
但是语音和文字有一些不同的性质。
- 语音具有平滑性,一小段语音与前后相差不大,如果训练时只mask掉一小段,很有可能模型并不能学到真正的知识,只是简单地做内插法就将正确答案模拟出来。所以在mask的时候,需要选择较长的一段语音,而至于mask的长度,就要作为一个超参去调整。
其实在文字上也有这样的处理,mask一个token也有点太少了,bert可能通过前后很轻易地推断出来。所以bert也需要mask掉一长串来学到知识。 - mask策略不同。语音mask的策略不同于文字mask掉几个token,而是mask掉特殊的维度。
Bert能用在语音上,那么GPT也可以。
Predicting Future
将GPT用在语音上,也会有一些改动。GPT产生文字时,一般只生成接下来的一个token, 而用于生成语音时,由于语音的平滑性,只生成下一个语音片段过于简单(相邻语音片段相似),所以一般会预测至少三个语音片段,让GPT真的学到知识。一个具有代表性的将GPT用于语音的模型是APC(Autogressive Predictive Coding).
Image
前面说的是将Bert和GPT用于语音上,同样也可以应用在图像上。
比如将图像的像素点拉直,就像很多个token.
将Bert和GPT这样用于处理文字的模型用于语音和图像并非万无一失,实际上语音和影像中包含了很多细节,而这些细节很难生成。
Predictive Approach
Generative Approach这一大类方法,都是在还原语音和图片的一部分,但产生原来的声音和图片是很复杂的事情,那如何让机器不要做这么复杂的事情,同时让模型拥有自监督学习的效果?
Predicting Rotation
把一张图片进行旋转,但不让机器知道该图片是否被旋转过,然后让机器预测是否被旋转过。让机器学习一些简单的知识可以帮助模型在下游任务表现更好。
Context Prediction
从一张图片中切取两个小块,让机器学习这两个小块的相对位置。这样简单的任务同样可以帮助机器在下游任务上学得更好。
在语音上也有相似的做法,比如给定两个语音片段,让机器学习两个语音片段相距几秒。
Predict Simplified Object
生成语音信号或者图片对于机器来说太难,可以考虑生成简单的东西。
以语音为例:将声音编码成向量,再对向量做聚类(比如K-means),相似的就分为一样的id. 然后语音在输入模型之前同样做mask,但是预测的是id, 不再像以前一样预测声音信号了,这样对模型来说更加简单。
Contrastive Learning
Basic Idea
contrastive learning的基本思想,是让同类的图片经过encoder编码之后生成的向量尽可能相似,而让不同类的图片经过encoder编码之后生成的向量距离尽可能远。然而本身自监督学习的训练数据就是没有标签的数据,根本就不知道哪些图片是同类的,哪些图片是不同类的。
Contrastive Learning for Image
SimCLR
SimCLR就是被提出来解决这个问题的。首先,SimCLR会对数据进行data augmentation,比如随机裁剪,变换颜色,加入杂讯等。SimCLR认为进行data augmentation之后的图片就是同类的。而不同图片进行data augmentation之后的图片就是不同类的。然后训练模型,使同类的图片经过encoder之后编码向量尽可能相似,不同类的距离尽可能远。
这个方法的关键点在于控制augmentation的强度,如果一张猫的照片经过data augmentation之后变得像狗一样,这样也是不行的。所以SimCLR就尝试了各种data augmentation的方法,尝试找到最好的方法,也就是随机裁剪。
MoCo
李老师没细讲,自己看去吧。
Contrastive Learning for Speech
以下内容按照时间线叙述。
CPC and Wav2vec
将contrastive learning 用于语音的领域中,最有代表性的是CPC和Wav2vec. 这两个模型都将声音数据通过encoder编码成向量后,再通过predictor(两个模型的predictor不一样,在CPC中用的是GRU,而在Wav2vec中用的是CNN. )生成预测的向量。这两个模型认为,这个预测的向量和本句中下一个要还没输入进predictor的向量是同类的,而与其他句子的向量是不同类的。
还没写完呐,不管了先传了哈嘻嘻。