郭軍軍,白碩棟,王 樂
(西安工業大學 計算機科學與工程學院,西安 710021)
深度學習是機器學習的重要分支之一,近年來由于其突出的性能而備受工業界和學術界的廣泛關注[1].深度學習的基本原理是模仿人腦中多層神經節點堆疊在一起構成的深度神經網絡完成認知學習.基于數據驅動,深度學習技術能夠自動抽取特征進行由淺入深學習,試圖求解難以用傳統機器學習方法解決的復雜問題,例如游戲競賽[2]、圖像分類[3]、語音識別[4]和機器翻譯[5]等.
最近,國內外專家學者紛紛將深度學習引入到信道譯碼領域.借助深度神經網絡,一些中短長度的高密度校驗碼(High-Density Parity-Check,HDPC)譯碼性能大幅提高,且譯碼復雜度相對較低[6-11].鑒于構造譯碼訓練集的困難性,Eliya 等利用譯碼概率的獨立性特點,通過訓練HDPC 碼對應Tanner 圖中消息交換邊的權重,分別提出了前饋神經網絡譯碼算法和循環神經網絡譯碼算法[9,10].中科大梁飛等提出了一種基于迭代的置信傳播與卷積神經網絡的組合譯碼方法,該譯碼方法便于并行實現,可廣泛用于各類線性分組碼[11].但是,目前所提出的深度神經網絡譯碼器由于時間和空間開銷較大,從而制約了在一些諸如空間受限、低延時、低功耗的物聯網和存儲芯片電路系統等領域的應用.
針對現有譯碼方法的不足,受到文獻[12]啟發,提出了針對加性高斯白噪聲信道下HDPC 碼的基于深度神經網絡的量化最小和譯碼算法—QMSND.仿真實驗結果表明,所提出的方法僅需要256 個量化階(8 比特表示)即可達到與現有浮點型神經網絡譯碼器相同的譯碼性能,因此便于硬件實現,具有一定的實用價值.
一個人工神經網絡是由多個相連的神經元組成的.每個神經元就是一個最小的計算單元,通過累加其輸入權重和可選的偏置量并利用非線性激活函數將結果直接輸出或傳遞給其它神經元.這些神經元分層排列構成了輸入層、隱層和輸出層.如果神經網絡包括多個隱層,如卷積層、池化層、循環層和激活層等,則稱這類神經網絡為深度神經網絡(Deep Neural Network,DNN)[1].
令r和s分別表示DNN 的輸入和輸出,L為層數或深度,ρ為相關參數,則深度神經網絡的計算模型可用式(1)來表示.

從式(1)中可知,每一層神經網絡的功能都是將上一次產生的結果作為輸入,函數經逐級復合,將問題化繁為簡.使用大量測試數據,在損失函數的約束下,對目標函數進行最優化處理,最終訓練出合適的深度神經網絡模型.
設一個二元HDPC 碼的校驗矩陣對應Tanner 圖模型為G=(VUC,E),圖G中 變量節點集V={v1,v2,···,vn},校驗節點集C={c1,c2,···,cr},n和r分別表示校驗矩陣的列數(碼長)和行數,E是變量節點與校驗節點之間相連的邊集,E=V×C.如果校驗矩陣的第i列 第j行元素是非零的,則Tanner 圖G的 節點vi與cj之間存在一條邊vi,cj>∈E.在不產生歧義的情況下,本文后面表示變量節點和校驗節點時省略其下標值.在加性高斯白噪聲信道下,變量節點v的對數似然比LLR 的計算見式(2).

式(2)中yv為碼字位cv對應的信道接收值,σ信道噪聲方差.在HDPC 碼最小和譯碼算法中,消息沿著變量節點和校驗節點之間的邊進行迭代傳遞.令表示在第l次迭代中由變量節點v 傳遞到校驗節點c 的消息,同理可定義為第l次迭代中由校驗節點c傳遞到變量節點v的消息.在第0 次迭代中,為變量節點v 在其信道觀察值對應的消息,與校驗節點c 無關,用mv來 表示.當l>0時,變量節點的消息更新規則如下所示:

校驗節點的消息更新是由上一次進入校驗節點消息的函數決定的.

在式(3)和(4)中,N(v)是Tanner 圖中變量節點v的鄰居校驗節點集合,N(c)是校驗節點c的鄰居變量節點集合.若x>0 ,符號函數s ign(x)=1,否則s ign(x)=-1.
若采用基于深度學習的最小和譯碼時,校驗節點的消息更新如式(5)所示.

式(5)中,激活函數R eLU(x)=max(x,0),調優參數是通過小批次隨機梯度下降法學習得到的非負實數.
為了便于硬件電路實現,本文提出了一種基于多階量化的HDPC 碼最小和譯碼算法.由于采用了事先訓練好的深度神經網絡進行一次性譯碼,因此譯碼速度大幅提高.信道噪聲和譯碼消息經非均勻量化器過濾,采用有限比特表示量化階,可以有效節約存儲空間.量化激活函數 Q ReLU(x)=max(Q(x),0),其中量化函數Q(x)見式(6).

式(6)中,門限集合T={T1,T2,···,TM},量化階Li是 正整數,量化階的數量為M+1.量化階的選擇會影響譯碼的性能,且與門限之間存在著非線性關系,因此需要針對不同的碼通過學習來確定量化階及其門限值的大小.
假設碼長為n的二元高密度BCH 碼C ∈{0,1}n,一個碼字c ∈C經無記憶信道傳輸后,其對應的信道接收向量y=(y1,y2,···,yn),譯碼器輸出的估計碼字向量所提出的基于深度學習的量化最小和譯碼QMSND 算法描述如下:
(1)變量節點更新
通過式(3)計算由校驗節點(除本節點外)傳入到變量節點的消息.當l=0時,
(2)校驗節點更新
由變量節點(除本節點外)進入到變量節點的消息由式(7)計算.

