极化码之tal-vardy算法(1)

  继前两节我们分别探讨了极化码的编码,以及深入到高斯信道探讨高斯近似法之后,我们来关注一个非常重要的极化码构造算法。这个算法并没有一个明确的名词,因此我们以两位发明者的名字将其命名为“Tal-Vardy算法”。

  在《极化码小结(2)》之中,我们简单讲述了BEC信道下构造极化码的方法——通过直接计算巴氏参数Z(W)来构造,计算复杂度为O(N)。

  在《极化码之高斯近似》中,我们讨论了常用的高斯信道下构造极化码的方法——高斯近似,计算复杂度也为O(N)。

  现在,我们再次将极化码的触手伸向另一种常见的信道——二元对称无记忆信道(BMS)。

  由于篇幅可能较大,因此我将分两节对该算法进行一个简略的介绍。我会将本文涉及到的参考文献放在相关内容开头,并建议有需要的各位去读原论文。

  【1】《How to Construct Polar Codes》Ido Tal, Alexander Vardy.

Part1. 简单介绍

  这套算法中,有两个核心的信道操作,一种叫做信道弱化(degrade),另一种叫做信道强化(upgrade)。论文作者形象的将这两种操作产生的弱化信道、强化信道与原信道的关系比喻成“三明治”的结构。

图1 三种信道之间的关系示意

  论文的大致思路,就是通过将原始信道通过弱化操作和强化操作,使之成为弱化信道和强化信道。分析发现,这两种信道在各种参数水平上都极为接近,因此通过类似数学上的“两边夹定理”,我们可以用这两个信道来近似原始信道。

  “tal-vardy算法”构造极化码的思路是直接计算各信道的错误概率Pe(W),然后利用这个参数来挑选我们所需的信息位。这种挑选信道的方法显然更具有普遍性。。“Tal-Vardy算法”是针对B-DMC(二元离散无记忆)信道提出的,对于像高斯信道这样具有连续输出的信道不能直接使用。因此作者也提出了一种办法,使得这种算法同样能够应用于输出连续的信道。

  我们之前提到过,计算信道错误概率Pe(W)的难度在于W的输出符号集大小随着n呈指数型增长,这是需要克服的难点。为了使上述计算成为可能,作者在弱化操作或强化操作中,通过使用“合并函数”,使得输出符号集能够缩减到指定的符号集大小。

  利用该算法构造极化码的时间复杂度为n的线性复杂度。

  根据论文的思路,为了更好的理解这篇论文中所提出的这一算法,我们将尝试从三个部分来探讨。分别是输出字符集的合并、信道操作、如何处理连续对称信道。

Part2.研究对象

  【2】《A Note on Symmetric Discrete Memoryless Channels》Ingmar Land.

  在研究极化码构造问题时,我们经常遇到各种各样的信道,现在我们来做一个简单的总结。

 DMC(离散无记忆信道)

  DMC具有离散的输入字符集X,离散的输出字符集Y,以及转移概率函数P(y|x)。它的输出仅仅与当前的输入有关,因此它又是无记忆信道。

  假设输入字符集大小为Mx,输出为My,不失一般性的,我们假设:

  那么,这个 信道的转移概率可以用一个矩阵来表示:

  注意到,矩阵的每一行的和都为1。

Strongly Symmetric DMCs(强对称DMC)

  在介绍这个信道之前,我们先来介绍一个概念——恒等排列

  如果向量v和向量μ中的元素完全相同,只是元素的排列顺序不同,那么,我们称v为μ的一个恒等排列。

  eg.  μ=[1 2 3 4],v=[2 4 1 3],则v是μ的一个恒等排列。

  定义:对于一个信道的转移概率矩阵,如果矩阵的每一行都是其他行的恒等排列;每一列都是其他列的恒等排列,那么我们称这个转移概率矩阵所描述的DMC为“强对称DMC”。

  一个非常特殊的例子是二元对称信道(BSC):

图2 二元对称信道

  二元对称信道的输入字符集为{0,1},输出也为{0,1},其转移概率矩阵为:

  

对称DMC

  定义:对于一个转移概率矩阵,如果它能够按列拆分为数个子矩阵,使得每一个子矩阵都满足“强对称”定义,那么,我们称这个转移概率矩阵所描述的DMC为“对称DMC”。

  一个特殊的例子是二元删除信道(BEC):

