天天看点

【论文笔记】Accelerated Training for Massive Classification via Dynamic Class Selection

众所周知,类别较多的时候深度学习中无论是计算量还是参数都是巨大的,训练效率也随之降低,所以本文介绍高效训练网络。

观察发现:

【论文笔记】Accelerated Training for Massive Classification via Dynamic Class Selection

        active class:对于一个输入样本,其输出概率只集中在少量的类别中;

        在softmax loss回传梯度中:

【论文笔记】Accelerated Training for Massive Classification via Dynamic Class Selection

        在迭代过程中,回传梯度主要受这些活跃类(active class)影响,其他类别的贡献很小。

因此前向和反向过程中只计算和这些活跃类相关的东西便能达到少量资源高效训练。

选择活跃类:

提出哈希森林的方法来选择活跃类,下面介绍一下一棵哈希树的构建:

     设N为softmax分类的类别数,则可以将参数矩阵看作N个D维向量空间,目的是递归式的分割来将权重向量空间分割为小单元。

具体来说,开始整个参数空间只是一个单元,选择一个带有超过 B 个点的单元,然后在其中随机选择两个点,然后使用最大边界计算出所选两点的分割超平面。该超平面会将这个单元一分为二。重复进行上述操作,直到任何单元内的点都不超过 B 个。

【论文笔记】Accelerated Training for Massive Classification via Dynamic Class Selection

因为构建哈希数的时候每个单元中的两个点是随机获取的,所以存在随机因素,所以构建多个哈希树,组成森林以提高可靠性。

哈希森林使用:

      输入新的特征向量,被根结点的超平面分到左子树或者右子树,接着被相应的子树的根节点继续往下分类,直到落入一个叶子结点中。那么叶子结点中所包含的类别就被认为是和这个特征向量相似的类别,对于森林中的每一棵树,都会重复这个过程,最终会得到一个类别的候选集合,如果候选集合中的类别超出了我们所需的类别数目,我们再通过计算其余弦距离,最终选取余弦距离相对小的那些类别作为active class。

其他活跃类别选择方法对比:

(1)Softmax:完整版本的 softmax,在每次迭代中所有类别都是活跃类别。

(2)Random:一种朴素的方法,会在每次迭代中随机选择固定数量的类别来进行 softmax 计算。

(3)PCA:一种简单的哈希方法。它会将权重向量投射到一个低维空间,并会根据被投射向量的每个条目的极性将其编码成二值哈希码。对于来自类别 c 的样本,会选择具有相同哈希码的类别。

(4)KMeans:另一种用于寻找活跃类别的简单方法。它会根据对应的权重向量将所有类别聚类成 1024 组。对于来自类别 c 的样本,会选择包含 c 的组。

(5)Optimal:最优选择方案,它会完整计算 Wx 并选择具有最高响应的类别作为活跃类别。这能提供表现的上限,但成本非常高昂。

(6)HF:本文提出的方法的基本版本,它使用一个会定期更新的哈希森林来近似最优选择方案。

(7)HF-A:本文提出的方法的一个改进版本,使用了自适应分配方案来调节计算资源的使用,以便实现更好的平衡。

继续阅读