最大似然估计盲源分离算法及其matlab代码实现
最大似然估计的物理意义
答:最大似然估计是在给定一组数据和一个参数待定的模型,如何确定模型的参数,使得这个确定参数后的模型在所有模型中产生已知数据的概率最大。通俗一点将,就是在什么情况下最有可能发生已知的事件。
根据盲分离模型: ,设盲分离矩阵为 W,则可以得到
若记 为分离矩阵W 第 i行元素组成的向量,则理想情况下有 ,代入上式则有
若有若干个观测值,则对若干个观测值去平均,则有似然函数为
对上式取对数则有
求上式的极值点,对分离矩阵W求导数有
为了简单计算,不妨记:
其中 表示求导数。
故可得
然而,根据Amrai等人证实,对于盲信号分离矩阵来说,其参数空间符合黎曼空间的结构,而在黎曼空间中,自然梯度是定义在黎曼空间中的最陡下降方向,而并不是常规梯度(常规梯度是欧式空间中最佳下降方向)。而自然梯度的获取很简单,就是在常规的梯度基础上右乘矩阵 ,因此可得
记盲源分离之后的结果为
因此可以获得盲分离算法分离矩阵的迭代公式为
其在线处理形式为
上式中,评价函数一般取得
至此,基于最大似然盲分离算法已经推导完毕。
基于最大似然盲分离的代码如下:
function w=zf_clms(Z,number)
%%
% x为输入的混合信号
% number为信号的个数
% /////////////////去均值和预白化处理////////////////////////////
[m,n]=size(Z);
% ///////////////////////////////////////////////////////
% 、、、、、、、、、、使用自然梯度分离信源、、、、、、、、、
%% separate
I = eye(number);
W = I;
lamda=0.005;
%%%%%%逐个点的运算---------------------
for sep_t = 1:n
y = W*Z(:,sep_t);
f = diag(y*y').*y;
% f=y-tanh(y);%混合高斯函数的刻画函数(亚高斯)。y+tanh(y)为修正的双曲正割函数平方的激活函数,f=-p'/p其中p'表示的是求导数
g=y';
W = W+lamda*(I-f*g)*W; %这是用于在无噪条件下的梯度分离
end
%%%------------------------------------------------------
w=W;
具体使用的时候,迭代步长lamda的选择自己确定,若大了,可以将其变小