郭軍軍,白碩棟,王 樂(lè)
(西安工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,西安 710021)
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的重要分支之一,近年來(lái)由于其突出的性能而備受工業(yè)界和學(xué)術(shù)界的廣泛關(guān)注[1].深度學(xué)習(xí)的基本原理是模仿人腦中多層神經(jīng)節(jié)點(diǎn)堆疊在一起構(gòu)成的深度神經(jīng)網(wǎng)絡(luò)完成認(rèn)知學(xué)習(xí).基于數(shù)據(jù)驅(qū)動(dòng),深度學(xué)習(xí)技術(shù)能夠自動(dòng)抽取特征進(jìn)行由淺入深學(xué)習(xí),試圖求解難以用傳統(tǒng)機(jī)器學(xué)習(xí)方法解決的復(fù)雜問(wèn)題,例如游戲競(jìng)賽[2]、圖像分類[3]、語(yǔ)音識(shí)別[4]和機(jī)器翻譯[5]等.
最近,國(guó)內(nèi)外專家學(xué)者紛紛將深度學(xué)習(xí)引入到信道譯碼領(lǐng)域.借助深度神經(jīng)網(wǎng)絡(luò),一些中短長(zhǎng)度的高密度校驗(yàn)碼(High-Density Parity-Check,HDPC)譯碼性能大幅提高,且譯碼復(fù)雜度相對(duì)較低[6-11].鑒于構(gòu)造譯碼訓(xùn)練集的困難性,Eliya 等利用譯碼概率的獨(dú)立性特點(diǎn),通過(guò)訓(xùn)練HDPC 碼對(duì)應(yīng)Tanner 圖中消息交換邊的權(quán)重,分別提出了前饋神經(jīng)網(wǎng)絡(luò)譯碼算法和循環(huán)神經(jīng)網(wǎng)絡(luò)譯碼算法[9,10].中科大梁飛等提出了一種基于迭代的置信傳播與卷積神經(jīng)網(wǎng)絡(luò)的組合譯碼方法,該譯碼方法便于并行實(shí)現(xiàn),可廣泛用于各類線性分組碼[11].但是,目前所提出的深度神經(jīng)網(wǎng)絡(luò)譯碼器由于時(shí)間和空間開(kāi)銷較大,從而制約了在一些諸如空間受限、低延時(shí)、低功耗的物聯(lián)網(wǎng)和存儲(chǔ)芯片電路系統(tǒng)等領(lǐng)域的應(yīng)用.
針對(duì)現(xiàn)有譯碼方法的不足,受到文獻(xiàn)[12]啟發(fā),提出了針對(duì)加性高斯白噪聲信道下HDPC 碼的基于深度神經(jīng)網(wǎng)絡(luò)的量化最小和譯碼算法—QMSND.仿真實(shí)驗(yàn)結(jié)果表明,所提出的方法僅需要256 個(gè)量化階(8 比特表示)即可達(dá)到與現(xiàn)有浮點(diǎn)型神經(jīng)網(wǎng)絡(luò)譯碼器相同的譯碼性能,因此便于硬件實(shí)現(xiàn),具有一定的實(shí)用價(jià)值.
一個(gè)人工神經(jīng)網(wǎng)絡(luò)是由多個(gè)相連的神經(jīng)元組成的.每個(gè)神經(jīng)元就是一個(gè)最小的計(jì)算單元,通過(guò)累加其輸入權(quán)重和可選的偏置量并利用非線性激活函數(shù)將結(jié)果直接輸出或傳遞給其它神經(jīng)元.這些神經(jīng)元分層排列構(gòu)成了輸入層、隱層和輸出層.如果神經(jīng)網(wǎng)絡(luò)包括多個(gè)隱層,如卷積層、池化層、循環(huán)層和激活層等,則稱這類神經(jīng)網(wǎng)絡(luò)為深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)[1].
令r和s分別表示DNN 的輸入和輸出,L為層數(shù)或深度,ρ為相關(guān)參數(shù),則深度神經(jīng)網(wǎng)絡(luò)的計(jì)算模型可用式(1)來(lái)表示.
從式(1)中可知,每一層神經(jīng)網(wǎng)絡(luò)的功能都是將上一次產(chǎn)生的結(jié)果作為輸入,函數(shù)經(jīng)逐級(jí)復(fù)合,將問(wèn)題化繁為簡(jiǎn).使用大量測(cè)試數(shù)據(jù),在損失函數(shù)的約束下,對(duì)目標(biāo)函數(shù)進(jìn)行最優(yōu)化處理,最終訓(xùn)練出合適的深度神經(jīng)網(wǎng)絡(luò)模型.
設(shè)一個(gè)二元HDPC 碼的校驗(yàn)矩陣對(duì)應(yīng)Tanner 圖模型為G=(VUC,E),圖G中 變量節(jié)點(diǎn)集V={v1,v2,···,vn},校驗(yàn)節(jié)點(diǎn)集C={c1,c2,···,cr},n和r分別表示校驗(yàn)矩陣的列數(shù)(碼長(zhǎng))和行數(shù),E是變量節(jié)點(diǎn)與校驗(yàn)節(jié)點(diǎn)之間相連的邊集,E=V×C.如果校驗(yàn)矩陣的第i列 第j行元素是非零的,則Tanner 圖G的 節(jié)點(diǎn)vi與cj之間存在一條邊vi,cj>∈E.在不產(chǎn)生歧義的情況下,本文后面表示變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)時(shí)省略其下標(biāo)值.在加性高斯白噪聲信道下,變量節(jié)點(diǎn)v的對(duì)數(shù)似然比LLR 的計(jì)算見(jiàn)式(2).
式(2)中yv為碼字位cv對(duì)應(yīng)的信道接收值,σ信道噪聲方差.在HDPC 碼最小和譯碼算法中,消息沿著變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)之間的邊進(jìn)行迭代傳遞.令表示在第l次迭代中由變量節(jié)點(diǎn)v 傳遞到校驗(yàn)節(jié)點(diǎn)c 的消息,同理可定義為第l次迭代中由校驗(yàn)節(jié)點(diǎn)c傳遞到變量節(jié)點(diǎn)v的消息.在第0 次迭代中,為變量節(jié)點(diǎn)v 在其信道觀察值對(duì)應(yīng)的消息,與校驗(yàn)節(jié)點(diǎn)c 無(wú)關(guān),用mv來(lái) 表示.當(dāng)l>0時(shí),變量節(jié)點(diǎn)的消息更新規(guī)則如下所示:
校驗(yàn)節(jié)點(diǎn)的消息更新是由上一次進(jìn)入校驗(yàn)節(jié)點(diǎn)消息的函數(shù)決定的.
在式(3)和(4)中,N(v)是Tanner 圖中變量節(jié)點(diǎn)v的鄰居校驗(yàn)節(jié)點(diǎn)集合,N(c)是校驗(yàn)節(jié)點(diǎn)c的鄰居變量節(jié)點(diǎn)集合.若x>0 ,符號(hào)函數(shù)s ign(x)=1,否則s ign(x)=-1.
若采用基于深度學(xué)習(xí)的最小和譯碼時(shí),校驗(yàn)節(jié)點(diǎn)的消息更新如式(5)所示.
式(5)中,激活函數(shù)R eLU(x)=max(x,0),調(diào)優(yōu)參數(shù)是通過(guò)小批次隨機(jī)梯度下降法學(xué)習(xí)得到的非負(fù)實(shí)數(shù).
為了便于硬件電路實(shí)現(xiàn),本文提出了一種基于多階量化的HDPC 碼最小和譯碼算法.由于采用了事先訓(xùn)練好的深度神經(jīng)網(wǎng)絡(luò)進(jìn)行一次性譯碼,因此譯碼速度大幅提高.信道噪聲和譯碼消息經(jīng)非均勻量化器過(guò)濾,采用有限比特表示量化階,可以有效節(jié)約存儲(chǔ)空間.量化激活函數(shù) Q ReLU(x)=max(Q(x),0),其中量化函數(shù)Q(x)見(jiàn)式(6).
式(6)中,門(mén)限集合T={T1,T2,···,TM},量化階Li是 正整數(shù),量化階的數(shù)量為M+1.量化階的選擇會(huì)影響譯碼的性能,且與門(mén)限之間存在著非線性關(guān)系,因此需要針對(duì)不同的碼通過(guò)學(xué)習(xí)來(lái)確定量化階及其門(mén)限值的大小.
假設(shè)碼長(zhǎng)為n的二元高密度BCH 碼C ∈{0,1}n,一個(gè)碼字c ∈C經(jīng)無(wú)記憶信道傳輸后,其對(duì)應(yīng)的信道接收向量y=(y1,y2,···,yn),譯碼器輸出的估計(jì)碼字向量所提出的基于深度學(xué)習(xí)的量化最小和譯碼QMSND 算法描述如下:
(1)變量節(jié)點(diǎn)更新
通過(guò)式(3)計(jì)算由校驗(yàn)節(jié)點(diǎn)(除本節(jié)點(diǎn)外)傳入到變量節(jié)點(diǎn)的消息.當(dāng)l=0時(shí),
(2)校驗(yàn)節(jié)點(diǎn)更新
由變量節(jié)點(diǎn)(除本節(jié)點(diǎn)外)進(jìn)入到變量節(jié)點(diǎn)的消息由式(7)計(jì)算.
(3)譯碼判決
如果>0 ,則對(duì)應(yīng)碼位的判決值=0;否則=1.
(4)停止條件
QMSND 譯碼算法的最大迭代次數(shù)與碼長(zhǎng)、碼的結(jié)構(gòu)以及信道噪聲大小有關(guān).一般而言,碼字結(jié)構(gòu)越復(fù)雜、碼長(zhǎng)越長(zhǎng)或信道質(zhì)量越差,譯碼最大迭代次數(shù)的設(shè)值也越大.通常,為了平衡譯碼性能和速度,對(duì)于中短長(zhǎng)度的HDPC 碼,如BCH 或Polar 碼的最大迭代次數(shù)設(shè)置在5~30 之間.
本文實(shí)驗(yàn)所采用的深度神經(jīng)網(wǎng)絡(luò)是構(gòu)建在基于TensorFlow 的Keras 框架之上.使用Python 語(yǔ)言編寫(xiě)仿真程序,操作系統(tǒng)平臺(tái)為Windows 10 專業(yè)版,采用蒙特卡洛法進(jìn)行試驗(yàn)并比較高密度BCH 碼在不同信噪比下的性能.為了加快訓(xùn)練速度,應(yīng)用了英偉達(dá)公司的GeForce GTX 1080 Ti 系列圖形加速GPU.
本文所采用的深度神經(jīng)網(wǎng)絡(luò)譯碼器是對(duì)Tanner圖邊的權(quán)重和量化階進(jìn)行訓(xùn)練.交叉熵函數(shù)定義為:
式(9)中,ov是深度神經(jīng)網(wǎng)絡(luò)的非線性輸出sigmoid 函數(shù),定義為
所構(gòu)建的量化最小和神經(jīng)譯碼器QMSND 是基于深度循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)的,包括1 個(gè)輸入層、4 個(gè)循環(huán)層和1 個(gè)輸出層.其中輸入層又細(xì)化為調(diào)制層、噪聲層和LLR 層,每個(gè)循環(huán)層對(duì)應(yīng)一次完整的量化最小和譯碼迭代過(guò)程,循環(huán)層內(nèi)進(jìn)一步細(xì)化為變量節(jié)點(diǎn)計(jì)算層、校驗(yàn)節(jié)點(diǎn)計(jì)算層(QReLU 量化激活層).變量節(jié)點(diǎn)計(jì)算層完成式(3)的計(jì)算任務(wù),校驗(yàn)節(jié)點(diǎn)計(jì)算層對(duì)進(jìn)入節(jié)點(diǎn)的信息進(jìn)行量化激活,上次校驗(yàn)節(jié)點(diǎn)的計(jì)算結(jié)果作為下一次循環(huán)變量節(jié)點(diǎn)的輸入,循環(huán)層的訓(xùn)練目標(biāo)是最小化交叉熵函數(shù)式(9).循環(huán)層最后輸出經(jīng)式(7)計(jì)算后得到譯碼的最終結(jié)果.
訓(xùn)練數(shù)據(jù)來(lái)自于BCH 碼的全零碼字在加性高斯白噪聲信道的隨機(jī)構(gòu)造的數(shù)據(jù)集,信噪比范圍從1 dB 到8 dB.在不同信噪比下,采用小批量隨機(jī)梯度下降方式,每次訓(xùn)練批次提交20 個(gè)碼字,共使用1600 個(gè)訓(xùn)練樣例.量化階采用非均勻間隔,間隔大小基本服從正態(tài)分布,通過(guò)學(xué)習(xí)確定不同間隔大小.由于循環(huán)神經(jīng)網(wǎng)絡(luò)前后層之間的存在相關(guān)性約束,每層學(xué)習(xí)時(shí)的參數(shù)都會(huì)發(fā)生變化,從而使得訓(xùn)練速度減慢.因此,在訓(xùn)練過(guò)程中學(xué)習(xí)率r設(shè)置較小.本次訓(xùn)練中,我們將r設(shè)置為0.001.
為了驗(yàn)證本文提出方法的正確性和有效性,選取了三個(gè)典型的BCH 碼作為測(cè)試碼,分別是BCH(63,36),BCH(63,45)和BCH(127,99).本次實(shí)驗(yàn)中量化階數(shù)選擇了128 和256 兩種,不同BCH 碼的譯碼性能比較分別見(jiàn)圖1、圖2和圖3.
圖1是采用傳統(tǒng)和積譯碼SPA、文獻(xiàn)[12]提出的DNNMS 和本文提出的7 比特量化QMSND-128 以及8 比特量化QMSND-256 譯碼算法對(duì)BCH(63,36)碼的誤比特率BER 進(jìn)行數(shù)值仿真結(jié)果比較.從圖1中可以看出,當(dāng)信噪比大于3 dB,QMSND 譯碼性能逐步改善,QMSNND-256 譯碼器性能逼近未經(jīng)量化處理的DNNMS譯碼器;在信噪比為7 dB 時(shí),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是對(duì)BCH(63,45)碼進(jìn)行性能數(shù)值比較.在誤碼率為2.5×10-4時(shí),SPA 譯碼器信噪比是8 dB,QMSND-256 譯碼器的信噪比為6.45 dB,本文提出的8 比特量化譯碼性能提高1.55 dB,與DNNMS 性能差距僅0.18 dB.
圖2 BCH(63,45)性能仿真圖
圖3是對(duì)BCH(127,99)長(zhǎng)碼進(jìn)行仿真試驗(yàn)得到的譯碼性能比較,其仿真結(jié)果與前兩個(gè)碼類似.但QMSND量化譯碼性能改進(jìn)沒(méi)有前兩個(gè)碼那樣顯著,這是因?yàn)殡S著碼長(zhǎng)增加,樣本訓(xùn)練復(fù)雜度急劇上升導(dǎo)致量化精度降低.
圖3 BCH(127,99)性能仿真圖
從以上三個(gè)譯碼性能比較圖中可以看出,在低信噪比區(qū)域,傳統(tǒng)的和積譯碼SPA、基于深度神經(jīng)網(wǎng)絡(luò)的最小和譯碼DNNMS 以及本文提出的128 和256 階量化神經(jīng)最小和譯碼QMSND 的譯碼性能差距很小,但在中到高信噪比區(qū)域,SPA 譯碼性能明顯較差,DNNMS性能至少比SPA 高1 dB,而QMSND-128 雖然沒(méi)有DNNMS 的譯碼性能優(yōu)異,但總體而言比SPA 要好,特別是QMSND-256 譯碼性能與DNNMS 十分接近.
為了提高加性高斯白噪聲信道下高密度BCH 碼譯碼的高效性和實(shí)用性,本文提出了基于深度神經(jīng)網(wǎng)絡(luò)的量化最小和譯碼方法—QMSND.仿真實(shí)驗(yàn)結(jié)果表明,所提出的方法僅需要256 個(gè)量化階(8 比特)即可達(dá)到與現(xiàn)有浮點(diǎn)型神經(jīng)網(wǎng)絡(luò)譯碼器相近的譯碼性能.所提出的方法譯碼性能好,便于硬件實(shí)現(xiàn),具有一定的應(yīng)用前景.今后將對(duì)進(jìn)一步優(yōu)化譯碼算法,研究單輪迭代時(shí)能夠自適應(yīng)量化階區(qū)間的學(xué)習(xí)方法,提高譯碼性能和硬件實(shí)現(xiàn)效率.
計(jì)算機(jī)系統(tǒng)應(yīng)用2019年4期