何彥琦,彭大芹,趙雪志
(1.重慶郵電大學通信與信息工程學院,重慶 400065;2.重慶郵電大學電子信息與網絡工程研究院,重慶 400065)
極化碼[1]自2009 年由ARIKAN 提出以來,因其在無記憶信道中被證明可以達到香農極限信道容量的特性,以及編解碼的低復雜度而備受關注[2]。由于極化碼在短塊長度下具有良好的誤碼率(Bit Error Rate,BER)性能,因此在第五代移動通信技術(5th Generation Mobile Communication Technology,5G)中被采用為控制信道編碼方案。同時,極化碼的譯碼算法得到學者的廣泛研究,其中,串行抵消(Successive Cancellation,SC)和置信傳播(Belief Propagation,BP)是極化碼最常用的兩種譯碼算法。相比于SC 譯碼算法[3]以及在其基礎上改進的串行抵消列表(Successive Cancellation List,SCL)譯碼算法[4],BP 譯碼算法的并行譯碼過程具有更高的吞吐量及更低的時延[5-6],因此更能滿足5G 場景的需求。但隨著迭代次數及碼長的增加,運算復雜度大幅提高,即使采用最小和近似[7]和早期終止準則[8]來降低復雜度和冗余迭代次數,BP 譯碼算法在有限的迭代中仍然表現(xiàn)不理想。
近年來,基于神經網絡的譯碼器受到了人們廣泛的關注。為改善BP 譯碼算法的性能,國內外研究者對此進行了大量研究并取得了顯著的進展。文獻[9-10]將BP 迭代譯碼結構運用到神經網絡架構中,并通過深度學習優(yōu)化最小和近似后用于彌補性能損失的縮放因子,大幅降低了迭代次數并提升了誤碼率性能。對神經網絡譯碼算法的進一步優(yōu)化主要從增強譯碼BER 性能和降低運算復雜度或時延兩個方面進行。在提升BER 性能方面,文獻[11-12]結合循環(huán)冗余校驗(Cyclic Redundancy Check,CRC)與BP 譯碼算法兩者的因子圖及神經網絡,取得了接近于CA-SCL 譯碼算法的性能,文獻[13]在此基礎上將神經網絡架構修改為長短期記憶網絡(Long Short-Term Memory,LSTM)以平衡譯碼性能與運算復雜度。在降低運算復雜度及時延方面,文獻[14]結合分塊方法及深度神經網絡改善了長碼情況下的譯碼性能,文獻[15]則是通過卷積神經網絡(Convolutional Neural Network,CNN)對神經網絡架構中的值傳遞過程進行簡化以降低運算復雜度,文獻[16]提出一種殘差網絡降噪譯碼算法并完成了硬件實現(xiàn),取得了極低的譯碼時延。
但以上方法大部分仍存存在2 個待解決的關鍵問題:額外的權值存儲開銷,隨著極化碼碼長的增加與迭代次數的影響,成倍增長的權重因子導致了相當大的存儲空間開銷,阻礙了神經網絡在實際通信系統(tǒng)中的應用;大量的乘法運算,與使用最小和近似的BP 算法相比,深度學習的輔助使得算法具有更好的性能。但以上算法大部分添加了相乘的縮放因子,增加了運算復雜度。
針對神經網絡譯碼器存在的問題,受BCH(Bose-Chaudhuri-Hocquenghem)譯碼所采用的偏移最小和近似(Offset Min-Sum,OMS)BP 譯碼算法[17-18],以及循環(huán)神經網絡(Recurrent Neural Network,RNN)譯碼架構[19]的啟發(fā),本文對極化碼的BP 譯碼算法和深度學習進行研究,提出一種基于循環(huán)神經網絡的偏移最小和置信傳播(RNN-OMS-BP)譯碼算法。通過循環(huán)神經網絡結構實現(xiàn)神經網絡多次迭代之間的參數共享,并運用偏移最小和近似算法修改迭代過程中的消息更新策略,以實現(xiàn)低運算復雜度、低內存占用的極化碼譯碼算法。
極化碼是一種通過信道極化原理構造的線性分組碼,理論上可以達到香農容量,其原理可簡述為對于N=2n(n為任意正整數)的極化碼,根據信道可靠性將信道分裂為兩部分,一部分信道分裂為信道容量趨于1 的無噪聲信道,用于傳輸信息比特,另一部分則分裂為完全噪聲信道,在發(fā)送端和接收端都設置為已知的凍結比特。通過生成矩陣實現(xiàn)包含K位信息比特、(N-K)位凍結比特、碼率為K/N的(N,K)極化碼,定義如下:
其中:n=lbN;BN表示比特反序矩陣;F?n表示對F=的n次克羅內克積;長度的原始比特序列uN通過與生成矩陣GN相乘即可得到長度為N的編碼比特序列xN。
置信傳播(BP)是一種廣泛應用的消息傳遞譯碼算法,主要應用于低密度匹配校驗碼(Low Density Parity Check Code,LDPC)和BCH 碼。但不同于以上2 種信道編碼的BP 譯碼過程是基于奇偶校驗矩陣進行消息更新的,極化碼的BP 譯碼算法的消息更新過程是在因子圖上迭代進行的,并且采用類似SC 譯碼算法的連續(xù)消除規(guī)則[20]。該因子圖一共由n=lbN個階段及N×(n+1)個節(jié)點組成。一個(8,4)極化碼的BP 譯碼因子圖如圖1 所示。
圖1 極化碼的BP 譯碼算法因子圖Fig.1 Factor graph of BP decoding algorithm for polar code
在圖1 中,下標i、j分別表示階段數和節(jié)點數,上標t表示當前迭代次數,每個節(jié)點(i,j)傳遞兩類對數似然比(Likelihood Ratio,LLR)信息:從左至右傳遞的右信息對數似然比和從右至左傳遞的左信息對數似然比。用公式表示如下:
g(a,b)≈sign(a)×sign(b)min(||a,||b) (3)
在迭代開始時,兩類對數似然比信息初始化如下:
其中:A表示信息比特集合;Ac表示凍結比特集合;yj表示從信道中接收到的第j位信息比特。經過預設的T次迭代之后,第j位估計信息比特可通過對最后一次迭代輸出的左信息對數似然比進行硬判決,得到:
最小和近似雖然有效地降低了復雜度,但也會導致誤碼率性能損失。文獻[10]提出了基于深度神經網絡的BP 譯碼算法,該網絡架構可以看作極化碼因子圖的展開結構,并在消息更新因子圖中設置了可學習的參數,從而彌補最小和近似帶來的性能損失。式(2)被替換如下:
在T次迭代完成后,使用交叉熵損失函數評估神經網絡通過激活函數(如sigmoid 函數)輸出的預測信息比特oj與傳輸信息比特uj的誤差,即:
該模型的最終目標是通過反向傳播算法計算損失函數梯度,并使用隨機梯度下降(Stochastic Gradient Descent,SGD)算法最小化損失函數,確定最優(yōu)縮放因子的值。
DNN-BP 可以更好地解決最小和的近似損失問題,但是該深度神經網絡架構仍然存在2 個問題:
1)引入縮放因子為算法增加了大量的乘法運算,運算復雜度大幅增加。
2)存儲空間被該深度架構中大量的縮放因子的存儲所占用。這2 個問題都阻礙了DNN-BP 在現(xiàn)實通信系統(tǒng)中的部署。
本文提出一種基于循環(huán)神經網絡的偏移最小和近似置信傳播(RNN-OMS-BP)譯碼算法用于極化碼譯碼,以實現(xiàn)乘法縮放因子的替代以及不同次迭代之間的權值共享。
使用偏移最小和近似算法[18]代替縮放因子最小和近似算法,式(3)被替換如下:
其中:β為偏移量。
為改善系統(tǒng)性能,因子圖中不同節(jié)點應用不同的偏移量,式(7)更新如下:
使用偏移量替代縮放因子后,解決了引入大量乘法運算的問題。但大量的可學習偏移量仍然占用了較大的存儲空間。因此,受到文獻[19]的啟發(fā),本文基于上述的偏移最小和近似算法提出改進的循環(huán)神經網絡架構,代替文獻[10]所采用的前饋神經網絡架構。以(4,2)極化碼為例的網絡架構如圖2 所示。
圖2 循環(huán)神經網絡架構及神經元圖Fig.2 Recurrent neural network architecture and neuronal graphs
在圖2(a)神經網絡結構中,右信息以及左信息傳遞的過程分別展開為(n-1)層和n層由N個神經元組成的隱藏層,因此,一次完整的迭代轉換為(2n-1)層隱藏層。本文架構與DNN-BP 架構[10]的改進主要有以下2 個方面:
1)在每層隱藏層的計算單元中因為偏移量最小和近似加入了max 函數,因此相當于在隱藏層中的每個計算單元中添加了線性整流函數(Rectified Linear Unit,ReLU)作為激活函數,該函數公式如下:
2)在每(2n-1)層隱藏層的運算完成后,進行循環(huán)輸入,實現(xiàn)偏移量參數集β的復用。
圖2(b)中計算單元1、計算單元2 分別用于承擔式(10)中第1、3 式及第2、4 式與sigmoid 函數的計算,分別記為fI(xl-1;βl)(l)、fII(xl-1;βl)(l) 和o(xL),式(10)在神經網絡中的簡化公式如下:
選擇合理的損失函數對訓練過程的效率和運算復雜度都有明顯的幫助,DNN-BP 算法采用如式(8)所示的交叉熵損失函數作為損失函數,交叉熵函數無疑是契合于該應用場景的損失函數。但交叉熵損失函數同樣也存在不夠硬件友好的缺點,在求導計算中需要計算sigmoid 函數,而sigmoid 激活函數的運算時間較長且更為復雜。因此,本文嘗試采用Hinge 損失函數對交叉熵損失函數進行替代,該損失函數公式如下:
通過合理的損失函數選擇,可有效減少訓練復雜度及時間,而幾乎未帶來可見的性能下降。
算法RNN-OMS-BP 譯碼算法
最終計算出BER 以評估譯碼算法性能。
為評估本文所提出的RNN-OMS-BP 譯碼算法的性能,分別通過仿真將其與原始BP 譯碼算法、DNN-BP 譯碼算法在誤碼率(Bit Error Rate,BER)、收斂速度及運算復雜度方面進行對比。表1 所示為仿真中所用的實驗參數。
表1 仿真參數設置Table 1 Simulation parameters setup
第一個實驗是模擬在碼長及碼率相同的情況下,不同迭代次數下原始BP、DNN-BP 與本文提出的RNNOMS-BP 譯碼算法的BER 性能,觀測迭代次數對神經網絡譯碼器的架構設計和參數的調整有重要意義。仿真結果如圖3 所示(以(16,8)極化碼為例)。
圖3 不同迭代次數下3 種譯碼算法BER 性能Fig.3 BER performance of three decoding algorithms under different iteration times
從圖3 可以看出,對于(16,8)極化碼,DNN-BP和RNN-OMS-BP 譯碼算法只需約5 次迭代即可收斂,就能獲得良好的性能。另一方面,傳統(tǒng)的BP 譯碼算法需要超過40 次迭代才能達到與神經網絡譯碼器迭代2 次相近的BER 性能。因此,傳統(tǒng)BP 算法消耗的計算資源較多,能耗高,時延較長。此外,RNN-OMS-BP 與DNN-BP 兩種算法具有幾乎相同的誤碼率,但RNN-OMS-BP 算法計算復雜度與存儲空間占用減少,更適合部署在實際通信系統(tǒng)中。
信道編碼碼長對系統(tǒng)BER 性能有顯著影響,因此本文對(16,8)、(64,32)和(128,64)3 種不同碼長的RNN-OMS-BP 譯碼算法、DNN-BP 譯碼算法以及傳統(tǒng)BP 譯碼算法BER 性能進行仿真對比,其中,傳統(tǒng)BP 譯碼算法迭代次數為40,RNN-OMS-BP 譯碼算法迭代次數為5,仿真結果如圖4 所示。
圖4 不同碼長下3 種譯碼算法BER 性能Fig.4 BER performance of three algorithms under different code lengths
從圖4 可以看出,在(16,8)的短碼長情況下,相比于傳統(tǒng)BP 譯碼算法,RNN-OMS-BP 算法的BER性能得到明顯改善,與DNN-BP 算法的BER 性能差距非常小;在碼長為(64,32)和(128,64)的情況下,與傳統(tǒng)BP 譯碼算法相比,RNN-OMS-BP 亦可以實現(xiàn)更低的誤碼率,且優(yōu)勢在高信噪比區(qū)域更加明顯,與短碼長情況類似,相較于DNN-BP 譯碼算法BER性能下降非常微小。仿真結果與預測情況一致,即提出的RNN-OMS-BP 算法在長短碼情況下相較于傳統(tǒng)BP 算法均有顯著改善,相較于DNN-BP 算法,性能下降相當微小。
本節(jié)以(64,32)極化碼為例,對本文提出的RNN-OMS-BP 譯碼算法中偏移量β的值在訓練中的變化過程進行仿真分析,該變化過程如圖5 所示(以(64,32)極化碼為例)。
圖5 偏移量值的分布直方圖Fig.5 Histogram of distribution of offset values
從圖5 可以看出,當訓練次數即Epoch ≈10 時,偏移量值的更新過程基本收斂,所有值的分布近似于以0 為中心的半正態(tài)分布形態(tài),偏移量β的值主要集中在0.0~0.4 之間,因此本文在訓練過程開始時將偏移量β的初始值設置為0。
表2 的運算復雜度分析以(16,8)極化碼為例,列舉了在傳統(tǒng)BP 譯碼算法迭代TBP=40 次、DNN-BP譯碼算法及本文提出的RNN-OMS-BP 譯碼算法迭代T=5 次的情況下,三者分別在加法運算、乘法運算及存儲空間占用3 個方面的運算復雜度。
表2 運算復雜度分析Table 2 Analysis of computational complexity
由表2 可知,相比于傳統(tǒng)BP 譯碼算法,兩種神經網絡結構的BP 譯碼算法將迭代次數減少80%以上,并且有效降低了最小和近似帶來的BER 性能損失。相比于DNN-BP 譯碼算法,RNN-OMS-BP 譯碼算法在同樣經過5 次迭代的前提下,以增加12.5%的加法運算量為代價,替代了所有的乘法運算。同時通過循環(huán)神經網絡結構在迭代次數為T=5 時,減少了80%的存儲空間占用。
除譯碼過程的運算復雜度分析外,本文還通過仿真測試了訓練過程采用不同損失函數下的BER 性能,如圖6 所示(以(64,32)極化碼為例)。
圖6 不同損失函數下的BER 性能Fig.6 BER performance under different loss functions
從圖6 可以看出,使用Hinge 損失函數代替交叉熵函數對性能的影響幾乎可以忽略不計,該優(yōu)化方案對于碼長極長或需要使用運算性能較弱的設備進行在線訓練的情況,具有一定的優(yōu)化效果。
本文提出一種基于RNN-OMS-BP 的極化碼譯碼算法。將偏移最小和近似算法替代乘法運算,采用改進的循環(huán)神經網絡架構實現(xiàn)參數共享,有效減少內存開銷,并通過離線學習減少BP 譯碼算法的迭代次數。仿真結果表明,該譯碼算法在誤碼率性能和運算復雜度之間取得了良好的平衡,對于BP 譯碼算法的硬件實現(xiàn)和實際應用更加友好。下一步將結合具有軟判決輸出的多用戶檢測算法,設計基于循環(huán)神經網絡架構的聯(lián)合迭代檢測譯碼算法[21-22],以獲得更顯著的系統(tǒng)性能增益。