鄧學璐,彭大芹
(重慶郵電大學,通信與信息工程學院,重慶 400065)
極化碼是最開始由Arikan在文獻[1]中提出的一種能夠實現接近信道容量的分組碼,是第五代移動通信技術(5th Generation Mobile Communication Technology,5G)信道編碼方案。串行抵消(Successive Cancellation, SC)和置信傳播(Belief Propagation, BP)譯碼是極化碼中較普遍的兩種譯碼算法。BP譯碼因其并行譯碼過程,比SC[2-3]譯碼具有更高的吞吐量和更低的譯碼時延,但采用偏移最小和(Offset Min-Sum,OMS)近似[4]與早期停止準則[5]來降低冗余迭代次數和運算復雜度的BP譯碼算法在誤碼率(Bit Error Ratio, BER)性能上不如SC譯碼算法。
文獻[6-9]中,BP譯碼性能優化的一種方法是引入神經網絡輔助BP譯碼過程。但上述文獻中提出的方法大部分隨著極化碼碼長和迭代次數的增加,左右信息更新運算復雜度也大量增加,這阻礙了神經網絡在實際通信系統中的應用。因此,針對以上神經網絡譯碼器存在的不足,受文獻[8]針對循環神經網絡(Recurrent Neural Network, RNN)BP譯碼算法的優化及文獻[10]針對極化碼軟信息連續消除 (Soft Successive Cancellation, SCAN) 譯碼算法所采用的simplified-SCAN算法的啟發,本文提出了一種改進左信息更新的RNN OMS近似BP (RNN-OMS-BP-Left,RNN-OMS-BP-L) 譯碼算法,采用新的左信息更新方式,減少一部分節點更新時的計算量和存儲開銷,并替換初始的RNN譯碼器,降低了BP算法的運算復雜度和內存占用,減少了迭代次數。

圖1 極化碼信道合并與分裂
極化碼編碼原理為:把N=2n(n=任意正整數)極化碼中的K位信息比特放置在信息比特索引集合A的比特信道中,N-K位凍結比特則放置于集合Ac索引中,組成輸入信息序列uN={uA,uAc},式中:uA為信息比特;uAc為凍結比特。所以碼率為K/N的(N,K)極化碼xN可通過生成矩陣GN得到:

Arican在文獻[11]中提出,BP譯碼也可作為極化碼譯碼算法,并且可采用類似SC譯碼算法的連續消除規則[12]。極化碼的編碼結構可直接轉換成因子圖。由n=log2N個階段及N×(n+1)個節點組成一個(8,4)極化碼的BP譯碼因子圖如圖2所示。

圖2 極化碼BP譯碼算法因子圖
由圖2(b)可得:
式中,

文獻[6]提出了基于深度神經網絡(Deep Neural Network,DNN)的BP(DNN-BP)譯碼算法,在譯碼迭代過程中的消息更新因子圖中設置了可學習的參數,即把式(2)替換為

文獻[8]提出了基于RNN權重量化機制的OMS近似BP(RNN-OMS-BP)譯碼算法用于極化碼譯碼。受此啟發,本文所提算法使用OMS近似算法[13]替代縮放因子最小和近似算法,式(3)被替換為
式中,β為偏移量。
式(7)迭代更新變為

文獻[8]中算法通過權重量化機制實現不同迭代次數之前的權值共享,解決了文獻[6]中算法乘法運算和縮放因子存儲的問題。但該算法仍存在大量的加法和乘法運算,且BER性能相較于DNN-BP算法有所降低。
因此,本文提出了一種第2節描述的OMS替代乘法縮放因子的譯碼方法解決了乘法運算問題,再根據改進左信息更新的方法和RNN架構提出改進的RNN-OMS-BP-L譯碼算法,與文獻[8]相比,算法運算復雜度和迭代次數均有所降低。
本文所提RNN-OMS-BP-L譯碼算法左信息更新的初始單位因子圖如圖3(a)所示。


圖3 單位因子圖


本文基于3.1節改進左信息更新方法進而提出了改進的RNN架構代替了文獻[8]所采用的原始RNN架構。圖4(a)所示為 (8,4)極化碼在神經網絡中第t次迭代的完整信息迭代更新譯碼過程,其可看作圖2(a)極化碼BP譯碼展開形式的因子圖,共含3層:輸入層、隱藏層和輸出層。8個神經計算單元組成輸入層;隱藏層對應從左到右的右信息迭代更新過程和反方向的左信息迭代更新過程,分別占據5層隱藏層中的第2和3層神經網絡;最后的輸出層使用sigmoid激活函數來處理當前層的上層更新信息,從而使神經網絡譯碼器迭代更新得到的碼字估值歸一化。對于(N,K)極化碼,極化碼BP因子圖展開可得到每層都包含N個神經計算單元的RNN譯碼器,其中右迭代信息和左迭代信息更新過程對應第n-1層和n層隱藏層。

圖4 改進的RNN譯碼器


