计算机系统应用  2018, Vol. 27 Issue (12): 246-250   PDF    
基于BP神经网络的SCL译码研究
卢丽金, 李世宝     
中国石油大学(华东) 计算机与通信工程学院, 青岛 266580
摘要:现存极化码译码算法仍然遭受非常高的复杂度. 针对此问题, 提出一种基于BP神经网络的SCL译码算法, 该算法通过离线收集数据来搭建并训练一个合适的BP神经网络; 借助已完成训练的BP神经网络, 通过在线操作来寻找列表大小L的最优初始值; 在此基础上, 通过设计一种改进的SCL译码算法来降低复杂度. 实验结果表明, 与现存算法相比, 新算法在低信噪比下能够显著降低平均译码复杂度.
关键词: 极化码    BP神经网络    SCL译码    列表大小    复杂度    
Research on SCL Decoding Based on BP Neural Network
LU Li-Jin, LI Shi-Bao     
College of Computer & Communication Engineering, China University of Petroleum, Qingdao 266580, China
Foundation item: Fundamental Research Funds for the Central Universities (18CX06042A)
Abstract: Existing decoding algorithms for polar codes still suffer from very high complexity. To solve this problem, an SCL decoding algorithm based on BP neural network is proposed. In offline, the algorithm builds and trains an appropriate BP neural network by collecting data. With the trained BP neural network, the optimal initial value of list size L is found through on-line operation. On this basis, the complexity is reduced by designing an improved SCL decoding algorithm. Experimental results show that compared with existing algorithms, the proposed algorithm can significantly reduce the average decoding complexity at low SNR.
Key words: polar codes     BP neural network     SCL decoding     list size     complexity    

Arikan首次提出极化码(Polar Code), 且极化码是人类已知的第一种能够被严格证明达到信道容量的信道编码方法[1]. 在串行抵消(SC)译码算法下, 极化码的复杂度低、译码结构简单. 然而, SC译码算法在码长为有限长的配置下, 纠错性能不理想.

为了提高极化码的性能, 引入置信度传播[2,3]和线性规划[4]算法, 但, 这两种算法只适用于二进制输入删除信道(BEC). 随后, I. Tal 和A. Vardy等提出串行抵消列表(SCL)算法[5,6], 其性能非常接近最大似然(ML)的纠错性能. 为了进一步提高极化码的纠错能力, 几种解码方法相继被提出[79]. 其中, 文献[8]通过级联循环冗余校验(CRC)码, SCL译码能够获得比Turbo码和LDPC码更好的性能, 并记为CA-SCL. 然而, 其复杂度与列表大小L呈正比关系. 为了降低复杂度, 提出一种自适应的串行抵消列表(AD-SCL)译码[10], 其复杂度不会随着列表大小L的增大而增加. 但是, 在低信噪比下, AD-SCL会呈现明显的高复杂度现象. AD-SCL总是把L的初始值设置为1. 当 $L = 1$ 译码失败时, AD-SCL会将L更新为2L, 并返回根节点, 重新进行译码, 直至 $L = {L_{\max }}$ . 在信噪比较低的情况下, 经过基于 $L = 1$ 的译码后, 往往还需要更新L值. 这样无疑是增加了复杂度. 值得考虑的是, 由小到大的更新L能够带来明显的低平均译码复杂度, 这一优势值得借鉴. 如果L的初始值不固定为1, 那么, 就能够解决现存的复杂度问题. 因而, 寻找L的最优初始值是本文的研究关键. 若L的最优初始值的大小有l种可能, 则相当于L的最优初始值有l种类别. 在某一实验配置下, L的最优初始值到底属于哪一种类别, 本文需要处理此问题. 若在线阶段采用传统的追踪记录与概率统计方式来分类, 需要进行大量的数据存储和计算, 将会大幅度增加复杂度, 且此处理方式不适用于离线操作. BP神经网络可以用作分类器[11,12]并实现快速、精确分类. 若BP神经网络的训练和分类都是在线操作, 也会大幅度增加复杂度, 但可以离线训练BP神经网络, 在线时将数据输入到已完成训练的BP神经网络模型中, 输出一个类别, 且不会增加复杂度. 因此,本文确定采用BP神经网络来寻找L的最优初始值.

