非负因子的贝叶斯张量CP分解算法研究与应用
立即解锁
发布时间: 2025-10-02 00:31:03 阅读量: 21 订阅数: 16 AIGC 

### 非负因子的贝叶斯张量CP分解算法研究与应用
#### 1. 算法介绍
在非负因子的贝叶斯张量CP分解领域,有两个重要算法值得关注,分别是Algorithm 8和Algorithm 9。
##### 1.1 Algorithm 9:基于不精确块坐标下降(BCD)的概率张量CP分解算法
该算法步骤如下:
- **初始化**:
- 选择 $L > R$,$p_w < 1$,$\{\mu_{\gamma_l}\}_{l = 1}^{L}$,$\mu_{\beta}$ 以及初始值 $\{\mathbf{\hat{\Phi}}^{(n),0}, \mathbf{\hat{\Phi}}^{(n), - 1}\}_{n = 1}^{N}$,$\{c_0^l, d_0^l\}_{l = 1}^{L}$,$e_0$,$f_0$。
- **迭代过程**:
- 对于第 $t + 1$ 次迭代($t \geq 0$):
1. **更新因子矩阵 $\mathbf{\hat{\Phi}}^{(n),t + 1}$**:
- 利用公式 (6.49) 计算外推参数 $w_t^n$。
- 计算外推因子矩阵:$\hat{\mathbf{M}}^{(n),t}=\mathbf{\hat{\Phi}}^{(n),t}+w_t^n(\mathbf{\hat{\Phi}}^{(n),t}-\mathbf{\hat{\Phi}}^{(n),t - 1})$。
- 更新因子矩阵:$\mathbf{\hat{\Phi}}^{(n),t + 1}=\left[\hat{\mathbf{M}}^{(n),t}-\frac{1}{L_t^n}\nabla c_{t + 1}(\hat{\mathbf{M}}^{(n),t})\right]_+$,其中 $\nabla c_{t + 1}(\hat{\mathbf{M}}^{(n),t})$ 通过公式 (6.53) 计算,$L_t^n$ 通过公式 (6.50) 计算。
2. **更新参数 $\gamma_{t + 1}^l$**:
$\gamma_{t + 1}^l=\frac{-\left(d_{t + 1}^l-\mu_{\gamma_l}\gamma_t^l\right)+\sqrt{\left(d_{t + 1}^l-\mu_{\gamma_l}\gamma_t^l\right)^2 + 4\mu_{\gamma_l}c_{t + 1}^l}}{2\mu_{\gamma_l}}$,其中 $c_{t + 1}^l$ 和 $d_{t + 1}^l$ 分别通过公式 (6.43) 和 (6.44) 计算。
3. **更新参数 $\beta_{t + 1}$**:
$\beta_{t + 1}=\frac{-\left(f_{t + 1}-\mu_{\beta}\beta_t\right)+\sqrt{\left(f_{t + 1}-\mu_{\beta}\beta_t\right)^2 + 4\mu_{\beta}e_{t + 1}}}{2\mu_{\beta}}$,其中 $e_{t + 1}$ 和 $f_{t + 1}$ 分别通过公式 (6.37) 和 (6.38) 计算。
4. **单调性检查**:
设 $\Theta_{t + 1}=\{\{\mathbf{\hat{\Phi}}^{(n),t + 1}\}_{n = 1}^{N},\{\gamma_{t + 1}^l\}_{l = 1}^{L},\beta_{t + 1}\}$。如果 $g(\Theta_{t + 1}) > g(\Theta_{t})$,则 $\mathbf{\hat{\Phi}}^{(n),t + 1}=\left[\mathbf{\hat{\Phi}}^{(n),t}-\frac{1}{L_t^n}\nabla c_{t + 1}(\mathbf{\hat{\Phi}}^{(n),t})\right]_+$。
- **终止条件**:直到收敛。
#### 2. 数值实验设置
为了评估算法性能,进行了一系列数值实验,包括使用合成数据和真实世界数据集。
##### 2.1 合成数据实验
- **数据生成**:
- 考虑一个无噪声的三维张量 $X = \langle\mathbf{M}^{(1)}, \mathbf{M}^{(2)}, \mathbf{M}^{(3)}\rangle \in \mathbb{R}^{100\times100\times100}$,秩 $R = 10$。因子矩阵 $\mathbf{M}^{(n)}$ 中的每个元素独立地从 $[0, 1]$ 上的均匀分布中抽取,因此是非负的。
- 考虑两种观测数据张量:
- 数据 $Y = X + W$,其中噪声张量 $W \in \mathbb{R}^{100\times100\times100}$ 的每个元素独立地从零均值、方差为 $\sigma_w^2$ 的高斯分布中抽取,对应高斯似然模型 (6.12)。
- 数据 $Y^+$ 通过将 $Y$ 中的负元素置为零得到,即 $Y_{i_1, i_2, i_3}^+ = Y_{i_1, i_2, i_3}U(Y_{i_1, i_2, i_3} \geq 0)$,采用截断高斯似然模型 (6.13) 拟合这些数据。信噪比(SNR)定义为 $10\log_{10}\left(\frac{\|X\|_F^2}{100^3\sigma_w^2}\right)$。
- **算法参数设置**:
- 对于 Algorithm 8,步长序列选择为 $\alpha_t = 10^{-3}/(t + 1)$,梯度投影更新在 $\|f(\mathbf{\hat{\Phi}}^{(k),t}) - f(\mathbf{\hat{\Phi}}^{(k),t - 1})\|_F \leq 10^{-3}$ 时终止。
- 所有模拟算法的初始因子矩阵 $\mathbf{\hat{\Phi}}^{(k,0)}$ 设置为奇异值分解(SVD)近似 $U_{:,1:L}\sqrt{S_{1:L,1:L}}$,其中 $[U, S, V] = \text{SVD}[Y^{(k)}]$
0
0
复制全文