圖4(b)所示為本文所提改進的RNN相較于文獻[9]中原始RNN架構的主要改進。本文把原始的左信息更新神經元分成兩部分,當RNN架構層數l≤2時,使用神經元a進行信息更新計算;當RNN架構層數l>2時,使用神經元b進行信息更新計算,此時式(11)可更新為
神經網絡譯碼器完成預置的T次迭代更新譯碼之后,使用圖4(a)輸出層的sigmoid神經單元對LLR進行比較判決,最后再使用交叉熵損失函數衡量改進的RNN譯碼器實際輸出值和期望值的差距,并通過該差距判斷譯碼器的優劣。交叉熵損失函數L(u,o)為
式中:N為碼字長度;uj和oj分別為改進左信息更新神經網絡譯碼器的理想輸出值和實際輸出值。基于上述小節提出的改進的左信息更新方法和RNN譯碼器得出的極化碼RNN-OMS-BP-L算法的具體流程如下:
(1) 設置仿真參數(包括碼長N、碼率Rc、信噪比(Signal Noise Ratio,SNR)范圍、訓練樣本數量batch_size和學習率η等),由式(12)生成在隨機生成高斯白噪聲加擾環境下已知的輸入輸出映射訓練集和驗證集。
(2) 由式(4)和式(5)初始化LLR信息,所有非凍結比特的先驗LLR信息設置為0,使用改進RNN架構通過式(12)進行BP譯碼,神經計算單元首先從右至左迭代更新每一列左信息,直到第1列,再從左至右迭代更新到最后一列,達到預置的迭代更新次數T。
(3) 設置損失函數和優化器,進行訓練和驗證,選擇損失最小的最優參數集。
(4) 使用最優參數集的譯碼器進行測試,輸出生成的實際碼字序列,并與步驟(1)驗證集中期望碼字序列對比得到損失函數值,最后計算出BER。
在本節中,本文所提改進的RNN譯碼器是在TensorFolw測試平臺上通過學習率為0.001的Adagrad優化算法訓練的。訓練數據是在高斯白噪聲信道傳輸后的全零碼字,SNR范圍為1~5 dB。測試數據是隨機二進制信息,該數據是通過極化編碼、二進制相移鍵控(Binary Phase Shift Keying,BPSK)調制后在高斯白噪聲信道上傳輸得到的。具體參數如表1所示。

表1 仿真參數設置
為了評估本文所提算法的性能,對該算法在不同迭代次數和不同碼長的情況下進行了仿真模擬。首先模擬在碼長相同和碼率都為1/2時,不同迭代次數下BP、RNN-OMS-BP和RNN-OMS-BP-L譯碼算法的BER性能,如圖5所示。

圖5 不同迭代次數下3種譯碼算法BER性能對比(以(64,32)極化碼為例)
由圖可知,傳統BP譯碼算法迭代40次可收斂,而RNN-OMS-BP-L和RNN-OMS-BP譯碼算法只需迭代5~8次即可收斂,且BER性能遠優于傳統BP譯碼算法。相較于原始RNN-OMS-BP譯碼算法,在相同BER性能條件下,本文所提RNN-OMS-BP-L譯碼算法減少了3次迭代次數。

圖6 不同碼長下的3種算法BER性能對比
第2個實驗是對極化碼(64,32)、(128,64)和(256,128)3種不同碼長的DNN-BP、RNN-OMS-BP和RNN-OMS-BP-L譯碼算法BER性能進行仿真對比,迭代次數均為5次。實驗結果如圖6所示。由圖可知,RNN-OMS-BP-L譯碼算法在3種不同的碼長中,相較于RNN-OMS-BP和DNN-BP譯碼算法,BER幾乎不變,甚至隨著碼長的增加,碼長為256時在高SNR區域中極化碼BER有接近0.1 dB的增益。
表2所示為以(64,32)極化碼為例的復雜度分析,列舉了在傳統BP譯碼算法迭代TBP=40次,DNN-BP、RNN-OMS-BP譯碼算法及本文所提RNN-OMS-BP-L譯碼算法迭代T=5次時,分別在加法運算及存儲空間占用兩個方面的運算復雜度。

表2 復雜度分析(以(64,32)極化碼為例)
由表可知,相比于傳統BP譯碼算法,改進的RNN-OMS-BP-L譯碼算法將加法運算減少了81%以上;相比于DNN-BP譯碼算法,在相同迭代次數條件下,RNN-OMS-BP-L算法僅以6.25%的加法運算為代價替換了全部乘法運算,減少了76.9%的存儲空間;相比于RNN-OMS-BP譯碼算法,RNN-OMS-BP-L譯碼算法在相同BER性能條件下,不僅減少了3次迭代次數,還減少了25%的加法運算和1%的存儲空間。
本文所提RNN-OMS-BP-L譯碼算法主要是對信息更新方式的改進,提出了改進的左信息方法和RNN架構。通過改變左信息神經計算單元來構建新的RNN譯碼器。由仿真分析可知,改進的左信息更新RNN譯碼方法在幾乎無性能損失的條件下,有著運算復雜度和迭代次數的優化,對于BP譯碼算法的硬件實現和實際應用更加友好。接下來將以RNN-OMS-BP-L譯碼算法為基礎重點結合神經網絡在翻轉集的應用[14-15]方面進行下一步研究。