趙生妹 徐 鵬 張 南 孔令軍*
①(南京郵電大學(xué)通信與信息工程學(xué)院 南京 210003)
②(中國航天系統(tǒng)科學(xué)與工程研究院 北京 100048)
極化碼是一種基于信道極化理論的信道編碼[1],自Arikan提出以來,引起了廣泛的關(guān)注[2],串行抵消(Successive Cancellation, SC)譯碼算法是Arikan針對極化碼的結(jié)構(gòu)提出的極化碼獨(dú)有的譯碼算法,在SC 算法下,通過嚴(yán)格的數(shù)學(xué)證明,得到極化碼可以在二進(jìn)制離散無記憶信道(Binary Discrete Memoryless Channel, B-DMC)下進(jìn)行無差錯傳輸,并且容量可達(dá)[3],與此同時,SC譯碼算法具有較低的計(jì)算復(fù)雜度,僅為O(Nlog2N)。然而在實(shí)際狀況下,碼長不可能“足夠長”,一旦發(fā)生錯誤的比特判決(比特錯誤),由于順序譯碼的特性,錯誤的比特沒有機(jī)會被糾正[4]。
因此,基于SC譯碼算法的改進(jìn)算法成為極化碼譯碼的研究熱點(diǎn),研究者提出了一系列算法來改善極化碼的SC譯碼性能[5]。文獻(xiàn)[6]提出了SC翻轉(zhuǎn)(SCF)譯碼,在SC解碼失敗(通過CRC校驗(yàn)檢測),則嘗試識別并翻轉(zhuǎn)先前譯碼期間發(fā)生的第1位錯誤,一直嘗試直到譯碼通過CRC校驗(yàn),或達(dá)到最大嘗試次數(shù)。在文獻(xiàn)[7]中,針對SC譯碼只保留一條譯碼路徑,從而導(dǎo)致正確路徑容易丟失的問題,提出了串行抵消列表(Successive Cancellation List,SCL)譯碼算法,其可保留L條路徑。盡管SCL譯碼具有優(yōu)越的性能,但是由于保留了L條路徑使其計(jì)算復(fù)雜度高、內(nèi)存需求大、譯碼吞吐量低。因此,文獻(xiàn)[8]提出了簡化的SCL譯碼算法(Simplified SCL, SSCL)和快速簡化的SCL譯碼算法(Fast Simplified SCL, Fast-SSCL),雖然它們都能降低計(jì)算復(fù)雜度,但是性能將有所下降?;贑RC輔助SCL譯碼算法(CA-SCL)[9]改進(jìn)的自適應(yīng)SCL譯碼算法(ADaptive SCL, AD-SCL)[10,11],則根據(jù)譯碼序列的CRC校驗(yàn)結(jié)果判斷是否增大L值重新譯碼,降低了整體譯碼復(fù)雜度同時獲得較好的譯碼性能,但是在低SNR時重譯次數(shù)較高。文獻(xiàn)[12]提出一種基于分段CRC的自適應(yīng)SCL譯碼算法(Segmented-CRC ADaptive SCL, SCAD-SCL),文獻(xiàn)[13]提出了多級CRC輔助校驗(yàn)的SCL譯碼算法,降低了平均復(fù)雜度和時延。
針對極化碼SC譯碼算法性能不佳,且現(xiàn)有性能較好的SCL等改進(jìn)譯碼算法復(fù)雜度較高的現(xiàn)狀,本文從SC配置的次優(yōu)性和極化碼的最小距離[14]進(jìn)行分析,通過向接收信號添加次級獨(dú)立隨機(jī)噪聲以改善極化碼譯碼器的性能[15]。傳統(tǒng)的SC譯碼算法通常僅提供一個輸出,如果該輸出被證明是無效的碼字,則聲明譯碼錯誤。然而,利用擾動算法,可以通過向接收信號添加次級獨(dú)立噪聲來產(chǎn)生其他可能的候選碼字。最近深度學(xué)習(xí)在處理噪聲等任務(wù)中取得了巨大的進(jìn)步[16],因此,本文通過CNN來對接收信號提取噪聲特征,根據(jù)接收信號在碼空間中與有效碼字的偏離程度,動態(tài)調(diào)節(jié)擾動噪聲的大小(噪聲方差),對添加了擾動噪聲的接收信號重新計(jì)算似然信息并譯碼,設(shè)計(jì)迭代算法,重復(fù)該過程直到獲得有效的碼字或者達(dá)到迭代閾值。在復(fù)雜度較低的情況下,可提升誤碼率(Bit Error Ratio, BER)性能。
由極化碼的編碼過程可知,極化碼的構(gòu)造就是容量趨于1的比特信道(又稱為極化信道)的選擇過程,是以最優(yōu)化SC譯碼性能為標(biāo)準(zhǔn)的,根據(jù)極化信道轉(zhuǎn)移概率函數(shù)式,各個極化信道具有確定的依賴關(guān)系:信道序號大的極化信道依賴于所有比其序號小的極化信道?;谶@種關(guān)系,SC譯碼對比特進(jìn)行判決時,需要假設(shè)之前得到的譯碼結(jié)果都是正確的,正是在這種情況下,極化碼被證明了是信道容量可達(dá)的。因此對于極化碼而言,基于SC的譯碼算法是最合適的,只有這樣才可以充分利用極化碼的結(jié)構(gòu),保證在足夠碼長時容量可達(dá)。
在實(shí)際通信系統(tǒng)中,噪聲是最不期望存在的,因?yàn)樾诺乐械脑肼晻Πl(fā)送信息產(chǎn)生影響,嚴(yán)重時可造成有效信息在接收機(jī)處不能恢復(fù),嚴(yán)重影響通信系統(tǒng)的性能。然而,從譯碼糾錯空間的角度分析,特定的擾動噪聲可能會有助于譯碼,進(jìn)而提升了譯碼器的性能。圖1為基于碼空間的線性碼糾錯譯碼示意圖,其中M個碼字的可糾錯區(qū)域分別標(biāo)記為a1, a2, ···, am。若以可糾錯區(qū)域a2為例,當(dāng)發(fā)送與其對應(yīng)的碼字c2時,接收信號y由于在信道中受到噪聲的干擾,落在譯碼空間中位置可能是隨機(jī)的。如果錯誤在可糾正范圍內(nèi),則其應(yīng)將落在a2區(qū)域內(nèi),則根據(jù)譯碼規(guī)則可以獲得正確估碼c2,得到與該碼字對應(yīng)的發(fā)送信息。如果落在該a2區(qū)域之外,則表明信道噪聲對該信號產(chǎn)生了較大的干擾,超出了糾錯能力范圍,導(dǎo)致譯碼失敗。從圖1中可以看出,如果在接收信號中添加次級獨(dú)立的擾動噪聲,那么接收信號y在譯碼糾錯區(qū)域內(nèi)的落點(diǎn)就會發(fā)生偏移,有可能會移動到可糾錯區(qū)域之內(nèi)。如果譯碼過程中發(fā)生的錯誤相對較少[17],那么信道接收信號有可能非常靠近其特定的糾錯區(qū)域。添加擾動噪聲產(chǎn)生的這種有益效果可以用隨機(jī)共振的現(xiàn)象來進(jìn)行解釋,其定義是向信號中添加隨機(jī)獨(dú)立噪聲使其增強(qiáng)[18]。
圖1 譯碼空間示意圖
然而,若只是添加獨(dú)立的隨機(jī)噪聲,將使得接收信號的落點(diǎn)在譯碼空間中較為隨機(jī),要使其回到正確可糾錯區(qū)域內(nèi)可能需要嘗試多次。因此,本文利用卷積神經(jīng)網(wǎng)絡(luò)強(qiáng)大的學(xué)習(xí)能力,從接收信號中提取特征,并根據(jù)接收信號與發(fā)碼間的偏離程度,動態(tài)地調(diào)節(jié)擾動噪聲的均值與方差,有效地將接收值y調(diào)回到其可譯碼糾錯區(qū)間內(nèi),通過對添加了擾動噪聲的接收信號重新計(jì)算似然比并譯碼,獲得有效的譯碼。
圖2是基于CNN擾動噪聲的極化碼譯碼流程圖,具體算法見表1。首先用SC譯碼器對信道接收值進(jìn)行譯碼,估計(jì)值通過式(4)判決得到
圖2 基于CNN擾動噪聲的極化碼譯碼流程圖
表1 基于CNN擾動噪聲譯碼算法
如果譯碼結(jié)果通過CRC校驗(yàn)則表明譯碼成功,輸出譯碼結(jié)果,如果譯碼失敗則通過CNN對信道接收值提取特征,產(chǎn)生擾動噪聲np,將其加到y(tǒng)上,y'=y(tǒng)+np,且使用y'代替y重新進(jìn)行SC譯碼,這里對添加擾動噪聲后的接收信號LR進(jìn)行修正,
其中,x(u?i)為譯碼結(jié)果序列通過極化碼編碼與BPSK調(diào)制后的向量。然后把最大值L(u?i)對應(yīng)的譯碼結(jié)果作為輸出。
神經(jīng)網(wǎng)絡(luò)利用類似于人腦的分層模型結(jié)構(gòu),從底層到高層對輸入數(shù)據(jù)逐級提取特征,在底層信號到高層語義之間建立起映射關(guān)系。本文設(shè)計(jì)的CNN網(wǎng)絡(luò)的參數(shù)如表2所示。
表2 CNN訓(xùn)練相關(guān)參數(shù)
本文分兩個階段來訓(xùn)練神經(jīng)網(wǎng)絡(luò),由于整個訓(xùn)練過程是離線完成的,所以不會增加譯碼的復(fù)雜度。在這里,根據(jù)參考文獻(xiàn)[16]中的定義,使用了損失函數(shù)的正態(tài)性檢驗(yàn),以便測量接收值在譯碼糾錯空間的可能性,便于之后的似然信息的計(jì)算。損失函數(shù)定義為
其中,n表示真實(shí)噪聲向量,n'是CNN輸出噪聲向量,偏度D和峰度K定義為
(1) 進(jìn)行了大量的模擬,使用極化碼編碼隨機(jī)信息比特,然后用SC譯碼帶有噪聲的BPSK符號,如果譯碼結(jié)果不通過CRC校驗(yàn),則表明譯碼失敗,需要加入擾動噪聲。在這種情況下,儲存一對y以及能夠使其回歸到譯碼可糾錯區(qū)域的擾動噪聲(對加入的隨機(jī)噪聲取負(fù))np。
(2) 使用訓(xùn)練數(shù)據(jù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)以最小化損失函數(shù)。將數(shù)據(jù)庫分為兩組:訓(xùn)練集和驗(yàn)證集。訓(xùn)練集用于訓(xùn)練網(wǎng)絡(luò),而驗(yàn)證集用于避免過度擬合。雖然訓(xùn)練質(zhì)量受某些超參數(shù)的影響,但是在本文中,不關(guān)注這些超參數(shù)的優(yōu)化,只選擇一組有效的超參數(shù)。
(3) 考慮到在加入擾動噪聲之后譯碼仍然失敗的情況,所以要循環(huán)迭代,重復(fù)加入擾動噪聲,這在第1階段是未被訓(xùn)練的,所以要進(jìn)一步訓(xùn)練神經(jīng)網(wǎng)絡(luò),使其在上一次擾動噪聲的基礎(chǔ)上輸出正確的擾動噪聲。為了解決這個問題,在第2階段繼續(xù)訓(xùn)練CNN,如圖3所示。在每次迭代中,基于CNN生成新的數(shù)據(jù)。然后,使用更新后數(shù)據(jù)庫強(qiáng)化學(xué)習(xí)來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
圖3 強(qiáng)化學(xué)習(xí)迭代訓(xùn)練CNN
本文通過數(shù)值仿真來分析基于CNN擾動的極化碼譯碼算法的性能,以驗(yàn)證該算法的有效性。極化碼碼長N為1024,碼率為0.5,信道條件為高斯白噪聲信道。圖4為不同譯碼算法的性能比較,從圖中可以看出,本文所提出的譯碼算法與SC譯碼算法相比可獲得約0.6 dB的增益,與添加隨機(jī)擾動噪聲(PA)相比(重譯次數(shù)門限T為10),約有0.4 dB的增益。本文的譯碼算法在低信噪比時與SCL(L=16)譯碼算法相比有接近0.1 dB的增益。但是,在信噪比>2.75時,所提譯碼算法性能不如SCL(L=16)譯碼算法。這是因?yàn)楫?dāng)信噪比較高時,噪聲較小,可提取的特征也減少,由CNN輸出的擾動噪聲將接收信號帶回可譯碼區(qū)域的能力下降,BER性能下降趨勢緩慢。本文認(rèn)為這可能是由于神經(jīng)網(wǎng)絡(luò)的識別能力隨著信噪比的提升下降而導(dǎo)致的。因此,針對這種現(xiàn)象,可以采用以下措施:(1)增加CNN網(wǎng)絡(luò)的訓(xùn)練量,特別是在高噪聲比下的訓(xùn)練數(shù)據(jù),以提高CNN在高信噪比時對噪聲特征的識別能力,進(jìn)一步提升所提譯碼算法的BER性能;(2)提高重譯的門限次數(shù)T,以提升高信噪比下所提算法的BER性能,可獲得與SCL(L=16)結(jié)果相當(dāng)?shù)男阅堋?/p>
圖4 不同譯碼算法性能比較
為了進(jìn)一步說明基于CNN擾動的Polar譯碼算法性能,圖5顯示了基于CNN的擾動譯碼算法與基于深度神經(jīng)網(wǎng)絡(luò)(DNN)的擾動譯碼算法的性能對比,其中DNN最大迭代次數(shù)為10。從圖中可以看出,基于CNN的擾動譯碼算法性能更好,與基于DNN的擾動譯碼算法相比,性能約有0.4 dB的提升。
圖5 基于不同神經(jīng)網(wǎng)絡(luò)的譯碼算法的性能比較
通過增加迭代的次數(shù)來進(jìn)一步降低BER,圖6為不同最大迭代次數(shù)下的BER性能,從圖中可以看出,只設(shè)置1次迭代已經(jīng)有相當(dāng)不錯的性能,說明CNN已經(jīng)可以產(chǎn)生較為滿意的擾動噪聲,隨著最大迭代次數(shù)的增加,性能逐漸增加,但是增益緩慢??紤]到譯碼復(fù)雜度,當(dāng)T=10時,譯碼效果最佳,有著較好的BER性能和較低的計(jì)算復(fù)雜度。
圖6 不同最大迭代次數(shù)下譯碼性能對比
與傳統(tǒng)SC算法相比,本文所提譯碼算法具有更多計(jì)算,因而復(fù)雜度較高。但是由于僅在SC譯碼失敗時才需要后續(xù)的計(jì)算,所以平均來說譯碼復(fù)雜度不高。圖7為不同譯碼算法的平均SC譯碼次數(shù),從圖中可以看出,SC與SCL的譯碼次數(shù)是不隨著信噪比的增加而變化的,本文提出的譯碼算法只針對譯碼失敗的序列進(jìn)行迭代,所以當(dāng)信噪比提高時,發(fā)生譯碼失敗的概率減小,所以譯碼復(fù)雜度和SC譯碼算法相比幾乎相同。
圖7 不同譯碼算法的平均SC譯碼次數(shù)
為了提升SC譯碼的性能,本文采用譯碼后處理技術(shù),針對碼空間譯碼可糾錯區(qū)域的特點(diǎn),通過CNN產(chǎn)生特定的擾動噪聲,使譯碼失敗的接收信號重新落在可糾錯區(qū)域之內(nèi),有效地提升了極化碼的SC譯碼算法的性能。仿真結(jié)果表明,在同等條件下,本文提出的算法與SC算法相比在復(fù)雜度較低的前提下具有更加優(yōu)異的性能,與SCL(L=16)譯碼算法相比,在譯碼性能相當(dāng)?shù)那疤嵯掠行У亟档土俗g碼時延。此外,本文以SC為例給出了基于CNN擾動噪聲譯碼方法,該思想也可以推廣到極化碼的其他譯碼算法或其他信道編碼的譯碼算法之中[19,20]。