张量分解浅谈(四 Tucker 分解) 您所在的位置:网站首页 TUCKER品牌 张量分解浅谈(四 Tucker 分解)

张量分解浅谈(四 Tucker 分解)

2024-05-28 13:28| 来源: 网络整理| 查看: 265

学完了SVD算法之后,我们继续回到张量几大分解的学习上来,本期学习的主要内容是张量的 Tucker 分解 以及 前面的CP分解还留下一点没有说完,正好一并补齐!后面的公式我将采用颜色标记,红色代表必须掌握,蓝色尽量掌握!

在这之前先附一张图,包含了各种运算符号的名称含义,大部分是前面说过或者使用过的: 在这里插入图片描述

Tensor decomposition 一 . Tucker 分解公式介绍和原理二 . 张量的 n-Rank三 . Tucker分解法的计算四 . Tucker 与CP 分解的区别联系

一 . Tucker 分解公式介绍和原理

我们先来看一张被使用过很多次的Trucker 分解图片,这是在三阶张量上的分解形式!过程貌似可能应该差不多 肯定有点枯燥无味,坚持一下,本人已经被张量学习掏空了!

在这里插入图片描述 如上图所示:对于一个三阶张量 X ∈ R I × J × K \mathcal{X} \in \mathbb{R}^{I \times J \times K} X∈RI×J×K而言,经过Tucker分解可以得到:三个因子矩阵 A ∈ R I × P , B ∈ R J × Q , C ∈ R K × R A \in \mathbb{R}^{I \times P}, B \in \mathbb{R}^{J \times Q}, C \in \mathbb{R}^{K \times R} A∈RI×P,B∈RJ×Q,C∈RK×R和一个核张量 G ∈ R P × Q × R \mathcal{G} \in \mathbb{R}^{P \times Q \times R} G∈RP×Q×R ,每个mode上的因子矩阵称为张量在每个mode上的基矩阵或者是主成分,因此Tucker 分解又称为高阶PCA, 高阶SVD等。

在三阶张量形式中,,我们有如下分解: X = G × 1 A × 2 B × 3 C = ∑ p = 1 P ∑ q = 1 Q ∑ r = 1 R g p q r a p ∘ b q ∘ c r = [ [ G ; A , B , C ] ] \mathcal{X}=\mathcal{G} \times_{1} A \times_{2} B \times_{3} C=\sum_{p=1}^{P} \sum_{q=1}^{Q} \sum_{r=1}^{R} g_{p q r} a_{p} \circ b_{q} \circ c_{r}=[[\mathcal{G} ; A, B, C]] X=G×1​A×2​B×3​C=p=1∑P​q=1∑Q​r=1∑R​gpqr​ap​∘bq​∘cr​=[[G;A,B,C]]

显然,矩阵 A , B , C \boldsymbol{A},\boldsymbol{B},\boldsymbol{C} A,B,C 就是因子矩阵了,他们通常可以被作每个mode下的主成分,同样也是相互正交的!那么图中的长方体张量 G ∈ R P × Q × R \mathcal{G} \in \mathbb{R}^{P \times Q \times R} G∈RP×Q×R 就是核心张量了,它其中的每一个数字元素都代表了不同成分之间的互动程度!

那么对于原始张量的每一个元素来说,Tucker 分解法 可以写作:

x i j k ≈ ∑ p = 1 P ∑ q = 1 Q ∑ r = 1 R g p q r a i p b j q c k r  for  i = 1 , … , I , j = 1 , … , J , k = 1 , … , K x_{i j k} \approx \sum_{p=1}^{P} \sum_{q=1}^{Q} \sum_{r=1}^{R} g_{p q r} a_{i p} b_{j q} c_{k r} \quad \text { for } \quad i=1, \ldots, I, j=1, \ldots, J, k=1, \ldots, K xijk​≈p=1∑P​q=1∑Q​r=1∑R​gpqr​aip​bjq​ckr​ for i=1,…,I,j=1,…,J,k=1,…,K

