李 碩,王友國,柴 允,任珈儀
(1.南京郵電大學 通信與信息工程學院,江蘇 南京 210003;
2.南京郵電大學 理學院,江蘇 南京 210023)
隨著移動通信系統(tǒng)需求的增加,第五代移動通信系統(tǒng)已經(jīng)得到了廣泛應用,但低時延和高速率仍然是人們不懈的追求[1]。極化碼屬于線性分組碼,它的復雜度較低,速率高[2],目前已被選為5G控制信道的編碼方案。然而,極化碼傳統(tǒng)的解碼算法迭代計算較多,有效性和可靠性難以均衡[3],因此,迫切需要設計一種高速低延遲的極化碼解碼算法。
深度神經(jīng)網(wǎng)絡通過具有非線性處理單元的多層層疊尋找和轉換編碼結構和噪聲特征,與傳統(tǒng)的迭代解碼相比,深度神經(jīng)網(wǎng)絡的解碼器通過單次解碼,為低延遲實現(xiàn)提供了基礎[4]。此外,通過利用現(xiàn)有的深度神經(jīng)網(wǎng)絡平臺,可以輕松滿足高速需求[5]。Lyu[6]使用了三種經(jīng)典的神經(jīng)網(wǎng)絡進行譯碼嘗試,它們的參數(shù)大小相同,經(jīng)測試對比,RNN具有較好的解碼性能,但需要以高計算開銷為代價,并且由于學習能力受到限制,導致每種類型的神經(jīng)網(wǎng)絡都存在一個飽和長度。郭銳[7]嘗試通過調(diào)控神經(jīng)網(wǎng)絡的batch和epoch參數(shù),利用CNN對極化碼長碼進行譯碼,在低信噪比下CNN性能略優(yōu)于傳統(tǒng)譯碼算法,但在高信噪比下CNN的性能會逐漸下降。徐想[8]針對神經(jīng)網(wǎng)絡譯碼器對于極化碼長碼的訓練效果不佳的問題,設計了分區(qū)神經(jīng)網(wǎng)絡譯碼算法,降低了譯碼器譯碼時延。
通過利用傳統(tǒng)的CNN和RNN作為工具對極化碼的譯碼研究在時間效率上取得了不錯的效果,但為了推廣到更多更復雜的場合中,還需要更廣泛且高效的技術。近年來許多改進的研究陸陸續(xù)續(xù)被提出,其中Shaojie Bai等人[9]設計了新型架構,將其命名為時間卷積網(wǎng)絡,它與RNN的功能相似,相比傳統(tǒng)的CNN,可以進行大規(guī)模并行處理,縮短了訓練和驗證的時間,減小了梯度消失的可能性。該文將嘗試使用TCN進行極化碼的譯碼,并通過調(diào)試TCN的各式參數(shù),探討對譯碼性能的影響。
極化碼由Arikan提出[10],它在二進制離散無記憶信道的條件下,當碼長N趨近于無限長的時候,可以產(chǎn)生信道極化的現(xiàn)象。它是信道合并與信道分裂兩種信道操作的結果,在這兩種操作下,原本相同的N個分裂信道產(chǎn)生了極化現(xiàn)象,使它們的信道容量趨近于0或趨近于1,從而在理論上逼近了香農(nóng)極限。
極化碼的傳統(tǒng)解碼方式為連續(xù)消除(successive cancellation,SC)譯碼算法,它采用蝶形算法,特點是當前第i位的碼字的判定需要第i-1位的估計值,串行執(zhí)行,通過譯碼器進行逐次迭代遞歸求解似然比的方式進行解碼,其中似然比見式(1),判決式見式(2)[2]。
(1)
(2)
通過這樣的方式,SC的譯碼算法可將當前位的估計值直接判決為“0”或者“1”,雖然算法復雜度較低,但它僅能保證局部最優(yōu)化,無法進行并行解碼,且當前位碼字的判決需要前一位的估計值,容錯性較差。Vardy等人[11]提出了改進算法,可保留L條譯碼路徑進行可靠性選擇。Niu等人[12]進一步加入了循環(huán)冗余校驗碼,相比SC譯碼算法,大幅度提升了譯碼準確性,但需要更多的譯碼時延和存儲空間,大大增加了復雜度。
RNN之所以擅長處理時序相關的問題,正是因為它循環(huán)自回歸的結構,非常適合處理時間序列。傳統(tǒng)的CNN由于卷積核大小的限制,無法收獲時間較長的相關信息。但經(jīng)過人們不懈的研究發(fā)現(xiàn),一些特定的CNN結構也會有不錯的效果。TCN作為一種特殊的卷積神經(jīng)網(wǎng)絡,通過一維全卷積網(wǎng)絡(1-dimensional fully convolutional networks,1-D FCN)結構和膨脹因果卷積結構,實現(xiàn)了每個時間的輸入都有對應的輸出,并且保證了歷史數(shù)據(jù)的完整性,在目前多種任務中可以實現(xiàn)超越RNN模型的效果[9]。
TCN采取因果卷積的構造,其特點是對于輸出t時刻的數(shù)據(jù)yt,其輸入時刻只可能是t或t時刻以下。因果卷積無法看到未來的數(shù)據(jù),它為單向結構,當計算當前時間步的輸出時,會自動將超過當前時間步的輸入“切掉”,這樣嚴格保證了時序性。同時,TCN還使用了1-D FCN的結構代替了全連接,減少了不必要的計算和空間[13],更使得每個輸出層都可以保持和輸入層一樣的時間長度被繼續(xù)傳遞,維持了相同的時間步,不論在哪一層,每個時間步的輸入與輸出均一一對應。其中,當處理第一個時間步時,由于沒有任何歷史的信息,TCN默認其歷史數(shù)據(jù)全是0。以卷積核大小為2的單次卷積操作為例,TCN的卷積運算如圖1所示,在任意t時刻,卷積操作輸出yt為:
yt=ω1xt-1+ω2xt
(3)
圖1 TCN的卷積操作
假設在因果卷積中,一個輸出與輸入的N個時間點都存在關聯(lián),則構成的TCN深度為N-1,當N很大時,TCN深度過大,會使得網(wǎng)絡結構過于復雜,因此提出改進結構膨脹因果卷積[9],通過引入膨脹因子d,可以克服這一問題。設卷積核大小為2,擴展值為{1,2,4,8},膨脹因果卷積的TCN示意圖如圖2左半部分所示。
此外,為了應對一些很深的復雜模型,使TCN在深層條件下不會丟失信息,采用殘差網(wǎng)絡的連接方式,其結構框圖如圖2右半部分所示。它替代了TCN層與層之間的簡單連接,與ResNet的殘差塊結構相似[14]。卷積核接收到的信息也會分為兩部分,左側是參加多次卷積核處理后獲得的信息,包括兩層的膨脹因果卷積和非線性映射,并在每層加入WeightNorm和Dropout防止過擬合;右側則是底層的局部信息的直接連接內(nèi)容通過自設的卷積層進行簡單的變換,兩者相加,這樣使得輸出的內(nèi)容具有豐富并清晰的底層信息,不容易遺失細節(jié)特征,是訓練深層網(wǎng)絡的有效方法。總的來說,將膨脹因果卷積和殘差鏈接兩種技術一起使用,可使處理的數(shù)據(jù)值保證精確度和特征,兼顧訓練,速度可觀,再將改進的TCN模型的最頂層連接至最頂部隱藏層進行輸出[15]。
圖2 膨脹因果卷積與殘差模塊示意圖
TCN的極化碼譯碼算法架構如圖3所示。
圖3 TCN譯碼器架構
(4)
該文使用交叉熵函數(shù)(binary_crossentropy)作為損失函數(shù),并通過Adam算法[16]優(yōu)化網(wǎng)絡神經(jīng)參數(shù),能夠?qū)Σ煌瑓?shù)調(diào)整合適的學習速率,使得學習速率在一定的范圍內(nèi)移動,達到最小化損失函數(shù)的目的。
數(shù)據(jù)預處理:訓練數(shù)據(jù)大小為4×106,設置信息比特數(shù)目為K,通過極化碼編碼將K個信息比特混入凍結比特,調(diào)制并添加設置好信噪比(固定)的高斯噪聲,將添加噪聲后的數(shù)據(jù)作為訓練數(shù)據(jù),信源數(shù)據(jù)作為標簽,反復訓練;測試集同理,數(shù)據(jù)大小為2×104。為了解決龐大的數(shù)據(jù)輸入的問題,使用minibatch和epoch參數(shù)限制輸入數(shù)據(jù)的大小。為加快TCN的訓練速度,提高收斂速度,卷積層使用批量歸一化函數(shù)。
參數(shù)設置:訓練階段輸入為(16,8),碼率為1/2,序列數(shù)為4×105,測試階段輸入序列為2×104。minibatch設置為1,epoch設置為45。隨機抽取2×104組16×1個序列,在訓練階段的信噪比設置為3 dB,測試階段的信噪比設置為0~5 dB,間隔為0.2 dB。默認殘差塊數(shù)目為4,每個殘差塊有三層卷積層,每層有175個卷積核,卷積核大小為5。
圖4 TCN譯碼器在訓練過程中損失函數(shù)的變化
圖5 基于TCN的極化碼譯碼性能(N=16,K=8)
圖4為訓練時損失函數(shù)的變化,可以看出當訓練樣本的迭代次數(shù)在50之前時,損失函數(shù)下降較明顯,學習速度較快;當訓練樣本的迭代次數(shù)超過50以后,損失函數(shù)基本保持穩(wěn)定,網(wǎng)絡性能趨于收斂狀態(tài)。TCN的譯碼性能如圖5所示,可以看出隨著測試信噪比的不斷增加,譯碼的準確率也逐漸變得越來越可觀,證明了TCN模型作為極化碼譯碼的有效工具的可行性。為了探究TCN模型各個參數(shù)對譯碼性能的影響,接下來控制其他參數(shù)不變,探究各個參數(shù)對誤碼率的影響。
(1)僅調(diào)整TCN內(nèi)的卷積核大小(分別為1、2、3、4、5)進行TCN譯碼性能對比,效果如圖6(a)所示??梢钥闯鏊鼈兌紩S著信噪比的增加而逐漸降低誤碼率,并且卷積核大小越小,譯碼性能越好,譯碼性能提升越明顯。
(a)不同卷積核大小
(b)不同卷積核個數(shù)
(2)僅調(diào)整TCN的殘差塊內(nèi)卷積核的數(shù)量(分別為100、125、150、175、200)進行譯碼性能對比,效果如圖6(b)所示??梢钥闯鏊鼈兌紩S著信噪比的增加而逐漸降低誤碼率,并且卷積核數(shù)量和譯碼性能是正相關的,其中當卷積核數(shù)目在100~175的范圍內(nèi),通過提升卷積核數(shù)目改進TCN的譯碼效果明顯。
(3)僅調(diào)整TCN內(nèi)的殘差塊數(shù)量(分別為1、2、4、6)進行譯碼性能對比,效果如圖7(a)所示。可以看出它們都會隨著信噪比的增加而逐漸降低誤碼率,但是它們的性能相差不大,殘差塊為6時的譯碼性能要略低于殘差塊為1時的譯碼性能,并且每增加一個殘差塊都會大大增加復雜度,提高內(nèi)存需求,因此在實際設計進行極化碼譯碼時,不宜設計過多殘差塊。
(a)不同殘差塊個數(shù)
(b)不同輸入信噪比
(4)僅調(diào)整TCN訓練階段的輸入信噪比(分別為1 dB、3 dB、5 dB、10 dB、15 dB、20 dB)進行譯碼性能對比,效果如圖7(b)所示??梢钥闯鏊鼈兌紩S著信噪比的增加而逐漸降低誤碼率,輸入信噪比大小為3 dB左右時,譯碼性能較佳,增加輸入信噪比并不會對譯碼性能有較好的改善。
(5)僅調(diào)整TCN訓練參數(shù)epoch的值(分別為5、15、25、35、45、65、85、105)進行譯碼性能對比,效果如圖8(a)所示??梢钥闯鏊鼈兌紩S著信噪比的增加而逐漸降低誤碼率,在epoch值從5至15時對譯碼性能提升明顯,當epoch值超過15時,對譯碼性能的影響不大。
(6)僅調(diào)整TCN的訓練序列數(shù)(分別為1×105、2×105、3×105、4×105)進行譯碼性能對比,效果如圖8(b)所示。可以看出它們都會隨著信噪比的增加而逐漸降低誤碼率,當訓練序列數(shù)小于2×105時,譯碼性能相差較??;當訓練序列數(shù)超過2×105時,譯碼性能會大幅度提升,當訓練序列數(shù)為4×105時,譯碼效果較好。
(a)不同epoch值
(b)不同訓練數(shù)
通過對六種網(wǎng)絡模型參數(shù)的調(diào)試,可以在原有的基礎上實現(xiàn)TCN對極化碼譯碼的性能提升,其中對訓練序列數(shù)、卷積核的大小和數(shù)目進行適當調(diào)試可取得較好的譯碼增幅效果,使得TCN在極化碼譯碼的應用推廣又前進了一步。
該文提出了基于TCN的極化碼譯碼模型,利用TCN內(nèi)特有的膨脹因果卷積和殘差塊結構,實現(xiàn)了對極化碼較好的譯碼,并通過調(diào)試TCN的各式參數(shù),探討對譯碼性能的影響。該文主要探討了極化碼為短碼時的時間卷積網(wǎng)絡的譯碼性能,但可以基于此進一步探究當極化碼為長碼時,TCN的性能是否會有較大影響。