汇报记录--tensor train neural network and tensor ring complement

本次内容仅为自适应课程汇报记录,内容为tensor train 和 tensor ring相关应用的简单介绍

Tensor Train neural work

什么是张量?
0路阵列为标量,1路阵列为向量,2路阵列为矩阵,3路及以上阵列就称为张量。

为什么需要张量?
矩阵分析的方法对于张量不可行。这里不可行指的是矩阵的分析方法。既然张量的计算最终也是展开成矩阵,为什么说矩阵分析方法不可行呢?这很好理解,矩阵分解的目的是在保留原始数据的前提下进行降维,如果我们直接对张量展开,那么数据的分布就会杂乱且丢失(可以想象,多维数据被拉成一个向量形式,那么其周围的数据本来在空间中非常近,拉成向量后其附近的数据就离得非常远,相似信息可能会被认为是不同信息)。那么我们想要在保证其信息尽量完整的情况下进行后续的一系列降维或其他操作,就需要对张量的操作进行新的定义和区分。这和我们求解非线性问题的思路是一致的。在求解凸函数+非凸约束问题时,我们采用次梯度方法,对lasso问题进行了分析,引入一个L1范数近端算子(软阈值),有了所谓的ISTA方法(软阈值迭代算法),后面对满足李普希兹连续的非凸函数+凸不连续约束问题,也有NPSA方法。其实无论对于什么情况,我们的任务都是把不满足条件的东西换成满足我们初始条件的情况,那么我们就可以使用简单的梯度方法进行更新。张量也是一样的,我们最后都是矩阵运算,只是分析的时候我们需要做一些操作对原始数据的结构信息以最大程度的保留。

张量研究的部分内容
目前做的比较多的是神经网络参数压缩和图像补全领域。

张量分解示意图

神经网络的不足

深度学习的理论和技术已经取得了非常不错的发展,但是其不足之处也依然明显。其中较为突出的有计算消耗大(算力依赖)、占用内存大。
以被广泛使用的VGG-16模型为例,该模型有多达1亿4千万个训练参数,如果以单精度浮点型存储这些参数,模型需要占据530MB的存储空间。处理一张500x500分辨率的图片,需要执行接近800亿次计算,并且需要额外460MB的内存空间来存储中间过程的计算结果,这对于低端设备来说是难以承担的。如下图所示
几个模型的参数数目
上表是关于一些模型的大小、计算量和参数量。可以看得出来,这些数据都是十分庞大的。当然毋庸置疑的是越复杂的网络模型应用效果越好,可是随之带来的是更多的存储和计算资源的需求。这就导致了巨大的模型只能在有限的平台下使用,根本无法一直到移动端和嵌入式芯片中,模型小型化和加速成了亟待解决的问题。
大型神经网络具有大量的层级与节点,因此考虑如何减少它们所需的内存和计算量就显得十分重要了。下面四种方法是现在比较常用的参数压缩方法:
1、参数修剪与共享:关注于探索模型参数中冗余的部分,并尝试去除冗余和不重要的参数。目前大多数的剪枝技术都是以减少神经元之间的连接设计的。
2、低秩分解、通过将大的权值矩阵分解为几个小矩阵的乘积的方式来达到模型压缩和加速的目的。
3、迁移/压缩卷积滤波器:设计特殊结构的卷积滤波器以减少存储和计算的复杂度。只适用于全卷积神经网络。
4、知识精炼:训练一个更加紧凑的神经网络以再现大型网络的输出结果。有时模型的要求过于苛刻。
本次汇报中采用张量方式进行神经网络的压缩参数方法为低秩分解方法。下面重点介绍低秩分解如何进行参数压缩。
采用矩阵分解的方法可以大大减少卷积过程矩阵分析的运算量,去除网络冗余性,压缩神经网络。现在的发展也比较成熟,很容易直接在CPU/GPU环境中实现。
近年来的研究表明,当前的神经网络参数化存在很高的冗余度。(这是必然的)那么低秩思想很自然地就应用在了其参数压缩中。
目前的张量分解方式有四种:CP分解、Tucker分解、TT分解、TR分解。现在这四种分解方法已经被广泛应用到神经网络参数压缩中。

CP分解
[2014,Vadim Lebedev,Computer science]Speeding up convolutional neural networks using fine-tuned CP-decomposition.该文采用CP分解法将一层网络分解为五层低复杂度的网络层,实验通过微调在保持 1%精度下将计算过程提高了 2 倍左右。但在基于随机梯度下降法的模型权重微调过程中难以获取张量分解的优化解。

Tucker分解
[2016,Kim,Computer science]Compression of deep convolutional neural networks for fast and low power mobile applications.
首先进行变分贝叶斯矩阵分解的秩选择,然后再进行核张量Tucker分解,最后再次对模型进行调整。用三个较小的张量乘积重构原始较大的张量,大大减少了计算量。

TT分解
[2015,Alexander Novikov,Computer Science]Tensorizing Neural Networks.
将全连通层的稠密权值矩阵转化为张量格式,使参数的数量大大减少,同时保留了层的表达能力。对于Very Deep VGG networks ,使整个网络缩小了7倍。

TR分解
[2018,Yu Pan,Computer Science]Compressing Recurrent Neural Networks with Tensor Ring for Action Recognition.
提出了一种新的紧凑的LSTM模型,称为TR-LSTM,它利用低秩张量环分解(TRD)来重新构造输入-隐藏变换。与其他张量分解方法相比,TR-LSTM更加稳定。

上面为不同分解方式在神经网络中应用的论文案例,该方向目前也是比较火热的。

那么TT分解如何对神经网络进行参数压缩呢?
1
2
3
实验表明,在CIFAR-10数据集使用CIFAR-10 QuickCNN,带TT层的网络性能与未压缩的网络相匹配,精度损失约为1%,全连接层参数量减少11.9倍。TT分解对神经网络的权值初始化较敏感,网络的精度随着不同的参数初始化而产生较大的波动。TT分解和TR分解压缩效果比CP分解和Tucker分解好。从结构上说,TT分解鲁棒性没有TR分解好。
结构分析

一些解释
如今的神经网络大多使用TR分解进行参数压缩,那么原因在哪呢?先观察上图,从结构上分析,TR结构连成一个环,相当于多个TT连接起来了并且头尾相连,这样的特性导致TR秩的约束较TT放宽了(没有首尾秩1的约束,仅要求秩相等),却顺序可以随意变换(可以从任意一个核张量进入)。首先TT有严格的秩一约束。且其秩的分布为高斯状(中间大两边小),这也导致相同情况下使用TT进行参数压缩的效率并没有TR高。且多个TT线性组合的结构很显然鲁棒性要比单一TT强。这也是为何许多研究都选择TR进行研究的原因。
师兄的一篇文章也提到过TT和TR的区别:对于一个图像数据集,其规模为32x32x3x1000,3为RGB通道,1000为样本。若这些图像为苹果,雪梨这些图像明显不同的图像,由于他们色彩分明,且要取来分类的矩阵位于最右边(n x r x 1),且和上一核(RGB信息核)共享一个秩,因此可认为包含有较多的颜色信息。而使用TR反而没有TT效果好。相反如果数据并非颜色分明,那么使用TR,其共享两边的秩,能包含更多的信息,因此TR效果又比TT好。显然TT和TR的结构是有优劣之分的,具体区别需要观察数据集的情况。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值