博主今天阅读文献《PARAFAC-Based Channel Estimation for Intelligent Reflective Surface Assisted MIMO System》一文中,发现了一个新的名词-----------------(CPD,Canonical Polyadic Decomposition),于是去查阅了相关资料理解具体含义。
一、CP分解是张量分解中的一个分支,那么什么是张量分解?
张量:一般一维数组,我们称之为向量(vector),二维数组,我们称之为矩阵(matrix);三维数组以及多位数组,我们称之为张量(tensor)。
CP 分解( Canonical Polyadic Decomposition ,CPD)
CP 分解将一个N阶的张量分解为R个秩为1的张量和的形式即:
是一个单位向量,通过定义,.上面的公式可以改为:
矩阵的表达式
如果张量为3阶,分解为以下形式:
二、张量的低秩近似
在矩阵中,最小的秩为1的矩阵和的个数为矩阵的秩,张量中R的最小值为张量的秩,记作,需要注意的是张量中秩的定义是不唯一的,张量秩的个数求解就是NP问题。可以提取张量的前k个因子作为张量的低秩近似值:
,即张量的秩Rank-n 近似无法渐进地得到。
三、CP的求解
CP分解的求解首先要确定分解的秩1张量的个数,正如前面介绍的由于张量的秩Rank-n 近似无法渐进地得到。通常我们通过迭代的方法对R从1开始遍历直到找到一个合适的解。当数据无噪声时,重构误差为0所对应的解即为CP分解的解,当数据有噪声的情况下,可以通过CORCONDIA算法估计RR。当分解的秩1张量的个数确定下来之后,可以通过交替最小二乘方法对CP分解进行进行求解。下面我们以三阶张量为例对ALS 算法进行阐述。
假设是一个三阶张量,对它进行张量分解的表达式(我被CSDN自带的公式编辑折服了,决定用MathType):
ALS算法首先固定B,C去求解A,接着固定A和C去求解B,然后固定B 和C去求解A,这样不断地重复迭代直到达到收敛条件。固定矩阵B和C,可以得到上面的式子在mode-1矩阵展开的时候形式为
其中:
那么上述目标函数的最优解为:
此处矩阵边上的“+”代表Moore-Penrose广义逆,它常被用于求得或简化非一致线性方程组的最小范数最小二乘解(最小二乘法),有兴趣可以自己了解一下,这里不过多阐述。
计算的时候把的每一列单位化,,将上述式子推广到高阶形式:
可以用交替最小二乘法计算CPD,假设张量的个数是提前知道的,设为R:
get!
欢迎补充