基于ADMM的惩罚函数构造方法优化
2017-11-07陈紫强王广耀
陈紫强,王广耀
(桂林电子科技大学 信息与通信学院,广西 桂林 541000)
基于ADMM的惩罚函数构造方法优化
陈紫强,王广耀
(桂林电子科技大学 信息与通信学院,广西 桂林 541000)
为了提升传统交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)惩罚译码算法的误码性能和收敛速率,对罚函数做进一步优化,提出一种基于三段式罚函数的ADMM惩罚译码算法(Three-Segment ADMM-Penalized Decoding,TS-ADMM-PD)。通过引入过渡函数,其斜率介于前后两段函数之间,达到折衷译码性能和收敛速度的目的。优化后的罚函数在x=0和x=1附近斜率较大,以增强对伪码字的惩罚力度,降低误码率并加快译码收敛;在x=0.5附近斜率较小,以便此处的变量节点信息进行传递。仿真结果表明,相比于I-ADMM-PD算法,所提的TS-ADMM-PD算法有着更优秀的误码性能和收敛速度。
LDPC码;交替方向乘子法;惩罚函数;误码性能;收敛速度
0 引言
低密度奇偶校验(Low-Density Parity-Check,LDPC)码是Gallager博士于1962年提出的一种线性分组码[1],是迄今为止发现的误码性能最接近香农极限的码字之一,成为继Turbo之后信道编码领域的研究热点。线性规划(Linear Programming,LP)最早由J.Feldman提出作为置信传播(Belief Propagation,BP)译码的备选方案[2],然而在实际应用中,LP译码存在收敛速度慢、难以硬件实现等弊端。针对这一问题,国内外研究人员展开了大量研究[3-6]。
为了解决LP译码算法收敛速度慢的问题,文献[3-7]提出了基于ADMM的LP译码方案。由于ADMM技术具有分布式运算、并行处理的特点[8],从而加快译码收敛速率核心思想是通过引入辅助矢量z与传输码字x交替更新。然而,该算法在低信噪比区域误码率仍然很高。为了进一步改善低信噪比区域的误码性能,文献[9-14]通过引入惩罚项,避免码字解为伪码字,从而降低误码率,但同样造成了高信噪比区域的错误平层问题。文献[15]通过对罚函数进行重构,降低了ADMM惩罚译码的误码率,不过该算法的罚函数结构还可以继续完善,误码率有待进一步降低。
本文针对传统ADMM惩罚译码算法提出一种改进方案TS-ADMM-PD。充分利用惩罚函数的结构特点,对罚函数做进一步优化,引用过渡函数对译码性能和收敛速度进行折衷。优化后的罚函数更加细分了在不同端点处斜率的取值,最终所提的TS-ADMM-PD算法在仅增加少量计算复杂度的条件下,译码性能和收敛速度均有所改善。
1 LP译码
考虑长度为N的二进制LDPC码C,校验矩阵为HM*N,其中M为校验节点数,N为变量节点数(M≤N)。令I=(1,2,...,N)和J=(1,2,...,M)分别代表变量节点集合和校验节点集合。所有的变量节点度数为dv,校验节点度数为dc,可用Tanner图来表示。Hij=1表示变量节点vi与校验节点ci之间有一条相连的边。Nc(j)和Nc(j)i分别表示变量节点中与校验节点ci相邻的节点及除变量节点i外校验节点j的所有相邻节点,Nv(i)和Nv(i)j分别表示校验节点中与变量节点vi相邻的节点及除校验节点j外变量节点i的所有相邻节点。
对于一给定码C,定义其码字多面体为码C中所有有效码字的凸包,记为Conv(C)。如果LDPC码在有噪声的信道中传播,则LP译码问题可被转化为码字多面体上的线性规划问题。码字多面体的顶点与传输码字相对应,码字多面体上的每一点都是传输码字的凸组合,并且线性规划译码的最优解总是在码字多面体的顶点处取得[16]。设传输码字为x∈C,接收矢量为y,则LP译码问题可被表达为一般形式如下:
式中,γ表示对数似然比(LLR)矢量;Tj表示选出与校验节点j对应的码字x的分量;PPdj表示所有由长度为dj且包含偶数个元素‘1’的二进制矢量构成的凸包,称为检验多面体。
综上所述,线性规划译码是一种基于最优化技术的译码方案,主要思想是将译码问题转化为数学上的整数规划问题[17]。通过松弛约束条件,将原先难以解决的LP问题分解为小的、易于处理的简单LP问题,然后再利用最优化理论完成整个译码过程[18]。不过仍然存在瀑布区临界值较大、硬件实现复杂度高等问题[19]。
2 ADMM惩罚译码
为了改善LP译码在低信噪比时的误码性能,加快译码收敛,提出了基于ADMM的改进惩罚译码算法(I-ADMM-PD)。该方法的主要思想为向LP译码的目标函数中添加一个惩罚项,将译码问题转化为数学上非线性非凸优化问题,此时的目标函数被改变为:
基于ADMM的惩罚译码问题可写为一般形式:
式中,β为惩罚系数;g(xi)为引入的惩罚函数,对译码错误的码字进行惩罚。随着迭代次数的增加,渐趋于正确译码。 ADMM惩罚译码算法过程如下:
① 对于∀j∈J,构建转换矩阵Tj和接收矢量r的对数似然比γ;
② 设置最大解码迭代次数Tmax为50,译码容差值ε为3.8×10-5;
③ 对于∀j∈J,将拉格朗日乘子矢量yj中的所有元素初始化为0,将辅助矢量zj中的所有元素初始化为0.5。迭代次数k初始化为0;
由γi计算初始解矢量x0,γi为线性规划目标函数的系数。对于∀i∈I,有
式中,xi=∏[0,1](xi)为xi在[0,1]间隔上的投影,总是选取离x=0.5最远的驻点;
yj+1=yj+μ(Tjx-zj);
文献[20]中定义了2个不同的惩罚函数g1(x)和g2(x),g1(x)=-α|x-0.5|,g2(x)=-α(x-0.5)2。这里α>0为常量,取值依赖于具体的译码问题,应选取能加快收敛速度的α值。
ADMM惩罚译码器进行迭代译码的过程中,z和y的更新规律保持不变;在基于ADMM的x更新中:
通过对xi的表达式进行求导,然后令其为零,得到驻点从而求得局部解。由函数性质得到,惩罚函数g(x)在g1(x)(0,0.5)上单调递增。所以如果存在多个驻点,采用简单的阈值总是选择离0.5最远的那个。
①l1惩罚译码:采用ADMM算法,利用g1(x)=-α|x-0.5|,将译码问题转换为解决以下的线性规划问题:
目标函数为f(x)=γTx-α‖x-0.5‖1,则其(xf)i=γi-αsgn(xi-0.5),其中xf表示f(x)关于x的微分。令给定一个ti值,xi有2个解,总是选择离0.5更远的那个解,取阈值ti=di/2,di为第i个变量节点的度数,x的分量xi的更新规律归纳如下:
②l2惩罚译码:采用ADMM算法,利用g2(x)=-α|x-0.5|,将译码问题转换为解决以下的线性规划问题:
3 TS-ADMM-PD算法
正如本文之前所提,要改善译码性能,加快译码收敛速度,需加大惩罚函数在x=0及x=1附近的斜率以增加对伪码字的惩罚力度;减小在x=0.5附近的斜率以便ADMM译码器对变量节点信息进行转换。文献[20]中给出了3种不同形式的惩罚函数,g1(x),g2(x)上文中已给出,现给出罚函数g3(x)=-lg(|x-0.5|),且证明了惩罚函数为对数函数时的译码性能不及前2种。从3个函数曲线中可以看出,在(0,0.5)区间上,g1(x)的斜率恒定为1,g2(x)的斜率从1递减到0,g3(x)的斜率从2lge递增到+;在(0.5,1)区间上的斜率则恰恰相反。将g3(x)的斜率变化与g1(x),g2(x)相对比可得到结论,惩罚函数在(0,1)区间两端附近的点处斜率应该避免取较小的值,在x=0.5附近的点斜率应取较小的值。
所设计的罚函数结构,需满足在(0,1)区间上对称,且斜率在区间两端较大,在x=0.5处较小,容易联想到构造分段函数以尽可能满足要求。对于g1(x)和g2(x),文献[20]将(0,0.5)之间的罚函数划分为2个函数段,一定程度上降低了误码率并加快译码收敛。本文的设计思想是对二段分段罚函数进行再一步的划分以得到更优秀的误码性能。