Jekyll2026-03-08T23:40:48-05:00https://selfspin.github.io/feed.xmlselfspinPhD student, School of Data Science, Fudan UniversityJunzhe Jiang (姜俊哲)[email protected]神经网络中的优化器2024-12-30T00:00:00-06:002024-12-30T00:00:00-06:00https://selfspin.github.io/NN-Optimizer本文整理神经网络中的著名优化器的推导过程,包括自适应算法Adagrad、Adam,以及为了节省内存所提出的Adafactor、GaLore及相关优化器,以及近期关注度很高的在特征空间上作用的新型优化器Shampoo、SOAP以及Muon, 试图用简单的方式总结其联系。

Adagrad (matrix version)

考虑在线学习的设定,给定一系列凸函数 ${f_t}$, 希望生成序列 ${ x_t}$ 最小化如下的遗憾界

\[\begin{align*} R_T = \sum_{t=1}^T f_t(x_t) - \inf_x \sum_{t=1}^T f_t(x). \end{align*}\]

在线梯度下降算法产生序列 $x_{t+1} = x_t - \eta g_t$,其中 $g_t \in \partial f_t(x_t)$, 在最坏情况下该算法的遗憾界不能被改进。 Adagrad 算法 [1] 希望寻找到一个正定矩阵 $S_t$ 作为 preconditioner, 使得预处理后的梯度迭代 $x_{t+1} = x_t - \eta S_t^{-1} g_t$, 在某些场景下具有更好的保证。我们从算法的证明中得到最优的 $S_t$, 我们定义自适应范数 $\Vert \,\cdot\, \Vert_{S_t}$, 这使得下面分析中正好出现凸性对应的内积项,那么

\[\begin{align*} &\quad \Vert x_{t+1} - x^\ast \Vert_{S_{t}}^2 \\ &= \Vert x_{t} - \eta S_t^{-1} g_t - x^\ast \Vert_{S_{t}}^2 \\ &= \Vert x_t - x^\ast \Vert^2_{S_{t}} - \langle \eta g_t, x_t - x^\ast \rangle + \eta^2 \langle g_t, S_t^{-1} g_t \rangle \\ &\le \Vert x_t - x^\ast \Vert^2_{S_{t-1}} - \eta (f_t(x_t) -f_t(x^\ast)) + \eta^2 \langle g_t, S_t^{-1} g_t \rangle + \Vert x_t - x^\ast \Vert^2_{S_{t} - S_{t-1}} \\ &\le \Vert x_t - x^\ast \Vert^2_{S_{t-1}} - \eta (f_t(x_t) -f_t(x^\ast)) + \eta^2 \langle g_t, S_t^{-1} g_t \rangle + \Vert x_t - x^\ast \Vert^2 \lambda_{\max} (S_t - S_{t-1}) \\ &\le \Vert x_t - x^\ast \Vert^2_{S_{t-1}} - \eta (f_t(x_t) -f_t(x^\ast)) + \eta^2 \langle g_t, S_t^{-1} g_t \rangle + \Vert x_t - x^\ast \Vert^2 {\rm tr} (S_t - S_{t-1}). \end{align*}\]

对所有的 $t = 1,\cdots,T$ 进行求和,可以得到遗憾界的上界为

\[\begin{align*} R_T \le \eta^{-1} \Vert x_0 -x^\ast \Vert^2 ({\rm tr}(S_0) +1) + \eta \sum_{t=1}^T \langle g_t ,S_t^{-1} g_t \rangle. \end{align*}\]

那么我们知道对于每一个时间点 $t$ 来说最优的preconditioner就是使得上式的右端项最小的解,若 $S_t$ 取得无穷大则右端项应当趋近于0,但是无穷大的 $S$ 会导致数值计算问题,我们限制 $S$ 有限得约束下进行求解:

\[\begin{align*} S_t = \arg \min_{S} \sum_{t=1}^T \langle g_t, S^{-1} g_t \rangle , \quad {\rm s.t.} \quad S \succeq O, ~ {\rm tr}(S) \le c. \end{align*}\]

使用Largange乘子法求解该问题,令 $A = \sum_{t=1}^T g_t g_t^\top$, Largange函数为

\[\begin{align*} L(S,\theta, Z )= {\rm tr}(S^{-1} A) + \theta ({\rm tr}(S) -c) + tr(S Z). \end{align*}\]

一阶最优性条件为

\[\begin{align*} -S^{-1} A S^{-1} + \theta I + Z = O. \end{align*}\]

当 $S \succ O$ 此时根据互补松弛条件 $Z = O$, 那么上式可以推出 $S \propto A^{-1/2}$. 当 $S$ 奇异的时候可以通过取极限的方式得到,为了便于读者理解此处暂略。至此就推出了矩阵形式的Adagrad算法:

\[\begin{align*} x_{t+1} = x_t - \eta \left(\sum_{t=1}^T g_t g_t^\top \right)^{-1/2} g_t. \end{align*}\]

Adagrad (diagonal version), RMSProp, and Adam

在大规模训练场景中,矩阵形式的Adagrad 算法由于需要维护 $d \times d$ 的矩阵,实际难以接受。因此原文也提出了使用对角近似的方法$S_t = {\rm diag}(s_t)$. 通过完全相同的推导后,最优的 $s_t$ 可以通过求解如下的优化问题给出:

\[\begin{align*} s_t = \arg \min_{s} \sum_{t=1}^T \langle g_t , {\rm diag}(s)^{-1} g_t \rangle, \quad {\rm s.t.} \quad S \succeq 0, ~ \langle 1, s \rangle \le c. \end{align*}\]

类似上面的矩阵优化问题,可以通过Lagrange函数的KKT条件求解得到 $s_t \propto \sqrt{ \sum_{t=1}^T g_t \odot g_t }$. RMSProp 算法 [2] (出现在Hinton的slides中)的改动在于上述的二阶矩使用带权的滑动平均计算,而不是uniform的权重,这可以给更近的梯度赋予更高的权重,更好地利用近期的信息:

\[\begin{align*} v_t = \beta_2 v_{t-1} + (1- \beta_2) g_t \odot g_t. \end{align*}\]

而著名的Adam算法 [3] 进一步加入动量更新,相当于带动量的SGD与RMSProp进行结合:

\[\begin{align*} m_t = \beta_1 m_{t-1} + (1- \beta_1) g_t. \end{align*}\]

然后更新为 $x_{t+1} = x_t - \eta m_t / (\sqrt{v_t} + \epsilon)$.

Adafactor and Adalayer/Adam-Mini

对于很大规模的训练,Adam由于需要同时存储一阶矩以及二阶矩,会造成比SGD更大的存储开销,Adafactor 希望利用矩阵分解的方式降低二阶矩得存储开销. 在神经网络中的参数通常为矩阵, 因此 $V_t \in \mathbb{R}^{m \times n}$, Adafactor 算法[4] 希望计算一个近似的秩1逼近,得到列向量 $c_t \in \mathbb{R}^{m \times 1}$ 和行向量 $r_t \in \mathbb{R}^{1 \times n}$ 使得 $V_t \approx c_t r_t$. 最直接的想法是根据Eckart-Young 定理求出最大的左右奇异向量作为Frobenius范数意义下的最佳秩一逼近,但此时得到的估计不能保证是非负的我们无法计算其平方根。为此,Adafactor原文考虑如下的矩阵散度意义下的非负矩阵分解问题,

\[\begin{align*} (c_t,r_t) = \arg \min_{c,r} d(V_t, c r), \quad {\rm s.t.} \quad c \succeq 0, ~r \succeq 0, \end{align*}\]

其中矩阵散度定义为 $d(P,Q) = \sum_{i=1}^m \sum_{j=1}^n P_{ij} \log ({P_{ij}}/{Q_{ij}}) - P_{ij} +Q_{ij}$. 经过简单的计算,可以验证得到上述优化问题的 (一个)解为

\[\begin{align*} c_t = V_t 1_n, \quad r_t = 1_m^\top V_t / 1_m^\top V_t 1_n. \end{align*}\]

由上述分析启发,我们可以得到Adafactor算法对于矩阵梯度 $G_t = \nabla f(X_t)$的二阶矩更新:

\[\begin{align*} c_t &= \beta_2 c_{t-1} + (1- \beta_2) (G_t \odot G_t) 1_n, \\ r_t &= \beta_2 r_{t-1} + (1- \beta_2) 1_m^\top (G_t \odot G_t). \end{align*}\]

相当于仅在一行一列上面记录。近期工作(Adalayer [5] / Adam-mini [6]) 为了进一步节省内存,提出每个layer只存储一个参数 $s_t$ 的更粗的存储方法,直接记录每一块参数二阶矩的均值,更新为

\[\begin{align*} s_t = \beta_2 s_{t-1} + (1- \beta_2) {\rm mean} (G_t \odot G_t). \end{align*}\]

Shampoo2 and SOAP

Shampoo2 (这里2表示square的含义) 与原始的Shampoo [8] 稍有不同,且提出较晚 [7], 但有实验表明似乎有更优的效果,而且 [7] 从秩一逼近Adagrad的角度推出该算法,具有较强的理论基础,因此这里先选择作为介绍。

对于矩阵参数,Adagrad希望近似的preconditioner为 $S_t = \sum_{t=1}^T G_t \otimes G_t$, 这里使用kronecker积表示矩阵的外积。利用恒等式 $A \otimes B = {\rm vec}(B) {\rm vec}(A)^\top$,最佳秩一逼近问题可以表示为

\[\begin{align*} (L_t, R_t) = \arg \min_{L, R} \Vert S_t - R \otimes L \Vert_F^2. \end{align*}\]

根据Eckart-Young 定理该问题的显式解由最大的奇异向量给出。但是实际上 $S_t$ 作为一个 $mn \times mn$ 大小的矩阵,我们不可能对其进行奇异值分解。我们采用如下幂法近似计算:

\[\begin{align*} {\rm vec}(L_k) = S_t ~ {\rm vec}(R_{k-1}), \quad {\rm vec}(R_k) = S_t^\top ~ {\rm vec}(L_{k-1}). \end{align*}\]

注意到我们这里没有进行归一化,因此归一化因子可以被吸收在更新的步长 $\eta$ 中。带入 $S_t = \sum_{t=1}^T G_t \otimes G_t$ 并且利用恒等式 $(B \otimes A) {\rm vec}(X) = {\rm vec}(AXB^\top$), 有

\[\begin{align*} L_k = \sum_{t=1}^T G_t R_{k-1} G_t^\top, \quad R_k = \sum_{t=1}^T G_t^\top L_{k-1} G_t. \end{align*}\]

[7] 中声称初始化为 $(L_0,R_0) = (I,I)$ 的单步幂法 $k=1$ 就已经足够,而这可以推出Shampoo2的迭代,注意到上式中的平均仍然使用滑动的方法更新,得到

\[\begin{align*} L_t &= \beta_2 L_{t-1} + (1 - \beta_2) G_t G_t^\top, \\ R_t &= \beta_2 R_{t-1} + (1- \beta_2) G_t^\top G_t. \end{align*}\]

得到 $(L_t,R_t)$ 之后我们用其近似Adagrad更新:

\[\begin{align*} {\rm vec}(X_t) = {\rm vec}(X_{t-1}) - \eta (R_t \otimes L_t)^{-1/2} {\rm vec}(G_t). \end{align*}\]

同样利用恒等式 $(B \otimes A) {\rm vec}(X) = AXB^\top$ 得到矩阵形式的更新为

\[\begin{align*} X_t = X_{t-1} - \eta L_t^{-1/2} G_t R_t^{-1/2}. \end{align*}\]

这就从幂法的角度推导出了Shampoo2的迭代,其中使用的preconditioner为原Shampoo算法中的平方,[9] 从另一个角度理解上面的更新,证明Shampoo2完全等价于在特征空间上的 Adafactor 算法。定义 $U_t$ 和 $V_t$ 分别为 $L_t$ 以及 $R_t$对应的特征向量,然后定义旋转后的梯度 $G_t’ = U_t ^\top G_t V_t$. 现在考虑对于 $G_t’$ 作用 $\beta_2=0$ 的Adafactor算法,得到的分解后的行向量和列向量为

\[\begin{align*} c_t' = (G_t' \odot G_t') 1_n, \quad r_t' = 1_m^\top (G_t' \odot G_t'). \end{align*}\]

用分解后的二阶矩计算得到在特征空间内的更新方向, 然后再旋转回原空间进行更新,得到

