Tensor CP 分解视角下的矩阵乘法
对于两个
标准矩阵乘法的计算流程为:计算 8 个中间量
然后组合得到结果
Strassen 算法(1967年)利用巧妙的构造可以把运算减少为 7 次乘法(和几次额外的加减法),具体计算过程如下:首先计算 7 个中间量
然后组合得到结果
对大规模矩阵来说,可以通过对矩阵乘法不断分解为
理论上可以证明这里的七次乘法是最少的,不存在只需要六次乘法的同类型算法,因此在这个意义下 Strassen 算法已经达到最优。 但是,最新的研究已经可以把复杂度从
这里讨论的都是计算复杂度,对于小规模的矩阵,这种算法的优势可能并不明显。
可以从张量的视角来解释这里的矩阵乘法。 首先,把矩阵乘法写成如下形式
因此,可以将
其中
假设张量
那么
我们要求
例如标准矩阵乘法实际对应 8 个秩一张量所组成的 CP 分解(每一项分别对应前面的 8 个中间量)
Strassen 算法则对应 7 个秩一张量所组成的 CP 分解(每一项分别对应前面的 7 个中间量)
对于三阶张量的秩的计算都非常复杂,更不要说这种在特定格式下的 CP 分解的最优秩,不过通过前面的实践可以看出,对于这个特殊的三阶张量