图3 二元删除信道

  它的输入字符集为{0,1},输出字符集为{0,△,1},其中△为删除符号。BEC的转移概率为:

  显然 ,它可以按列拆分为两个子矩阵:

  这两个矩阵都符合强对称信道的定义,因此BEC是对称DMC。

  另外一个特例是AWGN信道。BPSK调制下,AWGN信道的输入字符集为{-1,1}。首先,可以用相对于y = 0对称的量化区间来量化输出(也即,将连续输出近似为离散输出),它的子信道都是BSC,根据上述定义,所生成的信道是对称的。其次,这个量化区间可以设置的无穷小,其子信道依旧是BSC,不过子信道的数量趋近于无穷。

弱对称DMC

  定义: 对于一个转移概率矩阵,如果它的每一行都是其它行的恒等排列,且每一列之和都是相等的,那么,我们称这个转移概率矩阵所描述的DMC为弱对称DMC。

  eg.给定一个弱对称DMC,其输入字符集为{0,1}(注意,这个地方在【2】中错写为{0,1,2}),输出字符集为{0,1,2},其转移概率矩阵如下:

  如果一个信道的输出符号集为{0,1},那么我们称这个信道有二元输入,“二元输入的对称无记忆信道”,这就是本文中的算法所研究的对象。我们来简单了解一下它的性质。

  Arikan论文(特指《channel polarization……》)的第VI-A节中对“对称的二元离散无记忆信道”的性质进行了详细的说明,参考文献【1】的第II节中对此也有描述。

  对于一个无记忆信道W,我们假设它的输入为二进制数,且它是对称的,则有W:X→Y,其中X为输入符号集,X={0,1};Y为输出符号集,Y任意。根据定义,对于Y,存在一个恒等排列满足:

  i)

  ii) ,对于所有的y∈Y都成立。

  为了方便起见,我们将记为,并称和y为共轭对。我们假设输出符号集Y为一个有限输出集(这个假设,在将算法推广到具有连续输出符号集的信道中时,会被证明)。

  在Arikan论文的第VI-A节中,给出了这样一个定理:

Proposition 13(定理13):

  如果一个B-DMC W是对称的,那么,也是对称的,并且有:

  其中运算 “·” 是一种速记。我们简记x·y:当x=0时,x·y → y;当x=1时,x·y→。如同上面的定义,y和为共轭对。

  这是一个非常重要的结论,我们将在下面的信道操作中多次使用这个公式来进行计算的化简,请读者留意。

  Arikan论文中给出了定理13的证明。

Part3.合并函数

  从逻辑顺序角度考虑,我们先来探讨一下合并函数的内容。不过在这之前,我们必须先熟悉一下弱化信道与强化信道,这对于合并函数的介绍是必不可少的。

弱化信道

  对于原始信道W:X→Y,对于信道Q:X→Z,若存在一个中间信道P:Y→Z,使得对于所有的x和z都有:  那么,我们写,指代Q相对于W是弱化的。

强化信道

  强化信道的描述与弱化信道类似,实际上,只需要将上式中的W和Q调换位置,就能够得到强化信道的表述:

  写,指代Q‘相对于W是强化的。

  对合并函数的理解从一个引理开始:

Lemma7:

  设W:X→Y为BMS信道,假设y1,y2为输出字符集Y中的符号。对于信道Q:X→Z,定义其输出字符集Z为:  则,对于所有的x和z,定义:

  那么,有

  引理7中,字符集Z中的“\”表示“不包含”。

  我们可以看到,在这个引理之中,我们放入了一个原始的W信道,得到了一个弱化信道Q。并且从W到Q,信道的输出字符集的大小发生了改变,Q字符集大小比W小2。因此,从这一点来看,我们可以通过引理 7同时得到一个弱化的、具有更小字符集的BMS信道。

  引理7的证明并不难。我们只需要对中间信道P进行巧妙的定义:

  对于中间信道P:Y→Z,从Y到Z的映射关系为:以100%的概率映射为以100%的概率映射为,其余的符号一一映射为自身。

  显然,这样的中间信道是存在的,根据前面的描述,Q是W的弱化信道。

  得证。

  合并函数是用来解决因Arikan信道合并迭代公式造成的信道输出字符集爆炸增长的有力工具。根据引理7,对于一个具有v大小输出字符集的原始信道W,通过合并一对符号(及其共轭符号)的操作,我们每次都能使信道的输出字符集大小减2。通过多次调用这一操作,我们能够将W的输出字符集大小降到任意的大小μ。在【1】中,μ也用来表示“保真度”,一般来说,μ越大,合并函数的调用次数越少,系统性能越好,相应输出字符集也就越大,极化码构造算法的计算复杂度也就越高。

  现在,我们有了合并函数这个有力的工具,但是要应用它,还有一个问题需要解决。在每一次的合并操作中,我们应该合并哪两个符号,是在输出符号集中随意挑选吗?还是需要遵循一定的原则?

  【1】中的定理8对此进行了限定。

