一种基于深度学习的BCH码译码方法与流程

文档序号:19413376发布日期:2019-12-14 00:40阅读:1112来源:国知局
一种基于深度学习的BCH码译码方法与流程

本发明属于信道编译码中的差错控制编码领域,涉及使用bch码校验子与电平可靠度信息的深度学习译码算法。



背景技术:

随着科学技术的不断发展与社会的不断进步,人们对通信系统信息传输的可靠性提出了越来越高的要求。1948年美国数学家香农在《通信中的数学理论》一文中提出信息熵的概念,为信息编码奠定了理论基础。此后的几年间,信道编码出现了汉明码,golay码等编码方式,取得了丰硕的成果。hocquenghem和bose及ray-chaudhur分别于1959年和1960年分别提出来一种能纠正多个随机错误的码字,被称为bch码,其因具有纠错能力强、构造方便、编码简单等突出优点,在数字通信领域中有非常广泛的应用。

近些年,随着深度学习技术的不断发展,科研中的诸多领域都通过使用深度学习技术的支持取得了很好的应用,深度学习技术展现出了很好的发展前景。因而,将深度学习技术与译码器的融合是否会对信道译码有一定的帮助,这个类型的课题变得越来越受到人们的关注。2017年tobias等人利用深度学习技术搭建神经网络译码器,利用结构化码和随机码两种类型的码字进行对比训练,证实了使用深度学习可以使神经网络训练得到码字的结构,即可以仅仅通过训练一部分码字,而学习到整个码字列表。2018年,weilyu等人通过使用三种不同类型的神经网络架构,mlp、cnn、rnn,分别构建了神经网络译码器,并对三种译码器的译码表现进行对比,而rnn在这三者中的译码能力最佳。

除了直接搭建神经网络进行译码计算以外,在2018年,amir等人通过对bch码的接收码字计算校验子信息(如图1所示),然后将校验子信息与接收的电平信息串联共同输入至神经网络中,使用两种不同的神经网络架构,实现了通过使用神经网络以校验子信息进行译码的尝试。但是由于其使用的神经网络架构是校验子作为非二进制信息与电平信息串联合并直接作为神经网络输入,所以这样会在一定程度上受到rnn结构的影响,影响译码效果。



技术实现要素:

本发明的目的是提供一种可以提升译码能力的bch码译码方法。技术方案如下:

一种基于深度学习的bch码译码方法,包括下列步骤:

(1)从bch码的信道中接收并提取量化电平信息,作为可靠度信息,然后将码字进行硬判决,对得到的码字信息使用校验矩阵计算得到bch码的校验子,并将校验子转换为二进制形式。

(2)将二进制的校验子信息以时间步的方式在一个输入端逐步输入到神经网络的串联连接的两个双向gru中,在每个双向gru的时间步上输入比特级的二进制校验子,能够从正反两个方向对输入数据提取信息,在第二个双向gru的输出端串连一个mlp多层感知器,用于将经过双向gru单元的二维信息展平为一维,以便后续连接其他模块;

(3)在另一个输入端将比特级的量化电平信息作为可靠度输入辅助校验子信息译码,将(2)中mlp输出的信息与其合并为新的二维矩阵信息,输入到下一步的另一个gru中,用于使神经网络从可靠度和校验子两个影响因素中寻找部分错误位置,再在此gru的输出端连接一个全连接层用来展平数据;

(4)在(3)中运行的步骤相当于实现了一个可以重复使用的提取校验子和可靠度的相关信息的模块,在后端可以多次重复使用相同模块,将(3)的输出再与校验子模块的输出和可靠度输出相合并,将合并后的数据再输入至(3)的模块中;如此进行多次计算可以使得译码效果更为可靠;

(5)在多次输出之后,在输出端连接dropout层用于防止神经网络发生过拟合现象,并使用prelu层用作为激活函数,经过四舍五入后即可得到神经网络的输出数据;多次调节深度学习的学习率和训练周期,找到最为合适的超参数;经过一定次数的训练,即可将神经网络中的权重值进行优化,从而得到神经网络译码器。

本发明的实质性特点是:首先搭建神经网络译码架构,使用循环神经网络(recurrentneuralnetwork,rnn)中的双向门控循环单元(gatedrecurrentunit,gru)和多层感知器(multi-layerperception,mlp)作为核心模块,bch码输入的二进制校验子信息由gru训练提取其与错误位置的相关性,比特级量化电平作为可靠度信息辅助输入,神经网络用于从这两者输入信息中提取码字的错误位置信息并对错误码字进行纠正,从而经过一定次数的运算,训练好的神经网络可直接作为bch码的译码器使用。

附图说明

