朱進(jìn)蓉,茍明亮,秦明偉
(1.西南科技大學(xué)信息工程學(xué)院,四川 綿陽(yáng) 621000;2.西南科技大學(xué)四川省重點(diǎn)機(jī)器人實(shí)驗(yàn)室,四川 綿陽(yáng) 621000)
1993 年,C.Berrou、A.Glavieux 等提出了Turbo 碼。迭代思想作為T(mén)urbo 碼的重要特點(diǎn)也得到越來(lái)越多的研究。
例如,Semi 通過(guò)設(shè)定門(mén)限值,提出了Threshold_Log_MAP 算法。該算法雖然在很大程度上減少了譯碼算法的復(fù)雜度,但是在性能上損失了大概零點(diǎn)幾分貝[1]。Jaeyong Son 等設(shè)計(jì)了一種低復(fù)雜度的分組Turbo 碼(block Turbo codes,BTCs)譯碼算法。BTCs 譯碼算法是通過(guò)串行串聯(lián)線性塊碼構(gòu)造的,并通過(guò)讓每個(gè)分量代碼分兩步解碼來(lái)迭代解碼[2]。Al-Dweik 等提出了一種新型Turbo 低復(fù)雜度譯碼器——超輕譯碼器。與標(biāo)準(zhǔn)的Turbo 乘積碼(Turbo product codes,TPCs)譯碼器相比,超輕譯碼器降低了復(fù)雜性并減少了延遲。降低復(fù)雜度和延遲將使得系統(tǒng)能夠使用具有高碼率的代碼來(lái)提高頻譜效率,或者能夠使用具有低碼率的強(qiáng)大代碼來(lái)降低發(fā)射功率[3]。此外,H.Nickl 設(shè)計(jì)了一種以漢明碼為分量碼,并將其作為T(mén)urbo 碼的編碼方案。它的性能與香農(nóng)理論值僅相差0.27 dB。但是,這些方法還存在很大的局限性,僅通過(guò)改進(jìn)Turbo 碼的編譯碼性能來(lái)提高準(zhǔn)確度是不夠的。
隨著深度學(xué)習(xí)的高速發(fā)展,很多學(xué)者嘗試將深度學(xué)習(xí)的方法應(yīng)用到通信領(lǐng)域。Cammerer 等利用神經(jīng)網(wǎng)絡(luò)輔助組件取代了一些置信度傳播(belief propagation,BP) 譯碼器的子塊,并通過(guò)剩余 BP 階段耦合這些子塊[4]。王翼韜試圖在Turbo 碼現(xiàn)有的譯碼算法中引入隱藏參數(shù),通過(guò)神經(jīng)網(wǎng)絡(luò)對(duì)隱藏參數(shù)進(jìn)行訓(xùn)練,并利用神經(jīng)網(wǎng)絡(luò)對(duì)Turbo 碼作并行譯碼的可行性分析[5]。
信道編碼中的大多數(shù)結(jié)果都是基于加性高斯白噪聲假設(shè)完成的,但是該假設(shè)在通信應(yīng)用的實(shí)際環(huán)境中卻無(wú)法滿足。研究表明,實(shí)際通信環(huán)境的噪聲符合非高斯分布。而深度學(xué)習(xí)模型能夠?qū)W習(xí)復(fù)雜的數(shù)據(jù)類(lèi)別和特征。因此,本設(shè)計(jì)主要研究基于卷積神經(jīng)譯碼網(wǎng)絡(luò)的Turbo 碼譯碼,以提高Turbo 碼在非加性高斯白噪聲(additive white Gaussian noise,AWGN)信道上對(duì)突發(fā)環(huán)境的適用性。
基于神經(jīng)網(wǎng)絡(luò)的信道譯碼模型如圖1 所示。
圖1 基于神經(jīng)網(wǎng)絡(luò)的信道譯碼模型Fig.1 Channel decoding model based on neural network
模型左邊部分為信道編碼的過(guò)程,將n位原始信息進(jìn)行Turbo 碼編碼,得到碼長(zhǎng)為N的碼字;中間部分是對(duì)編碼后的碼字進(jìn)行信號(hào)的調(diào)制和加噪過(guò)程;最右邊為卷積神經(jīng)譯碼網(wǎng)絡(luò)。其主要目的是將加過(guò)噪聲的N值碼字恢復(fù)成原始的n位信息位,即完成譯碼。其過(guò)程主要是用卷積神經(jīng)譯碼網(wǎng)絡(luò)替換傳統(tǒng)的Turbo 碼譯碼算法。卷積神經(jīng)譯碼網(wǎng)絡(luò)不需要學(xué)習(xí)Turbo 碼譯碼算法相關(guān)的知識(shí),只需要對(duì)編碼信息進(jìn)行相關(guān)的特征提取。通過(guò)對(duì)其設(shè)置初始權(quán)重和偏置值,利用損失函數(shù)擬合出最佳的譯碼函數(shù)值,從而實(shí)現(xiàn)端到端的訓(xùn)練,直至收斂得到最終的譯碼模型。
在圖像、語(yǔ)音識(shí)別等領(lǐng)域,神經(jīng)網(wǎng)絡(luò)中數(shù)據(jù)集的生成所需的數(shù)據(jù)空間是無(wú)窮大的。因此,無(wú)法對(duì)整個(gè)數(shù)據(jù)空間作訓(xùn)練,只能先進(jìn)行采樣再對(duì)樣本作訓(xùn)練[6-7]。而編譯碼問(wèn)題的特殊之處在于:在編碼端,其數(shù)據(jù)空間是有限的。例如一個(gè)(n,k)二進(jìn)制Turbo 碼編碼器,可能的碼字就只有2k種;但是在接收端,由于信道經(jīng)過(guò)了加噪的過(guò)程,可能獲取的數(shù)據(jù)集空間又變?yōu)闊o(wú)窮大。
在本設(shè)計(jì)中,訓(xùn)練集的數(shù)據(jù)以如下過(guò)程生成:將編碼比特xi經(jīng)過(guò)加性高斯白噪聲,得到神經(jīng)譯碼網(wǎng)絡(luò)的訓(xùn)練集。每次數(shù)據(jù)疊加的高斯白噪聲與信號(hào)的信噪比為均勻分布的隨機(jī)數(shù),或者是數(shù)據(jù)經(jīng)過(guò)非高斯信道后產(chǎn)生的隨機(jī)數(shù)。測(cè)試集的數(shù)據(jù)由編譯碼常用的通信方式產(chǎn)生,隨機(jī)生成數(shù)據(jù)經(jīng)過(guò)信道。不同信噪比對(duì)應(yīng)不同的測(cè)試數(shù)據(jù)。
為了使Turbo 碼能夠更好地適應(yīng)不同的環(huán)境,本設(shè)計(jì)采用的是一種基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)的譯碼網(wǎng)絡(luò)結(jié)構(gòu)。譯碼網(wǎng)絡(luò)的結(jié)構(gòu)主要分為4 個(gè)部分,分別是信號(hào)的輸入模塊、卷積模塊、全連接模塊以及輸出模塊[8]。
基于卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)如圖2 所示。
圖2 基于卷積神經(jīng)網(wǎng)絡(luò)的架構(gòu)Fig.2 Architecture based on convolutional neural network
①輸入模塊。
輸入模塊主要是對(duì)經(jīng)過(guò)信道的信號(hào)進(jìn)行預(yù)處理,然后送入卷積神經(jīng)網(wǎng)絡(luò)譯碼器中進(jìn)行譯碼。本設(shè)計(jì)采用的子譯碼器為2×64 的矩陣:第一列的數(shù)據(jù)為經(jīng)過(guò)信道后的信息位x1~x64;第二列的數(shù)據(jù)為經(jīng)過(guò)信道后的校驗(yàn)數(shù)據(jù)y1~y64。
基于卷積神經(jīng)網(wǎng)絡(luò)的子譯碼器結(jié)構(gòu)如圖3 所示。
圖3 基于卷積神經(jīng)網(wǎng)絡(luò)的子譯碼器結(jié)構(gòu)Fig.3 Sub-decoder structure based on convolutional neural network
②卷積模塊。
對(duì)于神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),卷積層是其非常重要的模塊。在卷積神經(jīng)網(wǎng)絡(luò)中,為了降低網(wǎng)絡(luò)對(duì)數(shù)據(jù)的突發(fā)異變,利用卷積層對(duì)數(shù)據(jù)進(jìn)行特征提取。然而,網(wǎng)絡(luò)層數(shù)越多,卷積神經(jīng)網(wǎng)絡(luò)越會(huì)對(duì)每個(gè)數(shù)據(jù)元進(jìn)行深入的分析。另外,卷積神經(jīng)網(wǎng)絡(luò)擁有很高的分辨率,可以通過(guò)訓(xùn)練自動(dòng)提取輸出數(shù)據(jù)和輸入數(shù)據(jù)之間的關(guān)系,并且自適應(yīng)地存儲(chǔ)訓(xùn)練的權(quán)重值[9]。
本設(shè)計(jì)中,通過(guò)堆疊多個(gè)相同形狀的1D-CNN 濾波器,構(gòu)造一個(gè)基于CNN 的Turbo 碼譯碼器。相同形狀的1D-CNN 濾波器不需要長(zhǎng)期依賴(lài)。為了更好地訓(xùn)練性能,第一層為32 個(gè)相同形狀的1D-CNN 的濾波器,第二層為64 個(gè),第三層為128 個(gè),第四層為64 個(gè),第五層為32 個(gè)。內(nèi)核大小為5。卷積層采用修正線性(rectified limear unit,ReLU)單元作為激活函數(shù)。函數(shù)表達(dá)式為:
ReLU 函數(shù)通常用作神經(jīng)網(wǎng)絡(luò)中隱層的輸出,能夠緩減過(guò)擬合的問(wèn)題。與其他激活函數(shù)相比,ReLU 函數(shù)只需要一個(gè)門(mén)限值即可獲得激活值,并且計(jì)算速度快、訓(xùn)練時(shí)間短[10]。
③全連接模塊。
全連接層的作用是對(duì)卷積層提取到的高層抽象特征進(jìn)行組合,輸入到第二個(gè)全連接層,以減少特征位置對(duì)分類(lèi)帶來(lái)的影響,從而減少特征信息的丟失。本設(shè)計(jì)采用了2 個(gè)全連接層,第一層設(shè)計(jì)為256,第二層設(shè)計(jì)為128。
④輸出模塊。
輸出模塊主要用于最終目標(biāo)結(jié)果的輸出。其模型一般使用Sigmoid 函數(shù)。其表達(dá)式為:
對(duì)于卷積神經(jīng)網(wǎng)絡(luò)來(lái)說(shuō),Sigmoid 函數(shù)是比較常用的、用于輸出層的函數(shù)。它是一個(gè)單調(diào)遞增函數(shù),在趨于正無(wú)窮和負(fù)無(wú)窮時(shí),函數(shù)趨于平滑狀態(tài)。它的值域?yàn)?0,1),函數(shù)值具有非常好的對(duì)稱(chēng)性,優(yōu)化性能穩(wěn)定[11]。
通過(guò)對(duì)卷積神經(jīng)譯碼網(wǎng)絡(luò)設(shè)置初始權(quán)重和偏置值,利用損失函數(shù)擬合出最佳的譯碼函數(shù)值,從而實(shí)現(xiàn)端到端的訓(xùn)練,得到最終的譯碼模型。則整個(gè)網(wǎng)絡(luò)的譯碼函數(shù)可以表示為:
式中:s為譯碼網(wǎng)絡(luò)的輸入信號(hào);w為權(quán)重;b為偏置值;o為譯碼輸出值。
譯碼函數(shù)是神經(jīng)網(wǎng)絡(luò)通過(guò)不斷學(xué)習(xí)擬合而形成的。
在輸出模塊中,輸出層的擬合函數(shù)fsigmoid為:
式中:q為定義全連接的輸出。
所以,CNN 卷積神經(jīng)譯碼網(wǎng)絡(luò)的輸出o′可以表示為:
根據(jù)信道編碼的特點(diǎn),定義CNN 卷積神經(jīng)譯碼網(wǎng)絡(luò)的損失函數(shù)為:
為了使網(wǎng)絡(luò)的損失函數(shù)迅速收斂到最小值,本文采用 Adam 優(yōu)化器,不斷訓(xùn)練譯碼網(wǎng)絡(luò)、計(jì)算損失函數(shù)值,從而確定最佳的權(quán)重值和偏置值。
為了驗(yàn)證基于CNN 的譯碼網(wǎng)絡(luò)方案的性能,本設(shè)計(jì)將卷積神經(jīng)網(wǎng)絡(luò)譯碼器的誤碼率(bit error rate,BER)降到最低。作為試驗(yàn)條件,通常將二進(jìn)制交叉熵?fù)p失用作可區(qū)分的替代損失函數(shù)。在高斯信道和非高斯信道下,將基于卷積神經(jīng)譯碼網(wǎng)絡(luò)與標(biāo)準(zhǔn)的譯碼器的性能進(jìn)行了比較。
在2 次迭代和6 次迭代時(shí),將卷積神經(jīng)譯碼器和標(biāo)準(zhǔn)的Turbo 碼譯碼器的性能進(jìn)行了比較。
不同迭代次數(shù)對(duì)比結(jié)果如圖4 所示。
圖4 不同迭代次數(shù)對(duì)比結(jié)果Fig.4 Comparison results of different iterations
圖4 中,B表示誤碼率;S表示信噪比(signal-noise rate,SNR)。
與標(biāo)準(zhǔn)的、擁有2 個(gè)迭代譯碼器的Turbo 碼譯碼器相比,CNN 譯碼器在2 次迭代時(shí)表現(xiàn)出比6 次迭代更明顯的優(yōu)異性能。這意味著CNN 譯碼器在較低層或者在較少的迭代次數(shù)時(shí),能夠比標(biāo)準(zhǔn)的Turbo 碼譯碼器更快地提取到信息的特征。因此,CNN 譯碼器可以通過(guò)較少的迭代次數(shù)達(dá)到所需要的譯碼性能。
為比較Turbo 碼譯碼器與CNN 譯碼器的性能,將它們都在碼長(zhǎng)為64 的情況下進(jìn)行訓(xùn)練,并且譯碼器的迭代次數(shù)為6。CNN 譯碼器符合標(biāo)準(zhǔn)Turbo 碼譯碼器的性能。對(duì)于高信噪比(S≥0.5 dB)的情況,為了降低譯碼的誤碼率這一性能,要慎重選擇卷積核的大小K。
不同卷積核對(duì)比結(jié)果如圖5 所示。
圖5 不同卷積核對(duì)比結(jié)果Fig.5 Comparison results of different convolution kernel
根據(jù)試驗(yàn)結(jié)果,可以發(fā)現(xiàn)在K=5 時(shí)訓(xùn)練速度更快,并且在K=1 和K=5 時(shí)都能夠達(dá)到最佳性能。
雷達(dá)通道:y=x+z+w。信道模型在數(shù)學(xué)上描述如下:y為時(shí)刻t的接收符號(hào);x為發(fā)送的符號(hào);z為高斯噪聲;w為脈沖噪聲。其中:是背景AWGN 噪聲,是概率為p的高方差低概率的雷達(dá)噪聲,且。
圖6 是卷積神經(jīng)網(wǎng)絡(luò)在不同突發(fā)噪聲下的適應(yīng)性。
圖6 卷積神經(jīng)網(wǎng)絡(luò)在不同突發(fā)噪聲下的適應(yīng)性Fig.6 Adaptability of convolutional neural network under different burst noises
試驗(yàn)結(jié)果表明:標(biāo)準(zhǔn)的Turbo 碼譯碼器會(huì)因?yàn)椴涣私馔话l(fā)噪聲而導(dǎo)致譯碼失敗;而B(niǎo)ursty Neural 譯碼器在σ1=3.5 時(shí)使用兩種先進(jìn)的啟發(fā)式方法都優(yōu)于Turbo 碼譯碼器,且在其他方差下獲得的性能是幾種方案中較好的。
魯棒性是指特定信道模型訓(xùn)練的譯碼器在不重新訓(xùn)練的情況下,能夠在不同信道模型上正常工作的能力。適應(yīng)性是指學(xué)習(xí)算法針對(duì)不同信道模型進(jìn)行適應(yīng)和重新訓(xùn)練的能力[12]。因此,從以上分析可以看出,與標(biāo)準(zhǔn)的Turbo 碼譯碼器相比,基于CNN 的譯碼算法在非高斯信道下也能夠通過(guò)訓(xùn)練適應(yīng)不同信道的設(shè)置,表明了CNN 譯碼器具有很好的適應(yīng)性和魯棒性。
本設(shè)計(jì)采用基于CNN 的譯碼算法,研究了用于Turbo 碼的端到端的訓(xùn)練型譯碼器。與標(biāo)準(zhǔn)的Turbo碼譯碼算法相比,其具有更高的可靠性、適應(yīng)性和更低的錯(cuò)誤率。特別是在非高斯信道下,對(duì)于來(lái)自不同的噪聲分布,該設(shè)計(jì)可以通過(guò)進(jìn)一步的訓(xùn)練以適應(yīng)其他信道的設(shè)置,從而達(dá)到很好的性能效果。試驗(yàn)表明,基于CNN 的譯碼算法具有優(yōu)異的適應(yīng)性和魯棒性。