Arikan首次提出极化码(Polar Code), 且极化码是人类已知的第一种能够被严格证明达到信道容量的信道编码方法[1]. 在串行抵消(SC)译码算法下, 极化码的复杂度低、译码结构简单. 然而, SC译码算法在码长为有限长的配置下, 纠错性能不理想.
为了提高极化码的性能, 引入置信度传播[2,3]和线性规划[4]算法, 但, 这两种算法只适用于二进制输入删除信道(BEC). 随后, I. Tal 和A. Vardy等提出串行抵消列表(SCL)算法[5,6], 其性能非常接近最大似然(ML)的纠错性能. 为了进一步提高极化码的纠错能力, 几种解码方法相继被提出[7–9]. 其中, 文献[8]通过级联循环冗余校验(CRC)码, SCL译码能够获得比Turbo码和LDPC码更好的性能, 并记为CA-SCL. 然而, 其复杂度与列表大小L呈正比关系. 为了降低复杂度, 提出一种自适应的串行抵消列表(AD-SCL)译码[10], 其复杂度不会随着列表大小L的增大而增加. 但是, 在低信噪比下, AD-SCL会呈现明显的高复杂度现象. AD-SCL总是把L的初始值设置为1. 当
本文的主要工作是介绍极化编码、极化译码与BP神经网络的相关原理, 然后离线构建并训练BP神经网络以及在线寻找L的最优初始值, 最后提出一种基于BP神经网络的SCL译码算法.
1 相关原理 1.1 极化编码与极化译码 1.1.1 极化编码信道极化将一个二进制输入无记忆信道的一组独立的时隙看作一组相互独立的信道, 通过信道分割、信道合并操作引入相关性. 当参与信道极化的信道(时隙)数足够多时, 所得到的极化信道的信道容量会出现极化现象, 即一部分信道的容量将会趋于1、其余趋于0. 在信道极化的基础上, 只需要在一部分容量趋于1的信道上传输信息比特, 而在剩下的容量趋于1的信道以及容量趋于0的信道上传输对收发端都己知的固定比特.
用符号
$I\left( W \right) = \sum {\sum {\frac{1}{2}\beta \log \left( {\frac{{2\beta }}{{{\beta _0} + {\beta _1}}}} \right)} } $ | (1) |
其中,
$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) |
其中,
令
当谈及SC译码时, 似然比(LLR)[13]和路径度量尤为重要. 一般地, LLR的计算如下
$L({y_i}) = \frac{{2{y_i}}}{{{\sigma ^2}}}$ | (3) |
其中,
$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) |
其中,
与传统的SC译码一样, SCL译码仍然是从译码树的根节点开始, 逐层依次向叶子节点层进行路径搜索. 然而, 与传统的SC译码不同的是, SCL译码用路径度量来估计每一条路径的可靠性; 此外, SCL的每一层译码将会把L 条最有可能的路径保存下来. 那么,
$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) |
其中,
因强大的学习能力, 神经网络吸引着众多学者[14]. BP神经网络是神经网络中的一种, 本质上是一种前馈神经网络. BP神经网络主要涉及三部分: 准备样本、搭建结构及训练网络.
在准备样本阶段, 主要是整理训练集和测试集. 在搭建结构阶段, 主要是设置参数. 在训练网络阶段,基于监督学习, 首先计算输出层和隐藏层的输出值; 然后计算输出层和隐藏层的误差项; 在此基础上, 通过设定一个学习率来设置参数更新的大小, 并不断迭代调整权值和偏置项, 最终完成训练. 特别强调的是, 偏置项可以是固定的, 也可以设置成同权值相关的.
2 基于BP神经网络的SCL译码算法由于极化码能够达到信道容量, 因此它的译码技术受到了极大关注. 近年来, 各种译码方法应运而生, 如SC, SCL, CA-SCL, AD-SCL等. 为了降低低信噪比下的平均译码复杂度, 综合考虑性能及AD-SCL对L进行由小到大更新时所带来的低平均译码复杂度, 若L的初始值不固定为1, 那么, 就能够解决低信噪比下的复杂度问题. 因而, 寻找L的最优初始值是本文的研究关键.
假设令
本文研究主要分2个阶段来进行: 离线阶段和在线阶段, 具体的系统框图如图1所示. 观察图1, 离线阶段主要是构建并训练BP神经网络; 在线阶段首先是寻找L的最优初始值, 其次是完成译码. 对于图1的整个系统框图, 首先执行离线操作, 完成虚框中的各项任务, 包括收集数据、构建BP神经网络及训练BP神经网络, 得到一个训练好的BP神经网络模型; 然后启动在线操作, 从极化编码开始, 将码字发送到信道中, 得到接收信号, 并根据接收信号来计算似然比, 一旦完成似然比的计算, 系统会激活已完成训练的BP神经网络模型, 将似然比及与该似然比相对应的信噪比输入到BP神经网络模型中, 得到一个值, 即为L的最优初始值, 最后执行译码操作.
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) |
其中,
基于监督学习, 利用反向传播算法来训练网络. 假设每个训练样本为
本文取网络所有输出层节点的误差平方和作为目标函数:
${E_n} = \frac{1}{2}{\sum\limits_{r \in outputs} {\left( {{g_r} - {z_r}} \right)} ^2}$ | (8) |
其中,
${\delta _r} = {z_r}\left( {1 - {z_r}} \right)\left( {{g_r} - {z_r}} \right)$ | (9) |
其中,
${\delta _r} = {a_r}\left( {1 - {a_r}} \right)\sum\limits_{k \in outputs} {{\omega _{kr}}{\delta _k}} $ | (10) |
其中,
${\omega _{jr}} \leftarrow {\omega _{jr}} + \eta {\delta _j}{s_{jr}}$ | (11) |
其中,
${\omega _{rb}} \leftarrow {\omega _{rb}} + \eta {\delta _r}$ | (12) |
根据上述训练规则, 不断修正
为了降低平均译码复杂度, 本文提出了一种基于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是否大于
为辅助理解, 图2给出了基于BP神经网络的SCL译码算法在译码端的流程图.
3 实验结果与分析
本文的仿真实验包括2个部分: 离线部分和在线部分. 现将各部分主要涉及的参数、配置列出. 离线部分, 将输入层、隐藏层及输出层的节点数分别设置为2、300、6, 采用全连接方式来搭建网络, 并将激活函数设置为sigmoid函数,网络训练的目标误差设为0.01, 显示中间结果的周期设为50, 最大迭代次数设为500, 学习率设为0.01. 在线部分的参数、配置如下所示.
根据实验的数值结果来分析新提出算法的误比特率(BER)和复杂度. 在本文的仿真实验中, 所涉及的译码方案的码长和码率分别配置为
图3给出不同译码算法下的BER性能比较, 其中列表译码的列表大小分别配置为4和32. 对于AD-SCL和BNN-SCL译码算法, 均将最大搜索宽度设置为
图4给出不同译码算法下的平均复杂度比较, 其中列表译码的列表大小为32. 对于AD-SCL和BNN-SCL译码算法, 均将最大搜索宽度设置为
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 |