0%

《Learning Structured Sparsity in Deep Neural Networks》

译:《深度神经网络结构稀疏性学习》

论文地址:Learning Structured Sparsity in Deep Neural Networks

Motivation

深度神经网络,特别是卷积神经网络通过从大量数据中学习大规模网络已经在视觉任务中取得显著成效。但这样大的模型的部署却是计算密集型的,为了降低计算,许多用来压缩DNN规模的研究已经被提出。包括稀疏正则化、连接剪枝、低阶近似等。

稀疏正则化和连接剪枝通常会产生非结构化随机连接,因此导致的不规则内存访问会不利于在硬件平台上进行实际的加速。

而低阶近似方法则通常是先训练DNN,然后每个训练的权重通过一个更小的因子积来压缩和估计,最后再进行微调。这样虽然可以实现实际的加速,避免非结构稀疏正则化的局部问题,但量这种低维估计只能在每一层获得紧凑结构,并且层的结构在微调过程中是固定的,因此需要昂贵的分解和重复的微调。

作者在文中定义稀疏性为:零所占的比例

基于这些因素:

  1. 卷积滤波器和通道的冗余性
  2. 卷积滤波器通常是长方体,但使用任意形状可以潜在地消除这种固定带来的不必要的计算
  3. 网络深度对分类而言很重要,但更深的层并不总是能保证更低的错误率,由于梯度爆炸和梯度消失问题

作者提出他们的方法:结构化稀疏学习(Structured Sparsity Learning, SSL)来在训练时直接通过组Lasso正则化学习深度CNN的压缩结构,SSL是一个自适应地调整DNN中的多个结构的通用正则化,包括每层的滤波器结构、通道、滤波器形状和超越层次的深度结构。

方法简介

为常规结构提出结构化稀疏学习

假设卷积层的权重是一个四维张量序列形式:\(W^{(l)}\in \mathbb R^{N_l\times C_l\times M_l \times K_l}\),其中\(N_l\)表示沿滤波器轴的权重张量、\(C_l\)表示通道、\(M_l\)表示空间高度、\(K_l\)表示空间宽度,则提出具有结构稀疏正则化的DNN的通用优化目标可表示为: \[ E(W) = E_D(W) + \lambda R(W) +\lambda_g \sum_{l=1}^LR_g(W^{(l)}) \] 其中\(W\)表示DNN中所有权重的集合,\(E_D(W)\)是数据上的损失,\(R(.)\)表示应用到每个权重上的非结构化正则化,\(R_g(.)\)表示每层的结构稀疏正则化。

由于group Lasso可以有效地将一些组中的所有权重归零,作者在SSL中采用了它,可以表示为: \[ R_g(w) = \sum_{g=1}^G ||w^{(g)}||_g \] 其中\(w^{(g)}\)表示\(w\)中的部分权重组,\(G\)是组的总数,不同组可能会重叠,\(||.||_g\)group Lasso\(||w^{(g)}||_g=\sqrt{\sum_{i=1}^{|w^{(g)}}(w_i^{(g)})^2}\),其中的\(|w^{(g)}|\)表示\(w^{(g)}\)中的权重的数量

为滤波器结构、通道、滤波器形状和深度结构化稀疏学习

在SSL中,学习的结构是由\(w^{(g)}\)的切分组的方式决定的,为了简单,后面的式子会将前面式子中的\(R(.)\)给省略

惩罚不重要的滤波器和通道

假设\(W_{n_l}^l\)\(W_{c_l}^{(l)},:,:,:\)\(W_{:,c_l,:,:}^{(l)}\)分别表示第\(l\)层的所有滤波器中第\(n_l\)个滤波器和第\(c_l\)个通道,则学习filter-wise和channel-wise的结构稀疏性的优化目标可以定义为: \[ E(W) = E_D(W)+\lambda_n\sum_{l=1}^L(\sum_{n_l=1}^{N_l}||W_{n_l,:,:,:}^{(l)}||_g)+\lambda_c \sum_{l=1}^L(\sum_{c_l=1}^{C_l}||W_{:,c_l,:,:}^{(l)}||_g) \]

学习任意形状的滤波器

假设\(W_{:,c_l,m_l,k_l}^{(l)}\)表示位于跨第\(c_l\)个通道的二维滤波器中特定位置\(m_l,k_l\)的所有相应权重的向量,因此定义\(W_{:,c_l,m_l,k_l}^{(l)}\)为与学习任意滤波器形状相关的shape fiber,则学习滤波器形状的优化目标为: \[ E(W)=E_D(W)+\lambda_s\sum_{l=1}^L(\sum_{c_l=1}^{C_l}\sum_{m_l=1}^{M_l}\sum_{k_l=1}^{K_l}||W_{:,c_l,m_l,k_l}^{(l)}||_g) \]

正则化层的深度

对应的优化目标为: \[ E(W)=E_D(W)+\lambda_d \sum_{l=1}^L||W^{(l)}||_g \] 与其它讨论的稀疏技术不同,将一层中所有滤波器置零会阻断DNN的消息传播,从而导致输出神经元无法进行任何分类,因此作者提出利用跨层shortcuts来解决这一问题

用于计算高效结构的结构化稀疏学习(没懂)

在上述方案中都可以学到一个紧凑的DNN结构来减少计算成本,并且这些方案中公式的一些变种也可以学习到高效计算的结构

用于卷积的2D-filter-wise稀疏性

DNN中的3D卷积本质上是2D卷积的组合。为了有效地进行卷积,作者探索了一种filter-wise稀疏化的细粒度变种,即2D滤波式稀疏性,节省卷积核移除的二维滤波器的比例。滤波式稀疏性的细粒度版本可以更有效地减少与卷积相关的计算量:因为组的大小更小,因此权重更新梯度成型,帮助group Lasso快速获得"0"组的高比例

将filter-wise 和 shape-wise 稀疏化结合做GEMM

在DNN中的卷积计算通常被转换为矩阵然后做GEMM