广义近似消息传递(GAMP-MMSE-SBL)

1、为了解决什么问题

[1]Rangan, Sundeep. "Generalized approximate message passing for estimation with random linear mixing." 2011 IEEE International Symposium on Information Theory Proceedings. IEEE, 2011.

[2]Andersen, Michael Riis. "Sparse inference using approximate message passing." Technical University of Denmark, Department of Applied Mathematics and Computing (2014).

上一篇介绍的 AMP 算法提供了一种有效解决 BP 或 BPDN 问题的方法。 Sundeep Rangan 表明,该框架可以推广到处理本质上任意的先验分布和任意的噪声分布。对两组分布的唯一要求是它们进行因式分解。论文[1]中介绍了这个通用框架,即广义近似消息传递 (GAMP)。

GAMP 的灵活性使我们能够使用稀疏性进行有效的推理,从而促进先验分布,例如尖峰和平板先验 (其中一个典型的spike and slab 先验就是伯努利高斯(BG)先验)。此外,由于噪声分布也是任意的,因此该框架还可以通过使用二项式噪声分布进行分类。由于通常用到的噪声分布一般是加性高斯白噪声。这里我们也基于该模型。

尽管模型的灵活性大大提高,但计算复杂度保持不变,即 O(nm)。我们在GAMP中用更新的消息只有全链接两侧消息及噪声方差。当然有些算法不需要更新噪声方差,噪声方差作为一个已知项。GAMP 框架既可以配置为基于最大和消息传递执行 MAP 估计,也可以配置为基于和积消息传递执行 MMSE 估计。GAMP 框架的推导比 AMP 的推导更直接一些。推导主要基于泰勒近似和中心极限定理的应用。而在国内的郑大王教授团队,张老师采用因子图上利用BP-MF-SBL及三步近似得到了相同的结果。我认为张老师的推导是出于规则的近似,更像是用利用BP的规则工具导出,而利用泰勒近似和中心极限定理这个推导(数学不好,估计得看很久)。虽然他们都是处于对和积算法的近似。AMP算法可以说是GAMP算法的一个特例,当稀疏先验变成拉普拉斯先验噪声分布选择高斯分布,则由论文[1]中的第二个GAMP算法可以推到出。详细的推到可以在论文[2]中查找。事实上,(更多详细信息请参阅附录 B.2)。

2、算法来源[1,2]

[1]Rangan, Sundeep. "Generalized approximate message passing for estimation with random linear mixing." 2011 IEEE International Symposium on Information Theory Proceedings. IEEE, 2011.

3、先验模型选取与gout和gin的关系

先验模型的选取就有很多选项了,这里我们可以根据系统中的未知参数特性选择合适的先验。比如未知参数是离散的调制符号,此刻系统不再是稀疏问题。就不需要稀疏先验来解决。此时利用GAMP框架和合适的gin函数,可以得到响应的GAMP算法。如果是spike and slab先验或者是sbl先验此刻处理的就是稀疏问题。而gout是

通用框架下可以带这两个参数来更新s和tau_s。

gin函数就是与变量的先验有关了(当然在GAMP-MMSE框架下)

4、具体算法

[1]Luo, Man, et al. "Unitary approximate message passing for sparse Bayesian learning." IEEE transactions on signal processing 69 (2021): 6023-6039.

当然经过酉处理后,可以套用酉近似消息传递算法由论文[1]。不经过酉处理,就是正常的GAMP-SBL。如果用到如下代码,觉得好用还请引用该文献。该文献可以帮助你快速学习酉近似消息传递算法。关于先验的推导文中也有。

5、代码实现(SBL先验)

