一些小知识点
一些小知识点
Label Smoothing
参考:标签平滑 - Label Smoothing概述 - 云+社区 - 腾讯云 (tencent.com)
label smoothing就是把原来的one-hot表示,在每一维上都添加了一个随机噪音。这是一种简单粗暴,但又十分有效的方法,目前已经使用在很多的图像分类模型中了。
one-hot 劣势
可能导致过拟合。0或1的标记方式导致模型概率估计值为1,或接近于1,这样的编码方式不够soft,容易导致过拟合。为什么?用于训练模型的training set通常是很有限的,往往不能覆盖所有的情况,特别是在训练样本比较少的情况下更为明显。以神经机器翻译(NMT)为例:假设预测句子“今天下午我们去..”中,“去”后面的一个词。假设只有“去钓鱼”和“去逛街”两种搭配,且真实的句子是“今天下午我们去钓鱼”。training set中,“去钓鱼”这个搭配出现10次,“去逛街”搭配出现40次。“去钓鱼”出现概率真实概率是20%,“去逛街”出现的真实概率是80%。因为采用0或1的表示方式,随着training次数增加,模型逐渐倾向于“去逛街”这个搭配,使这个搭配预测概率为100%或接近于100%,“去钓鱼”这个搭配逐渐被忽略。另外,也会造成模型对它的预测过于confident,导致模型对观测变量x的预测严重偏离真实的情况,比如上述例子中,把“去逛街”搭配出现的概率从80%放大到100%,这种放大是不合理的。
Label Smoothing 优势
- 一定程度上,可以缓解模型过于武断的问题,也有一定的抗噪能力
- 弥补了简单分类中监督信号不足(信息熵比较少)的问题,增加了信息量;
- 提供了训练数据中类别之间的关系(数据增强);
- 可能增强了模型泛化能力
- 降低feature norm (feature normalization)从而达到让每个类别的样本聚拢的效果
- 产生更好的校准网络,从而更好地泛化,最终对不可见的生产数据产生更准确的预测。
Label Smoothing 劣势:
- 单纯地添加随机噪音,也无法反映标签之间的关系,因此对模型的提升有限,甚至有欠拟合的风险。
- 它对构建将来作为教师的网络没有用处,hard 目标训练将产生一个更好的教师神经网络。
Mixup
文献:Zhang H, Cisse M, Dauphin Y N, et al. mixup: Beyond empirical risk minimization[J]. arXiv preprint arXiv:1710.09412, 2017.
mixup是一种数据增强的方法
背景
深度学习一直以来存在计算量大(落地困难)和模型过拟合的问题。为了解决过拟合问题,从模型本身和数据这两个方面着手,提出了很多有效的方法。数据增强(Data Argumentation)则是从数据层面解决过拟合,提高模型的泛化性(generalization)。比较简单地理解是数据增强首先增大了训练集规模,进一步增加了训练样本的多样性(模拟真实场景中样本可能的状态),由于数据增强是对训练样本的各种有章法的变换,这就使得模型能够学到数据更加本质的特征,增强模型对样本细微变换的适应性(减弱对变化的敏感性)。
简介
作者提出的mixup是一个简单地减缓两种问题的方案。本质上,mixup在成对样本及其标签的凸组合(convex combinations)上训练神经网络。这样做,mixup规范神经网络增强了训练样本之间的线性表达。作者分别在ImageNet-2012、CIFAR-10、CIFAR-100等数据集上进行试验,研究结果表明,mixup可以改进当前最先进的神经网络架构的泛化能力。他们还发现,mixup能够减少对错误标签的记忆,增加对抗样本的鲁棒性,并能够稳定对生成对抗网络的训练过程。
贡献(创新点):mixup采用对不同类别之间进行建模的方式实现数据增强,而通用数据增强方法则是针对同一类做变换。思路非常简单:从训练样本中随机抽取两个样本进行简单的随机加权求和,同时样本的标签也对应加权求和,然后预测结果与加权求和之后的标签求损失,在反向求导更新参数。
公式如下:
$$
\begin{array}{l}
\tilde{x}=\lambda x_{i}+(1-\lambda) x_{j} \
\tilde{y}=\lambda y_{i}+(1-\lambda) y_{j}
\end{array}
$$
官方代码地址:https://github.com/hongyi-zhang/mixup
Meta Learning
Pseudo Labels
通过给没有标签的数据提供标签的方法利用无标签数据,从而优化网络的训练。
算法表述如下:给定数据集,利用有标记的数据训练网络,再让网络对未标记的数据进行预测,取自信程度最大的数据和预测结果对应的类别,该类别作为伪标签,然后和原本有标记的数据整合作为新的训练集,再训练网络,如此循环。自训练也可以和熵正则的方法结合,毕竟从目标上来说,都是希望网络不管预测的结果是对是错,都能让网络的判断更加自信。
$$
L=\frac{1}{n} \sum_{m=1}^{n} \sum_{i=1}^{C} L\left(y_{i}^{m} , f_{i}^{m}\right)+\alpha(t) \frac{1}{n^{\prime}} \sum_{m=1}^{n^{\prime}} \sum_{i=1}^{C} L\left(y_{i}^{\prime m}, f_{i}^{\prime m}\right)
$$
如上面的损失函数:其中 $y^{m}$ 是有标签训练样本的标签,$f^m$ 是有标签训练样本的预测概输出;$y^{‘m}$ 是伪标签,$f^{‘m}$ 是伪标签对应样本的预测概率输出。
Entropy Regularization(Minimization)
在熵正则化中,主要思想是利用香农熵来衡量class overlap,class overlap越高,香农熵值越大。由于半监督学习的样本过少,所以一种比较好的思路就是在本次训练中,将自信程度比较高的预测(我们就当他是预测对了的)加入到本次的训练中,这样反复的迭代,就从中体现了聚类的思想,使得决策边界能更加趋于真实。因此,在训练的时候我们需要让网络的预测更加自信,而不是比较犹豫。而熵正则这套理论则是希望让网络的预测更加自信,也就是进行低熵预测,熵正则通过计算无标签样本的预测class overlap来使模型可以利用到无标签样本的信息。
所以,我们基于绝大部分数据点都远离决策边界的假设下,我们需要阻止网络的决策边界在数据点附近。
香农熵公式:
$$
H\left(y \mid x^{\prime}\right)=-\frac{1}{n^{\prime}} \sum_{m=1}^{n^{\prime}} \sum_{i=1}^{C} P\left(y_{i}^{m}=1 \mid x^{\prime m}\right) \log P\left(y_{i}^{m}=1 \mid x^{\prime m}\right)
$$
作为正则项加入到损失函数后:
$$
C(\theta, \lambda)=\sum_{m=1}^{n} \log P\left(y^{m} \mid x^{m} ; \theta\right)-\lambda H\left(y \mid x^{\prime} ; \theta\right)
$$
对于分类问题,网络最后必然是通过一个softmax来输出,而softmax是所有的类别经过归一化之后自信程度。假设网络对每一个类的自信程度都相近,那么整体的熵值就会越大,反之则越小。通过添加这一项正则化项就能实现让网络的预测更加自信。当然,这也有不好的情况:倘若网络预测错了,那人家对自己的错误答案也会十分自信。
Π-model设计
模型认为,同一个输入,在不同的正则和数据增强条件下,网络对其预测应该是一致的。其无监督代价部分如下:
其中 是网络的一个预测,而
是网络对同一个样本在不同的正则和数据增强条件下的一个预测,然后让着两个预测一致。(看起来很像前面两篇文章的简化版,但是效果好啊,这也是我说前面的约束太强的原因)
是权重函数,是迭代次数的函数。由于在网络的初始阶段,网络的预测十分不准(尤其是半监督中有标签数据有限的情况),这时的网络预测的靠不住的,因此这无监督代价在初始时的权重应该设置得比较小,到后期再慢慢增大。
非常关键,论文中使用了一个高斯爬升函数,具体可以看论文。
这种 peer-consistency 鼓励一个样本点的扰动不变性,其实鼓励了预测函数(即网络)对样本的邻域具有光滑性。
而且把 peer-consistency 看做是一种标签正则,可以从最大熵模型来理解 peer-consistency
Consistency Regularization
说到一致(consistency),其实很多代价都有这个内涵,如MSE代价,最小化预测与标签的差值,也就是希望预测与标签能够一致,其他的代价,如KL散度、交叉熵代价也类似。所以一致性,是一种非常内在而本质的目标,可以让深度网络进行有效学习。
但是在半监督中,无标签数据并没有标签,因而勤劳而美丽的科研工作者们就想出了各种无需标签信息的 consistency regularization,随着 consistency regularizaton 的不断发展,一度成为半监督深度学习发展史上耀眼的SOTA。
Consistency Regularization 的主要思想是:对于一个输入,即使受到微小干扰,其预测都应该是一致的。
例如,某人的裸照(干净的输入)和其有穿衣服的照片(受到干扰的照片),你也应该能知道这是同一个人(一致性)。
当然,这个干扰不能太大(例如衣服把整个人都遮住了)
Consistency Regularization 虽然做法简单,但是却具有很多良好的作用
Contrastive Learning
要说到对比学习,首先要从自监督学习开始讲起。自监督学习属于无监督学习范式的一种,特点是不需要人工标注的类别标签信息,直接利用数据本身作为监督信息,来学习样本数据的特征表达,并用于下游任务。
那么,自监督学习有什么优势呢?
目前机器学习主流的方法大多是监督学习方法,这类方法依赖人工标注的标签,这会带来一些缺陷:
- 数据本身提供的信息远比稀疏的标签更加丰富,因此使用有监督学习方法训练模型需要大量的标签数据,并且得到的模型有时候是“脆弱”的
- 有监督学习通过标签训练得到的模型往往只能学到一些任务特定的知识,而不能学习到一种通用的知识,因此有监督学习学到的特征表示难以迁移到其他任务
而自监督学习能够很好地避免上面的问题,因为自监督学习直接使用数据本身来提供监督信息来指导学习。
自监督学习分类
当前自监督学习可以被大致分为两类:
- Generative Methods
- Contrastive Methods
Contrastive Methods(对比式方法)这类方法是通过将数据分别与正例样本和负例样本在特征空间进行对比,来学习样本的特征表示。Contrastive Methods主要的难点在于如何构造正负样本。
那么,Contrastive Methods有什么优势呢?
这里举一个例子来说明,Epstein在2016年做了一个实验:让受试者画出美元的图像,越详细越好,下图是受试者画出来的美元图像。
左图是受试者根据印象画出来的美元,右图则是让受试者照着美元画出来的。可以看到,左图画出来的美元图虽然不够详细,但已经充分具备一张美元的判别性信息,因此我们可以把它识别成美元。事实上,我们并不需要见到一张美元所有详细的信息,而仅仅通过一些关键的特征就可以识别出来。
同理,相比起Generative Methods需要对像素细节进行重构来学习到样本特征,Contrastive Methods只需要在特征空间上学习到区分性。因此Contrastive Methods不会过分关注像素细节,而能够关注抽象的语义信息,并且相比于像素级别的重构,优化也变得更加简单。
对比学习一般泛式
对任意数据 ,对比学习的目标是学习一个编码器
使得:
其中 是和
相似的正样本,
是和
不相似的负样本,score是一个度量函数来衡量样本间的相似度。
如果用向量内积来计算两个样本的相似度,则对比学习的损失函数可以表示成:
其中对应样本 有1个样本和N-1个负样本。可以发现,这个形式类似于交叉熵损失函数,学习的目标就是让
的特征和正样本的特征更相似,同时和N-1个负样本的特征更不相似。在对比学习的相关文献中把这一损失函数称作InfoNCE损失。