返回列表

13th place solution

344. The 3rd YouTube-8M Video Understanding Challenge | youtube8m-2019

开始: 2019-06-27 结束: 2019-10-11 音视频处理 数据算法赛
第13名解决方案

第13名解决方案

作者: LijunZhang | 比赛排名: 第13名

恭喜所有顶尖团队!感谢 Kaggle/Google 团队举办这次比赛!也要感谢我的队友 @srinath1993@ahana91@jesucristo 在这次比赛中的努力!我将分享我们在这次比赛中的一些细节。

标准帧级模型

我们首先尝试了第一届和第二届比赛获胜方案中的模型,包括不同变体的 netVlad、DBoF 和 LSTM。在常规训练集上进行标准训练后,最好的结果与排行榜上的帧级 DBoF 基线模型相似(我想我们是在7月中旬加入比赛的,花了一个月才达到这个结果。在此之前,我们陷入了一个愚蠢的问题。我们总是用 Excel 打开巨大的 predictions.csv 文件。但 Excel 不知何故会自动修改大单元格,导致提交失败。这让我们觉得应该将 segment_max_pred(即每个实体的片段输出总数)保持得很低。总之,我们花了很长时间才弄清楚这一点)。

在带有片段标签的验证集上进行微调

我们尝试并奏效的下一件事是在验证数据集上对带有标签的片段进行微调。这通常会给我们带来约 0.04 的提升。我们的训练分为两个阶段:第一阶段,我们在 1.4 TB 的常规训练集上训练模型。第二阶段,我们在带有片段标签的验证集上对模型进行微调。第一阶段通常有大约 60K 个训练步,而我们只进行了大约 2000~3000 步的微调。

我们发现更多的微调步数反而会导致更差的结果。这可能是因为更多的微调步数会导致模型过拟合验证集,而验证集的大小比常规训练集要小得多。

注意力/多重注意力模型

在常规训练集中,我们拥有整个视频的帧。在验证集和测试集中,我们有 5 帧的片段。为了弥合常规训练集和验证集之间的差距,我们决定将问题表述为多实例学习问题,并使用注意力权重来选择视频中的重要帧。在我们的模型中,每一帧都会通过一个注意力网络来获得该帧的注意力权重。然后我们根据注意力权重对帧进行池化,并使用 MoE/逻辑回归模型来获得最终预测。我们还在注意力网络中使用了门控机制,如论文(https://arxiv.org/pdf/1802.04712.pdf)所示。

由于我们的问题是一个多类分类问题,我们还考虑到不同的高级主题可能需要不同的注意力网络来学习权重。我们还训练了多个(最终提交中为 8 个或 16 个)注意力网络,以强调不同主题视频中的不同重要帧。最后,我们将模型中每个注意力网络的输出进行池化。我们在公共排行榜上最好的单个模型得分是 0.772。

损失函数与最终集成

由于在最终测试集中,片段仅来自 1000 个类别。在损失函数中,我们给予这 1000 个类别更多的权重。我们的最终集成包括 3 个多重注意力模型、3 个注意力模型、2 个 DBoF 模型、2 个 CNN 模型、1 个 netVlad 模型和 1 个 LSTM 模型。

尝试过但无效的方法

我们在数据增强和半监督学习上投入了大量精力。起初,我们尝试使用最好的模型预测常规训练集中的片段,并选择排名靠前的片段作为新的训练集。我们还尝试对测试集进行伪标签。我们从最好的提交中选择了前 200 个片段,并以此为基础微调模型。这两种方法都没有成功。一个可能的原因是我们在微调过程中没有将它们与标准验证集混合。如何标记这些片段以及如何使用它们还需要更多的实验。

详细的技术报告和 Github 仓库很快就会发布。再次感谢我所有的队友,我迫不及待地想看到所有顶尖团队的想法和模型!

同比赛其他方案