TT分解与网络张量化
TT分解
思路
将一个张量表示为一种运算,即多个低维张量的乘积。只需储存分解后低维张量,进而压缩占用的储存空间。
数学表示与推导
对于一个维张量
,
表示第
维的长度。可以分解为多个低维张量的乘。
规定,
image
用TT分解压缩全连接层
对于一个全连接层,数学表示为:。要压缩全连接层,重点在于压缩矩阵
和偏差向量
。
矩阵和向量的TT分解形式
向量的TT分解
向量的TT分解实际上是将向量按张量的方式存储,并未压缩
对于一个长的向量,将
表示为
,则将向量分解为一个
维的张量,第
维的长度就是对应的
。
使用一个向量来联系张量和向量中的元素,有
,其中
矩阵的TT分解
将矩阵映射到张量,再做TT分解
与向量类似,对于的矩阵,分别将
表示为
个数的相乘。使用向量
和
来联系张量和矩阵中
位置的元素。张量中第
维的大小为
。
于是矩阵中的某个元素可以按下面的规则对应到
维张量中的元素,再对张量TT分解,得到矩阵的TT形式。
TT-Layer
完成了向量和矩阵的TT分解后,为便于将全连接层用TT分解形式表示,将输入向量和输出向量
同样用TT分解表示为两个
维张量。最终,一个全连接层可以表示为:
TT-Layer的随机梯度下降
直接计算损失函数
关于
的梯度要内存占用大,使用TT分解形式的梯度计算。
将序列分为三部分,那么
也被分为了三部分:
则全连接层又可写为:
计算TT分解形式下关于
的梯度
时只需关注
和
而其他位置都为0,
是
TT分解后k维张量上的坐标。
又是
的线性函数,一求导,
项和常数项
就没了,只剩下: