极化码小结(2)

Chapter2 极化码的编码算法

  极化码的编码问题主要包括两个方面。less

  首先是生成矩阵的构造:性能

生成矩阵GN:

  先来看信道合并示意图,下图截自Arikan论文(之后再也不解释,Arikan论文 特指论文《Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels》):学习

  请读者留意这是fig.3,也即图三。根据这张图所表现的形式,咱们能够概括出GN的表达式:测试

疑问:这个表达式如何获得?它与上图有什么对应关系?编码

  咱们来看等式右端第一部分:lua

  观察RN前面的表达式,符号“”是一种矩阵运算,称为“克罗内克积”,详细内容读者可自行查阅维基百科词条:克罗内克积-维基百科;“F”定义为矩阵,F的定义又有何意义呢?咱们用一个二维向量来测试一下:,可见用输入向量左乘F矩阵,就可以实现图中第一步线性变换。当N>2时,因为F只有二维,为了完成运算,咱们经过克罗内克积的办法在保持F矩阵属性的同时扩展它的维度,使得它知足咱们的运算要求。因此RN前面的运算能够与上图中的线性变换对应起来。spa

  RN对应图中的自身,这个不须要再说。设计

  观察RN的右端,I2为二维的单位矩阵,GN/2则体现了递推、迭代的思想。用I2与GN进行克罗内克积,就是为了实现生成矩阵的递推和迭代。这部分对应了图中最右端的操做。所以咱们能够看到,Arikan给出的生成矩阵的定义式确实与上图是彻底对应的。3d

  接下来,Arikan又po出了另外一张图:

  这是fig.8,它与fig.3的不一样之处在于,fig.3中先进行线性变换再进行置换操做,而fig.8中先进行置换操做再进行线性变换。根绝Arikan的说法,这两个图是全等的。fig.8对应的公式为:,也就是说这两个公式是等价的:

  那么这一步是如何获得的呢?如何证实这两个图是全等的呢?这里有一份我之前证实时留下的手稿,具体的过程我没有精力再排版打出来,看客若是对这个证实有兴趣,不妨做为参考。不过这些细节就算不了解,也不妨碍咱们对极化码理论的学习。就像数学教科书的上的许多定理公式,更多时候重点在于如何去理解和应用。

  让咱们回到Arikan的论文中,继续看他是如何一步一步获得GN的构造方法的。

  上面这个公式第一行咱们已经证实过了,从第一行到第二行的理论支持来自于克罗内克积的混合乘积性质:

  图片来自克罗内克积-维基百科

  咱们继续往下看:

  这个就很好理解了,直接迭代代入GN/2而后利用混合乘积性质的逆定理就能够获得了。重复上述操做,不断进行迭代,最后咱们能够获得这样一个式子:

  其中BN用来代替迭代所产生的式子:。BN能够写成递推公式:

  获得上面的公式以后,咱们很容易就能够计算出BN并求出GN

  再来看信息位的选取:

信息位选取:

  经过上一节的介绍,咱们了解到了信道的极化现象,而且认识到正是信道极化现象催生了极化码。如今,咱们就要利用这个现象来构造极化码。根据咱们所设想的,经过在偏差率较低的信道(无噪信道)上传输有用信息,在偏差较高的信道(纯噪信道)上传输信息量为0的信息,咱们能够实如今有噪信道下进行无噪传输。

  所以,如何挑选要传输信息的信道成为了相当重要的事情。在表征信道质量的参数向量P中,咱们称传输有用信息的位为信息位,传输无用信息的位为冻结位。问题变成了如何求出这个参数向量P。只要咱们求得这个P,而后对它进行从小到大的排序,再根据码率肯定要用到多少信息位,而后从排好序的P中挑选出性能最好的那部分,就能够实现咱们的需求。

  Arikan的论文中这样说道:“对于一个给定的B-DMC信道W,本论文对信道的两个参数感兴趣:一个是信道的对称容量I(W):

  I(W)表明了等几率输入下,经过信道W进行可靠信息传输的最大速率。第二个称为巴氏参数Z(W):

  巴氏参数表明了在一次经过W传输0或1时,最大似然判决错误几率的上限。显然,Z(W)反映了信道的可靠度 。

  显然,咱们能够分别将这两个参数做为参数向量P,对于I(W),咱们选择较大的I(W)做为信息位;对于Z(W),咱们选择较小的Z(W)做为信息位。

  早期Arikan提出,当W为BEC(二进制删除信道)时,有,计算两者中的任何一个均可以。Arikan论文中有Z(W)的递推计算公式:

  其中第二个式子的不等号在W为BEC取等,所以咱们能够精确的计算巴氏参数,并且计算复杂度也较低,为O(NlogN)。

  后来,Arikan给出了当W不为BEC信道时的计算方法,他提出使用“Monte-Carlo算法”(蒙特卡罗法)来近似计算巴氏参数,然而,这个计算的复杂度因输出符号集的指数型爆炸增加而变得不可能。

  还有一种方法也用来进行巴氏参数的估计——Density Evolution(密度进化),可是这个方法缺点在于计算复杂度仍是较高(为O(n)),同时精确度也很差。

  目前咱们项目组所使用的信息位选择采用的是tal-vardy所提出的算法。这种算法是Tal和Vardy于2013年发表在IEEE上的一篇21页的论文中提出的,论文名为《how to construct polar code》,感兴趣的读者能够去了解一下。若是对英文阅读感受到不舒服,读者也能够参考《极化码编码与译码算法研究》[王继伟]在2.2.3节中对这种算法的较为详细的中文介绍。

  这种算法主要经过信道弱化和信道强化操做,将的输出符号集进行合并,使其可以具备符合咱们须要长度的输出符号集大小。另外,对于咱们常常用到的AWGN信道,经过高斯近似(GA)方法能够在很是低的复杂度下在较高的精确度上选择信息位。这里列出两篇发表在IEEE上的参考论文,有兴趣的读者能够自行去了解,这里再也不展开说了。

  【1】《Evaluation and Optimization of Gaussian Approximation for Polar Codes》.Jincheng Dai等.(2016.5)

  【2】《Construction and Block Error Rate Analysis of Polar Codes Over AWGN Channel Based on Gaussian Approximation》.Daolong Wu等.(2014.7)

   除此以外,还有一种办法能够提升极化码的构造效率。那就是使用“design-SNR”。

  无论咱们采用什么构造办法,信息位的选取老是与SNR的取值密切相关。咱们在仿真极化码性能的时候,每每会以SNR为仿真图的横坐标,以BER、FER为纵坐标,观察曲线走向,经过对比曲线判断优劣。可是每一次带入新的SNR值,都要从新构造一个新的参数向量P,而后从新挑选信息位,这种传统的构造方法咱们称为“point-by-point(逐点SNR)”。这种重复性的工做无疑增长了极化码构造的时间复杂度。

  经过研究,咱们发现,对于一个特定的码率,总存在一个完美的SNR,咱们称之为“design-SNR(设计SNR)”,咱们只须要代入这个SNR进行一次参数向量P的构造,而后将挑选好的信息位储存起来。之后在这个码率下,不论在哪一个SNR值下进行仿真,咱们只代入预存的这个信息位进行极化码的构造。因为信息位只构造了一次,时间复杂度获得了显著下降。

  根据仿真结果显示,在码长和码块较大的状况下,design-SNR与point-by-point法契合的很是好,以下图:

  获得了生成矩阵,又构造了信息位。接下来只须要进行简单的矩阵操做,再叠加上噪声,就能够实现极化码的编码。

相关文章
相关标签/搜索