本文的主要工作是介绍极化编码、极化译码与BP神经网络的相关原理, 然后离线构建并训练BP神经网络以及在线寻找L的最优初始值, 最后提出一种基于BP神经网络的SCL译码算法.

1 相关原理 1.1 极化编码与极化译码 1.1.1 极化编码

信道极化将一个二进制输入无记忆信道的一组独立的时隙看作一组相互独立的信道, 通过信道分割、信道合并操作引入相关性. 当参与信道极化的信道(时隙)数足够多时, 所得到的极化信道的信道容量会出现极化现象, 即一部分信道的容量将会趋于1、其余趋于0. 在信道极化的基础上, 只需要在一部分容量趋于1的信道上传输信息比特, 而在剩下的容量趋于1的信道以及容量趋于0的信道上传输对收发端都己知的固定比特.

用符号 $W{\rm{: }}X \to Y$ 来表示一个B-DMC信道,其中XY 分别表示该信道的输入、输出符号集合, $X = \left\{ {0,1} \right\}$ . 信道转移函数被定义为 $W\left( {y|x} \right)$ , 其中 $x \in X$ , $y \in Y$ . 那么, 对称信道容量表示为

$I\left( W \right) = \sum {\sum {\frac{1}{2}\beta \log \left( {\frac{{2\beta }}{{{\beta _0} + {\beta _1}}}} \right)} } $ (1)

其中, $\beta = W\left( {y|x} \right)$ , ${\beta _0} = W\left( {y|0} \right)$ , ${\beta _1} = W\left( {y|1} \right)$ . 通过对信道WN次占用(即信道WN个可用时隙), 能够得到N个独立的具有相同信道特性的B-DMC信道, 然后对这N个信道进行信道变换, 在各个独立的信道之间引入相关性, 将会得到信道转移概率函数

$W_N^{\left( i \right)}\left( {y_1^N,u_1^{i - 1}|{u_i}} \right) = \sum\limits_{u_{i + 1}^N \in {X^{N - 1}}} {\frac{1}{{{2^{N - 1}}}}} {W_N}\left( {y_1^N|u_1^N} \right)$ (2)

其中, ${W_N}\left( {y_1^N|u_1^N} \right) = W\left( {{y_1}|{x_1}} \right) \cdot \cdot \cdot W\left( {{y_N}|{x_N}} \right)$ .

$v_1^N = u_1^N{F^{ \otimes n}}$ , 其中 $n = {\log _2}N$ , $F = \left[ {\begin{array}{*{20}{c}} 1&0 \\ 1&1 \end{array}} \right]$ , ${F^{ \otimes n}} = F \otimes {F^{ \otimes \left( {n - 1} \right)}}$ , $ \otimes n$ 表示 ${{n}}$ 次克罗内克幂, 以及 $u_1^N =$ $ \left( {{u_1},{u_2},\cdots,{u_N}} \right)$ 由信息比特与固定比特混合而得到. 通过对 $v_1^N$ 进行比特反序重排, 最终得到编码比特序列 $x_1^N = \left( {{x_1},{x_2},\cdots,{x_N}} \right)$ .

1.1.2 极化译码

当谈及SC译码时, 似然比(LLR)[13]和路径度量尤为重要. 一般地, LLR的计算如下

$L({y_i}) = \frac{{2{y_i}}}{{{\sigma ^2}}}$ (3)

其中, ${y_i}$ 是通过AWGN信道获得的接收信号. LLR的递归计算方式为

$L_N^{\left( {2i - 1} \right)}\left( {y_1^N,u_1^{2i - 2}} \right) = L_{N/2}^{\left( i \right)}\left( {y_1^{N/2},u_{1,o}^{2i - 2} \oplus u_{1,e}^{2i - 2}} \right) \odot \Phi $ (4)

