复现笔记--有关极性码的两篇文章

**

《Scaling Deep Learning-based Decoding of Polar Codes via Partitioning》

**
背景:基于深度学习的信道解码器的训练复杂度随码本大小以及信息位数的增加而呈指数级增长。因此,神经网络解码(NND)当前仅适用于非常短的块长度。
提出的解决方法:在这项工作中,我们表明,当解码器的子块被基于神经网络(NN)的组件替代时,可以增强用于极性代码的常规迭代解码算法。因此,我们将编码图划分为较小的子块,并分别对其进行训练,从而接近每个子块的最大后验(MAP)性能。然后,这些块通过其余的常规置信度传播解码级进行连接。最终的解码算法是非迭代的,并固有地实现了高水平的并行化,同时展现出具有竞争力的误码率(BER)性能。我们通过分区检查降级情况,并将所得的解码器与最新的极坐标解码器(例如,连续消除列表和置信度传播解码)进行比较。

深度学习的信道解码的两个优点:非迭代(因此,低延迟)解码以及接近最大的后验(MAP)解码性能

极码polar codes 是个什么样的存在
极坐标编码器将k个信息位映射到长度为N的向量u的k个最可靠的位位置,表示为信息集
在这里插入图片描述

,而其余N-k个位置被视为冻结位置。这些冻结的位置表示为
在这里插入图片描述

,并且必须在解码器端知道。

输入块u编码是根据
在这里插入图片描述
在这里插入图片描述是生成矩阵

在这里插入图片描述
在这里插入图片描述
结果的编码电路图如图一所示其中N= 8
复现笔记--有关极性码的两篇文章_第1张图片
极性码的BER性能在很大程度上取决于所使用的解码器的类型,并且已成为与极性编码有关的最令人兴奋和最活跃的研究领域之一。解决极性解码问题有两种主要的算法途径:1)遵循连续的“取消”解码,遵循串行“信道层解包”解码策略[3],2)基于Gallager BP迭代算法的基于置信传播的解码[14] ]

在整个工作过程中,我们坚持使用BP解码器,因为它的结构与神经网络更好地匹配并支持并行处理。有关连续消除(SC)解码及其列表扩展(称为连续消除列表(SCL)解码)的详细信息,BP解码器描述了一种迭代消息传递算法,该算法具有软值,即编码图上的对数似然比(LLR)值。为了简单起见,我们假定二进制相移键控(BPSK)调制和加性高斯白噪声(AWGN)通道。但是,其他渠道也可以直接实现。对于接收值y,它保持为
在这里插入图片描述
上式分母是噪声方差。 LLR消息有两种类型:从右到左的消息(L消息)和从左到右的消息(R消息)。一个BP迭代包含两个更新传播:
(1)从左向右传播:R消息从最左边的阶段(即先验信息的阶段)开始更新,直到到达最右边的阶段。
(2)从右向左传播:L消息从最右边的阶段(即信道信息的阶段)开始更新,直到到达最左边的阶段。
复现笔记--有关极性码的两篇文章_第2张图片
A. Partitionable Codes

与其他具有接近容量性能的类似随机信道的代码相反,极性代码显示出非常规则的(代数)结构。具有启发性的是,如图1所示,对于N= 8,编码图 图一可以分为独立的子图。在第一个log2(Np)阶段没有互连,其中Np表示每个子块的位数。从每个子块都可以独立解码的意义上说,我们定义了可划分的代码(即,在同一阶段不存在任何互连;这导致了像树一样的因子图)。
该算法适用于所有可分码,不一定局限于极性码。如图1所示,每个子图(在下文中称为子块)现在仅经由剩余极性级与其他子块耦合。为了简化极性解码,现在可以基于每个子块对多个子块Bi进行解码
冻结位位置的集合【A杠】需要被分成与子块【Ai杠】(具有信息矢量ui)相对应的子集合Bi,因此,每个子块可能显示不同的码率。从更抽象的角度来看,我们遵循[17]的精神。他们简化的连续消除(SSC)算法将解码树划分为单奇偶校验(SPC)和重复码(RC)。事实证明,这是提高整体吞吐量的非常有效的方法,因为可以有效地实现SPC和RC子解码器。我们的方法将这些分区替换为