\[\begin{align*} X_t = X_t - U_t (G_t' / \sqrt{c_t r_t}) V_t^\top. \end{align*}\]

上述过程就描述了 [9] 中所说的在特征空间上的Adafactor算法,下面我们验证该算法与Shampoo2的等价性。利用奇异值分解 $G_t = U_t \Sigma_t V_t^\top$, 可以得到

\[\begin{align*} &\quad L_t^{-1/2} G_t R_t^{-1/2} \\ &= (G_t G_t^\top)^{-1/2} G_t (G_t^\top G_t)^{-1/2} \\ &=(U_t \Sigma_t^{-1} U_t^\top) (U_t \Sigma_t V_t^\top) (V_t \Sigma_t^{-1} V_t^\top) = U_t \Sigma_t^{-1} V_t^\top. \end{align*}\]

容易知道旋转过后 $G_t’ = \Sigma_t$, 因此

\[\begin{align*} U_t (G_t' / \sqrt{c_t r_t}) V_t^\top = U_t \Sigma_t^{-1} V_t^\top. \end{align*}\]

上述推导十分简单,但却可以给我们一个启发,既然Shampoo2相当于在特征空间上使用Adafactor算法,是否可以考虑也在特征空间上使用Adam算法呢,这将导出最终的SOAP算法 [9]。事实上,上述想法并非原创,该想法在Galore算法中 [10] 事实上就已经出现,但两者的区别在于GaLore的目的是为了投影到特征空间后节省内存开销,而SOAP的目的是发明更高效的算法,因此GaLore中将动量也投影到对应的子空间内用Adam进行更新,而SOAP的动量并不进行投影。第二个区别是SOAP使用了Shampoo中相同的滑动平均计算 $(L_t,R_t)$ , 而GaLore更直接地直接投影到了当前的子空间上,同样处于节省内存的考量。SOAP的文章中也展现出了令人满意的实验结果。

Shampoo and Muon

从特征空间的角度出发,如果在特征空间上使用SignSGD算法,就可以自然推出Muon / Shampoo算法。Shampoo算法 [8] 的 $(L_t,R_t)$ 采用相同的方式更新,不同的是迭代为

\[\begin{align*} X_t = X_{t-1} - \eta L_t^{-1/4} G_t R_t^{-1/4}. \end{align*}\]

原文类似于Adagrad论文的推导,可以得到遗憾界,其大小依赖于 $L_T$ 以及 $R_T$. 在Shampoo的迭代中取 $\beta_2 = 0$, 并且利用奇异值分解 $G_t = U_t \Sigma_t V_t^\top$, 可以得到

\[\begin{align*} &\quad L_t^{-1/4} G_t R_t^{-1/4} \\ &= (G_t G_t^\top)^{-1/4} G_t (G_t^\top G_t)^{-1/4} \\ &=(U_t \Sigma_t^{-1/2} U_t^\top) (U_t \Sigma_t V_t^\top) (V_t \Sigma_t^{-1/2} V_t^\top) = U_t V_t^\top. \end{align*}\]

这相当于把奇异值都设置成1,对矩阵进行whitening操作。上式的另一个含义是取 $G_t$ 的最佳正交逼近,也即

\[\begin{align*} U_t V_t = \arg \min_{OO^\top = I } \Vert O - G_t \Vert_F^2. \end{align*}\]

Muon 算法 [11] 使用了一个不动点迭代算法求解上述的最佳正交逼近问题,实际表明这个迭代算法仅需要5步就可以取得了相较于Adam优化器显著更优的效果。更具体地,使用如下迭代

\[\begin{align*} \hat G_t^1 &= a G_t + b (G_t G_t^\top) G_t + c (G_t G_t^\top)^2 G_t \\ &= U_t (a \Sigma_t + b \Sigma_t^3 + c \Sigma_t^5 ) V_t^\top = U_t \phi(\Sigma_t) V_t^\top. \end{align*}\]

不断重复上述迭代 k次,得到

\[\begin{align*} \hat G_t^k = U_t \phi^k(\Sigma_t) V_t^\top. \end{align*}\]

选取系数 $(a,b,c)$ 使得 $\phi^k(x) \rightarrow 1$ 即可完成目的。

Reference

[1] Duchi, John, Elad Hazan, and Yoram Singer. “Adaptive subgradient methods for online learning and stochastic optimization.” JMLR, 2011 (extention of COLT, 2010).

[2] Hinton, Geoffrey, Nitish Srivastava, and Kevin Swersky. “Neural networks for machine learning lecture 6a overview of mini-batch gradient descent.” Technical report, 2012.

[3] Kingma, Diederik P., and Jimmy Ba. “Adam: A method for stochastic optimization.” In ICLR, 2015.

[4] Shazeer, Noam, and Mitchell Stern. “Adafactor: Adaptive learning rates with sublinear memory cost.” In ICML, 2018.

[5] Zhao, Rosie, Depen Morwani, David Brandfonbrener, Nikhil Vyas, and Sham M. Kakade. “Deconstructing What Makes a Good Optimizer for Autoregressive Language Models.” In ICLR, 2025.

[6] Zhang, Yushun, Congliang Chen, Ziniu Li, Tian Ding, Chenwei Wu, Diederik P. Kingma, Yinyu Ye, Zhi-Quan Luo, and Ruoyu Sun. “Adam-mini: Use fewer learning rates to gain more.” In ICLR, 2025.

[7] Morwani, Depen, Itai Shapira, Nikhil Vyas, Eran Malach, Sham Kakade, and Lucas Janson. “A New Perspective on Shampoo’s Preconditioner.” In ICLR, 2025.

[8] Gupta, Vineet, Tomer Koren, and Yoram Singer. “Shampoo: Preconditioned stochastic tensor optimization.” In ICML, 2018.

[9] Vyas, Nikhil, Depen Morwani, Rosie Zhao, Mujin Kwun, Itai Shapira, David Brandfonbrener, Lucas Janson, and Sham Kakade. “SOAP: Improving and stabilizing shampoo using adam.” In ICLR, 2025.

[10] Zhao, Jiawei, Zhenyu Zhang, Beidi Chen, Zhangyang Wang, Anima Anandkumar, and Yuandong Tian. “GaLore: Memory-Efficient LLM Training by Gradient Low-Rank Projection.” In ICML, 2024.

[11] https://github.com/KellerJordan/Muon.

]]>
Junzhe Jiang (姜俊哲)[email protected]
傅里叶变换的复杂度下界2024-12-13T00:00:00-06:002024-12-13T00:00:00-06:00https://selfspin.github.io/LB-FFT本文证明傅里叶变换的复杂度下界,至少需要 $\Omega(n \log n)$ 的时间。

关于傅里叶变换,之前写过一个简单的介绍:傅里叶变换.

傅里叶变换可以看成基于如下矩阵的一个线性变换:

\[\begin{align*} F = \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 \\ 1 & \omega & \omega^2 & \cdots & \omega^{n-1} \\ 1 & \omega^2 & \omega^4 & \cdots & \omega^{2(n-1)} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & \omega^{2(n-1)} & \omega^{3(n-1)} &\cdots & \omega^{(n-1)(n-1)} \end{bmatrix}. \end{align*}\]

上面矩阵给出的是未归一化的傅里叶变换,归一化的傅里叶变换对应于矩阵 $\hat F = \frac{1}{\sqrt{n}} F$.

未归一化的傅里叶变换

参考自 Jacques Morgenstern. Note on a lower bound on the linear complexity of the fast Fourier transform. J. ACM, 20(2):305–306, April 1973.

正如之前关于 矩阵乘法的复杂度下界 中的结论, 对于一个有界线性电路 $C$(其定义也可以参考之前的博文),满足

\[{\rm Size}(C) \ge \log_2 \vert \det[F] \vert, \quad \forall 1 \le r \le k.\]

由于 $FF^* = n I_n$ ,我们知道 $\det(F) = n^{n/2}$. 因此电路的大小至少为 $\Omega(n \log n)$.

归一化的傅里叶变换

参考自 Ailon, Nir. “A lower bound for fourier transform computation in a linear model over 2x2 unitary gates using matrix entropy.” arXiv preprint arXiv:1305.4745 (2013).

上面给出的证明仅仅适用于未归一化的傅里叶变换,我们下面给出一个适用于归一化的傅里叶变化的下界证明。该下界适用于2x2酉变换矩阵对应的电路。该计算模型分为 $m$ 层,记作为 $L_1,\cdots,L_m$. 每一层由一个 $n$ 维的向量表示,最后一层表示其输出。对于第i层,有两个下标 $k_i,l_i$, 以及一个2x2的酉矩阵 $A_i$。然后第i层的输出为

\[\begin{align*} \begin{pmatrix} L_i(k_i) \\ L_i(l_i) \end{pmatrix} = A_i \begin{pmatrix} L_{i-1}(k_i) \\ L_{i-1}(l_i) \end{pmatrix} \end{align*}\]

注意到一个2x2的酉矩阵的每个元素都是有界的,因此上述模型明显涵盖了有界线性模型。 下面我们证明,对于我们所定义的计算模型,模型的层数至少需要 $\Omega(n \log n)$.

定义如下的矩阵熵函数:

\[\begin{align*} \Phi(M) = - \sum_{i,j} \vert M_{ij} \vert ^2 \log \vert M_{ij} \vert^2. \end{align*}\]

我们知道输出的时候 $\Phi(I_n)=0$, 输出的结果满足 $\Phi(\hat F) = n \log_2 n$. 我们下面证明计算模型的每一层至多使得熵增加2。我们定义 $x,y$ 为第i层被选中的向量,然后经过酉矩阵变换得到的向量为 $x’,y’$, 那么根据定义,对于所有的 $j \in [n]$ 我们有

\[\begin{align*} \begin{pmatrix} x_j' \\ y_j' \end{pmatrix} = A_i \begin{pmatrix} x_j \\ y_j \end{pmatrix} \end{align*}\]

由于 $A_i$ 为酉矩阵,施加该变换不改变范数,因此对于所有的 $j \in [n]$ 有

\[\begin{align*} \vert x'_j \vert^2 + \vert y_j' \vert^2 = \vert x_j \vert^2 + \vert y_j \vert^2 := r_j. \end{align*}\]

并且如果成立 $\Vert x \Vert^2 = \Vert y \Vert^2 = 1$, 那么也有

\[\begin{align*} \Vert x \Vert^2 &= \vert a_{11} \vert^2 \Vert x \Vert^2 + \vert a_{12} \vert^2 \Vert y \Vert^2 = 1;\\ \Vert y \Vert^2 &= \vert a_{21} \vert^2 \Vert x \Vert^2 + \vert a_{22} \vert^2 \Vert y \Vert^2 = 1. \end{align*}\]

我们定义如下的向量,

\[\begin{align*} (\alpha, \beta) &= ( ( \vert x_1 \vert^2, \cdots, \vert x_n \vert^2), ( \vert y_1 \vert^2, \cdots, \vert y_n \vert^2) ); \\ (\alpha', \beta') &= ( ( \vert x_1' \vert^2, \cdots, \vert x_n' \vert^2), ( \vert y_1' \vert^2, \cdots, \vert y_n' \vert^2) ). \end{align*}\]

我们知道向量对 $(\alpha,\beta)$ 以及 $(\alpha’,\beta’)$ 都落在如下的集合中:

\[\begin{align*} \sum_{j=1}^n \alpha_j \le 1, \quad \sum_{j=1}^n \beta_j \le 1, \quad \alpha_j + \beta_j = r_j, ~~\forall j \in [n]. \end{align*}\]

而且有 $\sum_{j=1}^n r_j = 2$. 定义这样的集合为 $S$, 我们考虑矩阵熵函数的变化量

\[\begin{align*} \Phi(\alpha,\beta) = - \sum_{j=1}^n \alpha_j \log \alpha_j - \sum_{j=1}^n \beta_j \log \beta_j. \end{align*}\]

经过简单的计算容易得到

\[\begin{align*} \sup_{(\alpha,\beta) \in S} \Phi(\alpha, \beta) - \inf_{(\alpha,\beta) \in S} \Phi(\alpha, \beta) \le 2. \end{align*}\]

证毕。

]]>
Junzhe Jiang (姜俊哲)[email protected]
矩阵乘法的复杂度下界2024-12-12T00:00:00-06:002024-12-12T00:00:00-06:00https://selfspin.github.io/LB-Matrix-ProductPaper Reading: On the complexity of matrix product (STOC’02).

给定两个 $m \times m$ 大小的矩阵,我们希望计算其矩阵乘法,得到一个大小也为 $m \times m$ 的矩阵,本文给出了第一个超线性的下界,为 $\Omega(m^2 \log m)$.

首先定义我们的计算电路模型:电路 $C$ 是一个有向无环图,入度为0的结点表示输入结点,出度为0的结点表示输出结点,中间结点的入度为2,表示一个二元的乘法或者加法操作, 电路中每条边有一个标量表示一个传递值的时候的scale系数。电路的大小 (图的总边数)称为${\rm Size}(C)$ 表示整个算法的整体复杂度,电路的深度 (图中输入结点到输出结点的最长路) ${\rm Depth}(C)$ 表示整个算法在并行意义下的最大运行时间。

如果电路中每条边对应的系数绝对值都小于1,我们称该电路为有界电路。如果一个电路只由加法门构成,我们称该电路为线性电路。对于矩阵乘法,输入为矩阵X和矩阵Y,对应的输出关于X和Y都为线性的,我们称这样的算子为双线性算子。为了给出关于双线性算子的一个下界,我们需要如下关于双线性电路的定义:该电路由三层电路组成,第一层和第三层为线性电路,只由加法门构成,中间一层计算双线性形式,由乘法门构成。第一层 (后面也称为输入层)关于$X$ 和 $Y$ 分别计算一个线性映射,然后中间层计算 $X$ 和 $Y$ 对应的部分的乘法,最后一层(后面也称为输出层)对运算结果再做一个线性映射。

注意到任何计算双线性映射的算法都可以表示为如上的双线性电路,这是因为由于双线性性质,每个结点做了乘法之后就不可能再接着进行乘法,因此乘法操作只会出现在中间的操作层。

有界线性电路的复杂度下界

我们首先研究关于有界线性电路的下界。给定关于自变量 $z_1,\cdots,z_n$ 的 $k$ 的线性函数 $L_1,\cdots,L_k$. 每一个 $L_i$ 可以看作 $\mathbb{R}^d$ 空间中的一个向量,我们定义 ${\rm Vol}_r [L_1,\cdots,L_k]$ 为 ${L_1,\cdots,L_k }$ 中的 $r$ 个向量以及任意其他 $n-r$ 个单位向量所张成的最大体积。也即,

\[\begin{align*} {\rm Vol}_r[L_1,\cdots,L_k] = \max_{i_1,\cdots,i_r, e_{r+1}, \dots e_{n}} \vert \det [ L_{i_1},\cdots, L_{i_r}, e_1,\cdots, e_n] \vert. \end{align*}\]

类似地,对于$n \times n$ 的矩阵 $H$, 我们定义 ${\rm Vol}_r[H]$ 为其所有行 $L_1,\cdots,L_n$ 的r维体积:

\[\begin{align*} {\rm Vol}_r[H] = {\rm Vol}_r[L_1,\cdots,L_k]. \end{align*}\]

对于计算线性映射 $L_1,\cdots,L_k$ 的有界线性电路 $C$, 我们在本节中证明如下的不等式

\[{\rm Size}(C) \ge \log_2 ({\rm Vol}_r[L_1,\cdots,L_k]), \quad \forall 1 \le r \le k.\]

定义 $s = {\rm Size}(C)$. 由于电路 $C$ 为一个有向无环图,该电路的计算顺序实际上定义了一族线性函数 $f_1,\cdots,f_n, f_{n+1},\cdots, f_{n+s}$, 其中 $f_i= z_i$ ($1 \le i \le n$) 表示电路的输入。对于任意的 $i >0$ 我们知道存在 $i_1,i_2<i$ 以及绝对值小于1的系数 $c_1,c_2$ 使得 $f_i= c_1 f_{i_1} + c_2 f_{i_2}$. 根据行列式 (关于某一行)的线性性质,我们知道

\[\begin{align*} {\rm Vol}_r[f_1,\cdots,f_s,f_{s+1},\cdots,f_{s+i}] \le 2 {\rm Vol}_r[f_1,\cdots,f_s,f_{s+1},\cdots,f_{s+i-1}]. \end{align*}\]

由于 ${\rm Vol}_r[f_1,\cdots,f_n] = 1$ 我们知道

\[\begin{align*} {\rm Vol}_r[L_1,\cdots,L_k] \le {\rm Vol}_r[f_1,\cdots,f_s,f_{s+1},\cdots,f_{s+n}] \le 2^s. \end{align*}\]

我们定义如下的“刚性”:

\[\begin{align*} {\rm Rig}_r[L_1,\cdots,L_k] = \min_V \max_i {\rm dist}[L_i,V], \quad \forall 1 \le r \le n, \end{align*}\]

其中 $V$ 为 $r$ 维向量空间。类似地, 对于由行 $L_1,\cdots,L_n$ 所构成的矩阵 $H$, 我们可以定义 ${\rm Rig}_r[H] = {\rm Rig}_r[L_1,\cdots,L_n]$. 我们用下面的关系式连接我们所定义的体积和刚性:

\[\begin{align*} \log_2 ({\rm Vol}_r[L_1,\cdots,L_k]) \ge r \log_2({\rm Rig}_r[L_1,\cdots,L_k]). \end{align*}\]

不失一般性,我们假设 $r<k$ (否则显然有 ${\rm Rig}_r[L_1,\cdots,L_k] = 0$). 我们用如下的方式对 $L_1,\cdots,L_k$ 进行重排序:令 $L_1$ 为 ${ L_1,\cdots,L_k}$ 中最大化 ${\rm Vol}_1[L_i]$ 的向量 $L_i$, $L_2$ 为 ${ L_2,\cdots,L_k}$ 中最大化 ${\rm Vol}_1[L_1,L_i]$ 的向量 $L_i$, 以此反复进行下去…

