张量分解算法(CP分解)

       博主今天阅读文献《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分解)_第1张图片

 CP 分解将一个N阶的张量\chi \in\mathbb{R} ^{I_{1}\times I_{2}\cdots I_{N}}分解为R个秩为1的张量和的形式即:

\chi =\sum_{r=1}^{R}\lambda _{r}a_{r}^{(1)}\circ a_{r}^{(2)}\circ a_{r}^{(3)}\circ \cdots a_{r}^{(N)}

 a_{r}^{(n)}是一个单位向量,通过定义A^{(n)}=\left [ a_{1}^{n} a_{2}^{n} \cdots a_{R}^{n}\right ],D=diag(\lambda ).上面的公式可以改为:

\chi =D\times _{1}A^{(1)}\times_{2}A^{(2)}\cdots \times_{N}A^{(N)}

矩阵的表达式

X_{(n)}=A^{n}D(A^{(N)}\bigodot \cdots A^{(n+1)}\bigodot A^{(n-1)}\cdots \bigodot A^{1})^{\top }

如果张量\chi为3阶,分解为以下形式:

张量分解算法(CP分解)_第2张图片

 二、张量的低秩近似

        在矩阵中,最小的秩为1的矩阵和的个数为矩阵的秩,张量中R的最小值为张量的秩,记作Rank(\chi )=R,需要注意的是张量中秩的定义是不唯一的,张量秩的个数求解就是NP问题。可以提取张量的前k个因子作为张量\chi的低秩近似值:

\chi =\sum_{k=1}^{K}\lambda _{k}a_{k}^{(1)}\circ a_{k}^{(2)}\circ \cdots a_{k}^{(N)}

,即张量的秩Rank-n 近似无法渐进地得到。

三、CP的求解

       CP分解的求解首先要确定分解的秩1张量的个数,正如前面介绍的由于张量的秩Rank-n 近似无法渐进地得到。通常我们通过迭代的方法对R从1开始遍历直到找到一个合适的解。当数据无噪声时,重构误差为0所对应的解即为CP分解的解,当数据有噪声的情况下,可以通过CORCONDIA算法估计RR。当分解的秩1张量的个数确定下来之后,可以通过交替最小二乘方法对CP分解进行进行求解。下面我们以三阶张量为例对ALS 算法进行阐述。    

        假设\chi \in \mathbb{R}^{I\times J\times k}是一个三阶张量,对它进行张量分解的表达式(我被CSDN自带的公式编辑折服了,决定用MathType):

张量分解算法(CP分解)_第3张图片

 ALS算法首先固定B,C去求解A,接着固定A和C去求解B,然后固定B 和C去求解A,这样不断地重复迭代直到达到收敛条件。固定矩阵B和C,可以得到上面的式子在mode-1矩阵展开的时候形式为

张量分解算法(CP分解)_第4张图片

其中: 

那么上述目标函数的最优解为:

 此处矩阵边上的“+”代表Moore-Penrose广义逆,它常被用于求得或简化非一致线性方程组的最小范数最小二乘解(最小二乘法),有兴趣可以自己了解一下,这里不过多阐述。

计算的时候把的每一列单位化,,将上述式子推广到高阶形式:

 可以用交替最小二乘法计算CPD,假设张量的个数是提前知道的,设为R:

张量分解算法(CP分解)_第5张图片

get!

欢迎补充

 

 

 

 

你可能感兴趣的:(数学,算法,张量分解,cp分解)