盲源分离(blind source separation, BSS)产生于人们对“鸡尾酒会效应”问题的研究[1], 其实质是仅根据观测信号实现对源信号的分离.目前盲源分离技术已在语音信号[2]和生物医学信号[3]等方面得到了广泛的应用.
盲源分离算法大多采用梯度优化算法[4]来进行寻优, 但梯度算法全局收敛性能不理想.针对这一缺点, 一些学者提出将群智能算法, 如粒子群算法[5]、遗传算法及蚁群算法等应用到盲源分离的研究中.粒子群算法由于参数少、易于实现等优点, 在盲源分离的过程中更具优势.文献[6]提出了带有梯度加速粒子群算法的盲源分离, 文献[7]提出了一种基于动态学习因子的改进粒子群的盲源分离算法, 不足之处是该算法计算速度相对较慢.文献[8]提出了一种自适应改变惯性权重的粒子群算法的盲分离, 利用粒子的适应度值自适应地调整粒子的惯性权重, 加快了算法的收敛速度, 避免了早熟收敛.胡旺等[9]提出了一种更为简洁且高效的粒子群优化算法, 该算法的进化方程中没有粒子的速度参数, 而且方程由二阶降到了一阶, 简化了粒子的进化过程.但由于简化粒子群算法中的每个粒子在寻优过程中迭代公式差异性不大, 导致粒子间的差异性不强, 算法在进化后期容易出现早熟收敛的情况.
本文在文献[9]的基础上将分组思想应用在简化粒子群算法中.仿真结果证明该算法能有效避免早熟收敛,提高收敛精度和算法稳定性.
1 简化粒子群算法线性瞬时混合盲分离问题的数学描述为
(1) |
其中:S(t)=[s1(t), s2(t), …, sn(t)]T为相互统计独立的源信号, 源信号S(t)通过一个未知的线性系统后, 在系统末端得到m个观测信号, 即X(t)=[x1(t), x2(t), …, xm(t)]T;n(t)为加性观测噪声.在忽略噪声的情况下, X(t)=AS(t).线性瞬时混合盲分离的目标就是计算出分离矩阵W, 使得分离后的信号Y(t)为
(2) |
其中Y(t)=[y1(t), y2(t), …, yn(t)]T, 如果能使WA=I, 则Y(t)=S(t), 那么源信号就从混合信号中分离了出来, 从而解决了盲源分离问题.
粒子群算法是基于种群的随机优化算法.种群中粒子的适应度值、飞行的速度和方向都由优化函数来决定.每个粒子根据记忆去追踪最优粒子从而不断进行优化.具有惯性权重的标准粒子群算法速度与位置更新公式如下:
(3) |
(4) |
其中:t为迭代次数; w为惯性权重;c1和c2为学习因子;r1和r2为分布于[0, 1]间的随机数;pbest为粒子自身最优位置;gbest为群体最优位置.
文献[9]对基本的粒子群算法中的速度项进行分析, 证明了粒子的速度项在粒子的进化过程中不是必要的, 从而提出了一种简化粒子群算法(SPSO), 描述如下:
(5) |
由式(5)和式(3),式(4)对比可知, 式(5)中没有粒子的速度项.文献[9]证明粒子速度与进化过程无关.该算法避免了人为确定参数[-vmax, vmax]影响粒子收敛速度和收敛精度的问题, 而且方程也由二阶降到一阶, 有利于分析和控制粒子的进化过程.
2 基于改进的SPSO的盲源分离 2.1 分组简化粒子群算法在上述简化粒子群算法中, 每个粒子在进化过程中都采用式(5)进行进化, 导致粒子间的差异性不强, 粒子就会出现早熟.针对上述问题, 引入了蛙跳算法中的分组思想.
蛙跳算法分组思想:在湿地中生活着一群青蛙, 青蛙群体被分为不同的子群体, 每个子群体首先执行局部搜索.子群体中个体之间的文化都不同, 它们之间相互影响, 不断进化, 当达到一定阶段后, 再进行全局信息交换实现子群体之间的信息交流.
利用这个分组思想将整个粒子群分为多组子群体, 每组粒子在进行组内寻优的同时进行全局寻优, 充分利用了组内的最优位置信息, 这样不同组粒子的迭代公式各不相同, 增加了粒子之间的差异性, 可以有效避免早熟收敛.
分组简化粒子群算法可描述如下:
(6) |
式中:c1为自身学习因子; c2为组内学习因子; c3为全局学习因子; pbest为粒子自身最优位置; gbest为粒子组内最优位置; g′best为群体最优位置.粒子根据gbest和g′best来更新自己的位置, 充分利用了局部和全局信息.
2.2 基于分组SPSO的盲源分离本文以负熵作为优化的目标函数, 在分离信号过程中, 当分离信号的非高斯性最大时, 表示已完成对混合信号的分离.而非高斯性的大小由负熵来表示, 负熵的定义为
(7) |
其中H(y)表示随机变量y的微分熵, 定义为
(8) |
其中, yg是高斯变量, 它与y的均值和方差相同.高斯变量的非高斯性越强, 微分熵越小, 负熵越大.所以y的非高斯性越强, 负熵越大, 即J(y)越大; 负熵的计算比较复杂, 难以直接应用, 因此常利用式(9)逼近负熵:
(9) |
其中:c为大于零的常数;G(·)为非二次型函数, 常取
(10) |
(11) |
(12) |
式中, 1≤a≤2.式(11)只能用于源信号为超高斯的情况, 式(10)可用于超高斯和亚高斯混合情况.本文仿真时采用式(10)作为负熵的非二次型函数.本文将利用上述的分组简化粒子群算法, 对分离矩阵进行优化, 从而使负熵达到最大, 最终完成对混合信号的分离.基于分组简化粒子群的盲源分离算法分为如下几步:
1) 读取观测信号, 对其进行中心化和预白化;
2) 初始化粒子群, 并初始化各个参数;
3) 利用目标函数计算每个粒子的适应度, 并将粒子的适应度按大小进行排序并分组, 得到全局最优g′best;
4) 更新每个粒子的个体最优位置和组内最优位置;
5) 对于每个小组中的粒子按照式(6)更新自身位置, 迭代完成后对每个粒子按适应度大小进行排序, 排序后的粒子进入下一次组内迭代, 并转到4);
6) 达到组内迭代次数后, 各组粒子进行下一次分组, 转到3);
7) 达到分组次数后, 输出适应度最好的粒子, 即分离矩阵W;
8) 输出分离信号, 算法结束.
算法流程如图 1所示.
本文分别选用两路和四路实地采集的语音信号进行实验.各项参数设置如下:取种群规模为50 (分为5组, 每组10个粒子), 惯性权重w从0.9到0.4线性递减, 学习因子c1=c2=c3=1, 算法迭代50次.
3.2 评价指标本文采用算法的相似系数、信干比及粒子的全局平均适应度作为评价指标.
相似系数ρij定义如下:
(13) |
相似系数ρij是用来衡量两个信号的相似程度, ρij越接近于1表示分离效果越好.
信干比定义如下:
(14) |
式中:G为系统矩阵, G=WA;
实验1:选用两路语音信号, 一路为男生信号, 另一路为女生信号.采样频率为10kHz, 采样点数为3×104.混合矩阵为二维随机矩阵:
其中, 算法1表示基本粒子群算法的盲源分离, 算法2为本文提出的基于分组简化粒子群算法的盲源分离.算法分离结果如图 2~图 5所示.
由图 4和图 5可以看出, 基本粒子群算法和改进的粒子群算法都能完成混合声音信号的盲分离, 为了更加清楚、直观看到本文提出算法的有效性, 通过计算信号的相似系数ρij、信干比SIR和平均适应度Favg来衡量.
实验2:选用四路语音信号, 采样频率为10kHz, 采样点数为3×104.混合矩阵为四维随机矩阵:
其中, 算法1表示基本粒子群算法的盲源分离, 算法2为本文提出的基于分组简化粒子群算法的盲源分离.算法分离结果如图 6~图 9所示.
从表 1和表 2可以看出, 本文提出的改进算法在相似系数和信干比上均要优于基本粒子群算法的盲源分离, 在粒子群的平均适应度上改进算法略好于基本算法.在仿真分析的基础上, 本文又从算法复杂度方面进行分析, 从式(3)和式(4)可以看出基本粒子群算法粒子每次迭代需要计算5次加法和5次乘法运算, 从式(6)可以看出本文改进算法粒子每次迭代需要计算6次加法和7次乘法运算, 从而得出算法1和算法2的计算复杂度分别为N×m×10,N×m×13.其中, N表示种群规模, m表示迭代次数.可以看出,本文提出的基于分组思想粒子群算法的算法复杂度要高于基本粒子群算法, 但在收敛性能方面要好于基本粒子群算法.
本文将蛙跳算法的分组思想应用到盲源分离中, 提出了一种基于分组简化粒子群的盲源分离算法, 并对其进行仿真和性能分析.实验结果证明, 本文提出的改进算法在相似系数和信干比上均要优于基本粒子群算法的盲源分离, 在粒子群的平均适应度上改进算法略好于基本算法.综上, 本文的改进算法具有较高的搜索精度和稳定性, 能够有效避免早熟收敛问题.
[1] |
Nie W, Li Y B, Liu D D. A blind source separation algorithm of non-stationary signals based on local polynomial Fourier transform[C]//Progress in Electromagnetic Research Symposium(PIERS). Shanghai, 2016: 4996-5000.
|
[2] |
季策, 刘梦蝶, 陶奕名.
基于皮尔逊系统的语音信号盲源分离[J]. 东北大学学报(自然科学版), 2015, 36(1): 6–9.
( Ji Ce, Liu Meng-die, Tao Yi-ming. The blind source separation for speech signal based on person system[J]. Journal of Northeastern University(Natural Science), 2015, 36(1): 6–9. DOI:10.12068/j.issn.1005-3026.2015.01.002 ) |
[3] |
Subasi A, Gursoy M I.
EEG signal classification using PCA, ICA, LDA and support vector machines[J]. Expert Systems with Applications, 2010, 37(12): 8659–8666.
DOI:10.1016/j.eswa.2010.06.065 |
[4] |
Gao L, Zhang T Q, He D N, et al. A variable step-size EASI algorithm based on PI for DS-CDMA system blind estimation[C]//IEEE 5th International Congress on Image and Signal Processing. Chongqing, 2012: 1730-1734.
|
[5] |
Liu J H, Mei Y, Li X D.
An analysis of the inertia weight parameter for binary particle swarm optimization[J]. IEEE Transactions on Evolutionary Computation, 2016, 20(5): 666–681.
DOI:10.1109/TEVC.2015.2503422 |
[6] |
Luo T H, Zhang C.
Blind source separation using the particle swarm optimization algorithm with gradient acceleration[J]. Computer Simulation, 2010, 27(10): 112–115.
|
[7] |
Xi Z H, Bian L J, Jin Y.
A novel blind source separation method based on improved particle swarm optimization[J]. Applied Science and Technology, 2010, 37(1): 12–14.
|
[8] |
张朝柱, 张健沛, 孙晓东.
基于自适应粒子群优化的盲源分离[J]. 系统工程与电子技术, 2009, 31(6): 1275–1278.
( Zhang Chao-zhu, Zhang Jian-pei, Sun Xiao-dong. Blind source separation based on adaptive particle swarm optimization[J]. Systems Engineering and Electronics, 2009, 31(6): 1275–1278. ) |
[9] |
胡旺, 李志蜀.
一种更简化而高效的粒子群优化算法[J]. 软件学报, 2007, 18(4): 861–868.
( Hu Wang, Li Zhi-shu. A simpler and more effective particle swarm optimization algorithm[J]. Journal of Software, 2007, 18(4): 861–868. ) |