吳思陽,高 勇
(四川大學(xué) 電子信息學(xué)院,四川 成都 610065)
隨著衛(wèi)星通信技術(shù)的不斷發(fā)展和用戶需求的不斷增加,帶寬資源越來越稀缺,如何提高系統(tǒng)容量是衛(wèi)星通信系統(tǒng)進一步拓展服務(wù)的迫切問題。
目前主流的混合信號盲分離方案包括粒子濾波(Particle Filter,PF)[1]與逐幸存路徑處理(Survivor Processing,PSP)[2]等算法,這些算法雖然具有優(yōu)越的性能,但由于復(fù)雜度較高,應(yīng)用受到了限制。近年來有許多文獻對其進行了研究與改進。文獻[3]在粒子濾波法中采用部分采樣法進行搜索,利用2個子區(qū)間的增量權(quán)值完成粒子抽樣和權(quán)重更新,從而降低復(fù)雜度。文獻[4]針對合作接收的高階調(diào)制PCMA信號,提出一種基于判決反饋逐幸存路徑處理的解調(diào)算法,在算法性能和復(fù)雜性之間達成折中。文獻[5]針對非合作接收不同符號速率PCMA混合信號,提出一種基于雙網(wǎng)格逐幸存路徑處理的分離算法。文獻[6]提出基于深度學(xué)習(xí)的盲分離算法,但其神經(jīng)網(wǎng)絡(luò)僅針對于已知信道或其變化規(guī)律的分離場景。
近年來,深度學(xué)習(xí)在計算機視覺、語音識別、自然語言處理等方面表現(xiàn)出了優(yōu)勢。在物理層通信的復(fù)雜場景中,如信道解碼[7]、調(diào)制識別[8]、信號檢測[9]和端到端通信系統(tǒng)[10]等,深度學(xué)習(xí)也顯示出了巨大的前景。循環(huán)神經(jīng)網(wǎng)絡(luò)適合于學(xué)習(xí)序列,由于可以充分利用符號之間的相關(guān)性,在單信號檢測中取得了優(yōu)異的性能。
PSP算法是一種基于最大似然序列估計的算法,需要對可能的符號進行遍歷搜索,其中調(diào)制階數(shù)和信道估計長度導(dǎo)致時間復(fù)雜度呈指數(shù)型增長,因此在實際情況下應(yīng)用難度較大。本文提出了一種結(jié)合深度循環(huán)神經(jīng)網(wǎng)絡(luò)的混合信號單通道盲分離方案,該算法的計算復(fù)雜度不會隨著調(diào)制階數(shù)和信道長度呈指數(shù)型增長,因此相對于傳統(tǒng)方法,該方法應(yīng)用場景更廣泛。
混合信號單通道盲分離的目標(biāo)是從接收到的采樣點中恢復(fù)出信號混合前的2路符號序列。考慮復(fù)調(diào)制MPSK信號,假設(shè)在考慮的時間范圍內(nèi),接收信號的幅度、頻率、時延等均不隨時間發(fā)生變化,復(fù)基帶模型如下:
y(t)=h1ej(Δω1t+θ1)x1(t)+h2ej(Δω2t+θ2)x2(t)+v(t),
(1)
式中,hi表示2個調(diào)制信號的幅度;Δωi,θi,v(t)分別代表載波頻率偏移、初始相位和加性白高斯噪聲。源信號xi(t)定義為:
(2)
本文主要以分離2路BPSK信號為例,設(shè)計并測試神經(jīng)網(wǎng)絡(luò)。
為了充分利用符號之間的信息,本文基于雙向門控循環(huán)單元(Bi-directional Gated Recurrent Unit,Bi-GRU)結(jié)構(gòu)設(shè)計分離網(wǎng)絡(luò)。雙向循環(huán)神經(jīng)網(wǎng)絡(luò)可以通過隱藏狀態(tài)在單元間傳遞信息以實現(xiàn)時間上的前后相關(guān),利用非因果的結(jié)構(gòu)估計符號從而達到最優(yōu)性能。
門控循環(huán)單元是循環(huán)神經(jīng)網(wǎng)絡(luò)中的一種門控機制,其結(jié)構(gòu)如圖1所示。GRU具有較少的參數(shù),從而降低了過擬合的風(fēng)險。LSTM的參數(shù)數(shù)量是原生RNN的4倍。GRU僅使用2個門控開關(guān),其結(jié)果接近LSTM,而其參數(shù)數(shù)量是原生RNN的3倍。
圖1 GRU結(jié)構(gòu)
,
(3)
在本文設(shè)計的Bi-GRU網(wǎng)絡(luò)中,其輸入數(shù)據(jù)的維度為[2,K+N],其中K為2路傳輸信道參數(shù)的長度之和,N為傳輸?shù)臅r間序列信號的長度。輸入數(shù)據(jù)的構(gòu)成為[C1,...,CK,Y1,...,YN],其中C1,...,CK為2個接收信道的沖激響應(yīng)參數(shù)的拼接,輸入數(shù)據(jù)包含了實部和虛部。Bi-GRU神經(jīng)網(wǎng)絡(luò)分別在時間維以順序和逆序(即前向和后向)依次處理輸入序列,并將每個時間步的GRU的輸出拼接成為最終的輸出層。網(wǎng)絡(luò)中的每個時間步的輸出節(jié)點,都包含了輸入序列中當(dāng)前時刻完整的過去和未來的上下段信息。
圖2展示了輸出層的結(jié)構(gòu),數(shù)據(jù)先經(jīng)過輸出維度為4的線性層,其激活函數(shù)為LeakyReLU(negative slope=0.01):
圖2 輸出層結(jié)構(gòu)
LeakyReLU(x)=max(0,x)+0.01×min(0,x)。
(4)
經(jīng)過線性層后,再經(jīng)過LogSoftmax層,這樣一是為了解決數(shù)值溢出的問題,二是方便對交叉熵?fù)p失(CrossEntropyLoss)的計算。網(wǎng)絡(luò)每次的輸出則代表了4種情況的概率的對數(shù),其中4種情況分別為序列A此時刻的值為0、序列B此時刻的值為0;序列A此時刻的值為1、序列B此時刻的值為0;序列A此時刻的值為0、序列B此時刻的值為1;序列A此時刻的值為1、序列B此時刻的值為1。概率的對數(shù)值最大的情況則被判定為預(yù)測結(jié)果。
一般情況下,混合信號的長度不確定而且通常會很長,因此要對輸入序列做一定處理才能將其輸入至神經(jīng)網(wǎng)絡(luò)中。當(dāng)輸入序列遠大于網(wǎng)絡(luò)輸入序列長度時,如果將序列直接截斷成等長的數(shù)據(jù)塊,由于部分信息不在單個數(shù)據(jù)塊中,對于輸入序列開頭和結(jié)尾的符號將會出現(xiàn)大量的預(yù)測錯誤。如圖3和圖4所示,為了解決這個問題,在截斷輸入序列時,前后各截取5個數(shù)據(jù)值作為網(wǎng)絡(luò)的輸入,輸出值則取中間100個值為有效值,這樣對于每個時間點的序列值的預(yù)測都有來自前后時間段的信息,從而提高神經(jīng)網(wǎng)絡(luò)的整體性能。
圖3 截斷并分步輸入數(shù)據(jù)
圖4 截斷輸入示意
網(wǎng)絡(luò)中損失函數(shù)采用交叉熵?fù)p失,定義為:
-x[class]+ln(∑jexp(x[j])),
(5)
式中,class代表的是每一種分類的情況。
網(wǎng)絡(luò)中的優(yōu)化算法采用自適應(yīng)矩估計法(Adaptive Moment Estimation),簡稱Adam優(yōu)化算法。Adam優(yōu)化算法可以自適應(yīng)調(diào)整學(xué)習(xí)率,能夠使模型更快的收斂且易于跳出局部極小值。此外,Bi-GRU的隱藏權(quán)重參數(shù)采用正交初始化,有助于網(wǎng)絡(luò)的收斂和避免梯度爆炸和消失。
在網(wǎng)絡(luò)中使用的隨時間反向傳播(Back-Propagation Through Time,BPTT)算法是一種常用的訓(xùn)練RNN的方法,其本質(zhì)還是BP算法,只不過RNN處理的是時間序列數(shù)據(jù),所以要基于時間反向傳播,因此稱為隨時間反向傳播。BPTT的中心思想和BP算法相同,沿著需要優(yōu)化的參數(shù)的負(fù)梯度方向不斷尋找更優(yōu)的點直至收斂。BPTT將循環(huán)神經(jīng)網(wǎng)絡(luò)按時間步展開,從而得到模型變量和參數(shù)之間的依賴關(guān)系,并根據(jù)鏈?zhǔn)椒▌t來進行反向傳播計算并存儲梯度信息。
訓(xùn)練神經(jīng)網(wǎng)絡(luò)時采用的訓(xùn)練集為軟件生成的仿真數(shù)據(jù),其每路接收信道的沖激響應(yīng)參數(shù)長度為4,單個樣本的時間序列信號長度為110,訓(xùn)練樣本總數(shù)2 000 000。神經(jīng)網(wǎng)絡(luò)的層數(shù)為3,隱藏層節(jié)點個數(shù)128,單次訓(xùn)練所選取的樣本數(shù)(Batch Size)為1 900,訓(xùn)練epoch數(shù)40次,按照8∶2生成訓(xùn)練集和測試集。
實驗環(huán)境如下:顯卡為 NVIDIA RTX 2080Ti,處理器為Intel(R)Core(TM)i9-9900k CPU@3.6 GHz,內(nèi)存容量為32 GB,軟件環(huán)境為神經(jīng)網(wǎng)絡(luò)基于pytorch1.7.0框架搭建,開發(fā)語言為Python3.8。
為了驗證該網(wǎng)絡(luò)對混合信號盲分離的性能,以2路信號的誤碼率均值作為對不同算法的性能指標(biāo)。在仿真實驗中,兩BPSK調(diào)制信號混合,采用根號升余弦成型,滾降系數(shù)為0.35,成型波形持續(xù)6個符號周期,接收端進行相應(yīng)的匹配濾波。
將預(yù)訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)和PSP算法分別輸入加有不同信噪比的高斯白噪聲的測試數(shù)據(jù)進行測試,其性能曲線測試結(jié)果如圖5和表1所示??梢钥闯?,在同等條件下使用Bi-GRU神經(jīng)網(wǎng)絡(luò)的誤碼率要低于PSP算法。
表1 2種算法的誤碼率
圖5 2種算法的性能曲線
本次實驗使用2臺NI USRP-2930 軟件無線電平臺發(fā)射數(shù)據(jù),一臺NI USRP-2950 軟件無線電平臺接收數(shù)據(jù),發(fā)射機發(fā)射隨機比特流內(nèi)容的BPSK調(diào)制信號,接收機接收2個發(fā)射機發(fā)射后的混合信號。數(shù)據(jù)的碼速率為500 Kb/s,采樣率為4 MHz,成型濾波器(根余弦濾波器)的系數(shù)為0.35。采集5條長度為10 000的IQ數(shù)據(jù)作為測試集,信道信息使用PSP算法中的信道估計部分獲得,預(yù)截斷后輸入上文中已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)測試,得到的誤碼率如表2所示。
表2 實測誤碼率
由于實際信道存在不穩(wěn)定性,對實測數(shù)據(jù)分離的誤碼率也會隨之波動。因此在信道相對穩(wěn)定的情況下,本文中設(shè)計的Bi-GRU神經(jīng)網(wǎng)絡(luò)可以用于分離單通道混合信號。
本文以分離2個BPSK調(diào)制的混合信號以及2個QPSK調(diào)制混合的信號所需的浮點乘加運算(Floating Point Operations,FLOPs)的次數(shù)為指標(biāo)比較Bi-GRU網(wǎng)絡(luò)和PSP算法的計算復(fù)雜度。
對于神經(jīng)網(wǎng)絡(luò)而言,每一層的參數(shù)數(shù)量需要由該層的規(guī)模(n_units)和上一層的輸出(n_features)共同決定[11]。其中,Bi-GRU網(wǎng)絡(luò)每層的參數(shù)數(shù)量計算方法為:
Num(Bi-GRU)=6×n_units×
(n_features+n_units+1)。
(6)
全連接層(有偏置)的參數(shù)數(shù)量計算方法為:
Num(Linear)=(n_features+1)×n_units。
(7)
PSP算法的參數(shù)數(shù)量[1]計算方法為:
Num(PSP)=(8×L+2)×M2L,
(8)
式中,M為調(diào)制階數(shù);L為PSP算法的信道記憶長度。根據(jù)上述方法,得出不同算法和信道記憶長度的復(fù)雜度對比如表3所示。
表3 復(fù)雜度對比
PSP算法的計算復(fù)雜度隨調(diào)制階數(shù)和信道記憶長度呈指數(shù)型增長,而分離網(wǎng)絡(luò)的計算復(fù)雜度隨調(diào)制階數(shù)只呈線性增長,且不受信道記憶長度的影響。通過結(jié)果可以發(fā)現(xiàn),在不損失分離性能下,本文提出算法的復(fù)雜度在M>2時遠低于PSP算法,且調(diào)制階數(shù)和信道記憶長度越大,其降低復(fù)雜度的優(yōu)勢越明顯。
本文提出了一種基于雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的盲分離方案,可以很好地對單通道2路混合信號進行分離。對于長度超過網(wǎng)絡(luò)輸入長度的時間序列,提出了對其前后額外截取的策略,解決了每個數(shù)據(jù)塊在開始和結(jié)束時可能產(chǎn)生高錯誤率的問題。在分離性能相近的情況下,該方案的計算復(fù)雜度遠低于PSP算法。該方案對PCMA衛(wèi)星通信信號的實時接收和處理具有參考價值。本文方法在應(yīng)對隨機波動大的信道時較為乏力,在后續(xù)研究中會針對這種情況做出解決措施。