CP分解
将高维的张量分解成为Rank-One Tensors的和。
这里的是指的外积。
上面的式子也可以展开成:
定义因子矩阵(factor matrices)表示向量的组合。例如。然后对三维的情况,我们可以将上面的表达式写成下面的形式:
其中的表示KR积。然后表示张量的的mode-n unfolding。
例如:,
那么
我们可以把它展开后验证一下式子的正确性,当然肯定是对的。也可以从维度的角度去进行验证。
CP分解可以简明的表述为:
如果将标准化,然后提取出权重,可以得到如下的表述:
对于N维的情况,
Tensor Rank
当取等号的时候,R的最小取值,就是该张量的秩。
对张量的秩的定义和对矩阵的张量的定义类似。但是存在一些不同。
- 张量的秩在实数域和复数域可以不同。
- 没有直接的算法去计算给定张量的秩。这是一个NP-hard问题。
张量集合的最大秩和典型秩。对一个张量的集合,所能取到的最大的秩成为最大秩(maximum rank),发生概率大于0的秩成为典型秩typical rank。
对于不同形状的张量有不同的最大秩和典型秩,可以通过查表获得。
Uniqueness 唯一性
高阶张量的一个特性是他们的分解通常是唯一的,但是矩阵分解通常不是唯一的。
矩阵的分解是不唯一的。令是一个秩为R的矩阵,它的分解为:
如果的SVD分解是那么我们可以选择,同时可以选择
张量分解的唯一性是指排除简单的重新组合和缩放的情况后,只存在一种可能的分解。
三维情况下,CP分解唯一性的充分条件是:
其中的是矩阵的秩。
将其扩展到N维情况为:
充分条件为:
CP分解唯一性的必要条件为:
对N维的情况,
然后,因为:
所以,更一般的必要条件为:
三维张量在以下的条件下,CP分解通常是唯一的。
低秩近似和边界秩Low-Rank Approximations and the Border Rank
令R是矩阵的秩,假设的SVD为:
然后他的rank-k近似可以写作:
但是这种结果不适用于高阶张量。
存在低阶近似不是高阶近似的因子的情况。导致最佳秩近似的分量不能够按照顺序一个个的求解,必须同时找到所有的因子。
令是一个rank-three张量,被定义为:
然后这个张量可以被下面的rank-two张量任意的近似:
然后:
但是在某些情况下,低秩近似是不存在的,并且这不是一个少见的情况。在不存在低秩近似的时候,引入边界秩的概念。他被定义为等于一个张量的最小数量,其足以近似给定张量且具有任意小的非零值。
计算CP分解
没有明确的算法去计算张量的秩,因此计算CP分解的第一个问题是如何去选取rank-one张量的数量。大多数的程序选择好多个不同的值,直到其中一个表现比较好的时候。对于无噪声的理想数据,我们可以从依次选取,直到达到合适的时候。但是在给定R的情况下,我们也没有完美的程序去计算CP分解。另外根据低秩近似,我们也知道可以通过低秩的张量近似表示高秩张量,这在实践中会引发一些问题。
假设组件的数量已经确定,有很多方法去计算CP分解,我们关注ALS(交替最小二乘法)算法去计算CP分解。
在三维情况下:令,最终的计算目标是计算一个R个组件的CP分解能够最好的近似。
ALS的步骤是固定和去优化,然后固定和去优化,最后固定优化,持续迭代更新,直到收敛。
在和固定的情况下,我们可以得到:
其中。
优化的结果是:
这里的表示矩阵的伪逆。。又因为:,所以得到:
这个地方有一步没想清楚。
通过上面的变化,我们就不用计算一个JK×R的矩阵的伪逆了,只需要计算一个R×R的矩阵的逆即可。然后对标准化后可以得到。
N维张量CP分解的完整的步骤如上图所示。
ALS方法易于理解和扩展,但是需要花费比较多的迭代次数使它收敛。同时,它不能够保证一定能够收敛到全局最小值,仅保证目标函数不再减小。