文章目录
- 1. 为什么要低秩矩阵
1. 为什么要低秩矩阵
我们的世界里面有很多数据,如果我们原封不动的发送数据,那么会导致数据量的增大,我们希望对数据进行压缩后再打包压缩,这样的话我们能够在带宽一定的情况下发送更多的数据,举例,假设我们有一个矩阵X,我们可以经过SVD奇异值分解得到如下:
- 假设矩阵 n × n n\times n n×n 矩阵的秩为k
X = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ k u k v k T + σ k + 1 u k + 1 v k + 1 T + ⋯ + σ n u n v n T \begin{equation} X=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_ku_kv_k^T+\sigma_{k+1}u_{k+1}v_{k+1}^T+\cdots+\sigma_nu_nv_n^T\end{equation} X=σ1u1v1T+σ2u2v2T+⋯+σkukvkT+σk+1uk+1vk+1T+⋯+σnunvnT - 我们知道矩阵X的奇异值关系如下:
σ 1 ≥ σ 2 ≥ ⋯ ≥ σ k ≥ σ k + 1 ≥ ⋯ ≥ σ n \begin{equation} \sigma_1\ge\sigma_2\ge\cdots\ge\sigma_k\ge\sigma_{k+1}\ge\cdots\ge\sigma_{n} \end{equation} σ1≥σ2≥⋯≥σk≥σk+1≥⋯≥σn - 如果矩阵X的秩为k,那么可得:
σ k + 1 = ⋯ = σ n = 0 \begin{equation} \sigma_{k+1}=\cdots=\sigma_{n}=0 \end{equation} σk+1=⋯=σn=0 - 在没有低秩压缩的情况下,我们发送数据大小 S 1 S_1 S1为,直接长=n宽=n相乘
S 1 = n ∗ n = n 2 \begin{equation} S_1=n*n=n^2 \end{equation} S1=n∗n=n2 - SVD奇异值分解后可得:
X = σ 1 u 1 v 1 T + σ 2 u 2 v 2 T + ⋯ + σ k u k v k T \begin{equation} X=\sigma_1u_1v_1^T+\sigma_2u_2v_2^T+\cdots+\sigma_ku_kv_k^T \end{equation} X=σ1u1v1T+σ2u2v2T+⋯+σkukvkT - 在低秩压缩的后下,我们发送数据大小 S 2 S_2 S2为,其中每个
S 2 = ( n + n ) ∗ k = 2 n k \begin{equation} S_2=(n+n)*k=2nk \end{equation} S2=(n+n)∗k=2nk