Theorem8

  对于BMS信道W:X→Y,输出字符集Y有m个元素,假设有:

1 ≤ LR(y1) ≤ LR(y2) ≤ ······ ≤ LR(ym)

  对于Y中任意两个符号a,b,设I(a,b)为合并后信道容量的大小。则,对于 1 ≤ i ≤ j ≤ k ≤ m,有:

  定理8中,LR(y)表示似然判决下,y符号的最大似然值。通过定理8,我们可以发现,对相邻两个符号进行合并后所得到的信道的信道容量,总是大于非相邻符号的合并结果。这一定理指导我们在每一次合并时,都选择相邻符号进行合并。定理8的证明在【1】的附录中给出。

  为此,我们对W信道的输出符号集Y按照最大似然值排序。假设输出符号集Y大小为2L,包含L个共轭对。

  注意到定理8中的似然值排序,有隐含条件LR≥1。

  似然值定义为:

  根据对称信道的定义:,可以得到,对于有:

  同样,对于有:  因此,对于共轭对,1 ≤ i ≤ L ,二者必定有一个满足似然值大于等于1。我们挑选出这个符号作为这对共轭对的代表,参与似然值的排序,最终得到

  当我们将相邻两个符号 yi 和 yi+1 合并为 z 后,有:

  除此之外,为了在合并操作的过程中,尽可能少的损失信道容量,我们倾向于选择合并前后信道容量变化最小的那一对相邻元素。因此,在对输出符号集按照似然值排序之后,我们在合并之前还要做的一项工作就是,寻找信道亏损最小的相邻元素。我们设为合并前后信道的亏损,并以此为挑选合并相邻元素的依据。

  遵循【1】中的符号命名规则,我们设 a,b,a‘,b‘,分别表示:  定义

  其中:

  这样,合并之前,我们通过计算所有相邻元素合并后信道容量的亏损,找到亏损值最小的那一对相邻元素就可以了。

  【1】第V节中对这部分内容的介绍十分详细,给出了包括合并函数中诸如堆栈、链表、指针的相关数据结构概念的介绍,并简述了合并函数的算法实现,思路非常清晰,可作为编程参考。

  以上对合并函数的介绍,仅仅针对信道弱化操作展开。合并还可以通过信道强化操作,这部分内容稍微复杂一些,我无法表述清楚,请读者自行探索。

  下一节中,我们将着重介绍信道弱化与信道强化操作,如果篇幅允许,我们将探索二元高斯信道下tal-vardy算法的应用。

时间: 2024-10-11 23:20:26

极化码之tal-vardy算法(1)的相关文章

极化码小结

一个暑假过去了,身心懈怠,知识荒疏,为了方便接下类的研究工作.这里对已经掌握的极化码知识做一个简单的小结. Chapter1 极化码简介: 极化码建立在信道极化这一现象之上. 信道极化现象来自于信道合并与信道分裂这两种信道操作. 信道合并: 将N个独立信道W通过变换使之变为一个具有“集体意义”的信道WN,这里“集体意义”的产生来源于变换,而变换遵循固定的规则. 首先,变换是一个递归过程.对于N(N=2n)个独立信道W,想要将其变为一个具有“集体意义”的信道WN需要进行n次信道操作,每次信道操作都

极化码之高斯近似

我们知道,极化码的诞生在伴随着"到达香农限"的光荣头衔的同时,也遗憾的存在许多缺点. 极化码有两大法宝--低复杂度和高可靠性.其中高可靠性的前提条件为"码长较长时",在短码领域,由于信道极化的不充分,极化码并不能很好的逼近香农限.低复杂度也有前提条件,就是它是基于BEC(二元删除信道)提出的,在BEC信道下,极化码的编码和译码都具有较低的复杂度.然而,在其他信道上我们不得不采用各种近似手段,如蒙特卡洛法.密度进化法等,这些方法的引入使得极化码的低复杂度特点受到一定的