function [Xhat,Xhatvar,nmseGAMP,gamma_l] = GAMP_vector_SBL(A,y,noise_lamda1,x)
% y = A*x + w=z+w ,where A is a random matrix and w is Gaussian noise.x is a sparse vector
% 未知噪声方差,noise_lamda1为噪声方差初始值
[N, L]=size(A);
noise_lamda=ones(N,1)*noise_lamda1;
%% Define variables  
Xhatvar= ones(L,1); Xhat = zeros(L,1);    % Define variable x (belief) E and Var                
epc = 0;                                  % Initial hyperparameter
eta = 0*ones(L,1);                        % Initial hyperparameter
gamma_l = ones(L,1);                      % Initial hyperparameter
Shat = zeros(N,1);                        % Initial s_n N*1 all zeros
%% Algorithm body
for t = 1:1:30%t    %% update GAMP left out message phat and phatvar       phatvar=(abs(A).^2)*Xhatvar;        phat=A*Xhat - phatvar.*Shat;%% update intermediate variables Shat Shatvar=1./(noise_lamda+phatvar);Shat=(y-phat).*Shatvar;  %% update variables z(belief) E and Var[Zhat,Zhatvar] =GaussianProduct(y,noise_lamda,phat,phatvar); %% update GAMP right out message rhat and  rhatvar     rhatvar= 1./(((abs(A).').^2)*Shatvar);rhat=rhatvar.*((A')*Shat)+Xhat;%  %% update x belief: Xhat and Xhatvar%[Xhat,Xhatvar] =GaussianProduct(0,gamma_l.^-1,rhat,rhatvar);Xhatvar= rhatvar./(1+gamma_l.*rhatvar);Xhat  = rhat ./(1+gamma_l.*rhatvar);        %% update gamma_lgamma_l = (1+epc)./(eta+abs(Xhat).^2+Xhatvar);      %% update x belief: Xhat and Xhatvar%[Xhat,Xhatvar] =GaussianProduct(0,gamma_l.^-1,rhat,rhatvar);Xhatvar= rhatvar./(1+gamma_l.*rhatvar);Xhat  = rhat ./(1+gamma_l.*rhatvar);nmseGAMP(t) = 20*log10( norm(x-Xhat)/norm(x));%% update Noise Accuracy (belief)  lamda = N/(sum(Zhatvar)+(y-Zhat)'*(y-Zhat));noise_lamda=ones(N,1)/lamda;      
end
function [m3,v3] =GaussianProduct(m1,v1,m2,v2)
v3=(1./(v1)+1./(v2)).^-1;
m3=(m1./v1+m2./v2).*v3;
end
%Msg_RightA_v=(1./AvarRep-1./Msg_LeftA_v).^-1;
%Msg_RightA_m=(AhatRep./AvarRep-Msg_LeftA_m./Msg_LeftA_v).*Msg_RightA_v;

6、实际效果

相对于AMP算法可谓是更进一步,此外AMP算法很不稳定,还需要设置一个正则化项,这个项的设置恰到与否影响算法是否工作

AMP算法(近似消息传递算法)的发散性主要受到与i.i.d.(独立同分布)亚高斯模型的微小偏差的影响。AMP算法是基于一种计算效率很高的迭代方法,对于大I.I.D.亚高斯矩阵A,其每次迭代行为的严格特征是标量状态演化,其不动点在唯一时是Bayes最优的。然而,由于AMP算法的脆弱性,即使是与i.i.d.亚高斯模型的微小偏差也可能导致算法发散。

因此,在使用AMP算法时,需要确保数据满足其假设条件,即数据应接近i.i.d.亚高斯分布。如果数据不满足这些条件,可能需要考虑使用其他算法或对数据进行预处理以满足AMP算法的假设条件。

以上信息仅供参考,如有需要,建议查阅相关文献或咨询专业人士。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/670577.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【3D基础】坐标转换——地理坐标投影到平面

汤国安GIS原理第二章重点 1.常见投影方式 https://download.csdn.net/blog/column/9283203/83387473 Web Mercator投影(Web Mercator Projection): 优点: 在 Web 地图中广泛使用,易于显示并与在线地图服务集成。在较…

RS2057XH功能和参数介绍及规格书

RS2057XH 是一款由润石科技(Runic Semiconductor)生产的模拟开关芯片,其主要功能和参数如下: 产品特点: 低电压操作:支持低至1.8V的工作电压,适用于低功耗应用。 高带宽:具有300MHz的…

linux学习:线程池

目录 原理 初始线程池 运行中的线程池 相关结构体 api 线程池初始化 投送任务 增加活跃线程 删除活跃线程 销毁线程池 例子 thread_pool.h thread_pool.c test.c 测试程序 原理 一个进程中的线程就好比是一家公司里的员工,员工的数目应该根据公司的…

展厅设计中的时光隧道装置是什么?有何独特应用优势?

在当今多媒体互动技术蓬勃发展的时代,各类创新的内容呈现手段层出不穷。其中,时光隧道互动装置以其独特的方式,极大地丰富了内容的表达并提升了用户体验,它能够将参观者引领至一个多维度的感官世界,让其身临其境地感受…

超详细——集成学习——Adaboost——笔记

资料参考 1.【集成学习】boosting与bagging_哔哩哔哩_bilibili 集成学习——boosting与bagging 强学习器:效果好,模型复杂 弱学习器:效果不是很好,模型简单 优点 集成学习通过将多个学习器进行结合,常可获得比单一…

前端基础学习html(1)

1.标题标签.h1,h2...h6 2.段落标签p 换行标签br 3.加粗strong(b) /倾斜em(i) /删除 del(s) /下划线ins(u) 4.盒子:div //一行一个 span//一行多个 5.img :src alt title width height border 图片src引用:相对路径 上级/同级/中级 绝对路径&#xff…

Linux用户日志审计系统

标题日期版本说明作者 用户日志审计系统 2024.05.06v.0.0.1权限lgb 测试环境:CentOS Stream 9 测试过程: 测试开始前,首先我们先建立一个用户。 将文件备份。 我们通过vim编辑器,打开 /etc/profile 文件进行编辑。 将提前编辑好…

win中python中OpenCV使用cv2.imshow()报错的解决办法

1. 问题 cv2.error: OpenCV(4.9.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:1272: error: (-2:Unspecified error) The function is not implemented. Rebuild the library with Windows, GTK 2.x or Cocoa support. If you are on Ubuntu o…

简单介绍IIC通信协议

文章目录 一,简单介绍二,IIC物理层三,IIC通信时序1.起始位与停止位2.IIC读写地址位信号3.IIC应答信号4.IIC数据位收发信号 四,总线速率五,主机发送数据流程六,主机接收数据流程七,IIC的时钟延展…

力扣每日一题-去掉最低工资和最高工资后的工资平均值-2024.5.3

力扣题目:去掉最低工资和最高工资后的工资平均值 开篇 题目链接: 1491.去掉最低工资和最高工资后的工资平均值 题目描述 代码思路 太简单了。先利用sort排序对数组进行从小到大排序,然后计算时数组最小值和最大值不要加进去即可。 代码纯享版 clas…

《HCIP-openEuler实验指导手册》2.1安装和测试Nginx

知识点 Nginx (发音为 “engine x”) 是一个开源的高性能 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。由 Igor Sysoev 创建并维护,其设计用于处理高并发连接,具有高度的可扩展性和灵活性。 安装步骤 yum方式安装 dn…

交通 | TRC综述:充电站选址-求解与探讨

论文作者:Mouna Kchaou-Boujelben 论文原文:Kchaou-Boujelben, M. (2021). Charging station location problem: A comprehensive review on models and solution approaches. Transportation Research Part C: Emerging Technologies, 132, 103376. 推…