(3)譯碼判決

如果>0 ,則對應碼位的判決值=0;否則=1.
(4)停止條件
QMSND 譯碼算法的最大迭代次數與碼長、碼的結構以及信道噪聲大小有關.一般而言,碼字結構越復雜、碼長越長或信道質量越差,譯碼最大迭代次數的設值也越大.通常,為了平衡譯碼性能和速度,對于中短長度的HDPC 碼,如BCH 或Polar 碼的最大迭代次數設置在5~30 之間.
本文實驗所采用的深度神經網絡是構建在基于TensorFlow 的Keras 框架之上.使用Python 語言編寫仿真程序,操作系統平臺為Windows 10 專業版,采用蒙特卡洛法進行試驗并比較高密度BCH 碼在不同信噪比下的性能.為了加快訓練速度,應用了英偉達公司的GeForce GTX 1080 Ti 系列圖形加速GPU.
本文所采用的深度神經網絡譯碼器是對Tanner圖邊的權重和量化階進行訓練.交叉熵函數定義為:

式(9)中,ov是深度神經網絡的非線性輸出sigmoid 函數,定義為
所構建的量化最小和神經譯碼器QMSND 是基于深度循環神經網絡(Recurrent Neural Network,RNN)的,包括1 個輸入層、4 個循環層和1 個輸出層.其中輸入層又細化為調制層、噪聲層和LLR 層,每個循環層對應一次完整的量化最小和譯碼迭代過程,循環層內進一步細化為變量節點計算層、校驗節點計算層(QReLU 量化激活層).變量節點計算層完成式(3)的計算任務,校驗節點計算層對進入節點的信息進行量化激活,上次校驗節點的計算結果作為下一次循環變量節點的輸入,循環層的訓練目標是最小化交叉熵函數式(9).循環層最后輸出經式(7)計算后得到譯碼的最終結果.
訓練數據來自于BCH 碼的全零碼字在加性高斯白噪聲信道的隨機構造的數據集,信噪比范圍從1 dB 到8 dB.在不同信噪比下,采用小批量隨機梯度下降方式,每次訓練批次提交20 個碼字,共使用1600 個訓練樣例.量化階采用非均勻間隔,間隔大小基本服從正態分布,通過學習確定不同間隔大小.由于循環神經網絡前后層之間的存在相關性約束,每層學習時的參數都會發生變化,從而使得訓練速度減慢.因此,在訓練過程中學習率r設置較小.本次訓練中,我們將r設置為0.001.
為了驗證本文提出方法的正確性和有效性,選取了三個典型的BCH 碼作為測試碼,分別是BCH(63,36),BCH(63,45)和BCH(127,99).本次實驗中量化階數選擇了128 和256 兩種,不同BCH 碼的譯碼性能比較分別見圖1、圖2和圖3.
圖1是采用傳統和積譯碼SPA、文獻[12]提出的DNNMS 和本文提出的7 比特量化QMSND-128 以及8 比特量化QMSND-256 譯碼算法對BCH(63,36)碼的誤比特率BER 進行數值仿真結果比較.從圖1中可以看出,當信噪比大于3 dB,QMSND 譯碼性能逐步改善,QMSNND-256 譯碼器性能逼近未經量化處理的DNNMS譯碼器;在信噪比為7 dB 時,SPA 誤碼率為9.7×10-4,DNNMS 誤碼率是1.2×10-4,QMSNND-128 和QMSNND-256 譯碼器的誤碼率分別是6.8×10-4和2×10-4.

圖1 BCH(63,36)性能仿真圖
圖2是對BCH(63,45)碼進行性能數值比較.在誤碼率為2.5×10-4時,SPA 譯碼器信噪比是8 dB,QMSND-256 譯碼器的信噪比為6.45 dB,本文提出的8 比特量化譯碼性能提高1.55 dB,與DNNMS 性能差距僅0.18 dB.

圖2 BCH(63,45)性能仿真圖
圖3是對BCH(127,99)長碼進行仿真試驗得到的譯碼性能比較,其仿真結果與前兩個碼類似.但QMSND量化譯碼性能改進沒有前兩個碼那樣顯著,這是因為隨著碼長增加,樣本訓練復雜度急劇上升導致量化精度降低.

圖3 BCH(127,99)性能仿真圖
從以上三個譯碼性能比較圖中可以看出,在低信噪比區域,傳統的和積譯碼SPA、基于深度神經網絡的最小和譯碼DNNMS 以及本文提出的128 和256 階量化神經最小和譯碼QMSND 的譯碼性能差距很小,但在中到高信噪比區域,SPA 譯碼性能明顯較差,DNNMS性能至少比SPA 高1 dB,而QMSND-128 雖然沒有DNNMS 的譯碼性能優異,但總體而言比SPA 要好,特別是QMSND-256 譯碼性能與DNNMS 十分接近.
為了提高加性高斯白噪聲信道下高密度BCH 碼譯碼的高效性和實用性,本文提出了基于深度神經網絡的量化最小和譯碼方法—QMSND.仿真實驗結果表明,所提出的方法僅需要256 個量化階(8 比特)即可達到與現有浮點型神經網絡譯碼器相近的譯碼性能.所提出的方法譯碼性能好,便于硬件實現,具有一定的應用前景.今后將對進一步優化譯碼算法,研究單輪迭代時能夠自適應量化階區間的學習方法,提高譯碼性能和硬件實現效率.