以及

$L_N^{\left( {2i} \right)}\left( {y_1^N,u_1^{2i - 1}} \right) = L_{N/2}^{\left( i \right)}\left( {y_1^{N/2},u_{1,o}^{2i - 2} \oplus u_{1,e}^{2i - 2}} \right) + \Phi $ (5)

其中, $\Phi = L_{N/2}^{\left( i \right)}\left( {y_{N/2 + 1}^N,u_{1,e}^{2i - 2}} \right)$ , ${a_1} \odot {a_2} = log\displaystyle\frac{{1 + {e^{\left( {{a_1} + {a_2}} \right)}}}}{{{e^{{a_1}}} + {e^{{a_2}}}}}$ .

与传统的SC译码一样, SCL译码仍然是从译码树的根节点开始, 逐层依次向叶子节点层进行路径搜索. 然而, 与传统的SC译码不同的是, SCL译码用路径度量来估计每一条路径的可靠性; 此外, SCL的每一层译码将会把L 条最有可能的路径保存下来. 那么, $\hat u_{1,l}^{\left( i \right)}\left( {l = 1,2,\cdots,L} \right)$ 的路径度量的计算公式为

$PM\left( {\hat u_{1,l}^{\left( i \right)}} \right) = PM\left( {\hat u_{1,l}^{\left( {i - 1} \right)}} \right) + {c_{i,l}} \cdot \left| {L_{N,l}^{\left( i \right)}} \right|$ (6)

其中, $PM\left( {\hat u_{1,l}^{\left( 0 \right)}} \right) = 0$ . 当 ${\hat u_i}$ 为信息比特或正确固定比特且 $\left( {1 - 2{{\hat u}_i}} \right) = sign\left( {L_N^{\left( i \right)}\left( {y_1^N,\hat u_1^{i - 1}} \right)} \right)$ 时, ${c_{i,l}} = 0$ ; 当 ${\hat u_i}$ 为信息比特或正确固定比特且 $\left( {1 - 2{{\hat u}_i}} \right) \ne sign\left( {L_N^{\left( i \right)}\left( {y_1^N,\hat u_1^{i - 1}} \right)} \right)$ 时, ${c_{i,l}} = 1$ ; 当 ${\hat u_i}$ 为固定比特且取值错误时, $PM\left( {\hat u_{1,l}^{\left( i \right)}} \right) = - \infty $ .

1.2 BP神经网络

因强大的学习能力, 神经网络吸引着众多学者[14]. BP神经网络是神经网络中的一种, 本质上是一种前馈神经网络. BP神经网络主要涉及三部分: 准备样本、搭建结构及训练网络.

在准备样本阶段, 主要是整理训练集和测试集. 在搭建结构阶段, 主要是设置参数. 在训练网络阶段,基于监督学习, 首先计算输出层和隐藏层的输出值; 然后计算输出层和隐藏层的误差项; 在此基础上, 通过设定一个学习率来设置参数更新的大小, 并不断迭代调整权值和偏置项, 最终完成训练. 特别强调的是, 偏置项可以是固定的, 也可以设置成同权值相关的.

2 基于BP神经网络的SCL译码算法

由于极化码能够达到信道容量, 因此它的译码技术受到了极大关注. 近年来, 各种译码方法应运而生, 如SC, SCL, CA-SCL, AD-SCL等. 为了降低低信噪比下的平均译码复杂度, 综合考虑性能及AD-SCL对L进行由小到大更新时所带来的低平均译码复杂度, 若L的初始值不固定为1, 那么, 就能够解决低信噪比下的复杂度问题. 因而, 寻找L的最优初始值是本文的研究关键.

假设令 ${L_{\max }} = 32$ , 则L的最优初始值有6种情况: 1, 2, 4, 8, 16, 32. 当寻找L的最优初始值时, 可以看作是简单的分类问题. 在某一信噪比和某一似然比下对应着哪个L值, 则相对应的L值即为寻找的L的最优初始值. 若用普通的计算来寻找L的最优初始值, 需要大量的数据存储和概率统计, 从而导致复杂度呈上升趋势. 而BP神经网络具有任意复杂的模式分类能力和优良的多维函数映射能力, 可以离线操作和准确处理分类问题, 因此, 其技术适用于寻找L的最优初始值.