需要注意:这里的 P , Q , R \boldsymbol{P},\boldsymbol{Q},\boldsymbol{R} P,Q,R 为对应的因子矩阵 A , B , C \boldsymbol{A},\boldsymbol{B},\boldsymbol{C} A,B,C的成分数目(例如列向量的数目),如果 P , Q , R \boldsymbol{P},\boldsymbol{Q},\boldsymbol{R} P,Q,R 均小于 i , j , k \boldsymbol{i},\boldsymbol{j},\boldsymbol{k} i,j,k,我们可以将核心张量 G \mathcal{G} G 视作是原张量 X \mathcal{X} X 的一个压缩版本,一般情况下,它所占用的空间是被压缩了的!

除此之外,我们应当还需要知道三阶张量的矩阵张来: 在这里插入图片描述 突然跳出来个 G G G ,它代表的是核心张量的三个切片,公式中对应的X也是与其对应的原张量切片。你完全可以举个小例子去验证 ,对帮助理解有好处!

这些公式当然不限制于更高阶的张量分解,其公式按照上面这个两个依葫芦画瓢即可,就不多赘述了。

对于三阶张量固定一个因子矩阵为单位阵,就得到Tucker分解一个重要的特例:Tucker2: X = G × 1 A × 2 B = [ G ; A , B , I ] \mathcal{X}=\mathcal{G} \times_{1} A \times_{2} B=[\mathcal{G} ; A, B, I] X=G×1​A×2​B=[G;A,B,I]

进一步,如果固定两个因子矩阵 C = I , B = I C=I, B=I C=I,B=I,就得到了Tucker1,那么此时Tucker 分解就退化成了普通的二维PCA: X = G × 1 A = [ G ; A , I , I ] \mathcal{X}=\mathcal{G} \times_{1} A=[\mathcal{G} ; A, I, I] X=G×1​A=[G;A,I,I]

这也证实了张量的Tucker 分解就是高阶PCA!

二 . 张量的 n-Rank

n-Rank秩又称为多线性秩,一个N阶张量 X \mathcal{X} X 的 n-mode秩定义如下:

rank ⁡ n ( X ) = rank ⁡ ( X ( n ) ) \operatorname{rank}_{n}(\mathcal{X})=\operatorname{rank}\left(X_{(n)}\right) rankn​(X)=rank(X(n)​)

特别要注意,这两个X不一样 我刚开始看成一样的,后面怎么看也没看懂。。。。

先令 rank ⁡ n ( X ) = R n , n = 1 , ⋯   , N \operatorname{rank}_{n}(\mathcal{X})=R_{n}, n=1, \cdots, N rankn​(X)=Rn​,n=1,⋯,N,那么 X \mathcal{X} X 就叫做 秩- ( R 1 , R 2 , ⋯   , R n ) \left(R_{1}, R_{2}, \cdots, R_{n}\right) (R1​,R2​,⋯,Rn​) 的张量(这只是一种表示高阶张量秩的方法,莫奇怪!), R n R_{n} Rn​ 可以看做是 张量 X \mathcal{X} X 在各个切片上的 所构成空间的维度,说白了,张量的秩直接不好表示,就用其切片矩阵的秩来表示。。。。

n-rank切记不能与秩(rank), 也就是最小的秩1成分数目, 所混淆. 这两个不是一个东西!

对于一个给定的张量 X \mathcal{X} X, 我们可以很轻易地找到一个秩为 R 1 , R 2 , … , R N R_{1}, R_{2}, \ldots, R_{N} R1​,R2​,…,RN​ where R n = rank ⁡ n ( X ) R_{n}=\operatorname{rank}_{n}(\mathcal{X}) Rn​=rankn​(X) 的精确 Tucker 分解, 但如果我们计算的Tucker分解的秩低于这组值, 也就是对某些n来说 R n < rank ⁡ n ( X ) R_{n}



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有