Paper notes(3):Tensor-Train Decomposition
- 1.文章的主要内容
- 2.TTD模型
- 3.TTD的算法
本文只是个人用于记录论文学习笔记,如有写错的地方还望各位大佬批评指正。
1.文章的主要内容
给出了一种简单的非递归的张量分解形式,避免了“维度诅咒”的影响,该分解形式得到的参数数量与正则分解(canonical decomposition)的参数数量相同,但更稳定,因为该种分解是基于辅助展开矩阵的低秩近似。
2.TTD模型
给定一个ddd维张量BBB,如果想用张量AAA近似张量BBB,则AAA的每一个元素可以表示为:
A(i1,i2,…,id)=G1(i1)G2(i2)…Gd(id)(1.2)\\tag{1.2} A(i_1,i_2,…,i_d)=G_1(i_1)G_2(i_2)…G_d(i_d)A(i1,i2,…,id)=G1(i1)G2(i2)…Gd(id)(1.2)
其中Gk(ik)G_k(i_k)Gk(ik)是一个rk−1×rkr_{k-1}\\times r_krk−1×rk矩阵,因为A(i1,i2,…,id)A(i_1,i_2,…,i_d)A(i1,i2,…,id)代表的是一个元素,所以r0=rd=1r_0=r_d=1r0=rd=1。公式(1.2)可以改写为索引的形式:实际上Gk(ik)G_k(i_k)Gk(ik)是一个大小为rk−1×nk×rkr_{k-1}\\times n_k\\times r_krk−1×nk×rk的三维数组,它的某个元素Gk(αk−1,nk,αk)=Gk(ik)αk−1αkG_k(\\alpha_{k-1},n_k,\\alpha_k)=G_k(i_k)_{\\alpha_{k-1}\\alpha_k}Gk(αk−1,nk,αk)=Gk(ik)αk−1αk。因此TTD的索引形式可以表示为:
A(i1,i2,…,id)=∑α0…,αdG1(α0,i1,α1)G2(α1,i2,α2)…Gd(αd−1,id,αd)(1.3)\\tag{1.3} A(i_1,i_2,…,i_d)=\\sum_{\\alpha_0…,\\alpha_d} G_1(\\alpha_0,i_1,\\alpha_1)G_2(\\alpha_1,i_2,\\alpha_2)…G_d(\\alpha_{d-1},i_d,\\alpha_d)A(i1,i2,…,id)=α0…,αd∑G1(α0,i1,α1)G2(α1,i2,α2)…Gd(αd−1,id,αd)(1.3)
注:以上内容来自于原文的翻译,以下为个人的简单理解
上图是TTD的一个图解,虽然图解给出的rk−1,rk,nkr_{k-1},r_k,n_krk−1,rk,nk的方向与上文中的不同,但解释的道理是相同的。图中的pkp_kpk即为上文中的nkn_knk,代表着被分解张量第kkk维的大小。结合上图和公式(1.2),我们可以看出Gk(ik)G_k(i_k)Gk(ik)是三维张量GkG_kGk的一个lateralslicelateral \\ slicelateralslice,即一个大小为rk−1×rkr_{k-1}\\times r_krk−1×rk矩阵,总的来说矩阵AAA的某个元素A(i1,i2,…,id)A(i_1,i_2,…,i_d)A(i1,i2,…,id)就是其每一个下标对应的GkG_kGk张量的第iki_kik个lateralslicelateral \\ slicelateralslice的乘积。
3.TTD的算法
参考文章:
1. Tensor-Train Decomposition
2. 张量分解(四):Tensor-train Decomposition