第2届YouTube 8M短视频分类比赛前三名论文初步总结

  第二届YouTube 8M短视频分类大赛重点在于对模型大小的限制,我们知道Kaggle比赛中ensemble是一个必用的方法,但是ensemble带来的后果就是非常消耗资源,对于大规模数据的实时在线训练基本是不可能的,所以这一届的YouTube 8M短视频分类大赛的一个重要前提是模型的大小限制在1G以下,而前几名选手也基本都是从模型压缩角度对上一届提出的模型算法进行改进。

第一名:Building a Size Constrained Predictive Model for Video Classification

  第一名并没有提出新的模型,选用的模型还是上届的模型,包括NetFV、NetVALD、DBof和LSTM。其主要工作是对模型的压缩,包括模型蒸馏和部分权重量化。

  1. model distillation。模型蒸馏算法,就是先利用大型模型A对数据集进行学习,从而将hard label转换成soft label,此时将该大型模型A称为老师网络。然后设计一个小的模型B对数据集进行再次训练,此时数据集的label采用老师模型的输出,网络B称为学生网络。当然,第一名选手并不是用最原始的model distillation,只对soft label进行最优化,而是对hard label和soft label的结合进行最优化,公式如下:\begin{align} L(y,\hat{y},\hat{y_t}) = & \lambda\frac{1}{l}\sum_{i=1}^l-y_i\log{\hat{y_i}}+(1-y_i)\log(1-\hat{y_i}) \\ & +(1-\lambda)\frac{1}{l}\sum_{i=1}^l-\hat{y_{t,i}}\log(\hat{y_i})+(1-y_{t,i})\log(1-\hat{y_i}) \end{align}其中,第一项是和的交叉熵,也就是对hard label的最优化,第二项是和的交叉熵,也就是对soft label的最优化。
  2. partial weights quantization。对模型中的参数降低表示精度。但是为了减少表示精度降低而带来的准确率下降,该论文提出了局部的参数量化,只对元素数量超过17000的variable进行8比特的量化。在实践中,也就是只对全连接层的参数进行量化,而不对Batch Normalization层的参数进行量化(frame-level的模型,包括NetFV、NetVALD、DBof和LSTM,都是由全连接层组成的)。
第二名:Label Denoising with Large Ensembles of Heterogeneous Neural Networks

  第二名的流程图如下所示:
第2届YouTube 8M短视频分类比赛前三名论文初步总结_第1张图片
第二届YouTube 8M短视频分类大赛第二名训练流程图.png
  1. 利用frame-level和video-level模型(20个frame-level模型和95个video-level模型)对数据进行第一级的训练;
  2. 一级训练可以得到多个结果,利用LightGBM将这多个结果结合起来,得到soft label;
  3. 再设计多个简单二级模型(均是多层全连接神经网络,只是在深度,宽度和激活函数上不同)并利用soft label进行二级训练;
  4. 将二级模型倒数softmax层前的特征向量拼接起来,利用一个新的分类层进行最后的分类预测(此时前面训练好的模型参数是不变的,只有最后新加的分类层的参数是可训练的)。

说实话,我对这个训练流程还不是很理解,主要在于Distillation #1这一步中model是怎么训练的。前面2个框中的操作是为了得到soft label,同时也是对原始label的去噪(论文中假设了数据集中的label含有噪音)。YouTube 8M短视频分类比赛的数据是分为frame-level data和video-level data的,那么在Distillation #1这一步中是怎么设计网络对2种data进行处理分析的呢?个人对这篇论文提出的训练流程不是很欣赏,整个训练流程很复杂,感觉不太适合大规模在线训练。不过第二名还是有些工作值得学习:

  1. 由于每个video包含大量frame,因此对数据进行分析前需要subsampling。之前的方法是随机采样,而第二名则在随机采样上进行了改进,表示每张frame被采样的概率并不是一样的。第二名提出利用相邻frame的向量的余弦相似性来衡量2张frame是否属于同一个scene,从而给不同frame不同的被采样概率,保证采样的frame尽可能覆盖该视频所有的scene。同时,基于这种采样思想,第二名提出对训练集中的frame data进行聚类分析,然后对每个video的frame data选取其对应的cluster向量提取统计特征(均值、标准差、中间值、最小值、最大值、众数、frame数等)。
    第二名还提出了另外一种方法,这种方法背后的intuition是认为视频信息是由frame之间的变化体现出来的,而不是由静态图片体现出(单看一张图片可能发现不了什么信息,但是连看多张图片就能发现更多的信息),基于此论文提出3种不同的方法。但是这2种方法最终效果都不是最优的,论文最后提出最好的方法还是对frame data进行可学习的线性组合(个人觉得就是指VLAD、FV、BOW这类算法)。
  2. 提出了另外一种ResNet-like的分类网络来替代MoE网络,模型结构如下:
    第2届YouTube 8M短视频分类比赛前三名论文初步总结_第2张图片
    ResNet-like分类网络模型结构.png

    个人认为MoE分类网络更多的是在宽度上增大模型,而ResNet-like模型则可以加深分类网络,使得网络拟合能力更强(之前我在调试MoE网络时发现将单层MoE结构改为2层MoE结构比简单的增加MoE中的专家模型数量好的)。

  3. 提出了新的正则化方法——Mixup。就是对数据集中的data和label进行线性组合产生新的“虚拟”训练样本,这种方法可以使得模型的性能更好,Mixup算法的新样本组合方式如下:

补充:对于frame-level data,第二名还尝试了transformer和Time-distributed models。Time-distributed这个词我还是第一次见,上网搜了下只搜到了在Keras中有个API叫TimeDistributed层,其实就是一个wrapper,对设计好的FC(或CNN等)层进行封装,使得可以在时间维度上对数据进行处理。

第三名:NextVALD: An Efficient Neural Network to Aggregate Frame-level for Large-scale Video Classfication

  第三名主要是对NetVALD模型进行了改进。第一届YouTube 8M比赛中已经表明了NetVALD是一个很好的视频编码模型,但是这个模型有个致命缺点在于其编码后的维度太高,导致编码后接的FC层参数太多而导致很多其他问题(如过拟合等),第三名则是从ResNeXt中获得启发,将原始输入特征向量X切分成K段,然后将这K个新的特征向量对应的VLAD编码融合起来作为输入特征X的新的VLAD编码特征,这样得到的VLAD编码特征维度就减少为原来的。从而大大减少了模型的参数数量,具体分析可以看我的这篇博客。个人认为第三名的工作是很不错的,尽管最终成绩是第三名,但是其最终模型只用了3个NeXtVLAD进行ensemble,单模型就能达到很好的效果,更加适合应用到实际的项目中。

你可能感兴趣的:(第2届YouTube 8M短视频分类比赛前三名论文初步总结)