定义每次的体积的相对变化量

\[\begin{align*} v_i = {\rm Vol}_r[L_1,\cdots,L_i] / {\rm Vol}_{i-1}[L_1,\cdots,L_{i-1}]. \end{align*}\]

根据我们的构造,实际上我们每次都在寻找距离原来所张成的空间最远的向量,那么根据体积公式,有

\[\begin{align*} v_{r+1} = \max_i {\rm dist}(L_i,V),\quad {\rm where}~~ V = {\rm Span}[L_1,\cdots,L_r]. \end{align*}\]

从上式右端容易看出,${v_i }_{i=1}^k$ 构成了一个单调递减数列。因此

\[\begin{align*} {\rm Vol}_r[L_1,\cdots,L_k] \ge {\rm Vol}_r[L_1,\cdots,L_r] = \prod_{i=1}^r v_i \ge (v_{r+1})^r \ge ({\rm Rig}_r[L_1,\cdots,L_k])^r. \end{align*}\]

上面所构造的工具可以用来给出关于线性映射的复杂度下界。我们希望将类似的技术推广到矩阵乘法上面,给定两个 $m \times m$ 的矩阵 $X,Y$, 对于给定的矩阵 $Y$, 我们实际上在计算一个关于 $X$ 的线性映射,该线性映射对应的矩阵为 $I \otimes Y$, 维度为 $m^2 \times m^2$. 根据行列式的性质 $\det[I \otimes Y] = (\det[Y])^m$. 根据我们提及的定义,我们知道,

\[\begin{align*} {\rm Vol}_{r \cdot m} [I \otimes Y] \ge ({\rm Vol}_r[Y])^m. \end{align*}\]

因此对于表达函数为 $I \otimes Y$ 的线性映射的有界线性电路,成立

\[{\rm Size}(C) \ge r \cdot m \cdot \log_2({\rm Rig}_r[Y]).\]

这是因为

\[{\rm Size}(C) \ge \log_2({\rm Vol}_{r \cdot m}[I \otimes Y]) \ge m \log_2({\rm Vol}_r[Y]) \ge r \cdot m \cdot \log_2({\rm Rig}_r[Y]).\]

矩阵乘法的复杂度下界

我们证明使得存在一个 $m \times m$ 的矩阵 $Y$ 使得一个计算 $X,Y$ 的矩阵乘法的双线性有界电路 $C$, 其大小不可能小于 $0.001 \cdot m^2 \log_2 m$. 否则, 我们知道对于双线性电路中输入层关于 $Y$ 的线性变换满足

\[\begin{align*} r \cdot m \cdot \log_2({\rm Rig}_{r \cdot m}[L_1,\cdots,L_k]) < 0.001 m^2 \log_2 m. \end{align*}\]

令 $r = m/10$, 得到

\[\begin{align*} {\rm Rig}_{r \cdot m} [L_1,\cdots, L_k] < m^{1/100}. \end{align*}\]

我们将在下一节给出引理,构造出矩阵 $Y$,满足如下的性质:

  1. 考虑关于自变量 $Y_{1,1},\cdots,Y_{m,m}$ 的 $k$ 个线性函数 $L_1,\cdots,L_k$, 对于足够大的 $m$ (也即只需要对于常数 $m_0$ 满足 $m > m_0$), 以及 $r=m/10$, 成立
\[\begin{align*} \vert L_i(Y_{1,1},\cdots,Y_{m,m}) \vert \le {\rm Rig}_{r \cdot m} [L_1,\cdots,L_k] \cdot (2 \ln k + 10)^{1/2}, \quad 1 \le i \le k. \end{align*}\]
  1. ${\rm Rig}_r[Y] \ge \sqrt{m/9}$.

利用上面的引理,我们知道电路的大小为 $\mathcal{O}(m^2 \log_2(m))$, 那么 $k$ 的大小也不能超过该电路的大小,因此对于足够大的 $m$, 成立

\[\begin{align*} \vert L_i(Y_{1,1},\cdots,Y_{m,m}) \vert \le m^{1/100} \cdot (2 \ln k + 10)^{1/2} < m^{1/99}. \end{align*}\]

对于电路 $C$, 如果固定矩阵 $Y$, 我们得到了关于矩阵 $X$ 的线性电路,但是矩阵 $Y$ 的元素并不都小于1,该线性电路并非有界线性电路。下面我们将其转换为一个有界线性电路, 注意到 $Y$ 的输入层经过了一次线性变换,每个元素绝对值小于 $m^{1/99}$, 我们将这些元素都除以 $m^{1/99}$ 这样与 $X$ 作用的时候都有有界线性算子。为了保持电路的输出值不变,我们需要在电路输出的时候,将输出的所有的 $m^2$ 个元素都乘上系数 $m^{1/99}$。 这可以通过 $\log_2(m^{1/99})$ 个有界的加法门来实现,这样子得到一个有界线性电路和原电路的输出值相同,其大小不超过 $(1/98) \cdot m^2 \log m$.

然而根据上一节中关于有界线性电路的复杂度下界,我们知道对于表达函数为 $I \otimes Y$ 的线性映射的有界线性电路,其大小必须大于等于

\[\begin{align*} r \cdot m \log_2( {\rm Rig}_r[Y]) \ge (1/20) \cdot m^2 \log_2(m/9). \end{align*}\]

这产生了矛盾。因此证明实现输出一个矩阵乘法的有界双线性电路,其大小至少为 $\Omega(m^2 \log m)$.

矩阵 $Y$ 的构造 (主引理的证明)

本节证明存在一个矩阵 $Y$ 满足引理所要求的条件。定义 $R = {\rm Rig}_{r \cdot m}[L_1,\cdot,L_k]$. 根据“刚性”的定义,我们知道存在 $r \cdot m$ 维的空间 $V$ 使得对于所有的 $1 \le i \le k$ 都有 ${\rm dist}(L_i,V) \le R$. 我们将没以恶搞向量 $L_i$ 都按照 $V$ 以及其正交补空间做分解, 得到 $L_i = L_i’’ + L_i’$, 其中 $L_i’’ \in V$, $L_i’ \in V^{\perp}$. 由于 $\Vert L_i’ \Vert = {\rm dist}(L_i,V)$ 我们知道对于 所有的 $1 \le i \le k$ 都有 $\Vert L_i’ \Vert \le R$.

下面我们构造矩阵 $Y$, 我们让矩阵 $W$ 的每个元素都满足独立同分布的标准正态分布,然后定义矩阵 $Y$ 为 $W$ 在空间 $V^{\perp}$ 上面的投影。那么我们知道每一个 $L_i(Y)$ 都服从均值为0,方差为 $\Vert L_i’ \Vert$ 的高斯分布。因此根据集中不等式的结果,我们知道对于所有的 $k$, 高概率 (以至少0.98的概率)成立 $\vert L_i(Y) \vert \le R (2 \ln k + 10)^{1/2}$. 这说明按该方法采样出的矩阵高概率满足主引理中的第一条性质。

下面我们证明第二条性质。我们首先证明,对于足够大的 $m$, 对于任意的 $m \times m$ 并且秩为 $r$ 的矩阵,以高概率 (以至少0.97的概率)成立 $\Vert Y - D \Vert \ge m/3$. 注意到我们使用的是矩阵的F-范数。为了证明该论断,我们考虑

\[\begin{align*} \Vert W -D \Vert^2 = \sum_{i=1}^m (\sigma_i(W) - \sigma_i(D))^2 \ge \sum_{i=r+1}^m (\sigma_i(W))^2 = \Vert W \Vert^2 - \sum_{i=1}^r (\sigma_i(W))^2. \end{align*}\]

根据经典的集中不等式的结论,我们知道 $\Vert W \Vert^2 = \Omega(m^2)$ 以及 $\sigma_1(W) = \mathcal{O}(\sqrt{m})$ 都以高概率成立,因此以高概率成立

\[\begin{align*} \Vert W -D \Vert^2 \ge \Vert W \Vert^2 - \sum_{i=1}^r (\sigma_i(W))^2 \ge \Vert W \Vert^2 - \sum_{i=1}^r (\sigma_1(W))^2= \Omega(m^2). \end{align*}\]

下面我们考虑 $\Vert W-Y \Vert^2$, 根据定义其为 $r m$ 个标准正态分布的平方和,同样根据经典的集中不等式的结果,以高概率成立 $\Vert W - Y \Vert = \mathcal{O}(\sqrt{r m})$. 最后根据距离的三角不等式,我们知道

\[\begin{align*} \Vert Y -D \Vert \ge \Vert W - D \Vert - \Vert W - Y \Vert > m/3, \end{align*}\]

其中 $1/3$ 仅仅代表某个常数因子。

那么如果 ${\rm Rig}_r[Y] < \sqrt{m / 9}$, 那么定义矩阵 $D$ 为 $Y$ 的所有行投影到空间 $V$ 后的行构成的矩阵,我们知道 $Y-D$ 的所有行的2-范数都小于 $\sqrt{m/9}$, 因此整个矩阵的F-范数满足 $\Vert Y- D \Vert^2 < m \cdot m/9 =(m/3)^2$, 这就导致了矛盾。

因此,主引理的第二条性质也应该以高概率满足。也就是说,根据我们所描述的采样方式,构造出的随机矩阵 $Y$ 以高概率满足引理的两条性质。这就说明了满足引理性质的矩阵 $Y$ 是一定存在的 (该事件发生的概率不可能为0),这就完成了证明。

]]>
Junzhe Jiang (姜俊哲)[email protected]
近似最短路算法2024-11-06T00:00:00-06:002024-11-06T00:00:00-06:00https://selfspin.github.io/APASP图上所有结点对最短路的近似算法。

对于一个图,我们令 $n$ 为其结点数,$m$ 为其边数。我们用 $\delta(u,v)$ 表示两个节点之间的最短距离。

注意到对于所有结点最短路问题,Floyd-Warshall 算法可以在 $O(n^3)$ 的时间内解决,本文我们考虑放宽我们的目标,只要求算法输出近似最短路,能否得到更快的算法。

之前关于精确最短路的算法详见 最短路算法.

Additive Approximation

首先我们考虑如下引理,可以通过Chernoff 界证明,此处我们只叙述该引理而略去其证明:

对于任意给定的阈值 $d$, 我们通过随机采样可以得到一个大小为 $\tilde O(n/ d)$ 的结点集合 $D$, 使得图中每个度数大于 $d$ 的结点都与 $D$ 中的一个结点相邻。令 $V_1$ 为度数大于 $n^{1/2}$ 的节点集合,我们通过采样取出集合 $D_1$. 令 $E_2$ 为至少有一个端点不在集合 $V_1$ 中的边的集合。我们考虑如下的算法:我们首先对于所有 $D_1$ 中的结点运行BFS,得到距离 $\delta(D_1 \times V)$, 然后在图 $G’ = (V, E_2 \cup \delta(D_1 \times V))$ 上对于每个结点运行Dijkstra算法 。

我们分析上述算法的复杂度。对 $D_1$ 中的所有结点运行BFS,由于边数 $m = O(n^2)$, 时间为 $\tilde O(n^{5/2})$ . 而图 $G’$ 的边数为 $\tilde O(n^{3/2})$, 因此对所有结点运行Dijkstra算法的时间也为 $\tilde O(n^{5/2})$.

下面分析算法的近似效果。考虑 $u \rightarrow v$ 的最短路径,如果最短路上的所有边的端点的度数都小于 $n^{1/2}$ ,那么最短路径中的所有边都属于集合 $E_2$ , 该最短路径一定可以被找到。我们考虑另外的情况,路径上存在结点其度数大于 $n^{1/2}$, 记最右端的这样子的结点为 $w$, 其与 $V_1$ 中的一个结点 $w’$ 相邻, 如下图所示

image-20241107184738723

此时我们可以知道算法找到的距离 $d(u,v)$ 一定满足

