首页 > 其他分享 >矩阵乘法的随机自规约 (平原秀一, 清水伸高, 2023)

矩阵乘法的随机自规约 (平原秀一, 清水伸高, 2023)

时间:2023-04-11 22:45:03浏览次数:39  
标签:秀一 geq log 2023 矩阵 伸高 算法 delta 乘法

随机自规约 (random self-reduction) 说的是这样一件事: 对于一个函数 \(f\), 如果我们有一个算法 \(A\) 能够高效地对于随机的输入以一定概率计算出正确的结果, 那么我们就能通过调用 \(A\) 在任意输入上都以一定概率计算出正确的结果.

比如限定有限域 \(\mathbb F\) 上的 \(n\) 阶矩阵乘法, 我们就可以得到如下事实: 如果有一个算法 \(M(A, B)\) 能够在 \(O(T(n))\) 时间内, 对于均匀随机的 \(A, B\), 以 \(1-\epsilon\) 的概率正确计算出 \(AB\), 那么就有算法 \(M'\) 在 \(O(T(n))\) 时间内, 对于任意矩阵 \(A, B\), 以 \(1-4\epsilon\) 的概率正确计算出 \(AB\).

构造其实很简单: 将 \(A\) 拆成 \(A_1+A_2\), \(B\) 拆成 \(B_1+B_2\), 那么每个 \((A_i, B_j)\) 都是均匀随机的, 我们计算 \(M(A_i, B_j)\) 的和即可得到 \(AB\). 根据 union bound, 错误率不超过 \(4\epsilon\).

但是这个转化就不够强大, 需要我们本来就有一个计算正确率很高的算法. 我们希望如果能有一个小一些的概率计算出正确答案, 就把它放大到一个有很大概率计算出正确答案的算法.

假设我们有算法 \(M\) 使得 \(\Pr[M(A,B) = AB] \geq \delta\), 能否得到一个很快的矩阵乘法算法呢? 今天我们来考虑 [HS23] 中提到的一个办法:

  • 虽然我们知道计算矩阵乘法比较慢, 但是验证矩阵乘法却是很快的, 我们取随机向量做乘法就得到了一个 \(1/|\mathbb F|\) 错误率的 \(O(n^2/k)\) 复杂度的检验一个 \((n/k) \times n \times (n/k)\) 的矩阵乘法的算法.
  • 我们先把 \(n\times n\) 的矩阵拆成 \(k^2\) 个 \((n/k)\times (n/k)\) 的块, 试图对每个块分别解决.
  • 一个 \(n\times n\) 的矩阵乘法可以嵌入 \(k\) 个互不干扰的 \((n/k) \times n \times (n/k)\) 计算问题, 而这是可以得到远比 \(\delta\) 好的概率的.

最后这一条观察在原文中被称作 直积定理 (direct product theorem). 直观上看, 就是我们想要考察 \(f\colon X\to Y\) 好不好计算, 但是我们只知道直积 \(f^k = (f(x_1), \dots, f(x_k))\) 有 \(\delta\) 的比例是好算的. 直观上说, 如果 \(f^k\) 有 \(\delta\) 的比例好计算, 那 \(f\) 应该有 \(\delta^{1/k}\) 的比例是好计算的.

我们尝试严格说明这一点, 首先考虑如下算法:

  • 算法 \(M'\) 输入为 \(x\).
  • 从 \([k]\) 中随机选取下标 \(i\).
  • 计算 \(M(x_1, \dots, x_k)\), 其中 \(x_i = x\), 其他 \(x_j\) 为均匀随机选取.
  • 输出计算结果的第 \(i\) 个.

显然, 这个算法的正确率还是只有 \(\delta\) 的保证, 但不同在于, "困难的 \(x\)" 应当是少得多的. 现在, 我们有

\[p(x) := \Pr[M'(x) \text{ correct}] = \frac 1 k \sum_{i=1}^k \Pr[M(\dots, x_i=x, \dots) \text{ correct}], \]

假设所有的 \(x\) 里有 \(\rho\) 的比例满足 \(p\geq \epsilon\), 另外 \(1-\rho\) 的比例 \(<\epsilon\), 那么我们有

\[\delta \leq \Pr[M \text{ correct}] \leq \rho^k + k\epsilon, \]

其中第一项是假设 \(p(x_1), \dots, p(x_k)\geq\epsilon\) 皆成立的那部分. 第二项是有任何一项 \(x_i\) 不满足的, 都被 \(p(x_i)\) 的求和占了 \(1/k\) 的贡献. 因此, 我们得到了

\[\rho \geq (\delta - k\epsilon)^{1/k}. \]

取 \(\epsilon = \delta / 2k\), 我们有

\[\Pr[p(x) \geq \delta / 2k] \geq (\delta/2)^{1/k}. \]

如此一来, 我们只需要重复执行 \(M'\) 这个算法 \(2c k/\delta\) 次, 就可以将这部分容易计算的 \(x\), 计算成功的概率放大到 \(\geq 1 - e^{-c}\). 总共成功的概率就有 \(\geq (1-e^{-c}) (\delta/2)^{1/k}\). 但是我们还得知道哪次算对了, 我们需要检测的时候重复实验 \(\Omega(c(\log(k/\delta) + \log(2/\delta) / k))\) 次, 从而达到 \((1 - e^{-\Omega(c)}) (\delta/2)^{1/k}\) 的总共成功概率, 也即

\[1 - e^{-\Omega(c)} - O\left(\frac{\log(2/\delta)}k \right) . \]

那么, 对于每个 \((n/k, n/k)\) 的块, 通过最初给的弱版规约, 我们就可以令 \(k = \Theta(\log(2/\delta)), c = \Theta(1)\), 使得成功概率 \(=0.99\), 此时调用了 \(\Theta\left(\frac{\log(1/\delta)}{\delta}\right)\) 次矩阵乘法, 调用了 \(\Theta\left(\frac{\log^2(1/\delta)}{\delta}\right)\) 次矩阵乘法的检验. 因此一个小块的复杂度是

\[O\left( \frac{\log(1/\delta)}{\delta} (T(n)+n^2)\right)=O\left( \frac{\log(1/\delta)}{\delta} T(n)\right). \]

既然有 \(0.99\) 的概率输出正确结果, 我们重复 \(\Omega( t\log k)\) 次实验取众数, Chernoff bound 就能给我们 \(k^{-\Omega(t)}\) 的错误率, 抵消总共 \(k^2\) 个子任务.

这样一来, 我们就有

\[O\left( \frac{\log(1/\delta)}{\delta} T(n)\cdot k^2 \log k\right) = O\left( \frac{\log^3(1/\delta) \log\log (1/\delta)}{\delta} T(n)\right) \]

的一个算法, 给定 \(\geq \delta(n)\) 的概率对随机输入计算矩阵乘法的算法, 给出一个对任意输入有 \(\geq 2/3\) 概率输出正确结果的矩阵乘法的算法.


想写这个东西, 另一个原因也是因为这学期学密码学的时候发现这个所谓的 "直积定理" 在密码学里就是从 weak one way function 到 strong one way function 的构造. 也就是说, 如果一个函数 \(f\) "有那么一点不好算", 那么 \(f^k\) 会 "非常不好算". 体现到具体的不等式上就是倒过来:

\[\delta \leq (\rho + k\epsilon)^k. \]

[HS23] 平原秀一, 清水伸高. Hardness Self-Amplification: Simplified, Optimized, and Unified.

标签:秀一,geq,log,2023,矩阵,伸高,算法,delta,乘法
From: https://www.cnblogs.com/Elegia/p/17307429.html

相关文章

  • java学习日记20230410-List
    List接口基本介绍List集合类中元素有序,即添加顺序和取出顺序一致,且可重复;List集合中的每隔元素都有其对应的顺序索引,即支持索引List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素JDKAPI中List接口的实现类有:ArrayListLinkedListVe......
  • NKCTF2023
    NKCTF2023ez_baby_apk是一个apk文件,用jadx打开。key是reversecarefully将e替换成3,iv是reversehavemagic的md5的值,然后使用DES加密,不过这个DES加密是自己写的其实他并不是真正的DES。就是名字一样而已可以看到是AES加base64加密。(密文是使用jadx的其他窗口来查找的,在代码窗口......
  • Javaweb-登录界面-filter配合案例-2023-04-11
    1、新建login.jsp登录界面响应的路径<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Login</title></head><body><h1>登录界面</h1><hr><form......
  • day42(2023.4.11)
    1.数据库基本概念2.数据库中,各个概念之间的关系3.数据库分类4.MySQL简介、特点、以及分类 5.下载MySQL   6.MySQL的安装与卸载 7.连接MySQL  8.Navicat工具由于MySQL自带的客户端工具(就是那个黑窗口),有点小小的简陋,也不怎么好看。我们可以......
  • 2023年4月11日(软件工程日报)
    深度学习进步之处由sigmid函数,转变为RELU函数,由于梯度下降原因,sigmid函数后期学习非常缓慢,但relu函数可以避免这种情况损失函数,用于衡量单一训练样例效果 逻辑回归中用到的损失函数是:......
  • 2023.4.11——软件工程日报
    所花时间(包括上课):8h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习。我了解到的知识点:1.学习了python,并了解了一些关于python的知识;2.了解了一些数据库的知识;......
  • 2023/4/11
    判断某年是否是闰年问题#include<iostream>usingnamespacestd;intmain(){ intyear;cout<<"Entertheyear:";cin>>year;boolisaleapyear;isaleapyear=((year%4==0&&year%100!=0)||(year%400==0));if(isaleapyear)cout<<year<<&quo......
  • 2023年4月11日周二
    计划重点熟悉你要做的项目,要真的想你做的,你要实现什么功能,然后是用了什么技术,怎么实现的,都弄清楚玩命看代码,学习设计到的相关技术,好久没学习了执行09点14分  跑代码14点11分  继续看代码记录已解决验证码是对的,在logincontroller中进行验证,是我愚蠢,没搞明白,第一......
  • 20230411
    鏡音リン:如果一个人对某件事,投入了较多的时间,并且习惯把自己和其他人做对比(包括以其他人为参照给自己设置预期目标),并且这个人不是断层领先的第一名,这个人的心态就可能会被这件事搞的越来越爆炸与其硬要做让自己不高兴的事情,去获得一些难以企及的成就,不如不去做,让自己远离那......
  • 2023.3月产品小报丨微信管理小程序功能上线;SDK 新增小程序收藏功能
    阳春三月,草长莺飞。在迎接春天到来的日子里,让我们看看FinClip又有哪些新的功能上线吧!产品方面的相关动向 营销模板上线,支持快速生成营销小程序在小程序开放平台,点击左侧的「小程序管理-营销模板」,可查询支持营销模板资源,您可以选择对应的模板,快速生成营销小程序,在不同应用进行分......