图1使用校验子信息和电平可靠度信息串联输入的神经网络译码器架构图

图2以63-45bch码为例的基于深度学习的神经网络译码器架构图

具体实施方式

本发明主要是以rnn中的gru和全连接神经网络的mlp作为基本单元,使用信道接收的量化电平信息以及硬判决后计算得到的校验子信息作为译码纠错的基本数据,主要使用二维校验子信息作为纠错的主要数据,电平信息作为辅助纠错信息。将这两个数据输入到神经网络中进行多次训练,以便得到合适的神经网络译码器。

本发明是在使用bch码信道接收的量化电平作为可靠度信息,以及码字硬判决后计算得到的校验子信息共同作为神经网络输入的基础上,搭建合适的神经网络架构,主要通过对校验子信息转换为二进制形式后使用gru寻找其与错误位置之间的关系,同时将码字的电平软信息作为辅助译码信息,实现神经网络对两个输入信息进行训练学习,从而使神经网络可以提取两者中的相关性,得到错误位置信息。由于bch码是二进制码,在找到错误位置后即可以通过对接收码字的错误位置进行取反(将收到的0纠正为1,将收到的1纠正为0),实现对码字的纠错,从而得到使用gru和mlp神经网络搭建的bch译码器。主要技术方案如下:

(1)从bch码的信道中接收并提取量化电平信息,作为可靠度信息,然后将码字进行硬判决,对得到的码字信息使用校验矩阵计算得到bch码的校验子,并将校验子转换为二进制形式。

(2)将二进制的校验子信息以时间步的方式逐步输入到神经网络的两个串联双向gru中。在每个gru的时间步上输入比特级的二进制校验子,gru能够从正反两个方向对输入数据提取相关信息,gru的输出端串接mlp多层感知器,用于将经过双向gru单元的二维信息展平为一维,以便后续连接其他模块。

(3)在另一个输入端将比特级的量化电平信息作为可靠度输入辅助校验子信息译码,将(2)中mlp输出的信息与其合并为新的二维矩阵信息,输入到下一步的另一个gru中,用于使神经网络从可靠度和校验子两个影响因素中寻找部分错误位置,再在此gru的输出端连接一个全连接层用来展平数据。

(4)在(3)中运行的步骤相当于实现了一个可以重复使用的提取校验子和可靠度的相关信息的模块,在后端可以多次重复使用相同模块,将(3)的输出再与校验子模块的输出和可靠度输出相合并,将合并后的数据再输入至(3)的模块中。如此进行多次计算可以使得译码效果更为可靠。

(5)在多次输出之后,在输出端连接dropout层用于防止神经网络发生过拟合现象,并使用prelu层用作为激活函数,在经过四舍五入后即可得到神经网络的输出数据。多次调节深度学习的学习率和训练周期,找到最为合适的超参数。经过一定次数的训练,即可将神经网络中的权重值进行优化,从而得到神经网络译码器。

整个算法的神经网络译码器如图2所示,下面具体描述算法的流程:

(1)根据图2所示的63-45bch码字作为例子,首先使用keras深度学习库编写代码,搭建神经网络译码器的基本架构,使用双向gru和mlp作为基本模块,两个串联的双向gru用于从校验子信息中提取校验子和错误位置的关系,而mlp主要用于将gru的输出数据展平为一维与信道电平信息合并输入。

(2)使用matlab产生bch码的码字,并存储为训练集的标签数据(正确的码字),在awgn信道bpsk调制的仿真信道下生成从模拟信道接收的电平可靠度信息,将信道输出的电平信息接收,同时存储实际正确的码字,将这两者数据作为训练集数据,以便接下来输入到神经网络中进行计算。

(3)将信道接收的信息进行判决,得到判决后的0/1码字,使用奇偶校验矩阵计算bch码的校验子信息,并转为二进制形式以便输入到gru中让神经网络学习校验子和错误位置之间的关系。

(4)将二进制校验子信息和电平可靠度信息添加到神经网络输入端,在规定的学习率和训练周期下进行深度学习训练,gru和mlp中的激活函数使用tanh函数,输出端损失函数使用交叉熵函数进行计算,在训练过程中观察从输出数据和正确数据计算得到的损失函数和译码准确率的变化,并在多次训练中调节使译码效果到最佳状态。

在训练得到可以产生最佳译码效果的神经网络后,将新的测试数据输入到此神经网络中,此时的神经网络权重值为训练得到的最佳值,即训练得到的最佳神经网络译码器,因此可以在输出端得到经过神经网络译码后的码字。将译码后的码字与译码前的码字进行对比,计算误码率,可以看到有部分码字在经过神经网络计算后,错误在一定程度上进行了纠正。

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