Neural Network Aided SC Decoder for Polar Codes(论文笔记)

Neural Network Aided SC Decoder for Polar Codes阅读笔记

研究背景:
从理论上讲,只要有足够的规模和足够的训练,就可以完全用神经网络(NN)来代替传统的极性码译码器,称为神经网络译码器。
碰到的问题:
但是,随着信息长度的增加,指数级增长的训练复杂度变得不可接受,这意味着实际上只能训练短码译码器。
解决办法:
然而,长极性码的连续抵消(SC)译码器可以被分成若干个短码的SC译码器,它们可以被若干个短码NN译码器取代,然后整个译码器就成为我们的NN辅助SC(NNSC)译码器。此外,我们还定义了神经网络的泛集,它可以组合成任意长极性码的NNSC译码器。
研究目的
本文构造NNSC译码器的主要目的是利用神经网络的优势来提高极性码的译码效率,同时保证与传统译码算法相比具有可接受的译码性能。

Introduction

相继相消(SC)译码算法是与极性码一起提出的一种基本而重要的极性码译码算法。

目前流行的极性码译码算法,如连续抵消列表(SCL)译码算法[2]、连续抵消堆栈(SCS)译码算法、连续抵消混合(SCH)译码算法都是基于SC译码算法的。
但这些算法都有一个共同的缺点,就是后面的比特译码依赖于前比特的译码结果。

因此,迭代译码计算必须按一定的顺序进行,这与前馈神经网络(NN)的逐层计算不同。这意味着算法的并行度相对较低,译码效率较低。然而,无论具体的计算顺序是什么,无论后一位的解码如何依赖于前一位的解码,要预测的每一位毕竟都是解码器输入值的函数。文献[3]和[4]证明了一个多层有限神经元的前馈神经网络可以逼近任意连续函数,这就是通用逼近定理,这使得用神经网络代替传统的极码译码器是可行的

文献[5]提出了一种设计和训练神经网络译码器的方法,其误码率(BER)与传统译码器相近。【文献5

然而,当信息长度(码字中的信息位数)线性增加时,神经网络译码器的训练复杂度呈指数增长,这意味着这种“纯神经网络”方法只适用于短码译码。为了将神经网络用于长码译码,在文献[6]中,作者将长码的置信传播(BP)译码器划分为若干个短码译码器,并用文献[5]中方法训练的短码神经网络译码器来完成这些短码译码任务,成为长码译码的一种可行方法。
【文献6】

Constructing NNSC Decoder

但SC算法作为一种比BP算法更流行、更基本的极地码译码算法,可能会显示出更大的研究价值。因此,本文主要研究神经网络辅助SC译码器(NNSC译码器),为进一步研究SCL等其他类SC译码算法提供了一个起点。首先,我们训练了几个短码神经网络译码器作为NNSC译码器的组成部分。然后分析了SC译码器的分组方法,设计了适用于长码的NNSC译码器。最后,我们证明了不需要为每组NNSC译码器训练一个NN译码器,只需几个NN译码器,我们称之为NN的通用集合,就可以构造出我们想要的任意长极性码的NNSC译码器。

SC解码是计算单元的组合,每个计算单元具​​有2个输入节点和2个输出节点。每个2到2单位包含一个f计算和一个g计算,分别定义为(2)和(3)。
Neural Network Aided SC Decoder for Polar Codes(论文笔记)
Neural Network Aided SC Decoder for Polar Codes(论文笔记)
图3示出了极性码(N=8 也就是码字长度为8的)的整个SC解码计算。在每个单元中,只需要两个输入值即可完成f计算,但对于g计算,还需要f计算位置上的部分和值​​,Neural Network Aided SC Decoder for Polar Codes(论文笔记)
部分和值是来自解码序列的一部分的编码结果。实际上,它表示在f计算位置上的预测值。
例如,如图3所示,如果要在第2层的第5个节点上进行g计算,则应输入,在第2层的第1个节点上的预测值,这是已编码序列的第1位从
Neural Network Aided SC Decoder for Polar Codes(论文笔记)
因此,当我们获得单位的两个输入值时,可以直接计算f计算,但是g计算必须等待相关位的解码结果,这是限制SC和其他基于SC的算法效率的主要原因。
然而,从图3中我们可以看到,如果我们忽略了第一层的计算(第3层到第2层的计算),那么N位解码问题就变成了两个独立的 (N/2) 位解码问题。

Neural Network Aided SC Decoder for Polar Codes(论文笔记)
如图4(a)所示,如果将8位SC解码器划分为两个4位独立解码器,即解码器1和解码器2,则可以将长码解码问题转换为短码解码问题。图4(b)示出了图4(a)中的解码器的计算工作流程。
如果我们用神经网络解码器代替这些短码解码器,那么整个解码器就变成了我们的NNSC解码器。而对于较长的代码,我们可以留更多的层进行SC解码,然后训练比特NN解码器来做剩下的N/2,甚至N/4,N/8,N/16等等。实际上,我们可以根据实际需求,在更多的供应链计算和更多的神经网络计算之间*选择。
为了使用由前面描述的方案训练的神经网络解码器进行解码(在机器学习领域中称为泛化),用于泛化的代码和用于训练的代码必须匹配,这意味着N,K,F在训练和泛化之间应该相同。

为了将神经网络解码器训练为NNSC解码器的组成部分,我们首先应该通过高斯近似算法[7]或其他替代方法,如密度演化算法[8]来计算N位比特代码的*集,然后可以将*集分成较小的组。然后可以根据每组中的*集训练神经网络解码器。最后,经过训练,NNSC解码器可以用来解码。
到目前为止,对于(N,N0, K )的特定组合,我们能够训练(N0/N) NN解码器并将它们组合成(N/K)极性码的整个NNSC解码器。然而,在下一节中,我们将演示训练 (N0/N) NN解码器是没有必要的,并且对于任何长极性码,可以将有限数量的NN解码器组合成NNSC解码器。

上一篇:Python数据分析入门(二十二):数据可视化之绘制雷达图


下一篇:视频编码GOP