本文研究主要分2个阶段来进行: 离线阶段和在线阶段, 具体的系统框图如图1所示. 观察图1, 离线阶段主要是构建并训练BP神经网络; 在线阶段首先是寻找L的最优初始值, 其次是完成译码. 对于图1的整个系统框图, 首先执行离线操作, 完成虚框中的各项任务, 包括收集数据、构建BP神经网络及训练BP神经网络, 得到一个训练好的BP神经网络模型; 然后启动在线操作, 从极化编码开始, 将码字发送到信道中, 得到接收信号, 并根据接收信号来计算似然比, 一旦完成似然比的计算, 系统会激活已完成训练的BP神经网络模型, 将似然比及与该似然比相对应的信噪比输入到BP神经网络模型中, 得到一个值, 即为L的最优初始值, 最后执行译码操作.

图 1 基于BP神经网络的极化码算法系统框图

2.1 构建与训练BP神经网络

综合考虑网络训练复杂度及极化码译码复杂度, 确定在离线阶段完成BP神经网络的构建与训练. 需要注意的是, 此处理方式不会影响极化码译码复杂度和性能.

2.1.1 样本数据的准备及预处理

采用BP神经网络方法建模的首要和前提条件是有足够多典型性好和精度高的样本. 为此, 建模的关键是收集并选取样本数据; 在此基础上, 随机选取其中的75%的数据作为训练样本, 剩余的25%数据作为测试样本; 最后, 通过预处理将样本数据转换为数值数据. 本文采用的预处理手段是归一化处理, 其线性转换算法的形式如下:

${{\rm{z}}_r} = \frac{{{s_r} - {s_{{\rm{min}}}}}}{{{s_{{\rm{max}}}} - {s_{{\rm{min}}}}}}\;$ (7)

其中, ${s_{{\rm{min}}}}$ 为输入向量 ${S}$ 的最小值, ${s_{{\rm{max}}}}$ 为输入向量 ${S}$ 的最大值, ${z_r}$ 是节点 $r$ 的输出值.

2.1.2 神经网络的训练

基于监督学习, 利用反向传播算法来训练网络. 假设每个训练样本为 $\left( {{S},{g}} \right)$ , 向量 ${S}$ 是训练样本的特征, ${g}$ 是样本的目标值.

本文取网络所有输出层节点的误差平方和作为目标函数:

${E_n} = \frac{1}{2}{\sum\limits_{r \in outputs} {\left( {{g_r} - {z_r}} \right)} ^2}$ (8)

其中, ${E_n}$ 表示样本 $n$ 的误差. 在此基础上, 运用随机梯度下降优化方法对目标函数进行优化. 经过优化之后, 能分别得到输出层的误差项、隐藏层的误差项以及权重的更新方法. 对于输出层节点 $r$ , 误差项的计算为

${\delta _r} = {z_r}\left( {1 - {z_r}} \right)\left( {{g_r} - {z_r}} \right)$ (9)

其中, ${\delta _r}$ 是节点 $r$ 的误差项, ${z_r}$ 是节点 $r$ 的输出值, ${g_r}$ 是样本对应于节点 $r$ 的目标值. 对于隐藏层节点, 误差项的计算为

${\delta _r} = {a_r}\left( {1 - {a_r}} \right)\sum\limits_{k \in outputs} {{\omega _{kr}}{\delta _k}} $ (10)

其中, ${a_r}$ 是节点 $r$ 的输出值, ${\omega _{kr}}$ 是节点 $r$ 到它的下一层节点 $k$ 的连接权重, ${\delta _k}$ 是节点 $r$ 的下一层节点 $k$ 的误差项. 由此, 更新每个连接上的权重:

