md_files/科研/颜佳佳论文.md

131 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 颜佳佳论文
### 网络结构优化
**直接SNMF分解无优化**
- 输入矩阵:原始动态网络邻接矩阵 $A$(可能稠密或高秩)
- 处理流程:
- 直接对称非负矩阵分解:$A \approx UU^T$
- 通过迭代调整$U$和旋转矩阵$Q$逼近目标
- 存在问题:
- 高秩矩阵需要保留更多特征值($\kappa$较大)
- 非稀疏矩阵计算效率低
**先优化再SNMF论文方法**
- 优化阶段ADMM
- 目标函数:$\min_{A_{\text{opt}}} (1-\alpha)\|A_{\text{opt}}\|_* + \alpha\|A_{\text{opt}}\|_1$
- 输出优化矩阵$A_{\text{opt}}$
- SNMF阶段
- 输入变为优化后的$A_{\text{opt}}$
- 保持相同分解流程但效率更高
#### 网络优化中的邻接矩阵重构问题建模与优化
**可行解集合定义公式4-4**
$$
\Omega = \left\{ A \middle| A^T = A,\, A \odot P = A_{\text{pre}} \odot P,\, A \odot A_{\max}' = 0 \right\}
$$
- **$A^T = A$**:确保邻接矩阵对称
- **$A \odot P = A_{\text{pre}} \odot P$**:掩码矩阵$P$ ,指定位置的原始值($\odot$为Hadamard积
- **$A \odot A_{\max}' = 0$**:功率约束矩阵$\ A_{\max}'$ 禁止在原本无连接的节点间新增边
**限制矩阵$A_{\max}'$的定义公式4-5**
$$
A'_{\max, ij} =
\begin{cases}
0, & \text{若 } A_{\max, ij} \ne 0 \\
1, & \text{若 } A_{\max, ij} = 0
\end{cases}
$$
- 通过$A_{\max}'$​标记禁止修改的零元素位置
**原始优化目标公式4-6**
$$
\min_{A} \, (1-\alpha)\, \text{rank}(A) + \alpha \|A\|_0
$$
$\|A\|_0$ 表示矩阵 $A$ 中非零元素的个数
- **目标**:平衡低秩性($\text{rank}(A)$)与稀疏性($\|A\|_0$
- **问题**:非凸、不可导,难以直接优化
**凸松弛后的目标公式4-7**
$$
\min_{A} \, (1-\alpha)\, \|A\|_* + \alpha \|A\|_1
$$
- **核范数$\|A\|_*$**:奇异值之和,替代$\text{rank}(A)$
- **L1范数$\|A\|_1$**:元素绝对值和,替代$\|A\|_0$
- **性质**:凸优化问题,存在全局最优解
**求解方法**
- **传统方法**
可转化为**半定规划SDP**问题,使用内点法等求解器。但缺点是计算效率低,尤其当矩阵规模大(如多智能体网络节点数 $n$ 很大)时不可行。
- **改进方法**
采用**ADMM交替方向乘子法**结合**投影**和**对偶上升**的方法,适用于动态网络(矩阵频繁变化的情况)。
#### ADMM核心算法
##### **变量定义与作用**
- **输入变量**
- $A_{pre}$:初始邻接矩阵(优化前的网络拓扑)。
- $P$对称的0-1矩阵用于标记 $A_{pre}$ 中非零元素的位置(保持已有边不变)。
- $A'_{max}$:功率最大时的邻接矩阵的补集($A'_{maxij} = 1$ 表示 $A_{maxij} = 0$,即不允许新增边)。
- $\alpha$:权衡稀疏性($L_1$ 范数)和低秩性(核范数)的系数。
- **iters**ADMM迭代次数。
<img src="https://pic.bitday.top/i/2025/04/03/ouy27i-0.png" alt="image-20250403150317427" style="zoom:80%;" />
##### **算法步骤详解**
**(S.1) 更新原始变量 $A$对应ADMM的$x$步)**
- **代码行4-17**:通过内层循环(投影和对偶上升)更新 $A$。
- **行4-11**:将 $A$ 投影到约束 $A \odot P = A_{\text{pre}} \odot P$ 的集合。
- 通过内层循环行8-11迭代更新 $R$,本质是**梯度投影法**
- $temp_R^{k+1} = M - X^k \odot A_{\text{pre}}$(计算残差)。
- $X^{k+1} = X^k + \beta(A_{\text{pre}} \odot temp_R^{k+1})$(梯度上升步,$\beta$ 为步长)。
- **本质**:通过迭代强制 $A$ 在 $P$ 标记的位置与 $A_{pre}$ 一致。
- **行13-17**:将 $A$ 投影到 $A \odot A'_{\text{max}} = 0$ 的集合。
- 类似地通过内层循环行14-17更新 $Y$
- $temp_A^{k+1} = D_2 - Y^k \odot A'_{\text{max}}$(残差计算)。
- $Y^{k+1} = Y^k + \gamma(A'_{\text{max}} \odot temp_A^{k+1})$(对偶变量更新)。
**(S.2) 更新辅助变量 $Z_1, Z_2$对应ADMM的$z$步)**
通过阈值操作分离目标函数的两部分:
- **行18-19**:分别对核范数和 $L_1$ 范数进行阈值操作:
- $Z_1^{t+1} = T_r(A^{t+1} + U_1^t)$
$T_r(\cdot)$ 是**奇异值阈值算子**(核范数投影),对$A + U1$ 做SVD分解保留前 $r$ 个奇异值。**作用**:把自己变成低秩矩阵=》强制 $A$ 低秩。
- $Z_2^{t+1} = S_{\alpha}(A^{t+1} + U_2^t)$
$S_{\alpha}(\cdot)$ 是**软阈值算子**$L_1$ 范数投影),将小于 $\alpha$ 的元素置零。把自己变成稀疏矩阵=》促进 $A$ 的稀疏性。
**(S.3) 更新 拉格朗日乘子$U_1, U_2$对应ADMM的对偶上升**
- **行20-21**:通过残差 $(A - Z)$ 调整拉格朗日乘子 $U_1, U_2$
- $U_1^{t+1} = U_1^t + A^{t+1} - Z_1^{t+1}$(核范数约束的乘子更新)。
- $U_2^{t+1} = U_2^t + A^{t+1} - Z_2^{t+1}$$L_1$ 范数约束的乘子更新)。
- **作用**:惩罚 $A$ 与辅助变量 $Z1, Z2$ 的偏差(迫使$A$更贴近$Z$),推动收敛。