极化码的matlab仿真(1)——参数设置

根据老师的安排,对于极化码的了解从仿真开始. 仿真的手段有很多种.可以利用C,C++,matlab等进行仿真的实现.其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中了. 理由是,matlab的语法非常简单,接近自然语言.优秀的绘图能力,让其他软件自愧不如.还有众多的工具箱,功能强大到令人发指.当然非要用C来仿真也是可以的.但试想一个简单的函数,matlab只需要调用一下就好了,C语言怕是要自己动手写两行,何必自找麻烦呢. 话不多说,等下,我再说最后一句,本人研

Mahout源码分析-K-means聚类算法

一 算法描述 1.随机选取k个对象作为初始簇中心: 2.计算每个对象到簇中心的距离,将每个对象聚类到离该对象最近的聚簇中去: 3.计算每个聚簇中的簇均值,并将簇均值作为新的簇中心: 4.计算准则函数: 5.重复(2).(3)和(4),直到准则函数不再发生变化. 二 源码分析 Mahout源码分析-K-means聚类算法

【E2LSH源码分析】LSH算法框架分析

位置敏感哈希(Locality Sensitive Hashing,LSH)是近似最近邻搜索算法中最流行的一种,它有坚实的理论依据并且在高维数据空间中表现优异.由于网络上相关知识的介绍比较单一,现就LSH的相关算法和技术做一介绍总结,希望能给感兴趣的朋友提供便利,也希望有兴趣的同道中人多交流.多指正. 1.LSH原理 最近邻问题(nearest neighbor problem)可以定义如下:给定n个对象的集合并建立一个数据结构,当给定任意的要查询对象时,该数据结构返回针对查询对象的最相似的数据

{区块链教程}以太坊源码分析fast sync算法二

{区块链教程}以太坊源码分析fast sync算法二:上面的表格应该这样解释:如果我们每隔K个区块头验证一次区块头,在N个区块头之后,伪造的概率小于***者产生SHA3冲突的概率.这也意味着,如果确实发现了伪造,那么最后的N个头部应该被丢弃,因为不够安全.可以从上表中选择任何{N,K}对,为了选择一个看起来好看点的数字,我们选择N = 2048,K = 100.后续可能会根据网络带宽/延迟影响以及可能在一些CPU性能比较受限的设备上运行的情况来进行调整. Using this caveat ho

Redis源码中探秘SHA-1算法原理及其编程实现

导读 SHA-1算法是第一代"安全散列算法"的缩写,其本质就是一个Hash算法.SHA系列标准主要用于数字签名,生成消息摘要,曾被认为是MD5算法的后继者.如今SHA家族已经出现了5个算法.Redis使用的是SHA-1,它能将一个最大2^64比特的消息,转换成一串160位的消息摘要,并能保证任何两组不同的消息产生的消息摘要是不同的.虽然SHA1于早年间也传出了破解之道,但作为SHA家族的第一代算法,对我们仍然很具有学习价值和指导意义. SHA-1算法的详细内容可以参考官方的RFC:ht

Ceph源码解析:CRUSH算法

1.简介 随着大规模分布式存储系统(PB级的数据和成百上千台存储设备)的出现.这些系统必须平衡的分布数据和负载(提高资源利用率),最大化系统的性能,并要处理系统的扩展和硬件失效.ceph设计了CRUSH(一个可扩展的伪随机数据分布算法),用在分布式对象存储系统上,可以有效映射数据对象到存储设备上(不需要中心设备).因为大型系统的结构式动态变化的,CRUSH能够处理存储设备的添加和移除,并最小化由于存储设备的的添加和移动而导致的数据迁移. 为了保证负载均衡,保证新旧数据混合在一起.但是简单HASH

PCL源码剖析之MarchingCubes算法

原文:http://blog.csdn.net/lming_08/article/details/19432877 MarchingCubes算法简介 MarchingCubes(移动立方体)算法是目前三围数据场等值面生成中最常用的方法.它实际上是一个分而治之的方法,把等值面的抽取分布于每个体素中进行.对于每个被处理的体素,以三角面片逼近其内部的等值面片.每个体素是一个小立方体,构造三角面片的处理过程对每个体素都“扫描”一遍,就好像一个处理器在这些体素上移动一样,由此得名移动立方体算法. MC算