Python语法

一、
And
判断变量是否为0, 是0则为False,非0判断为True,
and中含0,返回0; 均为非0时,返回后一个值,
2 and 0 # 返回0
2 and 1 # 返回1
1 and 2 # 返回2
or中, 至少有一个非0时,返回第一个非0,
2 or 0 # 返回2
2 or 1 # 返回2
0 or 1 # 返回1
二、
np.vstack() 和 np.hstack()
第一个是按垂直方向堆叠数组构成一个新的数组
第二个是按照水平方向堆叠数组构成一个新的数组
三、
np.max与np.amax是同名函数。
amax(a, axis=None, out=None, keepdims=, initial=, where=)
Return the maximum of an array or maximum along an axis.
寻找矩阵最大和最小的元素
axis=0 代表行 , axis=1 代表列
若要返回每一列元素的最大值,需要在 axis=1 方向进行比较,则指定 axis=1
若要返回每一行的最大值,在 axis=0 方向进行比较,则指定 axis=0

**

《PARTITIONED SUCCESSIVE-CANCELLATION LIST DECODING OF POLAR CODES》

文章链接:
**极坐标码的分区连续对消列表解码
在本文章中,我们证明,只有小的码字长度可以有效地训练,因此我们将极坐标编码图分成几个子图
**

摘要

**
连续消除列表(SCL)解码是一种为极坐标码提供非常好的纠错性能的算法。但其硬件实现需要大量内存,主要是存储中间结果。本文提出了一种分区SCL算法,以减少传统SCL算法的大内存需求。解码器树被分解成单独解码的分区。我们表明,通过仔细选择列表大小和分区数量,所提出的算法可以在需要较少内存的情况下优于传统的SCL算法。

introduction

极地码可证明实现了无记忆通道的对称容量,因此作为有前途的纠错码[1]引起了很多关注。连续取消(SC)解码最初是作为极性码的一种低复杂度解码算法提出的。结果表明,只要极性码的速率小于信道的容量,当块长度达到无穷大时,在SC解码下极性码的错误概率将变为零。从硬件实现的角度来看,SC解码可以表示为具有固定时间和空间复杂度的解码器树,因此非常有吸引力[2]。然而,该算法是次优的,尤其是fordecoding中等长度的极性码。为了提高SC解码的纠错性能,在[3]中提出了SC列表(SCL)解码算法。与SC解码不同,SC解码根据先前位的估计来估计每个位,而SCLepepsa使用每个候选对象的对数似然(LL)约束了最有可能的候选对象到达解码步骤的列表。 SCL减少了SC和最大似然(ML)解码之间的差距,但代价是增加了复杂性。此外,还表明,将极性代码与循环冗余校验(CRC)作为外部代码进行级联可以提高SCL的性能,从而使CRC辅助SCL解码的极性代码能够胜过同等的低密度奇偶校验(LDPC)代码长度和比率[3]。为了降低与基于LL的SCL解码相关的硬件复杂性,使用了对数似然比(LLR)值,并根据[4]调整了路径度量计算。不幸的是,与基于LL的类似,基于LLR的SCL解码需要大的内存来存储中间值,即,整个核心区域通常在很大程度上由内存控制[4]。本文提出了一种分区SCL(PSCL)解码算法,以减少与SCL解码相关的存储需求。更具体地,PSCL解码对解码器树的分区执行SCL解码,并且仅一个路径候选从一个分区转移到下一分区。结果,可以在代码的不同分区之间共享内存,因此,大大降低了整体内存需求。在不失一般性的前提下,我们提出了一种CRC辅助方案。

polar codes (极性码)

复现笔记--有关极性码的两篇文章_第3张图片

极坐标编码
复现笔记--有关极性码的两篇文章_第4张图片

你可能感兴趣的:(python,机器学习,深度学习,算法,tensorflow)