矩阵乘法: 从 Strassen 到 Coppersmith–Winograd
这篇文章主要是对 MIT6.890 的 Lec19~23 的理解, 试图概括在 Strassen 之后一直到 (小) Coppersmith–Winograd 的矩阵乘法用到了一些什么技术. 本文的终点是证明
张量描述
固定域
输入所有
线性算法与 rank
之前理解过转置原理的同学可能对这里更好理解.
我们希望完成这个双线性计算问题, 我们首先希望优化的是
当
然后每个输出是一个线性组合
注意到当我们考虑多项式
的时候, 上面的写法就可以写作
也就是说, 输入和输出的地位其实是相等的.
我们称可行的最小的
当
但这并不对所有问题都完全奏效, 比如对多项式乘法来说, 在无限域上我们可以先进行求值, 然后做
次乘法, 再插值回来. 在 "bilinear complexity" 意义下, 这个算法有 , 但它粗暴地忽略了求值插值的所需时间!
我们记
容易知道,
矩阵乘法
对于
我们今后记这个张量为
我们的第一个观察是
第二个观察就是
现在, 我们可以来定义什么是
接下来, 我们声称: 对任意
从这一步我们也能预感到矩阵乘法接下来的算法为什么现实中都不 work 了: 因为他们需要的
Strassen 和 Pan 的构造
最初 Strassen 的构造无非指出,
然后, Pan (1980) 构造出了
到目前为止, 远超我们理解的奇迹还没有出现.
Border rank
事情的转机来源于一个奇怪的现象. 我们考虑一些可以做逼近的域, 让一系列秩不超过
我们可以用
来逼近它, 但这个二次型本身的秩是
我们考虑多项式环
显然按照这个定义, 我们有
第一个观察是,
接下来的观察就更为有趣了, 我们不难验证:
这是因为, 首先我们将它划归到方阵, 也即
我们有
接下来要用到我们前面的观察了, 我们将它再张量
也就有
因此, 我们不需要控制 rank, 而是只要能够控制 border rank, 我们就可以得到更快的矩阵乘法了.
Bini, Capovani, Romani (1979) 得到了
Schönhage -定理
接下来, 矩阵乘法迎来了指数上最大的单次改进, 这来源于 Schönhage 的观察: 我们未必要直接控制某一个矩阵乘法的 border rank, 而是控制一些几个并行的矩阵乘法的 border rank.
Schönhage
-定理: 对于 以及 令
是下述等式 的解, 我们有
.
这个定理的证明涉及一些琐碎的计算, 这里我们主要展示其主要思想.
将上面的这个张量记为
再考虑
它总共出现了
记三部分乘积分别为
这是同时计算常数
当
所以
基于一些构造, Schönhage (1981) 在此之上确定了
Coppersmith–Winograd 张量
先前的构造都是考虑了一些矩阵乘法问题的直和的 border rank 被如何控制. Coppersmith 和 Winograd 对这一想法做出了如下变通:
- 我们先将一些矩阵乘法问题求和成为一个张量, 但它们未必是直和的形式.
- 我们将这个张量做很高次的张量积, 然后将一些变量 "置零" 来去除一些纠缠在一起的项, 然后我们数一数剩下来的东西, 发现完全分解成很多个矩阵乘法问题的直和.
- 应用 Schönhage
-定理来控制 .
我们这里主要讨论小 CW 张量
可以验证,
对于
现在我们考虑
如果
我们记
首先我们注意到:
如果我们可以对某个常数
构造出一族 就可以给出控制
这是因为我们考虑使用 Schönhage
的解是
所以有
接下来就是考虑如何构造出一组合适的选取方法了.
的构造
对于这个
- 我们首先通过一个随机的方式将所有的指标
映到一些桶里 (有的被清零), 我们保证不同的桶之间两个点两两独立. - 接下来, 我们对每个桶内部进行一些处理, 使得每个桶内只保留一些独立的点.
第 1 步: 哈希与极值组合
首先让我们来构造一族哈希函数. 选取一个充分大的质数
由于
显然, 由于这三个函数都是仿射变换, 所以
之所以构造这样的哈希函数, 是因为极值组合学中有如下构造:
(Behrend, 1946) 对于
, 存在 的子集 中不存在非平凡的长为 的等差数列, 同时
我们取
那么接下来, 我们令
由于
因此对每一个
接下来让我们先算一下我们还剩下多少. 注意我们
由于
因此
第 2 步
接下来我们考虑通过一个简单的策略来实现 "清零".
我们随便按照某个顺序考虑一个桶里的所有元素
我们考虑两个元素如果不独立就连一条边, 当我们进行一次清零操作的时候, 假设这个坐标此时对应了
那么边数的期望就比较好求了. 容易验证, 当
通过一些简单的计数我们可以知道, 一开始
最后我们利用选取的
根据 Stirling 近似, 我们有
因此
结合前面的结果, 我们有
的构造, 以及剩下的?
我们还需要知道
有
这里有一个尚未解决的问题, 就是是否有
更多?
这里其实并没有介绍 Coppersmith–Winograd 的最后结果 (
据说目前最优的结果 (
此外, Coppersmith–Winograd 的方法似乎不是唯一的路径, Cohn, Kleinberg, Szegedy 和 Umans (2003) 通过表示论另辟蹊径, 达到了和 CW 很接近的结果. 我之后有时间的话可能会尝试解读一下.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)