${\omega _{jr}} \leftarrow {\omega _{jr}} + \eta {\delta _j}{s_{jr}}$ (11)

其中, ${\omega _{jr}}$ 是节点 $r$ 到节点 $j$ 的权重, $\eta $ 是一个学习速率常数, ${\delta _j}$ 是节点 $j$ 的误差项, ${s_{jr}}$ 是节点 $r$ 传递给节点 $j$ 的输入. 由于偏置项的输入值永远为1, 故偏置项的计算为

${\omega _{rb}} \leftarrow {\omega _{rb}} + \eta {\delta _r}$ (12)

根据上述训练规则, 不断修正 ${\omega _{jr}}$ ${\omega _{rb}}$ , 则可完成训练.

2.2 基于BP神经网络的SCL译码算法

为了降低平均译码复杂度, 本文提出了一种基于BP神经网络的SCL(BNN-SCL)译码算法. BNN-SCL译码算法包括两个阶段: 离线构建并训练BP神经网络模型阶段与在线译码阶段. 在第2.1节中, 已经完成BP神经网络模型的构建与训练, 对应地, 即已完成图1系统框图中虚框的操作. 因此, 在本节中主要介绍的是在线阶段的译码操作, 即从图1的得到接收信号开始介绍. 根据接收信号来计算似然比, 一旦完成似然比的计算, 系统会激活已完成训练的BP神经网络模型, 将似然比及与该似然比相对应的信噪比输入到BP神经网络模型中, 得到一个值, 即为L的最优初始值.此时, 译码端将会进行初始化, 将L初始化为L的最优初始值. BNN-SCL算法与现存的译码算法不同, L的初始值的大小不固定为1.

为详细了解译码端进行初始化之后的操作, 本文给出具体的后续操作步骤, 即本文提出的降低平均译码复杂度的SCL译码算法在译码端的具体步骤如下:

1) 对L进行初始化, 将L初始化为L的最优初始值;

2) 执行SCL译码算法, 并对其译码候选路径进行CRC校验;

3) 如果有一条或多于一条的候选路径通过CRC校验, 则输出一条最有可能的路径, 并退出译码; 否则, 跳到4).

4) 将L更新为2L, 并判断更新之后的L是否大于 ${L_{\max }}$ . 若不大于 ${L_{\max }}$ , 则跳回2); 否则, 退出译码.

为辅助理解, 图2给出了基于BP神经网络的SCL译码算法在译码端的流程图.

图 2 BNN-SCL译码算法在译码端的流程图

3 实验结果与分析

本文的仿真实验包括2个部分: 离线部分和在线部分. 现将各部分主要涉及的参数、配置列出. 离线部分, 将输入层、隐藏层及输出层的节点数分别设置为2、300、6, 采用全连接方式来搭建网络, 并将激活函数设置为sigmoid函数,网络训练的目标误差设为0.01, 显示中间结果的周期设为50, 最大迭代次数设为500, 学习率设为0.01. 在线部分的参数、配置如下所示.

根据实验的数值结果来分析新提出算法的误比特率(BER)和复杂度. 在本文的仿真实验中, 所涉及的译码方案的码长和码率分别配置为 $N{\rm{ = }}1024$ , $R{\rm{ = }}0.5$ . 根据文献[15]构造极化码, 极化码级联一个长度为16比特的CRC.

图3给出不同译码算法下的BER性能比较, 其中列表译码的列表大小分别配置为4和32. 对于AD-SCL和BNN-SCL译码算法, 均将最大搜索宽度设置为 ${L_{\max }} = 32$ . 通过已完成训练的BP神经网络来寻找的L的最优初始值被运用于仿真实验中. 从图3中可以看出, CA-SCL、AD-SCL及BNN-SCL的曲线是重叠的. 与CA-SCL和AD-SCL类似, 经过适当配置, BNN-SCL也能够获得非常接近ML译码的性能.

