新技术入门(1)

组归一化

  • layer norm
  • batch norm
  • instance norm
  • group norm(一般放在非线性激活之前)

Group Normalization是一种新的深度学习归一化方式,可以替代BN。

BN是深度学习中常使用的归一化方法,在提升训练以及收敛速度上发挥了重大的作用,是深度学习上里程碑式的工作。

BN,全名是Batch Normalization。
BN是一种归一化方式,而且是以batch的维度做归一化,依赖batch,过小的batch size会导致其性能下降,一般来说每GPU上batch设为32最合适。

BN的问题,主要是在batch这个维度上进行归一化,但这个维度并不是固定不变的,比如训练和测试时一般不一样,一般都是训练的时候在训练集上通过滑动平均预先计算好平均-mean,和方差-variance参数。而在测试的时候,不再计算这些值,而是直接调用这些预计算好的来用,但,当训练数据和测试数据分布有差别是时,训练时上预计算好的数据并不能代表测试数据,这就导致在训练,验证,测试这三个阶段存在不一致

GN与BN的优劣比较:

1、BN会受到batchsize大小的影响。如果batchsize太小,算出的均值和方差就会不准确,如果太大,显存又可能不够用。
2、GN算的是channel方向每个group的均值和方差,和batchsize没关系,自然就不受batchsize大小的约束。
随着batchsize的减小,GN的表现基本不受影响,而BN的性能却越来越差。

两者图比较:

上图:ImageNet 分类误差与批次大小的关系。这是在 ImageNet 训练集中使用 8 块 GPU 训练的 ResNet-50 模型,并在验证集上进行了评估。


BN,LN,IN,GN从学术化上解释差异:

