多码的深度学习译码器的实现方法与流程

文档序号:15928920发布日期:2018-11-14 01:25阅读:740来源:国知局

本发明涉及的是一种信道编解码领域的技术,具体是一种多码的深度学习译码器的实现方法。

背景技术

polar(极化)码作为新兴的信道编码方案,具有确定性的编码规则,并且作为5g中embb场景下控制信道的信道编码方案,可以达到理论上的香农极限;ldpc(低密度奇偶校验)码作为5g中embb场景下数据信道的信道编码方案,可以接近香农极限。但是在接收端部署功能强大的解码器则是5g通信系统的挑战,因为对于硬件的角度,解码器必须十分小心的设计。



技术实现要素:

本发明针对现有技术存在的上述不足,提出一种多码的深度学习译码器的实现方法,在接收端所得到的两种不同的信号分别加入所提出的指示节后同时放入神经网络中进行学习,通过共用神经网络同时训练两种不同的编码并共享网络权重。相比于传统的解码器可以实现近似的误码率性能以及更高的吞吐量增益。

本发明是通过以下技术方案实现的:

本发明通过在两种不同的编码之前加入用于区分两种码字的指示节后对接收端神经网络进行训练,训练后的神经网络作为译码器,使用相同的权重同时学习两种不同的编码的编码方式,达到解码时网络吞吐量的提高。

所述的指示节是指:在两种不同的编码之前加入1~3位不同的编码。

所述的指示节优选为:针对两种不同的编码分别为1和-1。

所述的神经网络为深度神经网络(deepneuralnetworks,dnn),其隐藏层的激活函数优选为relu,输出层的激活函数优选为sigmoid;损失函数优选为mse。

所述的方法具体包括以下步骤:

步骤1)发送端的k位信息比特位b={b1,b2,..,bk}经过两种不同的编码方式分别编码,分别生成n位长度的不同码字xp={xp1,xp2,...,xpn},xl={xl1,xl2,...,xln};

步骤2)将生成的两种不同的编码码字混合在一起,进行bpsk调制变为调制之后的信号s={s1,s2,...,sn},调制信号经发送端通过高斯信道之后在接收端处为y={y1,y2,...,yn};

步骤3)接收端在接收信号y之前加上指示节i,优选不同码字前加入的指示节也不同。以合并后的码字{y,i}作为dnn的输入,标签为原始信息比特b;

步骤4)在dnn训练过程中,输入为{y,i},输出为意义为估计的原始比特。

技术效果

与现有技术相比,以polar码为例,本发明误码率非常接近于传统的bp译码得到的误码率,在误码率为10-2下只约有0.2db的误差,而ldpc码与bp译码相比在误码率为10-2下有0.8db的性能增益,此外本发明所带来的吞吐量提高程度大约是106倍之多。

附图说明

图1为带有指示节的训练序列示意图;

图2为联合译码器训练流程图;

图3为指示节数量的选择示意图;

图4为提出的方案与传统的bp译码误码率对比示意图。

具体实施方式

本实施例示例性地使用极化码和ldpc码以具体阐明本发明,但本发明方法不限于该两种编码的实现,不同的码字分别经过了信道编码、bpsk调制并加入高斯噪声,其中码长表示为n,码率表示为r,信息位个数表示为k。

如图1所示,本实施例将两种码字分别放入神经网络训练之前,先在每段码字之前加入指示节以区分polar码和ldpc码,具体为:i={i1,...,it},y={y1,y2,...,yn}为经过高斯噪声之后的信号,t和n分别为指示节的长度和编码之后的码字长度。

对于不同的码字类型采用不同的指示节i,以使得神经网络区分开不同的码字,因此输入神经网络的序列最终为{y,i}={i1,...,it,y1,y2,...,yn}。

本实施例中选用dnn网络训练联合译码器,选用dnn的原因是dnn具有很好的处理一维数据的能力。

如图2所示,本实施例具体包括以下流程:

step1):初始参数:本实施例中选取码长n为16,码率r为1/2,k为8的polar码和ldpc码来验证本实施例中的想法。指示节中,‘1’代表polar码,‘-1’代表ldpc码。

step2):训练参数:在训练阶段,本实施例中选用3层的dnn网络(512,256,128)来进行训练。训练的信息位k的长度为8,对于每一种码字,每一个长度为8的信息位对应于一个长度为n=16的码字。所以,遍历所有的码字需要2^8即256个长度为n的序列。两种码混合在一起就是512个序列。这一个长度为512的加入指示节的序列作为一个epoch,上一节提到了指示节的数目为1,即一个epoch的大小为512*17。训练时的epoch数量设置为5*104。设神经网络的输出为标签设置为原始未编码的信息比特b,损失函数选用mse,即最小均方误差:

这样训练得到的模型用于测试,测试时选用单一码字分别进行测试。测试集则是选用了4*105个序列。

如图3所示,分别在polar和ldpc码之前加入了1到3位指示节,并且测试其误码率ber。由图可见,增加的指示节位数并不会导致误码率的明显下降,因此本实施例中将指示节的位数t设置为1。

测试结果:将本实施例中的联合深度学习译码器的方法和传统的bp译码分别进行了比较,结果如图4所示,从图中可以看出,使用联合译码器进行训练,并且使用polar码作为测试所得到的误码率要比传统的polar的bp译码在10-2的误码率量级上有0.1到0.2db的误差。但是ldpc测试得到的误码率要比传统的ldpc的bp译码在10-2的误码率上有0.8db的增益。

下表则是本实施例中将所提出的联合译码器训练,并且用polar,ldpc码单独进行测试与只分别训练polar,ldpc码并分别测试,以及polar,ldpc码分别使用bp译码的参数,吞吐量做了比较:

从表中可以看出,所提出的联合译码器的吞吐量要比传统的bp译码高了10的6次方的数量等级。并且网络参数也相比单独训练polar或ldpc只高了一点点。

上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1