张量分解-Block term decomposition (BTD)

去年差不多这个时候,我在本人的博客上发表了三个关于张量分解的博客,从百度统计来看,很多人阅读了这三篇博文。今天,我再介绍一种张量分解-block term decomposition (BTD),下面将分几个部分对BTD进行介绍。

从CP分解到BTD

在CP分解中我们将一个张量分解为 K个Rank1的成员张量的形式,写成公式即为: T=Kr=1arbrcr=Kr=1(arbTr)cr

显然arbTr是一个Rank-1的矩阵,即一个低秩矩阵。而低秩往往是一些局部的特征,比如说人的一些眉毛一般都是低秩的。而在一些应用中,我们想得到一些不同秩的特征,或者是不同尺度的特征,比如说对于人脸,我想得到鼻子,眉毛,嘴巴,脸型等特征,这个时候CP分解就无法直观地做到了。

基于CP分解,我们想,如果arbTr,它不是一个秩为1️的矩阵,而是一个秩为K的矩阵,那么显然arbr就不是一个向量了,而是一个秩为Lr的矩阵。于是就得到了BTD模型的一种形式即 T=Kr=1ArBTrcr

可以将这个模型进一步进行推导即可得到BTD的通俗形式。

BTD分解概览

2008年Lieven De Lathauwer 等人提出了一种Block term decomposition(BTD),这种张量分解在一些论文中也被称为Block component decomposition (BCD)。我本人认为叫BCD 更合理一些,因为这种张量分解将一个N阶张量分解为R个成员张量的形式,BCD更符合。如下图就是一个Rank(Lr,Mr,Nr)的分解,每一个成员张量是一个Rank(Lr,Mr,Nr)的Tucker分解。

Block term decompositon(BTD)

采用数学表达式可以写为:

T=Rr=1Dr×1Ar×2Br×3Cr

其中 Dr是一个Rank(Lr,Mr,Nr)的张量,ArRI×L是一个秩为I的矩阵。显然BTD可以看出该分解可以看作是我们之前介绍的Tucker分解和CP分解的结合形式。当R=1的时候,显然成员张量只有一个,此时这个分解就是个Rank(L,M,N)的Tucker分解。而当每一个成员张量是一个Rank1分解的时候,该分解退化为一个CP分解 (CP分解是将一个张量分解为R个 秩为1的张量分解形式)。这也说明了,BTD分解具有很强的泛化能力。论文 http://epubs.siam.org/doi/pdf/10.1137/070690730 同时对它的唯一性进行了证明,从证明来看,该算法的唯一性的条件要比Tucker分解和CP分解的唯一性要弱。

BTD分解的求解

BTD分解现在的求解算法有很多,比如说非线性最小二乘法,交替最小二乘算法(ALS),张量对角算法等,其中交替最小二乘算法形式最为简单,下面我们以一个三阶张量TI×J×K的张量为例,这种求解算法进行介绍。

定义A=[A1,AR]B=[B1,BR] C=[C1,CR]将BTD写为矩阵的形式,可以得到如下三个表达式:

TJK×I=(BC).BlockdiagD1MN×L,,DRMN×LAT

TKI×J=(CA).BlockdiagD1NL×M,,DRNL×MBT

TIJ×K=(AB).BlockdiagD1LM×N,,DRLM×NCT

当更新某一个因子矩阵或者张量的时候,固定其它元素即可进行求解。如当求解A时,固定DrB以及C,设置M=(BC).BlockdiagD1MN×L,,DRMN×L因此,我们可以得到A的更新规则为

A=M.TJK×I

同理可以得到其它矩阵或者张量的更新规则。因此采用ALS算法求解BTD的步骤如下:

BTD求解

算法中的QR分解是为了防止算法出现数值计算错误。

特殊BTD分解

在前面我们已经介绍了BTD分解的两种特殊形式:Tucker分解和CP分解。下面我们再介绍两种特殊的张量分解。

Rank-(Lr,Lr,1)分解

当每一个成员张量退化为Lr×Lr的矩阵时,可以得到RankLr,Lr,1分解即:

Rank L L 1分解

相应的求解算法和BTD算法类似,只是没有了最后一步的求解core tensor部分。

Rank L L 1分解

Rank-(L,L,1)分解

RankLr,Lr,1的每一个Lr取值为一致即L时候即可得到Rank(L,L,1)分解即:

Rank L L 1分解

BTD分解的应用

BTD分解的现阶段的主要应用在盲源分离上,尤其是它的蜕化形式Rank(L,L,1)形式。 在Rank(L,L,1)cr可以看作是一个信号,Ar×Br可以看作是混合矩阵的低秩表达形式。本人也基于此分解在IEEE TGRS上发表了一篇题为“Matrix-Vector Nonnegative Tensor Factorization for Blind Unmixing of Hyperspectral Imagery”的文章,具体可以看 http://www.cs.zju.edu.cn/people/qianyt/paper/Matrix-Vector%20Nonnegative%20Tensor%20Factorization%20for%20Blind%20Unmixing%20of%20Hyperspectral%20Imagery.pdf。

另外,BTD分解现在也开始应用在深度学习中(事实上张量分解在深度学习中的应用最近被广泛地被研究,因为张量分解可以有效地减少深度学习中参数的个数,具体可以Google Tensor deep learning )。新加坡国立大学颜水成教授2017年发表了一篇题为Sharing Residual Units Through Collective Tensor Factorization in Deep Neural Networks 的文章,这篇文章中,用BTD分解来代替残差网路中的卷积单元(没有仔细读,等仔细读之后再详细写)

Rank L L 1分解

Like 7 Comments Issue Page
  • bearshng commented on Wed Aug 23 2017

    test comment

  • CS-Jackson commented on Wed Feb 14 2018

    请问张量分解现在主要应用有哪些?

  • bearshng commented on Thu Feb 15 2018

    因为我是做高光谱图像处理的,我了解的张量分解在高光谱图像的去噪,分类,解混都有应用。另外,现在的深度学习中也有用张量分解做模型的压缩的。

  • CS-Jackson commented on Tue Feb 20 2018

    谢谢解答。

  • AlgnersYJW commented on Mon Feb 26 2018

    请问楼主是否方便分享下您基于BTD发表在IEEE TGRS上论文的代码,若方便,可发送至邮箱(yujieahaq@163.com),谢谢

  • bearshng commented on Mon Feb 26 2018

    代码已经放在了GitHub上了 请自行下载 或者访问 http://www.cs.zju.edu.cn/people/qianyt/code/MVNTF.zip 下载

  • AlgnersYJW commented on Mon Feb 26 2018

    感谢分享