kaggle-浮游生物分类比赛一等奖---译文(第三部分)

接着上一篇的内容

model averaging

我们将多个模型融合的结果作为最后提交的内容

1)Test-time augmentation

对于每一个单独的模型,我们使用不同的augmentation得到不同的预测结果,然后将这些结果融合,这对performence的提升有很大的帮助。我们将Test-time augmentation简写为TTA。

开始的时候,我们使用人工创造的仿射变换(affine transformations )数据集应用于每一张图片来进行augmentation,这样比随机的选择参数进行augmentation得到的performence要更好。接下来,我们寻找更好的augmentation的方法,最终确定使用quasi-random 进行70次转换,采用比训练时更加modest的参数。

使用TTA得到预测结果花费大约12小时。

2)Finding the optimal transformation instead of averaging

观察到上述TTA过程相对的提高了performence,我们在想有没有可能在预测的时候继续优化augmentation的参数。这是有可能的,因为仿射变换本身随着参数的不同而不同,也就是说具有可区分性。

为了做到这一点,我们将仿射变换(affine transformations )作为网络的layer,这样的话网络在训练的时候,就能通过BP来更新augmentation的参数。但是求导有些复杂。

我们尝试了几个不同的方法来寻找优化的augmentation:

  • 优化augmentation的参数来最大化预测结果的置信度
  • 训练一个卷积网络来预测augmentation的参数,然后传递给另外一个卷积网络使用。

不幸的是这些方法都没有提升performence,我们在我们提交的结果中没有采用这个方法,但是我们以后会进一步的研究。

3)Combining different models

我们总共训练的模型超过300个,所以我们必须从中选择好模型然后进行最终的融合。我们使用validation数据集来选择模型。我们优化模型的参数来减小模型在训练时的loss。

我们有规律的测试一些top-weights模型融合后的整体perforemence,然后在test数据集上进行预测。最后,大致的找到了融合模型的idea。

一旦融合模型选择好后,我们将他们均匀融合,或者用validation数据集来优化weighs。两种方法得到的performence不相上下。

选择要进行融合的模型并不一定是TTA过程中performence表现好的。一些performence很低也可以被选中,因为这些模型得到的预测结果与其他模型差异非常大。一些由于overfitting而performence低的模型也可以用来融合,因为模型的融合可以减小overfitting。

4)Bagging

为了更好的提升融合模型的performence,我们将其中的某些模型(大部分5个)用由不同的子数据集训练得到的模型代替。

Miscellany

下面这些是我们尝试的其他一些方法,不同的方法有不同的提升效果:

  1. untied biases:提升的performence微乎其微
  2. 在FC层用winner take all nonlinearity (WTA)取代Relus/maxout。
  3. smooth nonlinearities:用smooth nonlinearities取代LRelu,得到的performence更差。
  4. specialist models:对于一些难以进行分类的类别,我们使用了额外的模型来训练,使用了包括 knowledge distillationself-informed neural network structure learning 两种方法,但是都没有得到更好的performence。
  5. batch normalization: 遗憾的是我们没有获得和Ioffe and Szegedy 描述的一样的效果.
  6. 使用 FaMe regularization ,效果没有dropout好。
  7. 使用 Reed描述的 Semi-supervised learning 没有得到更好的performence,也没有降低overfitting。

下面是一些我们测试能防止overfitting的一些方法(有遗漏):

  • dropout(传统以及变种)
  • 好的 data augmentation
  • 合适的模型结构(深度以及每一层的宽度都会影响overfitting)
  • weight-decay
  • 无监督预训练(unsupervised pre-training)
  • cyclic pooling(特别是其中的 root-mean-square pooling)
  • leaky Relu
  • pseudo-labeling

我们记录了比赛期间的准确率。最好的模型在validation上的准确率为82%,top-5准确率超过98%。这使得我们可以用模型作为工具加速人工注释.

code

本篇译文系作者原创,转载请先联系作者: 18254275587@163.com