review : self-supervised learning for text
1. Self-supervised learning for speech
使用Speech版本的bert能比较好的作用于语音任务上,如果没有self-supervised的话,别的模型可能需要上万小时的数据。
Superb
- ytb课程:MpsVE60iRLM
- 工具:s3prl
2. Self-supervised Learning for Image
3. Generative Approaches
Speech
应用于语音上
- Bert系列
把声音信号的某些部分盖起来,让模型还原回来
- GPT系列
给定一个文字,预测下一个文字是什么;给定一段声音信号,预测接下来的语音什么:
文本是一个词,声音要大于三个词。
Image
应用于图像上,拉直成一维向量
然后盖住某些像素,预测下一个像素;或者给定一段像素,预测后面的像素是什么,之后接下游任务,比如分类。
4. Predictive Approach
语音和图像相较于文本来说包含了非常多的细节,往往更加困难一些。
Image——预测图片是否被旋转过
Image——内容预测
预测两个块 第二个小块在第一个小块的哪个方向。
不做生成就能自监督学习。
让机器预测产生cluster的结果。
5. Contrastive Learning——对比学习
让相同的向量越近越好,让不相同的向量越远越好。
但是不知道类别,怎么做呢?
SimCLR
对图像做data augmentation的图片是positive pair,如果是另外一张图片的data augmentation的图片是negative pair。
data augmentation:
- random crop
- color distortions
- gaussian blur
语音版本的speech simclr
MoCo
语音版本的对比学习
- CPC
- Wav2Vec
可以将encoder用在下游任务里面或者将encoder和predicter一起用在下游任务里面。
将token盖起来,让bert学会做填空:
wav2vec 2.0版本将encoder和bert encode一起联合起来训练,将输入的某些部分mask,用输出的向量来预测mask的tokek是哪一个,越mask的3越近越好,与旁边的越远越好。
bert其实也是一种对比学习,也是让正确的答案越近越好
分类任务:分数越大越好
对比学习任务:分数越小越好
分类任务如果类别很多的话,random pair不可能穷举所有的其他组合,可以采用contrasive方式学习,让正确的embedding与last layer output的乘积越小越好,随机选取部分不正确的embedding与last layer output的乘积越大越好。
比较难穷举所有的负样本,只是想让embedding最能代表它本身,可以将bert当做对比学习的思想。
难点
选择负样本:
- 选择够难的负样本,但不要太难的负样本(比如同类两张猫,将猫的向量也拉远了)
下面介绍避开挑选负样本的方法
6. Bootstrapping Approaches
没有负样本的话,只要给两个图片就给出两个非常接近的向量,这不是我们想要的结果:
只用正样本的话,一条通道接一个predictor,让两台通道产生embedding越相近越好,但只更新右边的通道,训练好了后将右边的通道参数同步到左边的通道:
- 左右两边的架构要有点不同
- 只训练某一边的encoder,再把训练好的参数复制到另外一边
两条通道不一样,让两个无法一起作弊,也可以以知识蒸馏的方式理解上面架构:
相关的算法:
- Image
- BYOL
- SimSiam
- Speech
- Data2vec
7.Simply Extra Regularization
给的是一个batch,要求每个维度的差别要大于一个阈值:
最关键的是variance,后续可以加点优化Covariance, 语音方向有类似DeloRes