# Bilinear Generalized Vector Approximate Message Passing (BiG-VAMP)
##### Mohamed Akrout, Anis Housseini, Faouzi Bellili, Amine Mezghani
This repository contains the Matlab code of the algorithm proposed in the paper: [Bilinear Generalized Vector Approximate Message Passing](https://arxiv.org/abs/2009.06854).
## Abstract
We introduce the bilinear generalized vector approximate message passing (BiG-VAMP) algorithm which jointly recovers two matrices $\boldsymbol{U}$ and $\boldsymbol{V}$ from their noisy product through a probabilistic observation model. BiG-VAMP provides computationally efficient approximate implementations of both max-sum and sum-product loopy belief propagation (BP). We show how the proposed BiG-VAMP recovers different types of structured matrices and overcomes the fundamental limitations of other state-of-the-art techniques to the bilinear recovery problem, such as BiG-AMP, BAd-VAMP and LowRAMP. In essence, BiG-VAMP applies to a broader class of practical applications which involve a general form of structured matrices. For the sake of theoretical performance prediction, we also conduct a state evolution (SE) analysis of the proposed algorithm and show its consistency with the asymptotic empirical mean-squared error (MSE). Numerical results on various applications such as matrix factorization, dictionary learning, and matrix completion demonstrate unambiguously the effectiveness of the proposed BiG-VAMP algorithm and its superiority over state-of-the-art algorithms. Using the developed SE framework, we also examine the phase transition diagrams of the matrix completion problem, thereby unveiling a low detectability region corresponding to the low signal-to-noise ratio (SNR) regime.
## Repository Structure
This repository contains four folders:
- **Bi-VAMP**: it contains the code of Bi-VAMP algorithm solving the noisy matrix factorization problem whose observation model is $\boldsymbol{Y}~ =~ \boldsymbol{U}\boldsymbol{V}^{\top} + \boldsymbol{W}$. This folder has two files:
* *Bi-VAMP.m*: the file containing the algorithmic steps of BiG-VAMP.
* *Parameters.m*: the file defining the parameters of the BiG-VAMP simulation.
- **BiG-VAMP**: it contains the code of the BiG-VAMP solving the noisy real-valued matrix completion (MC) problem whose observation model is $\boldsymbol{Y}~ =~ \boldsymbol{S}\cdot(\boldsymbol{U}\boldsymbol{V}^{\top} + \boldsymbol{W})$. Here, $\boldsymbol{S}$ is the binary selection matrix masking a specific percentage of the entries in the matrix $\boldsymbol{U}\boldsymbol{V}^{\top} + \boldsymbol{W}$. This folder has two files
* *Bi-VAMP-MC.m*: the file containing the algorithmic steps of BiG-VAMP for matrix completion (BiG-VAMP-MC).
* *Parameters.m*: the file defining the parameters of the BiG-VAMP-MC simulation.
- **functions**: it contains specific functions called by Bi-VAMP and/or BiG-VAMP-MC.
- **bigamp-package**: it contains the code of the [BiG-AMP](https://arxiv.org/abs/1310.2632) algorithm from the [GAMPMATLAB](https://sourceforge.net/projects/gampmatlab/) package.
## Running Experiments
#### Key Parameters
The parameters of Bi-VAMP and BiG-VAMP-MC are summarized in the object `Parameters` and are summarized below:
| Name | Description |
| :--- | :--- |
| nb_iter | max number of iterations |
| conv_criterion | convergence criterion |
| damping | damping coefficient |
| prior_u | prior on the matrix U |
| prior_v | prior on the matrix V |
| prior_u_option | prior parameters for U |
| prior_v_option | prior parameters for V |
| selection_percentage | parameter to control the # of 0s in Y (only for BiG-VAMP-MC) |
| beta | temperature parameter |
| seed | seed for reproducibility |
#### Entry Points
- To run Bi-VAMP, execute the file `main_linear.m`
- To run BiG-VAMP for matrix completion, execute the file `main_MC.m`
- To run BiG-VAMP vs. BiG-AMP for matrix completion, execute the file `main_BiGAMP_vs_BiGVAMP_MC_binary_prior.m`. The output in the Matlab console should be:
```
Running BiG-AMP and BiG-VAMP with:
A binary {-1, 1} and X Gaussian(0,1)
===== Starting BiG-AMP =====
nrmse = 0.355609
running time = 28.550352
===== Starting BiG-VAMP =====
nrmse = 0.018408
running time = 1.105868
```
## Important facts
- If either $\boldsymbol{U}$ or $\boldsymbol{V}$ is known, BiG-VAMP coincides with the multiple measurement vectors setting of the [VAMP](https://arxiv.org/abs/1610.03082) algorithm.
- The BiG-VAMP algorithm outperforms the [BiG-AMP](https://arxiv.org/abs/1310.2632) algorithm for discrete-valued priors (e.g., binary priors).
- For benchmarking purposes, the value of the damping parameter should be tuned depending on the problem dimension (i.e., n, m, and r), the priors on $\boldsymbol{U}$ and $\boldsymbol{V}$, and the non-linearity parameters (e.g., selection percentage in matrix completion).
## Citing the paper (bib)
If you make use of our code, please make sure to cite our paper:
```
@inproceedings{akrout2022big,
title={BiG-VAMP: The Bilinear Generalized Vector Approximate Message Algorithm},
author={Akrout, Mohamed and Housseini, Anis and Bellili, Faouzi and Mezghani, Amine},
booktitle={2022 56th Asilomar Conference on Signals, Systems, and Computers},
pages={1377--1384},
year={2022},
organization={IEEE}
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
双线性广义向量近似消息传递算法的Matlab代码.zip
共119个文件
m:112个
mexmaci64:2个
mexa64:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 170 浏览量
2024-02-28
21:28:56
上传
评论 1
收藏 333KB ZIP 举报
温馨提示
2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
资源推荐
资源详情
资源评论
收起资源包目录
双线性广义向量近似消息传递算法的Matlab代码.zip (119个子文件)
sparseMult2.c 3KB
fastWHtrans.cpp 3KB
SoftThreshEstimIn.m 44KB
BiGAMP_matrix.m 27KB
BiGAMP.m 26KB
BiGAMP_X2.m 26KB
gampEst.m 25KB
QuantizeEstimOut.m 21KB
EMBiGAMP_MC.m 19KB
KernelLinTrans.m 18KB
gampEstBasic.m 16KB
EMBiGAMP_RPCA.m 15KB
ElasticNetEstimIn.m 14KB
AwgnEstimOut.m 13KB
EMBiGAMP_DL.m 13KB
BiGAMP_Lite.m 13KB
LaplaceEstimOut.m 12KB
CAwgnEstimOut.m 12KB
FourierLinTrans.m 12KB
GampOpt.m 11KB
SNIPEstim.m 11KB
gampEst_legacy.m 10KB
DCTLinTrans.m 10KB
ampEst.m 10KB
CQuantizeEstimOut.m 10KB
FWHTLinTrans.m 9KB
GMEstimIn.m 9KB
LinTransDemeanRC.m 9KB
NNGMEstimIn.m 8KB
MixScaEstimIn.m 8KB
GaussMixEstimOut.m 8KB
CGaussMixEstimOut.m 8KB
CGMEstimIn.m 8KB
LinTrans.m 8KB
MedImageLinTrans.m 7KB
SparseScaEstim.m 7KB
AwgnEstimIn.m 7KB
gampEstSimp.m 7KB
CAwgnEstimIn.m 7KB
BiGVAMP_MC.m 7KB
BiGAMPOpt.m 7KB
EstimOutConcat.m 6KB
AwbgnEstimOut.m 6KB
ToeplitzLinTrans.m 6KB
CMultAwgnEstimOut.m 5KB
TuneVarScaleEstimIn.m 5KB
UnifVarLinTrans.m 5KB
LinTransWavelet.m 5KB
MultiSNIPEstim.m 5KB
BiVAMP.m 5KB
gampShowHist.m 5KB
RandomUniTrans.m 5KB
LinTransConcat.m 5KB
estimInvert.m 5KB
LinTransDemean.m 4KB
NLEstimOut.m 4KB
main_BiGAMP_vs_BiGVAMP_MC_binary_prior.m 4KB
FxnhandleEstimIn.m 4KB
s_transform.m 4KB
EstimInConcat.m 4KB
UnifEstimIn.m 4KB
AmpOpt.m 4KB
DisCScaEstim.m 4KB
DiracEstimOut.m 4KB
BGZeroMeanEstimIn.m 4KB
fistaEst.m 3KB
DisScaEstim.m 3KB
FxnhandleLinTrans.m 3KB
PoissonEstim.m 3KB
EllpEstimIn.m 3KB
L1EstimOut.m 3KB
LTOperator.m 3KB
NullEstimIn.m 3KB
TuneVarEstimIn.m 3KB
getLineStyle.m 3KB
EstimOut.m 3KB
SoftThreshDMMEstimIn.m 2KB
LinTransDiag.m 2KB
NNSoftThreshEstimIn.m 2KB
GampOpt_legacy.m 2KB
LinTransTV.m 2KB
MatrixLinTrans.m 2KB
MaskedEstimOut.m 2KB
main_MC.m 2KB
ExpanderGraphLinTrans.m 2KB
main_linear.m 2KB
LinTransCompose.m 2KB
TruthReporter.m 2KB
EllpDMMEstimIn.m 2KB
prior_bernoulli_gauss.m 2KB
IdentityLinTrans.m 2KB
BlkdiagLinTrans.m 2KB
EstimIn.m 2KB
LinTransSubset.m 1KB
BiGAMPProblem.m 1KB
Parameters.m 1KB
DiracEstimIn.m 1KB
FistaOpt.m 1KB
Parameters.m 1KB
DisDist.m 1KB
共 119 条
- 1
- 2
资源评论
Matlab科研辅导帮
- 粉丝: 3w+
- 资源: 7803
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 强化大型语言模型作为智能体的能力研究:引入AgentTuning方法及其应用效果评估
- 断裂检测20-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- AgentOhana统一数据和训练流水线提高自主代理学习效果
- 房屋租赁系统源码 SpringBoot + Vue 实现全功能解析
- 基于大型语言模型的自主智能体研究综述
- 评估生成搜索引擎中的可验证性指标与信任度
- 数点颗粒粒子检测50-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord、VOC数据集合集.rar
- Agent-FLAN: 针对大规模语言模型的有效代理调优数据与方法设计
- 大型语言模型与16000多个真实世界API集成的ToolLLM框架
- FPGA使用EMIO实现I2C通信驱动OLED显示屏PS部分(SSD1306)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功