倪永婧,郭 巍,張靜濤
(1.河北科技大學 信息科學與工程學院,河北 石家莊 050000;2.中國電子科技集團公司第五十四研究所,河北 石家莊 050081)
在通信中,由于信道上存在著許多干擾,因此接收機會出現(xiàn)接收錯誤,這一點在無線信道中尤其嚴重。香農的信道編碼定理指出[1],在碼長趨向無窮長時,可以找到達到信道容量的編碼。BCH和LDPC就是2類經過特殊設計的信道編碼。其中, LDPC的漢明距離隨著碼長的增加而增加[2],因此在碼長很長時,可以接近信道容量。
盡管LDPC具有相當多的優(yōu)勢,但是在一些特殊場景中,比如功率很低的情況下,信息速率也非常低,此時LDPC引起的延遲會十分顯著。在有限碼長編碼理論中,文獻[3-4]研究了有限碼長信道編碼的理論性能,文獻[5]研究了有限碼長下的信道-信源聯(lián)合編碼,文獻[6]研究了接力信道中采用有限碼長編碼的優(yōu)勢。上述研究都是有限碼長編碼的理論研究,如何構造高性能有限碼長編碼的問題,通常由RS、RM碼等構造[7]。近年來,隨著機器學習的發(fā)展,將以深度神經網絡為代表的機器學習的方法應用在物理層上,例如調制識別[8]、序列估計[9]等,從而在一些特殊場景下獲得比傳統(tǒng)算法更好的性能。在信道編碼方面,文獻[10]將神經網絡應用在隨機編碼和Polar碼的譯碼器上。文獻[11]采用卷積神經網絡預測有色高斯噪聲,從而提高了LDPC在有色高斯噪聲下的性能。文獻[12-13]采用循環(huán)神經網絡,在增加了隨機置換層之后,提高了HDPC的性能,在較低運算資源下獲得了與極大似然譯碼相近的性能。
本文將RNN應用在短碼長LDPC譯碼器上,提高了譯碼器的性能。首先,簡單介紹了LDPC的傳統(tǒng)譯碼方法,包括和-積算法及其Trellis圖的表示,并且給出了一個簡單的Trellis圖的例子。其次是基于RNN的LDPC譯碼算法,然后對本文提出的算法進行了仿真驗證,最后給出結論。
置信度傳播(Belief Propagation)算法是Tanner圖上的消息傳播算法,用于計算邊緣概率分布。LDPC的和-積(Sum-Product)譯碼算法是置信度傳播算法的應用,LDPC的其他近似譯碼算法,例如最小-和(Min-Sum)算法是對和-積算法的近似。根據(jù)文獻[14],當Tanner上沒有環(huán)時,LDPC的碼距上限很低,因此性能高的LDPC的Tanner圖上均有環(huán),從而置信度傳播算法的結果近似于邊緣概率分布。當譯碼器的輸入為對數(shù)似然比時,置信度傳播算法的第l次迭代如下所示[15]:
(1)
(2)
式(1)被稱作行更新,Nm,n表示校驗矩陣第m行中除了第n列上的非零元素之外,其他非零元素的列號的集合。式(2)被稱作列更新,Mn表示第n列上所有非零元素的行號集合。LLR是譯碼器輸入的對數(shù)似然比。第l次迭代之后,每符號的邊緣概率分布為:
(3)
在機器學習中,函數(shù):
被稱為Sigmoid函數(shù),通常作為神經網絡的輸出層。
將1.1節(jié)中的置信度傳播算法展開,就可以得到譯碼器的Trellis圖表示[11]。Trellis圖可以分為輸入層、中間層和輸出層3部分。輸入層的節(jié)點表示解調器的輸出,通常為對數(shù)似然比。中間層的節(jié)點表示Tanner圖中邊上傳播的信息。輸出層對中間層計算的條件概率做邊緣化處理,得到碼字中每符號的對數(shù)似然比。
Trellis圖中只有分別屬于相鄰2層的節(jié)點之間有邊,這些邊由碼字的校驗矩陣決定。假設Trellis圖中共有2L個中間層,那么,當i∈{2,4,…,2L}時,第i層的輸出為:
(4)
當i∈{2,4,…,2L}時,i層的輸出為:
(5)
Trellis圖的輸出為:
(6)
以文獻[16]中的編碼為例,其校驗矩陣如式(7)所示。不難看出,這是一個規(guī)則編碼,碼長很短,其Tanner中邊的數(shù)量很少。根據(jù)Trellis圖的定義,Trellis中的中間節(jié)點表示每次迭代中Tanner圖中對應邊上所傳播的信息。因此式(7)所示的編碼的Trellis圖較為簡單,易于在上面進行計算驗證。
。
(7)
圖 1是式(7)所表示編碼的Trellis圖,中間共4層隱藏節(jié)點,意味著該圖描述了2次置信度傳播迭代。
圖1 式(7)中校驗矩陣對應的Trellis圖
節(jié)點上的短線表示輸入譯碼器的對數(shù)似然比。奇數(shù)列表示置信度傳播算法中的行更新,偶數(shù)列代表置信度傳播算法中的列更新,因此每2列表示置信度傳播算法的一次迭代。
循環(huán)神經網絡[17]是神經網絡的一種,其特點是在網絡中增加了隱藏狀態(tài)。RNN的基本結構如圖 2所示。在圖 2中,φ表示中間層,中間層可能包含一些內部結構,常見的情況是中間層由一個全連接層和激活函數(shù)組成。Ht表示t時刻的隱藏狀態(tài),xt是t時刻的輸入,o表示輸出函數(shù)。這樣,t時刻的輸出可以表示為:
圖2 RNN的結構
(8)
對比Trellis圖和RNN可以發(fā)現(xiàn),Trellis圖和RNN具有十分相似的結構。RNN中的隱藏狀態(tài)是Trellis圖中每次迭代后的概率分布,RNN中的中間輸出結果是對每次迭代后的概率分布做邊緣化處理的結果。
同時也要注意到,Trellis圖和RNN的主要區(qū)別在于輸入。RNN的提出主要是為了考慮輸入序列中前后符號之間的相關性。然而,在譯碼器中,每次迭代后的輸入為同一解調輸出,循環(huán)迭代的原因是為了近似計算各符號的對數(shù)似然比。
盡管Trellis圖和RNN具有不同的物理意義,其結構上的相似性使得采用訓練RNN的方法來優(yōu)化Trellis圖中的權重成為可能。文獻[12-13]將RNN結構應用在BCH、RS等代數(shù)編碼上,獲得了接近于極大似然譯碼的性能。本文考慮另一種編碼,即短碼長的LDPC碼。一般認為,LDPC的碼長越長,其性能越好。當LDPC的碼長較短時,其瀑布區(qū)的信噪比會增加,且平臺區(qū)的誤碼率也會增加。因此,LDPC通常應用于速率較高的業(yè)務數(shù)據(jù),在這種情況下,編碼器引起的延遲可以忽略。在一些具有特殊要求的通信中,受限于發(fā)射機功率或者接收機的增益,使得信息速率較低,此時長碼長的LDPC編碼引起的延遲會難以接受。這種情況下,除了考慮BCH、RS等代數(shù)編碼之外,短碼長的LDPC編碼也是一種可能的方案。
短碼長LDPC性能較差的主要原因是碼長較短時,Tanner圖上的環(huán)的半徑較小,從而導致碼距較小。與文獻[12-13]類似,如果改變譯碼中線性運算的權重,那么可以預期一些導致性能惡化的邊的權重會降低,從而提高譯碼器的性能。此外,由于這種譯碼器(BP-RNN)的結構直接來源于置信度傳播算法,因此保證了其性能不會比置信度傳播算法更差。
具體來說,在BP-RNN譯碼器中,式(4)保持不變,式(5)變?yōu)椋?/p>
,
(9)
,
(10)
損失函數(shù)采用交叉熵,定義如下:
,
(11)
式中,on是網絡的輸出,代表譯碼器估算的第n個符號為0的概率;yn是實際發(fā)送的碼字。交叉熵衡量的是2個概率分布之間的相似程度[1]。在訓練中發(fā)送的是全零碼字。不難看出,此時交叉熵只與網絡輸出有關,網絡輸出越接近于0,交叉熵越小。因此優(yōu)化交叉熵,同時就優(yōu)化了網絡的性能。
式(4)中的雙曲正切和反雙曲正切函數(shù)的計算量很大,Min-Sum算法[16]對式(4)做近似處理:
。
(12)
同樣地,在BP-RNN譯碼器中,也采用類似的近似方法,并將式(12)中的權重改為需要優(yōu)化的權重,即:
。
(13)
可以看出,BP-RNN中只調整中間層和輸出的邊的權重,并不調整輸入層邊的權重。這是由于輸入層僅僅完成每個符號的對數(shù)似然比的傳遞,并不需要改變其大小。
為了驗證本文算法的性能,在特定的短碼長LDPC上進行了仿真。本文采用了文獻[18]中的短碼長LDPC設計方法,設計了碼長為128,256和512的3種準循環(huán)LDPC,其校驗矩陣分別如圖 3、圖 4和圖 5所示。仿真中采用了深度學習框架PyTorch[19]。
圖3 LDPC(128,64)校驗矩陣
圖4 LDPC(256,128)校驗矩陣
圖5 LDPC(512,256)校驗矩陣
在訓練中,發(fā)送的碼字為全0碼,采用PyTorch實現(xiàn)的隨機梯度下降[20](SGD)算法來優(yōu)化譯碼器的權重,學習速率為10-3,mini-batch的大小為200。Gruber等人[10]的研究結果表明,在處理類似LDPC的隨機編碼時,如果網絡設計較差,神經網絡對訓練時沒有出現(xiàn)過的碼字有可能無法正確譯碼。因此,在性能評估中,首先生成長度為64,128和512的隨機二進制序列,然后編碼為碼率1/2的系統(tǒng)碼。這樣,所有參與性能評估的碼字均為訓練時未出現(xiàn)的碼字(全零碼字出現(xiàn)的概率僅為2-64或更低,可以認為不出現(xiàn)),從而增加了仿真結果的說服力。此外,文獻[12-13]中訓練神經網絡時,訓練數(shù)據(jù)為不同信噪比下的接收數(shù)據(jù)。由于LDPC本身的譯碼性能優(yōu)于文獻[12-13]中的BCH碼,因此本文只在低信噪比下訓練。實際訓練數(shù)據(jù)的信噪比為3.3 dB。同時,在訓練時,RNN中的迭代次數(shù)為2,而訓練完成后,RNN的迭代次數(shù)可以為任意多次。在調制方式為BPSK,AWGN信道的條件下,解調器輸出的對數(shù)似然比為[15]:
(14)
式中,σ2為噪聲的方差;R為碼率;Eb為每比特能量;rn為第n個符號接幅度。
圖 6是碼長128的LDPC譯碼器性能。從中可以看出,盡管BP-RNN在訓練時只采用了2次迭代,但是在訓練完成后,隨著迭代次數(shù)的增加,BP-RNN相對于BP的優(yōu)勢越明顯。在迭代15次時,BP-RNN相比BP大約有0.5 dB的增益,且BP-RNN采用5次迭代時已經超過BP15次迭代的性能。其次,盡管訓練時采用了低信噪比的數(shù)據(jù),BP-RNN譯碼器在所有信噪比下的誤碼率都低于BP譯碼器。
圖6 LDPC(128,64),BP譯碼器和BP-RNN譯碼器性能
圖 7和圖 8分別是LDPC(256,128)和LDPC(512,256)的譯碼器性能。與LDPC(128,64)類似,在多次迭代的情況下,BP-RNN相比BP獲得了超過0.5 dB的增益。另一方面,RNN網絡優(yōu)化之后,引入了大量浮點數(shù)乘法運算,從而增加了譯碼器計算復雜度,這是BP-RNN譯碼器的缺點。
圖7 LDPC(256,128),BP譯碼器和BP-RNN譯碼器性能
圖8 LDPC(512,256),BP譯碼器和BP-RNN譯碼器性能
本文探討了基于RNN結構的譯碼器在短碼長LDPC上的應用,介紹了BP-RNN譯碼器的結構,采用交叉熵作為損失函數(shù),并且對碼長分別為128,256和512的QC-LDPC進行仿真。結果表明,在迭代次數(shù)較多的情況下,BP-RNN譯碼器運算復雜度增加,但是相比BP譯碼器的性能有較大提高。本文的仿真均采用了雙精度浮點數(shù),在實際實現(xiàn)中,可否采用定點數(shù),從而降低運算復雜度,提高譯碼器的吞吐率,是將來需要進一步研究的問題。