\[\begin{align*} d(u,v) &\le \delta(u,w') + \delta(w',w) + \delta(w,v) \\ &\le \delta(u,w) + 2 \delta(w,w') + \delta(w,v) \\ &= \delta(u,v) + 2. \end{align*}\]

这说明算法找到了加2意义下的近似最短路。

下面我们进一步给出一个改进的算法,通过增加一层改进算法。我们令 $V_1$ 为度数大于 $n^{2/3}$ 的结点集合, $V_2$ 为度数大于 $n^{1/3}$ 的结点集合。通过采样取大小为 $\tilde O(n^{1/3})$ 的集合 $D_1$, 使得 $V_1$ 中的每个结点至少个$D_1$ 中的某个结点相邻,同理取集合 $D_2$ 大小为 $\tilde O(n^{2/3})$. 类似于上一个算法,我们令 $E_2$ 为存在端点不属于集合 $V_1$ 的边集,大小为 $n^{5/3}$, 同理取边集 $E_3$ 大小为 $\tilde O(n^{4/3})$.

类似于第一个算法,我们先对于 $V_1$ 中所有的结点运行BFS,时间复杂度为 $\tilde O(n^{7/3})$. 然后在从 $D_2$ 的每个结点开始,限制在边集 $E_2$ 上运行BFS, 得到限制在 $E_2$ 上的距离 $\delta’(D_2 \times V)$, 这一步的时间复杂度同样为 $\tilde O(n^{7/3})$. 最后我们定义 $E’ $ 为连接 $V_2$ 中的所有结点到 $D_2$ 中的某个结点的边集,我们知道 $E’$ 的大小为 $\tilde O(n)$. 最终我们对于每个结点 $u$ 在图 $G(V , E_3 \times \delta(D_1 \times V) \times \delta’(D_2 \times {u}) \times E’)$ 中运行Dijkstra算法,复杂度为 $\tilde O(n^{7/3})$. 这里值得注意的是我们并不直接在 图 $G(V , E_3 \times \delta(D_1 \times V) \times \delta’(D_2 \times V))$ 中运行Dijkstra算法, 原因是后面一种做法尽管也可以保证输出一个近似解,但是复杂度不能满足我们的要求。

下面分析算法的输出结果。考虑 $u \rightarrow v$ 的最短路径,如果最短路上的所有边的端点的度数都小于 $n^{1/3}$ ,那么最短路径中的所有边都属于集合 $E_3$ , 该最短路径一定可以被找到. 如果存在一个结点度数大于 $n^{2/3}$, 记最右端的这样子的结点为 $w$, 其与 $ D_1$ 中的一个结点 $w’$ 相邻, 那么根据和上一个算法完全相同的分析,我们知道我们在 $\delta(D_1 \times V)$ 中运行的结果可以找到加2意义下的近似最短路。因此只剩下最后一种情况:最短路径上所有结点的度数都小于 $n^{2/3}$ , 但又存在一个结点度数大于 $n^{1/3}$, 记最右端的这样子的结点为 $w$, 其一定可以通过 $E’$ 中的某条边与 $D_2$ 中的一个结点 $w’$ 相邻,我们作出和之前完全一样的图示:

image-20241107192502543

我们知道 $u \rightarrow w$ 中的所有边都包含在 $E_2$ 中,因此在 $\delta’(D_2 \times { u})$ 上运行的最短路算法可以找到 $\delta(u,w)$.

根据我们的定义,我们知道边 $(w,w’)$ 在集合 $E’$ 中,而且 $w \rightarrow w’$ 中的所有边都包含在 $E_3$ 中。

因此我们所给出的距离估计 $d(u,v)$ 满足

\[\begin{align*} d(u,v) & \le \delta(u,w) + 2 \delta(w,w') + \delta(w,v) = \delta(u,v) + 2. \end{align*}\]

这就给出了加2意义下的近似最短路的 $\tilde O(n^{7/3})$ 的算法。

Multiplicative Approximation

上一节考虑的是无权图上加性意义下的近似最短路算法,本节我们考虑带权图(假设权重都为正数),此时加性进行不再具有意义,我们希望寻找乘性意义下的近似最短路算法。我们考虑如下算法:算法中,我们定义 $B(v)$ 为每个结点最近的 $n^{2/3}$ 个结点,同样地利用随机采样我们可以得到集合 $D$ 使得对于每一个结点 $v$ 都存在一个 $D$ 中的元素在 $B(v)$ 中,这样的集合 $D$ 的大小为 $\tilde O(n^{1/3})$. 注意到对每个结点运行使用截断的Dijkstra算法,我们可以在 $\tilde O(n^{7/3})$ 的时间寻找到所有的 $\delta(v \times B(v))$ ,其中比标准Dijkstra的区别在于,每次松驰操作并不考虑一个结点的所有 $n$ 条边,而是仅考虑其权重最小的前 $n^{2/3}$ 条边,由于我们只需要找到 $v$ 到 $B(v)$ 中结点的距离,容易验证上述算法的正确性。最后我们都所有 $D$ 中的结点运行完整的Dijkstra算法,复杂度同样为 $\tilde O(n^{7/3})$.

对于 $u \rightarrow v$ 的最短路,如果 $u$ 或者 $v$ 在集合 $D$ 中,显然第二阶段就已经找到了一条最短路。如果 $v \in B(u)$, 那么第一阶段也找到了一条最短路。只剩下 $v \notin B(u)$ 的情况,我们用下图来形象表明如何得到一个近似解

image-20241107194720059

证明其实已经在图中展现,根据 $D$ 的定义我们知道存在 $D$ 中的一个元素 $w$ 满足 $w \in B(u)$, 然后只要输出 $\delta(u,w) + \delta(w,v)$ 根据上图的分析就可以得到乘3意义下的近似最短路。

]]>
Junzhe Jiang (姜俊哲)[email protected]
图的动态连通性问题2024-10-23T00:00:00-05:002024-10-23T00:00:00-05:00https://selfspin.github.io/Dynamic-Connectivity图的动态连通性问题。笔者对相关论文的数据结构和算法进行整理,但是只能窥得作者的妙思的一二,很多精髓仍未掌握。但将整理的内容配图放在这里,希望一来加深自己的理解,二来希望对后续读到相关工作的人有所帮助。

Preliminaries

我们关注图上的动态连通性问题,图中可以会有结点和边的变动,我们希望动态地维护所有结点的连通性信息。

算法的基础是动态数结构,经典得例子包括Link-Cut Tree 或者欧拉回路树,这两种数据结构都可以在摊还意义下 $O(\log n)$ 的时间内支持三种操作,Link,Cut,以及Find-Root。也即将两棵树合并,分开,或者返回其树根,从而用来判断是否连通。

因此,这样就可以实现树上的动态连通性问题。

出于文章的完整性,我们对欧拉回路树进行简要的介绍。首先,树是没有欧拉回路的,但我们可以如下将一棵树的每条无向边变为两条有向边,然后再这样定义出的图上定义欧拉回路。

image-20241023140013616

借助欧拉回路我们可以简单地实现Link-Cut操作,比如对于Link操作,考虑如下两棵树以及对应的欧拉回路,我们希望沿着黄色的节点进行Link操作,

image-20241023140245797

我们首先将两棵树的欧拉回路沿着要进行Link操作的结点进行旋转,得到

image-20241023140432705

然后就可以直接进行Link操作得到合并后的树

image-20241023140503999

类似的,我们也可以简单地执行Cut操作,以下面为例

image-20241023140555079

进行切断操作后会得到三段欧拉回路

image-20241023140721250

我们进行重组后就可以得到切断后的欧拉回路如下,

image-20241023140819297

根据上面的描述,Link/Cut操作只需要 $O(1)$ 的时间,但每次需要进行区间的拆分/合并等操作,我们通过Splay Tree维护该操作,Splay Tree是一个自平衡的二叉查找树,由于二叉查找树中的一棵子树对应于一个区间,并且Splay Tree上的区间拆分/合并等操作都只需要 $O(\log n)$ 的时间,最终使用Splay Tree实现的欧拉回路树仅需要 $O(\log n)$ 的时间。

Dynamic Edge Connectivity

根据上一小节,我们知道树上的动态连通性问题非常好解决。但我们关注与图上的动态连通性问题,我们将从树上的连通性出发,设计解决图上的动态连通性的数据结构和算法。我们的想法是动态地维护一个生成森林,借此来回答连通性问题,如下图所示

image-20241023142044192

与树上的连通性问题不同,此时在删除一条边的时候,并不意味着两个部分不连通

image-20241023142139216

如上面这个例子,删除一条粉色的边,使得蓝色的两棵树互不连通,但是在图上他们仍然是连通的,我们需要寻找到一条置换边,置换掉被删除的边,如下图所示:

image-20241023142542506

问题的难点在于我们不希望暴力地枚举所有边,而希望一种聪明的算法,尽可能快速地找到像这样的置换边。

我们将介绍 STOC 1998 文章 “Poly-Logarithmic Deterministic Fully-Dynamic Graph Algorithms” 中所给出的算法。

对于一个图,我们建立一个分层图,其中包含 $O(\log n)$ 层,第 $i$ 层 结点数目不超过 $n / 2^i$.每层维护一些边集合,构成一张图,并且记录图上的一个随机森林,保证下层的森林严格包含上层的森林,并且最下层是原图的生成树,而且如果一条边在某一层是树边,在其下的所有层它也都将是树边,如下所示:

image-20241023161143629

添边时我们从下面最后一层添加,如果新增的边合并了两棵树,将其变成树边,反之设置为非树边。

删边的时候,如果删除的边将树分成两个部分,我们需要寻找到一个置换边,将树重新连接起来。

我们自顶向下寻找置换边,如果在第i层寻找到了某条置换边,那么我们将其插入i层下面的所有层作为置换边,就不用往下面搜索了如果搜寻不到置换边,我们进入下一层继续搜索,在第i层时,我们知道此时的树被分割成两部分,其中较小的部分至多只有 $n / 2^{i+1}$ 个结点,因此我们将该部分复制一份到上一层中,然后我们依次考虑较小的树的所有邻接的边,如果其连接了两个树,我们就找到了一条置换边,如果其没有连接两棵树,那么它一定被包含在原来的树内,我们可以将这条边挪到上一层中。

我们来看下面这个运行的例子,考虑在该分层图中以如下的方式删除一条边,

image-20241024101023197

这条边同时处于第0层和第1层,我们在第1层开始搜索置换边,首先第1层原来该边所连接的树被分成了两个部分,我们将较小的部分,也就是下图中所示的粉色的部分,复制一份到上一层中。

image-20241024101130801

我们在第1层中考虑粉色部分邻近的所有边,我们发现下图所示的蓝色的边,不为置换边,所以其一定在粉色的部分内,我们可以将蓝色的边整条边都挪到上一层中,

image-20241024101253140

挪动之后的结果如下图所示

image-20241024101448705

至此,我们已经在第1层的粉色部分中考虑了所有邻接的边,但是未能找到任何一条置换边,因此我们进入下一层继续搜索,最后我们找到了第1层的如下所示蓝色的边,可以重新连接,

image-20241024101603455

可以验证,上述的流程可以始终使得分层图保持其原来的性质。

下面我们简要分析算法的复杂度,首先我们采用欧拉回路树作为数据结构,Link / Cut 以及判断连通性等操作都可以在 $O(\log n)$ 摊还时间内完成,分析算法每个操作的复杂度,可以发现整体的代价为 $O(\log^2 n)$. 下面以最复杂的删边操作为例子,每一层删除的直接代价为 $O(\log n)$, 最坏情况下需要在所有层都删除,代价为 $O(\log^2 n)$. 删边后我们需要递归地寻找置换边,有可能导致复杂度变高的时候在于一直找不到置换边所以一直递归进行,但注意到这样的失败的总次数并不可能太多,这是因此每次失败都会将该边一次性地的层数增加。增加每条边都需要 $O(\log n)$ 的代价,但由于层数至多只有 $O(\log n)$ 层,每条边的层数的增加次数至多也只有这么多次,那么总体意义下该操作的摊还时间也为 $O(\log^2 n)$. 最终我们找到一条置换边,我们在第i层以及该层以下的所有层都将其设为新的树边,整体的代价为 $O(\log^2 n)$.

注意到上述的分析实际上省略了很多细节,包括如何使用欧拉回路树来实现整个算法流程中的所有操作。上述分析只为了大致展示其复杂度的来源,更详细的分析请参考原文。

Decremental Minimal Spanning Tree

上述的算法进行简单地改动,可以使得其可以支持decremental地最小生成树问题,其中decremental指的是动态图中只有删边操作,没有加边操作,当然存在一种归约可以用decremental的最小生成树问题来解决fully dynamic的最小生成树问题,其中fully dynamic 也即既支持删边操作又支持加边操作。

算法的改动很小,只需要在考虑所有邻接边的时候,以边的权重从小到大的顺序依次进行考虑即可,难点在于证明这样的算法确实动态地维护了一个最小生成树。我们想要证明,所描述的算法流程总会维持下面这个不变式:如果 $e$ 是一个环 $C$ 中权重最大的边,那么他在 $C$ 的所有边中的层数一定是最低的。

我们首先看为什么该不变式蕴含着算法的正确性。我们下面证明,这个不变式意味着对于任何的树边 $e$,其任何置换边中权重最小的一条边总是在最高层。因此我们的算法自顶向下搜寻置换边的流程可以保证动态地维护最小生成树。

我们配合着如下的例子证明上述论断,对于树边 $e$ , 我们考虑其两条置换边 $e_1,e_2$, 在下图中用蓝色的边表示,其权值分别为3 和 6

image-20241024105104327

这样这两条置换边可以构成两个环 $C_1,C_2$, 如下图所示。且我们知道在 $C_1,C_2$ 中置换边 $e_1,e_2$ 一定都是各自的环中最大的拿一条边,否则原来的树结构不为最小生成树,

image-20241024105252595

这样一来,考虑如下构成的环,假设 $e_1>e_2$ 那么我们知道 $e_1$ 一定是该环中最大的一条边,根据我们的不变式, $e_1$ 一定具有该环中最低的层数,其层数自然就低于$e_2$。 反过来说,权重最小的置换边一定位于最低层,因此我们可以自顶向下进行搜索。

image-20241024105413227

下面我们证明算法一直维护着上述的不变式。

假设 $e$ 是一个环 $C$ 中权重最大的边,将其删除并不会违背这个不变式,有可能违背这个不变式的情况在于其层数增加的时候。

首先树边不可能是环中权重最大的边,不然会违背我们正在维护最小生成树的性质。因此 $e$ 一定是非树边,当其从 第 $i$ 层被移动到第 $i+1$ 层的时候,它一定是第 $i$ 层里面邻接着我们想要连接的树 $T_v$ 中权重最小的边。根据我们的不变式,环 $C$ 中所有的边的层数至少都为 $i$. 我们又知道我们再考虑第i层的时候我们总是优先考虑权重小的边,而 $e$ 在环 $C$ 中权重最大,那么环 $C$ 中所有的与 $T_v$ 邻接的所有边的层数都至少为 $i+1$. 但实际上,环 $C$ 中所有的边都应该与 $T_v$ 邻接。 否则的话,环 $C$ 可以离开 $T_v$, 那么一定存在一条边 $f \ne e$, $f$ 说一条置换边,但是环 $C$ 中所有的与 $T_v$ 邻接的所有边的层数都至少为 $i+1$, 可是算法在第 i层寻找置换边的前提是第$i+1$ 层都找不到任何置换边了,矛盾。所以环 $C$ 中所有的边都应该与 $T_v$ 邻接, 而我们又已经推导出 环 $C$ 中所有的与 $T_v$ 邻接的所有边的层数都至少为 $i+1$。 这意味着环 $C$ 中所有的边的层数都至少为 $i+1$, 因此将边 $e$ 的层数增高并不会违背我们的不变式。

Dynamic Vertex Connectivity

上面我们考虑了边动态变化时的连通性问题,下面我们考虑另一个模型,此时结点动态变化下我们仍然考虑连通性问题。

相关文献为FOCS 2018的文章 ”Dynamic Connectivity: Connecting to Networks and Geometry“。

在这个模型中,给定一张图,每个结点都存在着“开”和“关”两个状态,我们不断更新结点的状态,希望维护连通性问题

如下图所示:

image-20241024111837158

首先我们知道由于每个节点至多连接了 $n$ 条边,因此一个naive的方法是看作边动态变化的连通性问题,但是这样至少需要 $\tilde O(n)$ 的时间,我们希望一个次线性时间的算法。下面我们介绍文章中所给出的数据结构和对应的算法。

image-20241024145521656

该算法维护一个二部图,如上图所示,结点集合分别为 $P,Q$. 其中集合 $P$ 只支持删除操作,集合 $Q$ 既支持删除又支持添加操作,每次我们把一个结点的状态设置为“开”,都将其放入集合 $Q$ 中。算法每隔一定轮次后就会重新启动,这样可以保证集合 $Q$ 中结点数目被控制住。更具体地,每隔 $m^{2/3}$ 步我们就重新启动,那么集合 $Q$ 的节点数目不超过 $m^{2/3}$. 对于集合 $P$ 中,我们用连通分量进行划分,每个连通分量统一缩成一个结点,我们分为高连通分量和低连通分量,高连通分量的定义为所有结点的度数和超过 $m^{1/3}$ 的连通分量,因此高连通分量的数目不超过 $m^{2/3}$, 如下图所示

image-20241024150149126

我们希望构造的二部图可以反映原图的连通性,如果 $Q$ 中一个结点和 $P$ 中一个高连通分量中的任意结点有边相连,我们就将这个连通分量和该结点之间连上一条边。但我们还需要考虑低连通分量,由于低连通分量很多,我们不希望也像高连通分量一样处理,我们的做法是:对于 $Q$ 中的两个结点,如果他们都和某一个低连通分量相连,那么我们给这两个结点之间连上一条边,注意到这种方式的两个结点之间可能会存在多重边。这样的边集合我们记作 $\Gamma$, 对于每条连接 $Q$ 中一个结点和 $P$ 中一个低连通分量的一条边,该连通分量至多连接着 $m^{1/3}$ 条边,所以我们知道 $\Gamma$ 的集合大小至多为 $m^{4/3}$.

每次重新启动,我们都需要建立这样大小的一个 $\Gamma$, 因此其预处理的时间复杂度为 $O(m^{4/3})$. 但由于我们只在 $m^{2/3}$ 次迭代后进行预处理,所以预处理的摊还意义下的复杂度为 $O(m^{2/3})$.

像这样这种方式,我们定义了一个图 $G^\ast$, 其结点个数为 $O(m^{2/3})$. 根据我们的连边方式,我们维护 $G^\ast$ 中的连通性信息,等价于维护原图的连通性信息。我们用下图解释:

image-20241024151121094

下面我们介绍如何维护这个等价图的连通性信息。

首先我们分析查询时间,对于高连通分量中的结点,我们只需要找到该分量对应相连的 $Q$ 中的结点,然后查询 $Q$ 中的连通性即可。

对于一个低连通分量中的结点,我们可以在 $Q$ 中枚举其所有相邻的边,查看哪一条边对应的结点状态为 “开”,然后我们就可以用 $Q$ 中的该结点表示原来结点。由于低连通分量的度数不超过 $m^{1/3}$, 这个枚举操作的复杂度为 $O(m^{1/3})$. 像这样,对于 $P$ 中的每个结点,如果这个连通分量不孤立,我们都可以将其用 $Q$ 中的某一个结点来表示其连通性,这样转化为 $Q$ 中的连通性,这可以直接进行查询。如果该连通分量是孤立的,我们只要判断另一个结点是否也在这个连通分量内即可,查询也是直接的。因此查询的复杂度不超过 $O(m^{1/3})$.

下面我们分析更新的复杂度。当我们更新集合 $Q$ 中的结点时,我们需要查询这个结点是否和高连通分量或者低连通分量构成一条边。第一类边可以通过枚举所有 $O(m^{2/3})$ 个高连通分量来实现,因此时间复杂度为 $O(m^{2/3})$. 对于第二类边,我们枚举 $Q$ 中的所有点,由于结点数不超过 $O(m^{2/3})$, 总体的时间复杂度也不超过 $O(m^{2/3})$.

下面我们考虑对 $P$ 中的结点的操作,由于 $P$ 只支持删除操作,我们只需要考虑把 $P$ 中的结点状态设置为“关”的情况。我们考虑该结点位于高连通分量还是低连通分量。对于一个低连通分量,我们需要重新计算它所生成的边,由于该连通分量至多只有 $m^{1/3}$ 条边,我们考虑它所连接的 $Q$ 中的两个结点,只需要 $m^{2/3}$ 的复杂度。

对于一个高连通分量,删除结点后整个连通分量可能不在连通,而构成了多个小的连通分量,我们需要对这些连通分量重新连边。如下面的例子所示,下面的左图表示原图,右图表示我们建立的等效图

image-20241024153106967

我们考虑删除一个黄色的结点,这样原来蓝色的一整个连通分量分成多个较小的连通分量。

image-20241024153144187

我们将原来连通分量记为 $\gamma$ , 并且用记号 $\gamma_1,\cdots,\gamma_l$ 表示其分成的小连通分量,其中按照连通分量的度数的排序,也就是说, 连通分量 $\gamma_1$ 的度数最高。我们可以将原来的连通分量继承给 $\gamma_1$, 然后其余的连通分量从 $\gamma_1$ 中划分出去,每次划分调用一次cut操作,代价为 $O(\log n)$, 因此整体所有划分的代价为 ${\rm deg}(\gamma_2) + \cdots + {\rm deg}(\gamma_l)$. 上述的每次划分我们都将一条边从原来的连通分量移动到了新的连通分量中,但我们只对较小的连通分量进行该移动操作,每次移动操作至少使得该分量的度数减半,因此一条边总共只可能被移动 $O(\log n)$ 次,因此对于所有的 $m$ 条边,每个阶段中移动的代价也至多为 $\tilde O(m)$, 这被预处理的代价吸收了。

还有一种情况是,在删除高连通分量中的一个结点的时候,产生的新的低连通分量。我们需要计算该新的低连通分量所产生的边集 $\Gamma$.此时需要 $O(m^{2/3})$ 的代价,但我们知道一个阶段中一个结点从高连通分量到低连通分量只能发生一次,而一个阶段中至多只有 $m^{2/3}$ 个操作,因此每个阶段中这部分的代价为 $O(m^{4/3})$, 这同样被预处理的时间吸收掉了。

总体来说,摊还意义下,上述算法更新结点的代价为 $\tilde O(m^{2/3})$, 而查询的时间为 $\tilde O(m^{1/3})$.

]]>
Junzhe Jiang (姜俊哲)[email protected]
Time-Space Lower Bound for Parity Learning2024-10-13T00:00:00-05:002024-10-13T00:00:00-05:00https://selfspin.github.io/LB-ParityPaper Reading: [FOCS 2015] A time-space lower bound for a large class of learning problems.

