[0054] 下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0055] 本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
[0056] 本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
[0057] 为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
[0058] 本发明实施例根据极化码的基本原理可知,对于码长N=2n,信息位为k的极化码,码率为R=k/N,可以看作是由两个长度为N/2的极化码串联而得。极化码的编码过程概括来说就是找到k个最可靠的极化信道来传输信息位,其余N-k个最不可靠的信道来传输冻结位,通常将冻结位设置为0。以一个N=8,k=4的极化码为例,编码后的码字 经过调制进入噪声信道传输,噪声信道输出的 为极化码译码器的输入。
[0059] 根据输入 前面的判决比特 和冻结位的位置AC,得到每个比特的估计值判决规则为:若该比特为冻结位,直接判决为0;若该比特为信息位,当最大似然比大于等于0时,判决为1,小于0时,判决为0。
[0060] 译码器的输入为N比特的LLR信息,首先根据式(2-1)一直计算到第一个子块的LLR信息α,将此信息作为NND1的输入,将第一分区的译码结果根据式(2-3)进行处理,此处需要特别注意,第一分区的译码结果并不是经过一次式(2-3)中的运算,而是一个递归计算的过程。然后根据SC译码算法的计算过程直到计算出第二分区的LLR信息α,将此信息作为NND2的输入,得到第二分区译码结果后,继续上述过程,直到所有子块全部完成译码。
[0061] 1.分区神经网络译码器
[0062] 根据所述待译码的极化码的编码过程获取所述待译码的极化码的信息位位置,根据所述待译码的极化码的信息位位置将所述待译码的极化码划分为多个子块,保证每个子块的神经网络译码器的训练复杂度在实际可行的范围内,所有子块的码长总和等于所述待译码的极化码的码长,所有子块的信息位个数总和等于所述待译码的极化码的信息位个数;
[0063] 将各个子块按照SC译码算法的顺序从左到右依次串联连接。各子块码长和信息位个数选择不是固定的,越长越好,但是因为信息位个数增加时,神经网络译码器的训练集(为2k个全部可能的码字)会呈指数增长,导致难以实现训练,所以需要在硬件条件允许的情况下尽量增加每个子块的长度。
[0064] 将传统的SC译码算法进行分区,各个分区使用神经网络译码器,然后再将各子块进行串联,在本发明实施例中将这种译码器称为PNND(Partitioned Neural Network Decoder,分区神经网络译码器)。本发明实施例提供的一种具有两个分区的PNND的示意图如图2所示,在图2中所示的两个分区的码树结构中,按照SC译码的步骤,先计算出左边的子节点的含有2n-1bits的LLR(Log Likelihood Ratio,对数似然比)信息α,然后使用NND1进行该分支的译码,译码得出的估计值 经过式(2-4)处理后传回第n层的节点中,再利用式(2-3)计算出右边的子节点的含有2n-1bits的LLR信息α,再使用NND2进行右边分支的译码,得到估计值 从而得到所有的估计值:
[0065] 包含比特码字的信息,这两种信息分别为:含有2s比特的LLR值的软信息,记作α。由一个节点的α向下一层计算左右两个分支的α需要不同的计算方式,左分支的αl见式(2-
1)和(2-2),式中的α[i]与α[i+2s-1]的意义为:将α分为按原顺序等长的两个向量,两个向量s-1
中的相同的位置;例如,α=[0,1,1,1],此时s=2,则当i=0时,α[i]与α[i+2 ]分别为:α[0]=0,α[2]=1;当i=1时,α[i]与α[i+2s-1]分别为:α[1]=1,α[3]=1。
[0066] 右分支的αr的计算方式见式(2-3),即当左分支的β信息的相应位置βl[i]=0时,αr[i]=α[i+2s-1]+α[i];当βl[i]=1时,αr[i]=α[i+2s-1]-α[i]。
[0067] αl[i]=sgn(α[i])sgn(α[i+2s-1])min(|α[i]|,|α[i+2s-1]|) (2-1)[0068] αr[i]=α[i+2s-1]+(1-2βl[i])α[i] (2-2)
[0069]
[0070] 其中,2s比特码字的硬比特估计值,记作β,计算公式为式(4-4)。β的前半段为βl与βr的模2加,后半段直接为βr。例如βl=[0,1,1,0],βr=[1,0,1,1],则β=[1,1,0,1,1,0,1,1]。
[0071] 其中,αl[i],αr[i]中的分别表示相对于父节点的左右两个节点的信息,βl[i],βr[i]同理。并且β[i]被称为部分和。
[0072] 上述为一个具有两个分区的PNND的计算原理,在对极化码进行分区时可以根据具体需要进行灵活的分区,各个子块也可以不在码树的同一层中。实现PNND的算法过程为:
[0073]
[0074]
[0075] 以码长N=128,码率R=0.5的极化码为例,实现上述PNND,对于码长N=128,码率R=0.5的极化码的PNND的结构,本发明实施例提供的一种将PNND分为四个子块进行译码的示意图如图3所示。
[0076] 具体的实现过程如下:
[0077] (1)确定信息位与冻结位所在位置。
[0078] 使用统一的方式确定出信息位所在位置,通常为通过计算巴氏参数Z(W)来选择巴氏参数最大的k个最佳信道来传送信息比特,其余信道传送冻结比特。经过计算得到的信息位信息A,此处为了方便展示将信息位信息A表示为一个8×16的矩阵,记为B,第i行表示1≤i≤16,则
[0079]
[0080] (2)根据信息位的个数将码字分区。
[0081] 在一定的训练复杂度下,对极化码分区,使各子块的码字长度可以实现神经网络译码。根据(1)中计算出的信息位位置信息矩阵B,在一定的训练复杂度的条件下,将码长N=128,码率R=0.5的极化码的译码分为四个子块进行,第一个子块为码长N=64,信息位个数k=15的极化码,第二个子块为码长N=32,信息位个数k=18的极化码,第三个子块为码长N=16,信息位个数k=15的极化码,第四个子块码长N=16,信息位个数k=16的极化码,四个子块需要分别对其设计适当的神经网络译码器来对其进行译码。
[0082] (3)为每一个子块设计不同的NND,对各译码器进行训练。根据各个子块的码长和信息位分别设计各个子块对应的基于深度学习的神经网络译码器,将各个子块对应的基于深度学习的神经网络译码器进行训练。可以选择不同的深度学习模型来实现神经网络译码器,设计模型的网络规模及各个参数,使用2k个全部可能的码字作为训练集,将训练集码字调制,模拟信道传输添加干扰,模拟接收过程计算LLR,最后将LLR传入神经网络译码器中,得出判决结果,根据判决结果与正确结果之间的误差来调整网络中的参数,通过训练集的迭代,基于深度学习的神经网络译码器的误码性能越来越好,直到趋于收敛时训练完成。
[0083] (4)将训练好的NND通过SC译码算法进行耦合,利用基于深度学习的神经网络译码器通过SC译码算法分别计算出每个子块的译码结果。
[0084] 译码器的输入为N比特的LLR信息,首先根据式(2-1)一直计算到第一个子块的LLR信息α,将此信息作为NND1的输入,将第一分区的译码结果根据式(2-3)进行处理,此处需要特别注意,第一分区的译码结果并不是经过一次式(2-3)中的运算,而是一个递归计算的过程。然后根据SC译码算法的计算过程直到计算出第二分区的LLR信息α,将此信息作为NND2的输入,得到第二分区译码结果后,继续上述过程,直到所有子块全部完成译码。
[0085] (5)各分区的译码结果按照顺序连接起来得到最终的译码结果,将各个子块的译码结果按照顺序连接起来,得到所述待译码的极化码的译码结果。
[0086] 2.定长分区的分区神经网络译码器
[0087] 为了对不同码长不同码率的极化码通用,在对极化码分区时各个分区采用固定的长度,本发明实施例提供的一种定长分区的PNND的基本结构如图4所示。其中NND1,NND2,…,NND2i分别代表码长为2ibits,信息位分别为1,2,…,2i的神经网络译码器。在译码树的第i层开始采用神经网络译码,此时的LLR信息为2ibits,也就是说要对码长为2i的极化码进行译码,因此需要对码长为2i,信息位为1至2i的极化码分别设计神经网络译码器,并预i先训练好,在译码时根据信息位的位置信息,计算每2bits中信息位的比特数,即码率,在译码器选择模块中根据不同的码率选择适当的NND。另外,当全部为冻结比特时,直接输出全0码字。各分区间并不是独立的,当每个分区的神经网络译码器译码完成后,要将译码结果返回至第i层节点中,并根据式(2-3)进行处理后继续向上传递到父节点中。
[0088] 本发明实施例的定长分区的PNND的译码算法过程为:
[0089]
[0090]
[0091] (1)根据极化码的码长N和信息位个数k计算出每2i比特码字的码率
[0092] (2)定义变量L=N
[0093] (3)根据式(2-3)定义任意层数通用的比特转换函数trans(x);
[0094] (4)若此时L=2i+1,即此时L等于两倍的定长分区的长度,此时利用当前节点的α信息计算左分支的α信息αl,将其传入与码率匹配的基于深度学习的神经网络译码器中,得到译码结果,将该结果经过trans(x)后得到该左分支节点的β信息,然后当前节点的α信息与左分支的β信息计算出右分支的α信息αr,并将其传入与码率匹配的基于深度学习的神经网络译码器中,得出两个子块判决结果。
[0095] 若此时L大于两倍的定长分区的长度,此时需要继续左分支的α信息αl的计算,将αl作为α递归执行(4),直到L=2i+1,得到两个子块的译码结果。然后,逐层跳出递归过程,每一层中利用父节点α信息与左分支的β信息计算右分支的α信息αr,将αr作为α信息递归执行i+1(4),直到L=2 ,得到两个子块的译码结果。
[0096] (5)最后,将各个子块的译码结果依次连接,得到最终的译码结果。
[0097] 综上所述,本发明实施例提供的基于深度学习的极化码分区译码方法是在SC译码算法的基础上,对极化码进行分区译码,各个分区利用神经网络译码器译码,分区间利用SC译码算法耦合。其中各个子块使用NND进行译码,深度学习模型经过训练后是静态的,译码时只需通过神经网络中参数的处理,不需要递归计算,且深度学习可以实现分布式并行计算,在计算速度方面具有强大的优势。因此,本发明的方法可以降低SC译码算法的译码延时,提高极化码的译码效率,从而提升整个通信系统的吞吐率。并且当i的值越大,即每个分区的码长越长时,能够越有效地提高整个译码器的译码速度。
[0098] 本发明实施例可以将深度学习应用到码长较长的极化码译码中,且经过一次训练可以对任意码长任意码率的极化码进行译码,不再受到训练码长与码率与实际译码码长和码率必须相同的限制。
[0099] 本发明实施例的方法利用深度学习的计算优势,提高极化码SC译码算法的译码效率,从而提高通信系统的吞吐率。本发明解决了神经网络译码器在适用码长方面的限制,本发明实施例中的方案经过一次训练,可以将基于深度学习的译码器应用到任意码长任意码率的译码过程中。
[0100] 本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0101] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
[0102] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0103] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。