图4给出不同译码算法下的平均复杂度比较, 其中列表译码的列表大小为32. 对于AD-SCL和BNN-SCL译码算法, 均将最大搜索宽度设置为 ${L_{\max }} = 32$ . 如图4所示, 在高信噪比下, BNN-SCL译码的复杂度非常接近SC译码的复杂度. 此外, 与AD-SCL译码算法相比, 在0~1.25 dB下, BNN-SCL能够显著降低平均复杂度, 例如, 在 $SNR = 0.75$ 时, BNN-SCL能够降低约26.1%的复杂度.

图 3 不同译码算法下的BER性能比较

图 4 不同译码算法下的平均复杂度比较

4 结语

为了降低复杂度, 提出一种基于BP神经网络的SCL译码算法. 综合考虑现存算法的优点, 通过在离线阶段完成训练的BP神经网络来寻找L的最优初始值, 以改变L的初始值总是设置为1的现状; 在此基础上, 设计一种改进的SCL译码算法, 最终降低复杂度.实验结果表明, 与AD-SCL译码算法相比, 在0~1.25 dB下, BNN-SCL能够显著降低平均复杂度且保持译码性能不变.

参考文献
[1]
Arikan E. Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels. IEEE Transactions on Information Theory, 2009, 55(7): 3051-3073. DOI:10.1109/TIT.2009.2021379
[2]
Yuan B, Parhi KK. Early stopping criteria for energy-efficient low-latency belief-propagation polar code decoders. IEEE Transactions on Signal Processing, 2014, 62(24): 6496-6506. DOI:10.1109/TSP.2014.2366712
[3]
Guo J, Qin MH, Fàbregas AGI, et al. Enhanced belief propagation decoding of polar codes through concatenation. Proceedings of 2014 IEEE International Symposium on Information Theory. Honolulu, HI, USA. 2014. 2987–2991.
[4]
Goela N, Korada SB, Gastpar M. On LP decoding of polar codes. Proceedings of 2010 IEEE Information Theory Workshop. Dublin, Ireland. 2010. 1–5.
[5]
Tal I, Vardy A. List decoding of polar codes. Proceedings of 2011 IEEE International Symposium on Information Theory. St. Petersburg, Russia. 2011. 1–5.
[6]
Tal I, Vardy A. List decoding of polar codes. IEEE Transactions on Information Theory, 2015, 61(5): 2213-2226. DOI:10.1109/TIT.2015.2410251
[7]
陈凯. 极化编码理论与实用方案研究[博士学位论文]. 北京: 北京邮电大学, 2014.
[8]
Niu K, Chen K. CRC-aided decoding of polar codes. IEEE Communications Letters, 2012, 16(10): 1668-1671. DOI:10.1109/LCOMM.2012.090312.121501
[9]
Li SB, Lu LJ, Deng YQ, et al. A reused-public-path successive cancellation list decoding for polar codes with CRC. IEEE Communications Letters, 2017, 21(12): 2566-2569. DOI:10.1109/LCOMM.2017.2756642
[10]
Li B, Shen H, Tse D. An adaptive successive cancellation list decoder for polar codes with cyclic redundancy check. IEEE Communications Letters, 2012, 16(12): 2044-2047. DOI:10.1109/LCOMM.2012.111612.121898
[11]
Haykin S. Neural Networks and Learning Machines. 3rd ed. Upper Saddle River: Pearson, 2008.
[12]
高鹏毅. BP神经网络分类器优化技术研究[博士学位论文]. 武汉: 华中科技大学, 2012.
[13]
Balatsoukas-Stimming A, Parizi MB, Burg A. LLR-based successive cancellation list decoding of polar codes. IEEE Transactions on Signal Processing, 2015, 63(19): 5165-5179. DOI:10.1109/TSP.2015.2439211
[14]
焦李成, 杨淑媛, 刘芳, 等. 神经网络七十年: 回顾与展望. 计算机学报, 2016, 39(8): 1697-1716.
[15]
Tal I, Vardy A. How to construct polar codes. IEEE Transactions on Information Theory, 2013, 59(10): 6562-6582. DOI:10.1109/TIT.2013.2272694