本文考虑Time-Space tradeoff的问题,本文最关键的结论是,考虑维度为 $n$ 的Parity learning 问题,如果内存不超过 $n^2$, 那么需要指数多的时间才能求解该问题。

Problem Setup

首先我们介绍Parity learning问题,这是理论计算机中的一个经典的问题,在密码学等领域也具有重要应用。

其问题定义如下,首先从随机采样一个secret $x \in {-1,1 }^n$ 隐藏起来。Leaner希望通过每次随机选取 $a \in { -1,1}^n$, 然后观测到 $b_i = \langle a, x \rangle_{\rm XOR}$,希望学习到正确的secret $x$. 其中 $b$ 表示 $a$ 与 x$ 中符号相同的元素的个数的奇偶性。

本文将问题建模成更general的一个矩阵学习问题,给定矩阵 $M :A \times X \rightarrow {-1,1 }$, 矩阵的大小为 $n \times n$, 其中矩阵的每个元素表示 $M(a,x) = \langle a, x\rangle_{\rm XOR}$. 可以证明对于这个矩阵成立 $\Vert M \Vert \le 2^{n/2}$.

推广的矩阵学习问题是,首先从集合 $X$ 中随机采样一个secret 隐藏起来。Leaner希望通过每次随机选取 $a \in A$, 然后观测到 $b = M(a,x)$, 希望学习到正确的secret $x$.

Branching Program

文章考虑内存有界的确定程序,这样的程序可以由如下的有向图建模。

图中的每个结点表示内存的状态,图表示状态的转移。该程序的长度为 $m$, 宽度为 $d$, 分为 $m+1$ 层。程序的长度表示时间的转移,宽度表示内存的多少。如果一个程序有 $r$ 个bit 运行时间为 $m$, 对应的长度为 $n$, 宽度为 $2^r$. 第0层只有一个结点,称为初始结点,表示程序的开始状态。图中出度为0的结点称为叶节点,最后一层均为叶结点,但是在程序的中间也可以由叶节点,叶结点表示程序的终止状态,每个叶结点都有一个输出 $\tilde x(v)$ 表示该结点输出对于secret的预测值。每个非叶结点都存在着 $2 \vert A \vert$ 条边,表示在该状态的时候如果给定样本 $(a,b) \in A \times {-1,1}$ 程序应该如何转移到下一个状态。如果随机选取 $x$ 后,每一步随机选取 $a$, 程序沿着定义的边不断进行转移直到叶结点,如果程序输出了正确的 $x$, 那么程序运行成功。

Main Theorem

文章的主要定理叙述如下。

令 $X,A$ 为有限集合。令 $n = \log \vert X \vert$. 矩阵 $M :A \times X \rightarrow {-1,1 }$ 满足 $\Vert M \Vert \le 2^{2 \gamma n}$.

存在常数 $c,\epsilon$, 使得任意长度为 $2^{\epsilon n}$ 宽度为 $2^{c n^2}$ 的程序对于上述矩阵问题输出正确答案的概率不超过 $O(2^{-\epsilon n})$.

注意到对于Parity leaning问题,我们有 $\gamma = \frac{1}{2}$.

Proof

下面沿着原论文的思路进行证明。

首先对于两个函数 $f:X \rightarrow \mathbb{R}$, $g:X \rightarrow \mathbb{R}$, 我们定义其内积 $\langle f, g \rangle = \mathbb{E}_x[ f(x) g(x) ]$.

由此内积我们也可以诱导出对应的范数。

Analysis of the Truncated Program

对于任意一个程序,我们定义 $P_{x \mid v}$ 为程序运行到结点$v$ 的时候 $x$ 的分布,这包含着程序对于secret的信息。

首先我们需要如下的一些定义:我们称结点 $v$ 是显著的,如果 $\Vert P_{x \mid v} \Vert > 2^{\delta n} 2^{-n}$, 其中 $\delta \in (0,1)$ 是一个待定参数.

我们定义一个程序的截断路径,其运行到一个显著结点就会停止。

当程序运行到一个非显著结点,如果对于secret $x$ 我们有 $P_{x \mid v}(x)> 2^{2 (\delta+\epsilon) } 2^{-n}$ , 那么我们也让程序终止,这种情况称为 $x \in {\rm Sig}(v)$

或者在一个非显著结点的时候,下一步采样 $a$, 但是 $\vert M P_{x \mid v}(a) \vert > 2^{(\delta+ \gamma + \epsilon)} 2^{-n}$, 那么我们也让程序终止, 该情况称为 $ a \in {\rm Bad}(v)$.

这样截断后的程序与原程序并不相同,但是我们可以证明,这与原程序不同的概率为 $O(2^{-\epsilon n})$, 因此我们可以仅分析截断后的程序。

第一种情况比较复杂,我们将其分析留在后面。我们先分析第二和第三种情况,

对于情况二,我们知道对于任意的非显著结点 $v$, 有

\[\begin{align*} \mathbb{E}_{x \sim P_{x \mid v}} [ P_{x \mid v} (x) ] = \sum_{x \in X} P_{x \mid v}(x)^2 = 2^n \mathbb{E} [ P_{x \mid v} (x)^2] \le 2^{2 \delta n} 2^{-n}. \end{align*}\]

那么根据Markov不等式,有

\[\begin{align*} P[ x \in {\rm Sig}(v) \mid v] = P( P_{x \mid v}(x) > 2^{2 \epsilon n } 2^{2 \delta n} 2^{-n} \mid v) \le 2^{-2 \epsilon n}. \end{align*}\]

假设程序运行前随机采样了 $x, a_1,\cdots,a_m$,这样决定了程序的路径为 $v_1,\cdots,v_m’$ $(m’ \le m)$ .

这样我们可以得到由于第二种情况程序终止的概率为

\[\begin{align*} P( \text{Terminate by Reason II} ) &\le \sum_{x , a_1,\cdots,a_m} P(x,a_1,\cdots,a_m) \sum_{i=1}^{m '} I( x \in {\rm Sig}(v_i) \mid v_i) \\ &\le \sum_{a_1,\cdots,a_m} P(a_1,\cdots,a_m) \sum_{i=1}^{m'} P( x \in {\rm Sig}(v_i) \mid v_i) \\ &\le \sum_{a_1,\cdots,a_m} P(a_1,\cdots,a_m) 2^{-\epsilon n } = 2^{-\epsilon n}, \end{align*}\]

其中第一个不等式用到了联合界,第二个不等式用到了 $m = 2^{\epsilon n}$。

类似地,由于$M$ 是一个有界矩阵,由于第三种情况终止的也可以被如下控制住, 对于任意的非显著结点 $v$,

\[\begin{align*} \mathbb{E}_a [ \vert M P_{x \mid v}(a) \vert^2] = \Vert M P_{x \mid v} \Vert^2 \le \Vert M \Vert^2 \Vert P_{x \mid v} \Vert^2 \le 2^{2 \gamma n} 2^{2 \delta n} 2^{-2n}. \end{align*}\]

根据Markov不等式,

\[\begin{align*} P(a \in {\rm Bad}(v) \mid v) &= P( \vert M P_{x \mid v} (a) \vert > 2^{(\delta+\gamma+\epsilon) n } 2^{-n} ) \le 2^{-2 \epsilon n }. \end{align*}\]

这样我们可以得到由于第二种情况程序终止的概率为

\[\begin{align*} P( \text{Terminate by Reason III} ) &\le \sum_{x , a_1,\cdots,a_m} P(x,a_1,\cdots,a_m) \sum_{i=1}^m I( a_i \in {\rm Sig}(v_i) \mid v_i) \\ &= \sum_x P(x) \sum_{i=1}^m P(a_i \in {\rm Sig}(v_i) \mid v_i, a_1,\cdots,a_{i-1}) \\ &\le \sum_{x , a_1,\cdots,a_m} P(x,a_1,\cdots,a_m) 2^{-\epsilon n } = 2^{-\epsilon n}, \end{align*}\]

其中第一个不等式用到了联合界,第二个不等式用到了 $m = 2^{\epsilon n}$。

假设我们也可以证明程序由于第一种情况终止的概率为 $O(2^{-\epsilon n})$, 那么我们知道以 $O(2^{-\epsilon n})$ 的概率截断后的程序和原程序完全相同。所以我们可以仅分析截断后的程序,但由于所有显著结点已经被截断,程序只可能终止于非显著结点,那么由于非显著结点不能包含足够的关于secret的信息,我们可以得到程序高概率情况下不能得到正确的输出。分析如下:

对于任意的非显著结点 $v$ , 根据其定义,有

\[\begin{align*} \mathbb{E}_x[P_{x \mid v} (x)^2] \le 2^{2 \delta n} 2^{-2 n }. \end{align*}\]

那么对于任意的 $x’ \in X$, 有

\[\begin{align*} P(x = x' \mid v) = P_{x \mid v}(x') \le \left(\sum_{x} P_{x \mid v} (x)^2 \right)^{1/2} \le 2^{\delta n} 2^{-n/2}. \end{align*}\]

假设程序运行前随机采样了 $x, a_1,\cdots,a_m$,这样决定了程序的路径为 $v_1,\cdots,v_m’$ $(m’ \le m)$.

这样一来程序得到准确输出的概率为

