Tensorizing Neural Networks 笔记

2019-10-14  本文已影响0人  晨光523152

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

一些记号:

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

向量和矩阵的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)

上一篇 下一篇

猜你喜欢

热点阅读