美文网首页
Tensorizing Neural Networks 笔记

Tensorizing Neural Networks 笔记

作者: 晨光523152 | 来源:发表于2019-10-14 20:33 被阅读0次

Abstract

深度学习模型需要大量的计算资源,特别是全连接层。这使得这些深度学习模型很难用在低端设备上,并且这一缺陷进一步阻断了模型的大小增长。在这篇文章中,作者把用于全连接层的密集矩阵变成以Tensor Train的形式,这样参数的数目能够被减少,并且网络层的表现能力能够得以保留。文章特别提到,对于Very Deep VGG networks,全连接层的参数数目能够压缩到20 W倍,整个网络的参数数目能够压缩到7倍。

Introduction

昂贵的硬件和很长的运行时间是使得这些模型在台式机以及便携设备上应用的因素(需要很多工作去解决这个问题)。
全连接层:线性变换;在CNN模型中,全连接层的携带了上百万的参数级别。
因此,这篇文章提出了,用一个紧凑的多线性形式--Tensor Train 形式(TT-formart)替代全连接层的密集权重矩阵。
TT-format能够允许我们使用很少的数据来储存大型密集矩阵参数,同时保持足够的灵活性以执行信号转换。
结果层与现有的神经网络训练算法兼容,叫做TT-layer,具有多个TT-layers的层叫做TensorNet

Related Work

全连接层占据了整个网络的89%,甚至是100%的内存,所以使得全连接层的更加紧凑是不奇怪的。
如今,存在两种方法使得全连接层的矩阵的形式更加紧凑:

  • 找到全连接层矩阵的低秩表示。全连接层的权重矩阵是高度冗余的,通过限制矩阵的秩,能够减少参数并且不降低预测准确率
  • 使用特殊的哈希技术绑定权重的随机子集。

这篇文章使用了低秩技术。与传统的低秩方法不同的是,没用去搜索一个权重矩阵的低秩近似,而是使用了Tensor Train 分解算法(这个方法已经被成功了用在了一些数据处理任务中)。

另一个可能的优点是:能够使用比以前更多的隐藏单元。(最近研究表明,通过在经过训练的深层网络的输出上训练浅层网络,可以构造性能接近最新的深层CNN的宽而浅的(即不深层)神经网络)

TT-format

一些记号:

  • 向量:e.g. aa(i)=a_{i}
  • 矩阵:e.g. AA(i,j)
  • 张量:e,g. \mathscr{A}\mathscr{A(i)}=\mathscr{A(i_{1},i_{2},...,i_{d})}
    TT-format:\mathscr{A}里的每一个元素能被矩阵积的形式表示,
    \mathscr{A(i_{1},...,i_{d})}=G_{1}[j_k]G_{2}[j_2]...G_{d}[j_d] ;\;\;\;\;\;\;\;\;\;\;\;\;\ (1)
    其中k=1,2,...,d表示张量的维度,j_{k} = 1,2,...,n_{k}表示每一个维度下的索引
    与相同维度k相关的G_{k}[j_{k}]都是矩阵,其大小被限制在r_{k-1}\times r_{k}r_{0},r_{d}=1
    序列\{r_{k}\}_{k=0}^{d}被称为张量\mathscr{A}的TT表示的秩,其最大值–作为TT表示的最大TT秩
    \mathscr{A}r = max_{k = 0,...,d} rk
    在 Tensor-Train decomposition 这篇文章中说,任意张量\mathscr{A}的TT分解存在但不唯一,其秩沿着不同的TT分解是变化的并且寻找一个最低秩的表示是自然地。
    用记号G_{k}[j_{k}](\alpha_{k-1},\alpha_{k})表明矩阵G_{k}[j_{k}](\alpha_{k-1},\alpha_{k})的值,其中\alpha_{k-1}=1,2,...r_{k-1},\alpha_{k}=1,2,...,r_{k}
    等式(1)能够被重写成:
    \mathscr{A(i_{1},...,i_{d})}=\sum_{\alpha_{0},\alpha_{1},...,\alpha_{d}} G_{1}[j_{1}](\alpha_{0},\alpha_{1})...G_{d}[j_{d}](\alpha_{d-1},\alpha_{d});\;\;\;\;\;\;\;\;\;\;\;\;\;\ (2)
    通过所有元素的显式枚举来表示张量\mathscr{A}需要储存\prod_{k=1}^{d}n_{k},然而通过TT分解需要储存的元素缩减为\sum_{k=1}^{d}n_{k}r_{k-1}r_{k}

TT分解另一个吸引人的特性,如果张量是TT分解的形式,可以执行多种类型的操作:

  • 基础的线性代数操作,e.g. 常数加法,乘以常数;
  • 张量的求和与乘积;
  • 张量全局特征的计算,e.g. 所有元素的和,张量的F范数

向量和矩阵的TT表示

直接将TT分解用于矩阵符合低秩矩阵形式,直接将TT分解用于向量等效于显示的储存其元素。
为了能够有效处理大型矢量和矩阵,以特殊方式定义了它们的TT格式。

TT-vector

考虑一个向量b\in R^{N},N=\prod_{k=1}^{d}n_{k}
在向量b的坐标l\in \{1, ... , N\}和一个相关张量\mathscr{B}d维向量索引\mu(l)=(\mu_{1}(l),...,\mu_{d}(l))之间建立一个双射\mu,其中\mu_{k}(l)\in \{1,...,n_{k} \},并且\mathscr{B}(\mu(l))=\mathscr{B}(\mu_{1}(l), ... , \mu_{d}(l))=b_{l}

TT-matrix

考虑矩阵W\in R^{M\times N},其中M=\prod_{k=1}^{d}m_{k},N = \prod_{k=1}^{d}n_{k}
让双射v(t)=(v_{1}(t), ... , v_{d}(t)以及\mu(l)=(\mu_{1}(l), ... , \mu_{d}(t))把矩阵w的行以及列映射为d维的向量索引,其第k个维度尺寸分别是m_{k},n_{k}
从矩阵W,我们可以得到一个d维的张量\textbf{W},其第k维的长度是m_{k}n_{k},并且被元组(v_{k}(t), \mu_{k}(t)索引。
张量\textbf{W}能够被写成TT-format:
W(t,l)=\textbf{W}((v_{1}(t), \mu_1(l)), ... , (v_{d}(t), \mu_{d}(l)))=G_{1}[v_{1}(t), \mu_{1}(l)]...G_{d}[v_{d}(t), \mu_{d}(l)];\;\;\;\;\;\;\;\;\;\;\;\;\ (3)

TT-layer

TT-layer是以TT-format储存权重矩阵的全连接层。
全连接层是把线性变换用在N维输入向量x
y = Wx + b;\;\;\;\;\;\;\;\;\;\;\;\ (4)
TT-layer的形式是:
\mathscr{Y}(i_{1}, ... , i_{d}) = \sum_{j_1, ... , j_d}G_{1}[i_{1}, j_{1}]...G_{d}[i_{d}, j_{d}]\mathscr{X}({j_1, ... , j_d})+ \mathscr{B}(i_1, ... , i_d);\;\;\;\;\;\;\;\;\;\ (5)

相关文章

网友评论

      本文标题:Tensorizing Neural Networks 笔记

      本文链接:https://www.haomeiwen.com/subject/ycbtmctx.html