\[\begin{align*} P(\text{Program Sucess}) &= \sum_{x , a_1,\cdots,a_m} P(x,a_1,\cdots,a_m) I( x = \tilde{x}(v_{m'}) \mid v_{m'} ) \\ &= \sum_{a_1,\cdots,a_m} P(a_1,\cdots,a_m) P(x = \tilde x(v_{m'}) \mid v_{m'}) \\ &\le 2^{\delta n} 2^{-n/2} \le 2^{-\epsilon n}, \end{align*}\]

只需要选择 $\epsilon$ 相对于 $\delta$ 足够小。

在下一个部分,我们将证明本文的核心,也即 第一种情况终止的概率为 $O(2^{-\epsilon n})$。

这就完成了整篇文章的证明。

Upper Bound the Probability of Reaching a Significant Vertex is Low

在本小节里面,我们完全本文的最终的部分,也即证明程序运行到一个显著结点的概率为 $O(2^{-\epsilon n})$, 换句话说,如果运行的时间不够多,那么程序将不能学习到关于 secret $x$ 的信息。

给定程序,对于程序中的每一个显著的结点 $s$, 我们定义Progress函数

\[\begin{align*} Z_i &= \sum_{v \in L_i} P(v) \langle P_{x \mid v}, P_{x \mid s} \rangle^{\beta n } \\ Z_{i}' &= \sum_{e \in \Gamma_i} P(e) \langle P_{x \mid e}, P_{x \mid e} \rangle^{\beta n}. \end{align*}\]

其中 $L_i$ 表示程序的第 $i$ 层中所有结点的集合, $\Gamma_i$ 表示从第$i-1$ 层到第$i$ 层的所有边的集合。

我们希望证明 $Z_i$ 相对于 $Z_{i-1}$ 只会有很小的增量,我们将借助 $Z_i’$ 作为桥梁,首先我们证明 $Z_i \le Z_i’ $.

该结论可以直接由凸性得到, 令 $\Gamma_{\rm in}(v)$ 为 $\Gamma_i$ 中所有指向 $v$ 的边的集合,有

\[\begin{align*} \sum_{e \in \Gamma_{\rm in}(v)} P(e) = P(v). \end{align*}\]

根据全概率公式,有

\[\begin{align*} P_{x \mid v}(x') = \sum_{e \in \Gamma_{\rm in}(v)} \frac{P(e)}{P(v)} P_{x \mid e} (x') \end{align*}\]

根据progress的定义以及Jesen不等式,有

\[\begin{align*} \langle P_{x \mid v}, P_{x \mid s} \rangle^{\beta n} \le \sum_{e \in \Gamma_{\rm in}(v)} \frac{P(e)}{P(v)} \langle P_{x \mid e}, P_{x \mid s } \rangle^{\beta n} \end{align*}\]

对集合 $L_i$ 中的所有结点求和,得到

\[\begin{align*} Z_i \le \sum_{v \in L_i} P(v)\sum_{e \in \Gamma_{\rm in}(v)} \frac{P(e)}{P(v)} \langle P_{x \mid e}, P_{x \mid s } \rangle^{\beta n} = Z_i' \end{align*}\]

这就得到了 $Z_i \le Z_i’ $. 因此关键在于证明 $Z_i’$ 相对于 $Z_{i-1}$ 仅有很小的增量。

为了证明所需要的结论,我们需要研究条件分布 $P_{x \mid e}$ 以及 $P_{x \mid v}$ 之间的关系。

回顾我们定义 $P_{x \mid e}$ 为截断程序经过边 $e = (a,b)$ 的概率,我们知道如果程序不终止, 也即 $x’ \notin {\rm Sig}(v)$ 并且 $M (a,x’) = b$, 那么

\[\begin{align*} P_{x \mid e}(x') = P_{x \mid v} (x') c_e^{-1} \end{align*}\]

其中归一化常数 $c_e$ 为程序不终止的概率, 由于我们知道 $a \notin {\rm Bad}(v)$, 有

\[\begin{align*} P(M(a,x) \ne b \mid v) &\le \frac{1}{2} (1 + \vert P( M(a,x)=1 \mid v) - P( M(a,x)=-1 \mid v) \vert ) \\ &= \frac{1}{2} (1 + \vert M P_{x \mid v} (a) \vert) \\ &\le \frac{1}{2} (1+ 2^{(\delta+ \gamma+ \epsilon)n} 2^{-n}) \le \frac{1}{2} + 2^{-2 \epsilon n}, \end{align*}\]

最后一个不等式只需要选取 $\epsilon$ 在给定 $\delta,\gamma$ 的前提下足够小即可。

结合我们之前所证明的 $P(x \in {\rm Sig}(v) \mid v) \le 2^{-2\epsilon n}$ 的结论我们知道

\[\begin{align*} c_e \ge \frac{1}{2} - 2 \cdot 2^{-2\epsilon n}. \end{align*}\]

根据上述结论,我们可以控制范数 $\Vert P_{x \mid e} \Vert$,

只要选择 $n$ 足够大,成立 $c_e > \frac{1}{4}$, 由于截断路径中经过的节点都为非显著结点,那么

\[\begin{align*} \Vert P_{x \mid e} \Vert \le c_e^{-1} \Vert P_{x \mid} \Vert \le 4 \cdot 2^{\delta n} 2^{-n}. \end{align*}\]

下面作为简单的推论,令 $\Gamma_{\rm in}(s)$ 为指向结点 $s$ 的所有边的集合,我们知道

\[\begin{align*} \sum_{e \in \Gamma_{\rm in}(s)} P(e) = P(s). \end{align*}\]

根据全概率公式,有

\[\begin{align*} P_{x \mid s}(x') = \sum_{e \in \Gamma_{\rm in}(s)} \frac{P(e)}{P(s)} P_{x \mid e} (x') \end{align*}\]

根据Jesen不等式,有

\[\begin{align*} \Vert P_{x \mid s} \Vert^2 \le \sum_{e \in \Gamma_{\rm in}(v)} \frac{P(e)}{P(v)} \Vert P_{x \mid e} \Vert^2 \le (4 \cdot 2^{\delta n} 2^{-n})^2. \end{align*}\]

注意到上述分析实际上与之前证明的 $Z_i \le Z_i’ $ 完全类似。

有了上述的准备工作,我们开始证明 $Z_i’$ 相对于 $Z_{i-1}$ 仅有很小的增量。

令 $\Gamma_{\rm out}(v)$ 为从 $v$ 流出的所有边的集合,我们考虑如下量作为桥梁:

\[\begin{align*} Y_i' = \sum_{e \in \Gamma_{\rm out}(v)} \frac{P(e)}{P(v)} \langle P_{x \mid e} , P_{x \mid s} \rangle^{\beta n}. \end{align*}\]

我们定义

\[\begin{align*} f(x') = P_{x \mid v} (x') I( x' \notin {\rm Sig}(v)) P_{x \mid s} (x'). \end{align*}\]

对于上述定义,回顾 ${\rm Sig}(v)$ 的定义, 我们知道

\[\begin{align*} \Vert f \Vert \le 2^{2(\delta+ \epsilon) n} 2^{-n} \Vert P_{x \mid s} (x') \Vert \le 2^{(3 \delta+ 2 \epsilon) n + 2} 2^{-2n}. \end{align*}\]

那么我们知道

\[\begin{align*} P_{x \mid e}(x') = c_e^{-1} f(x') I(M(a,x') = b), \end{align*}\]

其中 $c_e$ 为之前计算过的归一化常数。那么,

\[\begin{align*} \langle P_{x \mid e}, P_{x \mid s} \rangle &= \mathbb{E}_{x' \in X} [P_{x \mid e}(x') P_{x \mid s} (x')] \\ &= c_{e}^{-1} 2^{-n} \sum_{x' : M(a,x') = b} f(x') \\ &= c_{e}^{-1} 2^{-n} \frac{F + b (Mf)(a) }{2} \\ &\le 2^{-n} (1+ 2^{-2 \epsilon n+2}) (F + \vert (Mf)(a) \vert), \end{align*}\]

其中我们定义 $F = \sum_{x’ \in X} f(x’)$. 下面我们分别考虑两种情况,

第一种情况是 $F \le 2^{-n}$, 此时选择足够大的 $n$ , 我们有

\[\begin{align*} \langle P_{x \mid e}, P_{x \mid s} \rangle \le 4 \cdot 2^{-2n}. \end{align*}\]

回顾 $Y_i’$ 的定义, 这意味着 $Y_i’ \le ( 2^{-2n +2})^{\beta n}$.

第二种情况的计算较为繁琐,此时 $F > 2^{-n}$. 我们根据原文定义如下的辅助函数

\[\begin{align*} t(a) = \left( \frac{(Mf)(a)}{F} \right)^2. \end{align*}\]

代入上述的定义和刚刚得到的不等式,有

\[\begin{align*} \langle P_{x \mid e}, P_{x \mid s} \rangle^{\beta n} &\le (2^{-n} F)^{\beta n } \left(1 + \sqrt{t(a)} \right)^{\beta n} (1+ 2^{-2 \epsilon n+2})^{\beta n} \\ &\le \langle P_{x \mid v}, P_{x \mid s} \rangle^{ \beta n} \left(1 + \sqrt{t(a)} \right)^{\beta n} (1+ 2^{-2 \epsilon n+2})^{\beta n} \end{align*}\]

考虑到 $Y_i’$ 的定义,求和后得到

\[\begin{align*} Y_i' \le \langle P_{x \mid v}, P_{x \mid s} \rangle^{ \beta n} \mathbb{E}_{a \in A} \left(1 + \sqrt{t(a)} \right)^{\beta n} (1+ 2^{-2 \epsilon n+2})^{\beta n} \end{align*}\]

上式最难分析的在于中间项。

根据得到的 $F$ , $f$ 的条件,我们首先知道中间项的期望并不太大:

\[\begin{align*} \mathbb{E}_{a \in A} [t(a)] \le \frac{ \Vert M \Vert^2 \Vert f \Vert^2}{F^2} \le 2^{- (2 - 2 \gamma - 6 \delta - 4 \epsilon) n + 4}. \end{align*}\]

我们自然希望使用Jesen不等式,我们研究函数 $g(t) = (1+\sqrt{t})^{\beta n}$, 可以发现其在区间 $0 \le t \le \frac{1}{(\beta n-2)^2}$ 上是凹函数,因此我们将求和分为两个部分, 其中第一个区间内的 $a$ 我们使用Jesen不等式,第二个区间内的 $a$ 我们采用Markov不等式,得到

\[\begin{align*} &\quad \mathbb{E}_{a \in A} \left(1 + \sqrt{t(a)} \right)^{\beta n} \\ &\le \left( 1 + \sqrt{\mathbb{E}_{a \in A} [t(a)]} \right)^{\beta n} + 2^{\beta n} P\left( t(a) > \frac{1}{(\beta n-2)^2} \right) \\ &\le \left( 1 + \frac{\beta n}{2}\mathbb{E}_{a \in A} [t(a)] \right) + 2^{\beta n} (\beta n -2)^2 \mathbb{E}_{a \in A} [t(a)] \end{align*}\]

代入关于 $\mathbb{E} [t(a)]$ 的上界,并且注意到我们可以选取 $\beta$ 足够小,之后 $\epsilon$ 足够小, $n$ 足够大,可以满足

\[\begin{align*} Y_i' &\le \langle P_{x \mid v}, P_{x \mid s} \rangle^{ \beta n} (1+ 2^{-2 \epsilon n+2})^{\beta n+1} \\ &\le \langle P_{x \mid v}, P_{x \mid s} \rangle^{ \beta n} (1+ 2^{-1.9 \epsilon n}) \end{align*}\]

综合我们关于 $F$ 的两种情况的讨论我们得到了,

\[\begin{align*} Y_i' \le \langle P_{x \mid v}, P_{x \mid s} \rangle^{ \beta n} (1+ 2^{-1.9 \epsilon n}) + ( 2^{-2n +2})^{\beta n} \end{align*}\]

通过 $Y_i’$ 为桥梁,我们可以得到

\[\begin{align*} Z_i' &= \sum_{e \in \Gamma_i} P(e) \langle P_{x \mid e}, P_{x \mid e} \rangle^{\beta n} \\ &= \sum_{v \in L_{i-1}} P(v) \sum_{e \in \Gamma_{\rm out}(v)} Y_i' \\ &\le \sum_{v \in L_{i-1}} P(v) \left( \langle P_{x \mid v}, P_{x \mid s} \rangle^{ \beta n} (1+ 2^{-1.9 \epsilon n}) + ( 2^{-2n +2})^{\beta n} \right) \\ &\le (1+ 2^{-1.9 \epsilon n}) Z_{i-1} + ( 2^{-2n +2})^{\beta n}. \end{align*}\]

求解上述的递归式,首先注意到按照定义 $Z_0 = (2^{-2n})^{\beta n}$. 根据等比数列求和公式,有

\[\begin{align*} Z_i \le \frac{(1 + 2^{-1.9\epsilon n)^{m}}}{2^{-1.9 \epsilon n}} ( 2^{-2n +2})^{\beta n} \le 2^{-2 \beta n^2} 2^{2 (\beta + \epsilon) n}. \end{align*}\]

最终我们证明上面意味着 $P(s)$ 的概率很小,假设 $s$ 在 第$i$ 层,那么根据progress的上界,我们知道

\[\begin{align*} Z_i \ge P(s) \langle P_{x \mid s} , P_{x \mid s} \rangle^{\beta n} \ge P(s) 2^{2 \delta \beta n^2} 2^{-2 \beta n^2}. \end{align*}\]

这也就是说对于任意一个显著的结点 $s$ ,其到达概率都很小:

\[\begin{align*} P(s) \le 2^{2 (\beta + \epsilon) n} 2^{-2 \delta \beta n^2}. \end{align*}\]

考虑到整个程序中至多只有 $2^{\epsilon n } 2^{c n^2}$ 个结点,我们对于所有的显著的结点取联合界,得到

\[\begin{align*} P (\text{Reach a significant vertex}) \le 2^{\epsilon n } 2^{c n^2} 2^{2 (\beta + \epsilon) n} 2^{-2 \delta \beta n^2} \end{align*}\]

观察上式的主项,我们发现只要 $c \le 2\delta \beta$ 条件满足,该概率一定小于 $2^{-\epsilon n}$.

这就证明了所需要的结论,从而完成本文主要定理的证明。

]]>
Junzhe Jiang (姜俊哲)[email protected]
随机零阶凸优化的复杂度下界2024-09-27T00:00:00-05:002024-09-27T00:00:00-05:00https://selfspin.github.io/LB-ZO-SCOPaper Reading: Optimal rates for zero-order convex optimization: the power of two function evaluations

在上一篇博文 随机凸优化的复杂度下界 中,我们讨论了随机一阶凸优化的复杂度下界,在本文中我们考虑一个更困难的情况。当我们只能得到函数值的估计,而不能得到导数信息,这也称为零阶优化。问题为

\[\begin{align*} \min_{x \in S} f(x). \end{align*}\]

Lower Bound Function

我们在 $d$ 维的超立方体中均匀选择 $v \in {-1,1 }^d$.

给定 $v$, 我们定义函数 $f_v(x) = \delta \langle x, v \rangle$, 其中参数 $\delta$ 的具体取值将在后面确定, 定义域为 $S = {x \mid \Vert x \Vert \le 1 }$.

我们定义随机函数 $F_V(x) = \langle x, V \rangle$, 其中 $V \sim \mathcal{N}(\delta v, \sigma^2 I_d)$.

我们考虑的算法迭代 $t$ 次,每次Oracle会产生一个随机向量 $V_t$, 算法给出至多两个点的询问 $(x_1^{(t)},x_2^{(t)})$, Oracle返回对应的随机函数的取值. 这里允许同时访问两个点的原因是实际中零阶优化器通常基于使用差分逼近导数的思想,因此需要同时访问两个点的函数值。

Analysis

对于一阶算法复杂度下界的分析框架,需要证明两件事情,

  • 一是所构造的函数集合满足一定的间隔
  • 二是计算我们构造的Oracle给出的互信息上界

当函数间隔足够大,一个优化算法将可以成功区分出不同的函数,但另一方面根据信息论,当互信息不够大时候不可能区分出真正的参数,那么上述分析就可以给出优化算法的下界。

很自然地我们想要套用上述的分析框架,但笔者曾经尝试过,似乎只能得到和一阶情况相同的下界,而无法得到关于维度的依赖。

下面我们采用原文的分析,直接使用Lecum不等式考虑每一个维度,而非Fano不等式。

选定真实参数 $v^\ast$, 记 $W_t = \begin{bmatrix} x_1^{(t)} \ x_1^{(t)} \end{bmatrix}$, 观测值为 $Y_t = W_t V_t$, 其中 $V_t \sim \mathcal{N}(\delta v^\ast, \sigma^2 I_d)$

算法的输出为 $(Y_1,\cdots,Y_T)$ 到一个输出值 $\hat X$ 的映射,作为最优点 $x^\ast$ 的估计,给定 $v \in \mathcal{V}$, 我们知道

\[\begin{align*} f_v(\hat X) - f_v^\ast &= \delta \left( \sqrt{d}- \sqrt{\sum_{j=1}^d\mathbb{I}[{\rm sign}(\hat X_j) = {\rm sign} (x^\ast_j)]} \right) \\ &\ge \frac{\delta}{2\sqrt{d}} \left(d - \sum_{j=1}^d\mathbb{I}[{\rm sign}(\hat X_j) = {\rm sign}(x^\ast_j)] \right) \\ &= \frac{\delta}{2\sqrt{d}}\sum_{j=1}^d \mathbb{I}[{\rm sign}(\hat X_j) \ne {\rm sign}(x^\ast_j)]. \end{align*}\]

因此我们可以得到Minimax Rate的下界为

\[\begin{align*} \inf_{\mathcal{A}} \sup_{v} \mathbb{E} [ f_v(\hat X) - f_v^\ast] \ge \inf_{\hat X} \frac{\delta}{2 \sqrt{d}} \sum_{j=1}^d\mathbb{P}({\rm sign}(\hat X_j) \ne {\rm sign}(x_j^\ast)) \end{align*}\]

其中概率的随机性来自于 $v$ 的随机性, 来自 $d$ 维超立方体上的均匀分布。

对于任意的算法 $\mathcal{A}$, 我们知道

\[\begin{align*} \mathbb{P}({\rm sign}(\hat X_j) \ne {\rm sign}(x_j^\ast)) &= \frac{1}{2} \mathbb{P}({\rm sign}(\hat X_j) = 1 \mid {\rm sign}(x_j^\ast) =-1) + \frac{1}{2} \mathbb{P}({\rm sign}(\hat X_j) =-1 \mid {\rm sign}(x_j^\ast)= 1) \\ &= \frac{1}{2} \mathbb{P}({\rm sign}(\hat X_j) = 1 \mid v_j^\ast =1) + \frac{1}{2} \mathbb{P}({\rm sign}(\hat X_j) =-1 \mid v_j^\ast= -1) \\ & \ge \frac{1}{2}\left( 1 - \Vert P_{+j} - P_{-j} \Vert_{TV} \right). \end{align*}\]

其中最后一步使用了Lecum不等式,由 TV距离的定义得到,其中 $P_{+j}$ 与 $P_{-j}$ 分别表示给定 $j$ 的前提下 $Y_1,\cdots,Y_T$ 的分布,给定了该分布后,我们知道$\hat X$ 为关于 $Y_1,\cdots,Y_T$ 的确定函数。将上式关于 $j$ 求和并且利用Cauchy-Schwartz不等式,有

\[\begin{align*} \sum_{j=1}^{d} \mathbb{P}({\rm sign}(\hat X_j) \ne {\rm sign}(x_j^\ast)) &\ge \frac{1}{2} \sum_{j=1}^{d} \left( 1 - \Vert P_{+j} - P_{-j} \Vert_{TV} \right) \\ &\ge \frac{d}{2} \left( 1 - \frac{1}{\sqrt{d}} \sqrt{\sum_{j=1}^d \Vert P_{+j} - P_{-j} \Vert_{TV}^2}\right) \end{align*}\]

下面我们处理TV距离这一项。利用Pinsker不等式以及KL距离的联合凸性,

\[\begin{align*} \Vert P_{+j} - P_{-j} \Vert_{TV}^2 &\le \frac{1}{2} {\rm KL}(P_{+j} \Vert P_{-j} ) \le \frac{1}{2 \vert \mathcal{V \vert}} \sum_{v \in \mathcal{V}} {\rm KL}(P_{v,+j} \Vert P_{v,-j} ) , \end{align*}\]

其中 $P_{v,+j}$ 与 $P_{v,-j}$ 分别表示给定 $v$ 下 $Y_t$ 的分布,但是第 $j$ 个分量的取值强制设置为给定值。

上面的 $P_{v,+j}$ 与 $P_{v,-j}$ 是关于所有观测 ${ Y_t}_{t=1}^T$ 的分布, 下面我们利用KL距离的链式法则,将其拆开

\[\begin{align*} &\quad {\rm KL}(P_{v,+j} \Vert P_{v,-j} ) \\ &= \sum_{t=1}^T {\rm KL} (P_{v,+j}^t \mid Y_1,\cdots,Y_{t-1} \Vert P_{v,-j}^t \mid Y_1, \cdots,Y_{t-1}), \end{align*}\]

其中 $P_{v,+j}^t \mid Y_1,\cdots,Y_{t-1}$ 为给定之前观测值的前提下并且$v^\ast =v$ 但强制第 $j$ 个分量为 $1$ 的前提下, 关于 $Y_t$ 的分布。

当算法确定的时候 , $W_t$ 是关于 $Y_{1},\cdots,Y_{t-1}$ 的确定性函数, 因此给定 $Y_{1},\cdots,Y_{t-1}$ 的前提下,$Y_t$的分布由 $V_t$ 唯一确定。根据 $V_t$ 的生成方式,我们可以得知 $Y_t \mid Y_1,\cdots, Y_{t-1} \sim \mathcal{N}(W_t \delta v , \sigma^2 W_tW_t^\top)$. 其中 $v$ 分别为 $v_+^\ast$ 或者 $v_{-}^\ast$, 分别表示 $v^\ast$ 但是强制第 $j$ 个分量为 $1/-1$ 的向量。

此时上述的KL距离可以根据正态分布的距离公式给出,

\[\begin{align*} &\quad {\rm KL} (P_{v,+j}^t \mid Y_1,\cdots,Y_{t-1} \Vert P_{v,-j}^t \mid Y_1, \cdots,Y_{t-1}) \\ &= \frac{\delta^2}{2 \sigma^2} (v_{+}^\ast - v_{-}^\ast)^\top W_t^\top (W_tW_t^\top)^{-1} W_t (v_{+}^\ast - v_{-}^\ast) \\ &\le \frac{2 \delta^2}{\sigma^2} W_{t,j}^\top (W_tW_t^\top)^{-1} W_{t,j}. \end{align*}\]

其中 $W_{t,j} = \begin{bmatrix} x_{1,j}^{(t)} \ x_{1,j}^{(t)} \end{bmatrix} $ 为 $2\times 1$ 的向量,上述用到了 $v_{+}^\ast$ 以及 $v_{-}^\ast$ 仅在第 $j$ 个分量有区别的性质。

对 $j$ 求和,得到

\[\begin{align*} &\quad \sum_{j=1}^d {\rm KL} (P_{v,+j}^t \mid Y_1,\cdots,Y_{t-1} \Vert P_{v,-j}^t \mid Y_1, \cdots,Y_{t-1}) \\ &\le \frac{2 \delta^2}{\sigma^2} \sum_{j=1}^d W_{t,j}^\top (W_tW_t^\top)^{-1} W_{t,j} \\ &= \frac{2 \delta^2}{\sigma^2} (W_tW_t^\top)^{-1} \sum_{j=1}^d W_{t,j} W_{t,j}^\top \\ &= \frac{2 \delta^2}{\sigma^2} (W_tW_t^\top)^{-1} W_t W_t^\top \\ &= \frac{2 \delta^2}{\sigma^2}. \end{align*}\]

在链式法则中将所有 $T$ 项加起来,我们得到最终的 KL距离,我们一步步代入之前的得到的不等式,有

\[\begin{align*} &\quad \inf_{\mathcal{A}} \sup_{v} \mathbb{E} [ f_v(\hat X) - f_v^\ast] \\ &\ge \frac{\sqrt{d} \delta}{4} \left( 1 - \frac{1}{\sqrt{d}} \sqrt{\sum_{j=1}^d \Vert P_{+j} - P_{-j} \Vert_{TV}^2}\right) \\ &\ge \frac{\sqrt{d} \delta}{4} \left( 1 - \frac{1}{\sqrt{d}} \sqrt{\frac{1}{2 \vert \mathcal{V \vert}}\sum_{j=1}^d \sum_{v \in \mathcal{V}} {\rm KL}(P_{v,+j} \Vert P_{v,-j} )}\right) \\ &\ge \frac{\sqrt{d} \delta}{4} \left( 1 - \frac{1}{\sqrt{d}} \sqrt{\frac{1}{2 \vert \mathcal{V \vert}}\sum_{j=1}^d \sum_{v \in \mathcal{V}} \sum_{t=1}^T {\rm KL} (P_{v,+j}^t \mid Y_1,\cdots,Y_{t-1} \Vert P_{v,-j}^t \mid Y_1, \cdots,Y_{t-1}) {\rm KL}(P_{v,+j} \Vert P_{v,-j} )}\right) \\ &\ge \frac{\sqrt{d} \delta}{4} \left( 1 - \frac{\delta \sqrt{T}}{\sigma \sqrt{d}}\right) \end{align*}\]

下面我们选择 $\sigma, \delta$ 的取值。回忆我们定义的随机函数 $F_V(x) = \langle x, V \rangle$, 其中 $V \sim \mathcal{N}(\delta v, \sigma^2 I_d)$.

我们希望随机函数满足Lipschitz性质,由于 $\Vert x \Vert \le 1$, 我们只需要

\[\begin{align*} \mathbb{E} \Vert V \Vert^2 = d (\delta^2 + \sigma^2) \le 1. \end{align*}\]

我们取 $ \delta = \epsilon / (4 \sqrt{d})$ 以及 $ \sigma = 1 / (4 \sqrt{d})$, 当 $\epsilon \le 1$ 的时候随机函数满足Lispchitz性质。

根据我们的下界不等式,对于任意的 $ \frac{\delta \sqrt{T}}{\sigma \sqrt{d}} \le \frac{1}{2}$ 我们都有下界

\[\begin{align*} \inf_{\mathcal{A}} \sup_{v} \mathbb{E} [ f_v(\hat X) - f_v^\ast] \ge \epsilon /2. \end{align*}\]

换句话说,想要优化该函数必须要有

\[\begin{align*} T \ge \frac{\sigma^2 d}{4 \delta^2} = \Omega \left( \frac{d}{\epsilon^2} \right). \end{align*}\]

注意到该上界可以被基于差分的零阶方法达到,因此这是一个紧的界。

]]>
Junzhe Jiang (姜俊哲)[email protected]
随机一阶凸优化的复杂度下界2024-09-26T00:00:00-05:002024-09-26T00:00:00-05:00https://selfspin.github.io/LB-SCOPaper Reading: Information-theoretic lower bounds on the oracle complexity of stochastic convex optimization

考虑随机凸优化问题

\[\begin{align*} \min_{x \in S} f(x). \end{align*}\]

其中我们可以得到 $\nabla f(x)$ 的一个随机梯度估计,称为Oracle,我们希望知道需要多少Oracle的调用次数可以求解该问题。本文从信息论的角度出发,将其看出一个从观测到参数估计的问题,利用信息论的基本工具证明问题的复杂度下界。

Tools from Information Theory

为了本文的完备性,介绍一些信息论中的工具。

首先是Fano不等式,下面是并非最原始的紧的版本,但对于本文的证明已经足够。

假设 $X$ 服从于 $\mathcal{X}$ 上的均匀分布,给定一个马尔科夫链 $X \rightarrow Y \rightarrow \hat X $, 成立

\[\mathbb{P}(\hat X \ne X) \ge 1 - \frac{I(X;Y) + \log 2}{\log \vert \mathcal{X} \vert}.\]

这说明如果 $X$ 和 $Y$ 的互信息不够大,将不能恢复出 $X$.

下一个工具是Gilbert-Varshamov bound,给出 $d$ 维超立方体中关于$l_1$ 距离的packing number。

对于 $d$ 维的超立方体 ${ 1,-1}^d$, 存在一个子集 $\mathcal{V}$, 其大小满足 $\vert \mathcal{V} \vert \ge \exp(d/8)$, 且该集合中的点都满足 $\Vert v - v’ \Vert_1 \ge d/2, \forall v,v’ \in \mathcal{V}$.

Lower Bound Constructions

Fano不等式给出了Testing 问题的下界,我们希望将优化问题转化为Testing问题。

我们定义函数的间隔为

\[\begin{align*} \rho(f,g) = \inf_{x \in S} [f(x) + g(x) - f^\ast - g^\ast]. \end{align*}\]

我们构造一个packing $\mathcal{V}$, 对于集合中的每一个点 $v$, 构造一个函数 $f_v$, 这个函数集的最小间隔定义为 $ \rho = \inf_{v,v’ \in \mathcal{V}} \rho (f_v(x), f_{v’}(x))$.

根据定义,如果一个点 $x$ 为某个函数 $f$ 的 $\rho/3$-近似最优点,那么它将不可能是这个函数集中的其他函数的近似最优解:

\[\begin{align*} \rho \le f(x) - f^\ast + g(x) - g^\ast \le \frac{\rho}{3} + g(x) - g^\ast. \end{align*}\]

我们取估计 $\hat v$ 为最优间隔最小的对应函数的下标,如果优化器能够有效地优化函数使得 $\mathbb{E}[f(x) - f^\ast] \le \rho /9$. 那么

\[\begin{align*} \mathbb{P} (\hat v \ne v) \le \mathbb{P}(f_{v}(x) - f_v^\ast \ge \rho/3) \le \frac{\mathbb{E}[f_v(x) - f_v^\ast]}{\rho /3} \le \frac{1}{3}. \end{align*}\]

这可以保证错误率不超过 $1/3$.

下面我们定义困难函数,形如

\[\begin{align*} f_v(x) = \frac{1}{d} \sum_{i=1}^d \left( \frac{1}{2} + v_i \delta \right) f^+(x_i) + \left( \frac{1}{2} - v_i \delta \right) f^-(x_i). \end{align*}\]

而随机梯度定义的方式是,首先从均匀分布中选择一个下标 $i$, 然后定义伯努利分布 $b_i \sim {\rm Ber}(0.5 + v_i \delta)$, 随机梯度为如下函数的梯度

\[\begin{align*} F_v(x) = b_i f^+(x_i) + (1-b_i) f^-(x_i). \end{align*}\]

当满足 $\vert \partial f^+(x_i) / \partial x_i \vert \le 1$ 以及 $\vert \partial f^-(x_i) / \partial x_i \vert \le 1$ 的时候我们知道所给的随机函数为Lipschitz函数。

假定我们想要估计的参数为 $v^\ast$, 我们观测到了 $T$ 个随机变量,我们定义为 $(Y_t,U_t)$, 其中 $U_t$ 表示选择的随机下标, $Y_t$ 表示选择的随机伯努利变量。我们知道给定随机变量 ${(U_t,Y_t) }_{t=1}^{T}$ 之后,利用所给的优化器,我们选择优化其产生的 $f_v(x_T) - f_v(x_0)$ 最小的小标 $v$ 作为对真实参数的估计,这是一个从随机变量到估计的确定性函数,根据Fano不等式我们知道预测的错误率取决于packing set $\mathcal{V}$ 的大小以及互信息 $I(U_t,Y_t;v^\ast)$. 我们的packing set的大小根据Gilbert-Varshamov bound选取最大的大小,下面我们关注于处理互信息这一项。

首先根据每次 $t$ 之间的独立性,我们知道最终的互信息为每一时间点的互信息的 $T$ 倍。

我们知道 $U_t$ 与 $v^\ast$ 相互独立

\[\begin{align*} I(U_t,Y_t; v^\ast) &= I( Y_t; v^\ast \mid U_t) \\ &= \mathbb{E}_U [ {\rm KL}( \mathbb{P}_{Y,v^\ast \mid U} \Vert \mathbb{P}_{Y \mid U} \times \mathbb{P}_{v^\ast \mid U} )] \\ &= \mathbb{E}_U [ {\rm KL} (\mathbb{P}_{Y\mid v^\ast, U}\Vert \mathbb{P}_{Y \mid U}) ] \\ &\le \frac{1}{\vert \mathcal{V} \vert} \sum_{v \in \mathcal{V}} \mathbb{E}_U [{\rm KL} (\mathbb{P}_{Y \mid v^\ast, U} \Vert \mathbb{P}_{Y \mid v, U})] \\ &\le {\rm KL} ({\rm Ber}(0.5 + \delta) \Vert {\rm Ber}(0.5- \delta) ) \\ &\le 16 \delta^2, \end{align*}\]

当 $\delta \le 1/4$ 时, 代入Fano不等式我们得到估计

\[\begin{align*} \mathbb{P} (\hat v \ne v) \ge 1 - \frac{16 T \delta^2 + \log 2}{d / 8}. \end{align*}\]

因此当成功分辨出真实参数 $v^\ast$ 所需要的观测数目 $T = \Omega (d / \delta^2)$.

Convex Case

基于上述的证明框架,我们给出凸优化的结果。定义

\[\begin{align*} f^+(x_i) = \vert x_i - 0.5 \vert, \quad f^-(x) = \vert x_i + 0.5 \vert. \end{align*}\]

对于这样所给出的函数 $f_v(x)$,容易验证其最小值点在 $x = 0.5 v$ 的时候取到,最小值为 $ 0.5 - \delta$.

我们选取 $S = { x \mid \Vert x \Vert_{\infty} \le 0.5 }$, 该集合 $S$ 包含了函数最小值。

下面计算分隔, 对于任意的 $v,v’ \in \mathcal{V}$,

\[\begin{align*} \rho(f_v, f_{v'}) & = \inf_{x \in S} [f(x) + g(x) - f^\ast - g^\ast] \\ &= \inf_{x \in S} \frac{1}{d} \sum_{i=1}^d \left( 1 + v_i \delta + v'_i \delta \right) f^+(x_i) + (1- v_i \delta -v_i' \delta) f^-(x_i) - (1- 2 \delta) \\ &= \inf_{x \in S} \frac{1}{d} \sum_{i: v_i \ne v_i'}^d (f^+(x_i) + f^-(x_i)) - (1- 2\delta) \\ &\ge \delta / 2. \end{align*}\]

这就是说,如果优化器找到 $\epsilon$-最优解所需要的观测下界为 $\Omega(d \epsilon^{-2})$.

上述得到的Rate是紧的,由于可以被随机梯度下降达到。

值得注意的是,上述函数即使得到高阶导数,由于得到的信息并没有变多,仍然不可能改进上述界。

Strongly Convex Case

对于强凸函数,我们只需要将一次函数改为如下的二次函数:

\[\begin{align*} f^+(x_i) = (x_i - 0.5)^2, \quad f^-(x) = (x_i + 0.5)^2. \end{align*}\]

对于这样所给出的函数 $f_v(x)$,容易验证其最小值点在 $x = \delta v$ 的时候取到,最小值为 $ 2 \delta (\delta+0.5) (\delta-0.5)$.

我们选取 $S = { x \mid \Vert x \Vert_{\infty} \le 0.5 }$, 该集合 $S$ 包含了函数最小值。

下面计算分隔, 对于任意的 $v,v’ \in \mathcal{V}$,

\[\begin{align*} \rho(f_v, f_{v'}) & = \inf_{x \in S} [f(x) + g(x) - f^\ast - g^\ast] \\ &= \inf_{x \in S} \frac{1}{d} \sum_{i=1}^d \left( 1 + v_i \delta + v'_i \delta \right) f^+(x_i) + (1- v_i \delta -v_i' \delta) f^-(x_i) - 2 (0.5 + \delta) (0.5- \delta) \\ &= \inf_{x \in S} \frac{1}{d} \sum_{i: v_i \ne v_i'}^d (f^+(x_i) + f^-(x_i)) - 2 (0.5 + \delta) (0.5- \delta) \\ &\ge \delta^2 / 2. \end{align*}\]

这就是说,如果优化器找到 $\epsilon$-最优解所需要的观测下界为 $\Omega(d \epsilon^{-1})$.

但值得注意的是,上述函数的强凸系数为 $1/d$, 因此如果笔者理解准确的话,似乎并不能直接claim上述的rate是紧的。

]]>
Junzhe Jiang (姜俊哲)[email protected]
DDIM (Denoising Diffusion Implicit Model)2024-06-02T00:00:00-05:002024-06-02T00:00:00-05:00https://selfspin.github.io/DDIMPaper Reading: Denoising diffusion implicit models.

文章介绍 Denoising Diffusion Implicit Model (DDIM),以图片生成为例。

给定一张图片 $x_0$, 采用一个加噪的过程将其变为Guassian分布:

\[\begin{align*} x_T \mid x_0 & \sim \mathcal{N}( \sqrt{\bar \alpha_T} x_0, (1- \bar \alpha_T) I ). \end{align*}\]

令 $\bar \alpha_T \rightarrow 0$ 我们知道 $x_T \mid x_0 \sim \mathcal{N}(0,I)$. 得到了一个纯噪声。

DDPM中,假设 $x_t $ 的分布只依赖于 $x_{t_1}$, 也即 $x_t \mid x_{t-1} \sim \mathcal{N}(\sqrt{\alpha_t} x_{t-1}, (1- \alpha_t) I)$, 其中$\alpha_t = \bar \alpha_t /\bar \alpha_{t-1}$.

在本文中,采用不同的后向分布模型,不假设如DDPM中一样的Markov性质,而是假设该分布可以依赖于 $x_0$

\[\begin{align*} x_{t-1} \mid x_t,x_0 = A x_0 + B x_t. \end{align*}\]

其中 $A,B$ 为待定参数。解出上述系数后可以得到

\[\begin{align*} x_{t-1} \mid x_t, x_0 = \sqrt{\bar \alpha_{t-1}} x_0 + \frac{\sqrt{1 - \bar \alpha_{t-1}}}{\sqrt{1- \bar \alpha_t}} \left( x_t - \sqrt{\bar \alpha_t} x_0 \right). \end{align*}\]

这样的后向过程是确定性的过程。

这样对应的存在一个前向过程, $p(x_t \mid x_{t-1},x_0)$, 该过程可以根据Bayes公式确定

\[\begin{align*} p(x_t \mid x_{t-1}, x_0) = \frac{p( x_{t-1} \mid x_t,x_0 ) p (x_t \mid x_0)}{p (x_{t-1} \mid x_0)}. \end{align*}\]

与DDPM中的模型不同,该前向过程不满足Markov性质。

但回顾DDPM中的训练目标,训练过程中只用到了给定 $x_0$ 的情况下 $x_t$ 为Guassian分布,因此DDIM和DDPM应当具有完全相同的训练过程,但是由于DDIM中对应的后向过程为确定性过程,因此给定一个训练好的DDPM给出对于 $x_0$ 的预测 $\hat x_0$, 可以直接得到 $x_{t-1}$ 的估计或者更近一步 $x_{t-n}$ 的估计,这可以根据迭代公式唯一确定下来。这就使得相应的推断过程可以实现跳步的功能,从而达到加速采样的效果

与DDPM相比,DDIM打破了模型原来前向模型的Markov假设,却找到了一个特定的后向模型,使得该后向过程为确定性过程,这就使得后向过程的进行并不需要每一步进行采样,从而允许进行跳步缩短了后向过程的时间。

]]>
Junzhe Jiang (姜俊哲)[email protected]
Adaptive Extra Gradient for Minimax Problems2024-04-15T00:00:00-05:002024-04-15T00:00:00-05:00https://selfspin.github.io/AdaEGPaper Reading: Adaptive extra-gradient methods for min-max optimization and games. [ICLR 21]

给定一个单调算子 $F$, 文章关注于求解如下的变分不等式问题

\[\begin{align*} \langle F(z^\ast), z - z^\ast \rangle \ge 0, \forall z \in Z. \end{align*}\]

考虑如下的外梯度法,

\[\begin{align*} z_{t+1/2} &= \Pi_Z (z_t - \gamma_t F(z_t)) \\ z_{t+1} &= \Pi_Z (z_t - \gamma_t F(z_{t+1/2})). \end{align*}\]

算法所输出的点为如下的加权平均

\[\begin{align*} \bar z_T = \frac{\sum_{t=1}^T \gamma_t z_{t+1/2}}{\sum_{t=1}^T \gamma_t}. \end{align*}\]

假设 $F$ 为 $L$-Lipschitz 算子。

文章给出一种自适应的步长选取方式,使得对于两种设定都可以在无需知道问题参数的前提同时达到最优的收敛率。

具体来说,步长选取如下

\[\begin{align*} \gamma_t = \frac{1}{\sqrt{1 + \sum_{s=1}^{t-1}} \delta_s^2 }, \quad \delta_s = \Vert F(z_{s+1/2}) - F(z_s) \Vert. \end{align*}\]

根据更新公式,以及投影的最有条件,我们知道对于任意的 $z \in Z$, 成立

\[\begin{align*} &\quad \langle z_{t+1} - z, \gamma_t F(z_{t+1/2}) \rangle \\ &\le \langle z- z_{t+1} ,z_{t+1} - z_t \rangle \\ &= \frac{1}{2} \Vert z_t -z \Vert^2 - \frac{1}{2} \Vert z_{t+1} - z \Vert^2 - \frac{1}{2} \Vert z_{t+1} - z_t \Vert^2. \end{align*}\]

同理,我们也有

\[\begin{align*} &\quad \langle z_{t+1/2} - z, \gamma_t F(z_t) \rangle \\ &\le \langle z- z_{t+1/2} , z_{t+1/2} - z_t \rangle \\ &= \frac{1}{2} \Vert z_t - z \Vert^2 - \frac{1}{2} \Vert z_{t+1/2} - z \Vert^2 - \frac{1}{2} \Vert z_{t+1/2} - z_t \Vert^2. \end{align*}\]

根据恒等式, 对于 $z^\ast$, 我们有

\[\begin{align*} &\quad \langle z_{t+1/2} - z^\ast , \gamma_t F(z_{t+1/2}) \rangle \\ &= \langle z_{t+1} - z^\ast, \gamma_t F(z_{t+1/2}) \rangle + \langle z_{t+1/2} - z_{t+1}, \gamma_t F(z_{t+1/2} ) \rangle \\ &= \langle z_{t+1} - z^\ast, \gamma_t F(z_{t+1/2}) \rangle + \langle z_{t+1/2} - z_{t+1}, \gamma_t F(z_t) \rangle + \gamma_t \langle z_{t+1/2} - z_{t+1} , F(z_{t+1/2}) - F(z_t) \rangle \\ &\le \frac{1}{2} \Vert z_t -z^\ast \Vert^2 - \frac{1}{2} \Vert z_{t+1} - z^\ast \Vert^2 - \frac{1}{2} \Vert z_{t+1} - z_t \Vert^2 \\ &\quad + \frac{1}{2} \Vert z_t - z_{t+1} \Vert^2 - \frac{1}{2} \Vert z_{t+1/2} - z_{t+1} \Vert^2 - \frac{1}{2} \Vert z_{t+1/2} - z_t \Vert^2 \\ &\quad + \frac{1}{2} \Vert z_{t+1/2} - z_{t+1} \Vert^2 + \frac{\gamma_t^2}{2 } \Vert F(z_{t+1/2} ) - F(z_t) \Vert^2 \\ &= \frac{1}{2} \Vert z_t -z^\ast \Vert^2 - \frac{1}{2} \Vert z_{t+1} - z^\ast \Vert^2 - \frac{1}{2} \Vert z_{t+1/2} - z_t \Vert^2 + \frac{\gamma_t^2}{2 } \Vert F(z_{t+1/2} ) - F(z_t) \Vert^2 \\ &\le \frac{1}{2} \Vert z_t -z^\ast \Vert^2 - \frac{1}{2} \Vert z_{t+1} - z^\ast \Vert^2 - \left(\frac{1}{2L^2} - \frac{\gamma_t^2}{2} \right)\Vert F(z_{t+1/2}) - F(z_t) \Vert^2 \end{align*}\]

移项后得到

\[\begin{align*} &\quad \frac{1}{4L^2} \Vert F(z_{t+1/2}) - F(z_t) \Vert^2 + \langle z_{t+1/2} - z^\ast , \gamma_t F(z_{t+1/2}) \rangle \\ &\le \frac{1}{2} \Vert z_t -z^\ast \Vert^2 - \frac{1}{2} \Vert z_{t+1} - z^\ast \Vert^2 - \left(\frac{1}{4L^2} - \frac{\gamma_t^2}{2} \right)\Vert F(z_{t+1/2}) - F(z_t) \Vert^2. \end{align*}\]

注意到 $\gamma_t$ 为单调递减有上界序列,其一定存在极限 $\gamma_{\infty}$.

我们证明该极限 $\gamma_{\infty} >0$, 否则,存在 $t_0$ 使得上式的最后一项为对于 $t \ge t_0$ 都为负,那么递推后得到

\[\begin{align*} +\infty &= \frac{1}{4L^2} \left(\frac{1}{\gamma_{\infty} } - 1 \right)\\ &=\frac{1}{4L^2} \sum_{t=1}^T \Vert F(z_{t+1/2}) - F(z_t) \Vert^2 \\ &\le \frac{1}{2} \Vert z_1 - z^\ast \Vert^2 + \left(\frac{\gamma_t^2}{2} -\frac{1}{4L^2} \right)\sum_{t=1}^{t_0} \Vert F(z_{t+1/2}) - F(z_t) \Vert^2 \\ &:= D \le +\infty. \end{align*}\]

这就导出了矛盾,这说明 $\gamma_t \ge \gamma_{\infty} >0$. 那么$ \sum_{t=1}^T \gamma_t = \Omega(T)$.

这可以说明如下的收敛率

\[\begin{align*} \frac{1}{\sum_{t=1}^T \gamma_t}\langle F( z_{t+1/2}) , z_{t+1/2} - z^\ast \rangle \le \frac{D}{\sum_{t=1}^T \gamma_t} = \mathcal{O}\left( \frac{1}{T} \right). \end{align*}\]]]>
Junzhe Jiang (姜俊哲)[email protected]