论文阅读之“NeXtVLAD: An Efficient Neu

2018-12-18  本文已影响0人  妖皇裂天

  这是第2届YouTube 8M短视频分类大赛的第3名的论文。论文内容主要是是对NetVLAD进行改进。NetVLAD的一大缺点在于编码后得到的特征维度太高了。假设NetVLAD中簇的数量是K,每个簇中心向量的维度是N,那么编码后每个视频对应的表示向量维度就是N*K。后面再接个隐层将编码特征嵌入到低维空间H中,那么这个隐层包含的参数就有N*K*H个(在比赛中设定N=2048、K=128、H=1024,那么这一层的参数就有268435456个),参数太多会造成很多问题,除去计算和存储上的冗余,还会导致难以优化和过拟合等问题。
  问题的关键就在于编码特征向量维度太大,但是如果直接减小簇的数量或者簇中心向量的维度又会造成编码性能的下降,毕竟模型参数数量隐式地影响了表达能力。如何能在降低维度的同时又能保证模型性能呢?首先我们看下比赛中NetVLAD模型的流程图:

NetVLAD流程图.png 虚线框中是VLAD编码过程,该部分包含参数有 ResNet和ResNeXt的对比图.png 通过对比图我们很容易看出,ResNeXt所做的工作就是将原本一个通道完成的工作分为多个通道来共同完成。原论文中也给出了两种模型的具体参数对比表: ResNet-50和ResNeXt-50的具体参数对比.png 可看出改变了结构的ResNeXt在参数数量上并没有大的变化,也就是说,ResNeXt的贡献并不是对ResNet进行模型压缩,而是为模型增加更多的非线性函数,增加模型的拟合能力。这里可能就会造成一点小小的疑惑:既然ResNeXt并不能降低模型参数数量,那么基于ResNeXt的思想对NetVALD进行改进有什么用啊?我们要的改进就是要降低参数数量啊!
  别急,接下来就来看下NeXtVLAD是如何基于ResNeXt的思想来改进的。首先还是先来看下具体的流程图: NeXtVLAD流程图.png 我们来看下结构改动的地方有:
  1. 输入数据x发生了变化。新模型中先对x进行升维得到\dot{x},再对\dot{x}进行分组得到\tilde{x},此时数据的维度变化是[N] \rightarrow [\lambda N] \rightarrow [G,\cfrac{\lambda N}{G}]
  2. 簇中心矩阵发生了变化。输入数据维度发生了变化,相应的簇中心矩阵也要发生变化,新模型中簇中心矩阵c的维度变化是(原)[N,K] \rightarrow (新)[\cfrac{\lambda N}{G},K]
  3. 权重系数的计算发生了变化。由于原数据进行分组,维度上增加一维,所以相应的占比概率\alpha的维度也要增加一维。具体变化是:(原)[K] \rightarrow (新)[G,K]。同时,由于最后还要将各组的结果综合起来,因此增加了一个新的变量\beta,维度是[G]
    两者的不同其实可以从编码公式上体现出来,下面是两者的编码公式:
    \begin{align} (NetVLAD) \quad & v_{ijk}=\alpha_k(x_i)(x_{ij}-c_{kj}),i\in\left\{ 1,...,M \right\},j\in\left\{ 1,...,N \right\},k\in\left\{ 1,...,K \right\} \\ (NeXtVLAD) \quad & v_{ijk}^g=\beta_g(\dot{x}_i)\alpha_{gk}(\dot{x}_i)(\tilde{x}_{ij}^g-c_{kj}),g\in\left\{ 1,..,G \right\},i\in\left\{ 1,...,M \right\},j\in\left\{ 1,...,\cfrac{\lambda N}{G} \right\},k\in\left\{ 1,...,K \right\} \end{align}

我们再来看看参数的变化:

  1. 虚线框内。原来NetVLAD的参数量是2*N*K,现在NeXtVLAD的参数量是\cfrac{\lambda N}{G}*K+N* \lambda N+ \lambda N*G*K+ \lambda N*G,两者比较其实就是比较2N\cfrac{\lambda K}{G}+\lambda N+\lambda GK+\lambda G的大小。一般\lambda取值大于1,所以前者肯定比后者小。也就是说,结构改变后,虚线框内的参数数量反而增加了。这意味着什么?编码部分的网络的拟合能力并没有削弱,相反,由于新加入了一个网络,可以认为编码网路的拟合能力更强了。
  2. 虚线框外。此时FC层的输入数据维度是[\cfrac{\lambda N}{G}*K],所以NeXtVLAD中FC层的参数数量减少为NetVLAD的\cfrac{\lambda}{G}倍。

总得来说,就是框里面的参数增加了,框外面参数减少了,总参数减少了。“减少模型参数”的目标达到了,同时框里面的参数增加了,非线性也增加了,说明编码特征的性能也没有降低,“保持模型性能”的目标就也达到了。

上一篇 下一篇

猜你喜欢

热点阅读