BatchNorm:batch方向做归一化,算N*H*W的均值
LayerNorm:channel方向做归一化,算C*H*W的均值
InstanceNorm:一个channel内做归一化,算H*W的均值
GroupNorm:将channel方向分group,然后每个group内做归一化,算(C//G)*H*W的均值

组归一化公式:

实现代码:

实验结果:

 

Zero-shot Learning / One-shot Learning / Few-shot Learning

在 迁移学习 中,由于传统深度学习的 学习能力弱,往往需要 海量数据 和 反复训练 才能修得 泛化神功。为了 “多快好省” 地通往炼丹之路,炼丹师们开始研究 Zero-shot Learning / One-shot Learning / Few-shot Learning。

Learning类型分为: 
Zero-shot Learning、One-shot Learning、Few-shot Learning、传统 Learning 。

Zero-shot Learning:

零样本学习则与传统方法不同,其目标是识别之前从未见过的新类别中的目标实例,详见文章链接:

http://baijiahao.baidu.com/s?id=1596522553301644906&wfr=spider&for=pc

One-shot learning:

指的是我们在训练样本很少,甚至只有一个的情况下,依旧能做预测。

如何做到呢?可以在一个大数据集上学到general knowledge(具体的说,也可以是X->Y的映射),然后再到小数据上有技巧的update。

Few-shot Learning:

  • 基于Finetune

这种方法已被广泛地应用。获得一定量的标注数据,然后基于一个基础网络进行微调。

这个基础网络是通过含有丰富标签的大规模数据集获得的,比如imagenet,我们的淘宝电商数据,称为通用数据域。然后在特定数据域上进行训练。训练时,会固定基础网络部分的参数,对领域特定的网络参数进行训练(这里有很多训练的trick,包括如何设置固定层和学习率等),如图3。这个方法可以相对较快,依赖数据量也不必太多,效果还行。

  • 基于metric

该方法是对样本间距离分布进行建模,使得属于同类样本靠近,异类样本远离。简单地,我们可以采用无参估计的方法,如KNN。KNN虽然不需要训练,但效果依赖距离度量的选取, 一般采用的是一个比较随意的距离计算(L2)。另一种,也是目前比较好的方法,即通过学习一个端到端的最近邻分类器,它同时受益于带参数和无参数的优点,使得不但能快速的学习到新的样本,而且能对已知样本有很好的泛化性。下面介绍3个相关的方法。

1.孪生网络(Siamese Neural Networks)

 这个方法对输入的结构进行限制并自动发现可以从新样本上泛化的特征。通过一个有监督的基于孪生网络的度量学习来训练,然后重用那个网络所提取的特征进行one/few-shot学习。
 它是一个双路的神经网络,训练时,通过组合不同类的样本成对,同时输入网络进行训练,在最上层通过一个距离的交叉熵进行loss的计算。在预测的时候,以5way-5shot为例,从5个类中随机抽取5个样本,把这个mini-batch=25的数据输入网络,最后获得25个值,取分数最高对应的类别作为预测结果,如下图:

网络结构如下图所示,是一个8层深度卷积孪生网络,图中只展示了其中一路计算,在网络的4096维的全连接层后执行component-wise 的L1距离计算,产生一个4096维的特征向量,并通过sigmoidal激活获得一个0到1的概率作为两个输入样本是否相似的结果。

2.匹配网络

这篇文章的工作被李飞飞高徒karpath点赞过,成为之后相关研究中经常被对比的参照。该文章也是在不改变网络模型的前提下能对未知类别生成标签,其主要创新体现在建模过程和训练过程上。对于建模过程的创新,文章提出了基于memory和attantion的matching nets,使得可以快速学习。对于训练过程的创新,文章基于传统机器学习的一个原则,即训练和测试是要在同样条件下进行的,提出在训练的时候不断地让网络只看每一类的少量样本,这将和测试的过程是一致的。
 具体地,它尝试获得一个从支持集S(support set, 由k个样本及其标签组成)到分类器y^的一个映射,该映射是一个网络:P(y^|x^,S),它基于当前的S,对每个未见过的测试样本x^给出其标签y^,该标签让P达到最大值。这个模型可以表示为如公式1),其中a是一个attetion。

 即一个新样本的输出(即在S上类别的分布)是S上的类attation线性组合,也就是对于离x^最远的xi,其在某度量下的attation是0, 那么其值就是和x^相似的xi所对应标签的权重融合。
 上述的attention具体是,对训练样本xi和测试样本x^分别进行embedding,然后求内积(cosine),这就是文章提出的"matching",然后输入到一个softmax中,公式如公式2),其中c是cosine距离。其中两个embedding的模型是share的,比如用CNN。这个a是和度量学习(metric learning)相关的,对于待分类的样本x, 让其和那些标签为y的样本对齐,和其它的不对齐,这种loss其实就是和NCA,triplet loss和margin nearest neighbor相关的。

 进一步,支持集样本embedding模型g能继续优化,并且支持集样本应该可以用来修改测试样本的embedding模型f。这个可以通过如下两个方面来解决:即1)基于双向LSTM学习训练集的embedding,使得每个训练样本的embedding是其它训练样本的函数;2)基于attention-LSTM来对测试样本embedding,使得每个测试样本的embeding是训练集embedding的函数。文章称其为FCE(fully-conditional embedding)。
 关于g 的优化。上述虽然是在整个支持集样本上做分类,但用来做cosine距离计算的embedding 的获得是互相独立的,因此文章把对支持集样本的embedding改为g(xi, S), 这当比如xj十分接近xi时改变g函数是有用的。文章用了双向LSTM,即把S看成一个序列(文章并没有提到这个序列的顺序是怎么生成的,也许是随机的),然后对每个xi进行编码。具体公式如下,其中g'(xi)是原始只依赖自己的embedding,xi通过BiLSTM进行信息互通。

 关于f的优化。支持集样本可以用来修改测试样本的embedding模型。这个可以通过一个固定步数的LSTM和对支持集的attention模型来解决, 即如下公式,其中f'(x)是只依赖测试样本自己的特征,作为LSTM的输入(每步不变),K是LSTM的步数,g(S)是支持集的embedding。由此,模型会忽略支持集S中的一些样本。


 这两个embedding函数f和g是对特征空间进行了优化,从而让精度提升。
 关于训练策略。文章对imagenet进行的采样,制作了3种适合做one/few shot的数据集,其中miniImageNet,它包含100类,每类600张图片,其中80个类用来训练,20类用来测试, 称为后续相关研究经常被采用的数据集。以5-way 5-shot为例。训练时,在80类中随机采样5个类,然后把这5类中的数据分成支持集S和测试B,训练matching net模型来使得在S条件下的B的预测结果误差最小。测试时,在20个未被训练过的类中抽取5类,每类5张图,作为测试支持集S’。如图7,MatchNet方法相对原始的Inception模型能正确识别模型从未见过的轮胎和自行车。

3.原型网络

该方法思想十分简单高效,效果也非常好。它学习一个度量空间, 通过计算和每个类别的原型表达的距离来进行分类。文章基于这样的想法:每个类别都存在一个聚在某单个原型表达周围的embedding,该类的原型是support set在embedding空间中的均值。然后,分类问题变成在embedding空间中的最近邻。如图8,c1、c2、c3分别是三个类别的均值中心(称Prototype),将测试样本x进行embedding后,与这3个中心进行距离计算,从而获得x的类别。

 文章采用在Bregman散度下的指数族分布的混合密度估计,实验表明squared Euclidean距离比cosine距离要好14到17个点。另外,文章在训练时采用相对测试时更多的类别数,即训练时每个episodes采用20个类(20 way),而测试对在5个类(5 way)中进行,其效果相对训练时也采用5 way的提升了2.5个点。

 

  • 还有基于graph neural network、基于元学习meta learning、递归记忆模型 (Memory-Augmented Neural Networks、优化器学习  (meta-learning LSTM)、模型无关自适应(Model-Agnostic)

效果对比:

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值