于柯遠, 張立民, 閆文君,*, 金 堃
(1.海軍航空大學信息融合研究所, 山東 煙臺 264001; 2.海軍航空大學航空基礎學院, 山東 煙臺 264001)
通信信號盲識別技術是當今學術界和工程界研究的熱點[1],無論是在軍事通信領域還是在民用領域,都得到了廣泛應用[2-3]。在非合作條件下,對空時分組碼信號進行編碼盲識別是偵察信號處理中急需解決的難點問題[4],對提升我軍電子偵察能力具有重要意義,可以支撐我軍對未來戰(zhàn)場態(tài)勢信息與空間態(tài)勢的實時獲取。
目前,有關空時分組碼(space-time block code, STBC)類型盲識別的文獻大多數(shù)都是傳統(tǒng)算法,主要分為基于最大似然的方法[5-6]和基于特征參數(shù)識別的方法[7-15]。基于最大似然的算法具有較高的識別性能,但是需要預知噪聲、調(diào)制方式等先驗信息,計算復雜度過高?;谔卣鲄?shù)的識別算法不需要對信道進行預估,但對時延和頻偏較為敏感且識別算法計算復雜度高,實時性較差,不利于工程化實現(xiàn)。文獻[10]提出了一種基于高階累積量的盲識別算法,但該算法僅能對空間復用(statial multiplexing,SM)碼和AL碼兩種STBC進行識別。文獻[13]提出了一種基于KS檢測的STBC盲識別算法,但該算法在低信噪比(signal to noise ratio,SNR)條件下識別效果較差。文獻[14]提出了一種四階時延向量的STBC盲識別,通過判斷接收信號在不同時延向量下的四階累積量是否為0識別STBC的編碼類型。文獻[15]提出了一種基于四階循環(huán)累積量的盲識別算法,通過檢測循環(huán)頻率的方法對STBC進行識別,但該算法的計算復雜度較高且只識別了4種STBC編碼。文獻[5-15]等傳統(tǒng)算法需要人工設定特征值,區(qū)分相似度高的編碼類型難度較大。
卷積神經(jīng)網(wǎng)絡(convolutional neural networks,CNN)包含卷積計算,是一種具有深度結構的前饋神經(jīng)網(wǎng)絡[16]。CNN仿造生物的視知覺機制構建,可以進行監(jiān)督學習和非監(jiān)督學習,并且能夠通過多層網(wǎng)絡的非線性變換,從輸入數(shù)據(jù)中構造識別特征,避免了人工設計特征的復雜性。
近年來,CNN在調(diào)制信號識別、無線電信號檢測等領域已取得一定進展[17-19]。文獻[17]中提出了一種基于CNN的調(diào)制識別模型,該算法能夠在低SNR時識別11種調(diào)制方式,且識別性能與傳統(tǒng)方法的最佳性能相當。文獻[18]中提出了一種基于CNN的信號波形識別模型,該模型通過對輸入信號進行頻域快速傅里葉變換(fast Fourier transform,FFT),將圖像特征提取到基于Choi-Williams的時頻分布CNN中,能夠在高功率噪聲下識別8種信號波形。目前,深度學習用于編碼識別的論文較少,僅文獻[19]提出了一種利用CNN對STBC編碼類型的識別算法,但該算法是在時域上對信號進行識別,需要接收端同步,受到一定的條件限制,并且只能夠識別出AL和SM兩種編碼方式。
本文提出了一種基于CNN的多STBC識別算法,是首次在頻域上使用CNN實現(xiàn)編碼類型識別的算法。針對CNN算法對AL和SM編碼識別效果差的問題,對CNN算法進行改進,采用了自相關函數(shù)對數(shù)據(jù)在頻域上進行預處理。與時域上的算法相比,不需要接收端同步,大大提高了算法的適用性。自相關CNN算法將待識別的STBC編碼類型由4種擴充到了6種,尤其是可對3種相似度較高的STBC3碼進行識別。
假設STBC系統(tǒng)具有Nt個發(fā)射天線,需要傳輸?shù)男盘栃蛄袨镾=[s1,s2,…,sn],其中,每個序列中具有n個符號,且傳輸時隙為L,可表示為S=[Re(ST),Im(ST)]T發(fā)射端的信號矩陣矢量可表示為
C(S)=[A1S,A2S,…,ALS]
(1)
式中,Ai(0≤i≤L)表示發(fā)射端的STBC矩陣。
STBC的正交設計方法較多,且大部分較復雜,目前文獻中最多可識別4種STBC[10,12],分別是AL、SM、STBC3r=3/4,1和STBC4,本文將4種碼擴充到6種,增加了兩種相似度高的STBC3r=3/4,2和STBC3r=3/8碼進行區(qū)分,這兩種STBC3碼也是實際系統(tǒng)中常用的編碼方式[11]。
本文選取SM、AL、3種STBC3和STBC4等6種STBC作為研究對象,其編碼方式如下。
SM碼[20]是一組nt個符號通過nt個天線發(fā)射的STBC,碼矩陣長度L=1:
C(S)=sj,j=1,2,…,NTx
(2)
AL碼[20]是一組2個符號通過兩根傳輸天線發(fā)射的STBC,碼矩陣長度L=2:
(3)
STBC3r=3/4,1碼[21]是一組3個符號通過3根傳輸天線發(fā)射的STBC,碼矩陣長度L=4:
(4)
STBC3r=3/4,2碼[22]是一組3個符號通過3根傳輸天線發(fā)射的STBC,碼矩陣長度L=4:
(5)
STBC3r=3/8碼[22]是一組4個符號通過3根傳輸天線發(fā)射的STBC,碼矩陣長度L=8:
(6)
STBC4r=1/2碼[21]是一組4個符號通過4根傳輸天線發(fā)射的STBC,碼矩陣長度L=8:
(7)
復正交設計的最大碼率可表示為R=N/T,如STBC3在T=4的符號周期內(nèi)發(fā)送N=3個符號(x1,x2,x3),因此STBC3r=3/4,1的碼率是r=3/4,同理STBC4的碼率r=1/2。
假定STBC系統(tǒng)具有Nr個接收天線,假設r(0)為第一個接收符號。在頻率選擇性信道中,接收符號可以表示為多個發(fā)射符號加權求和的形式,STBC信號在經(jīng)歷頻率選擇性衰落信道后,第k時刻接收到的符號可表示為
(8)
式中,path代表頻率選擇性衰落信道中存在的路徑條數(shù);xi是指第i個時刻的發(fā)射信號;hi(p)代表第p個路徑的信道系數(shù);w(k)代表信道中存在的高斯白噪聲。
針對多個神經(jīng)網(wǎng)絡進行訓練后,本文采用的CNN由兩個卷積層和兩個全連接層組成。兩個卷積層和第1層全連接層均采用修正線性單元(ReLU)作為激活函數(shù),第2個全連接層采用SoftMax作為激活函數(shù)對6種STBC碼進行分類。同時,卷積層和第1個全連接層根據(jù)一定的概率將部分神經(jīng)網(wǎng)絡單元暫時從網(wǎng)絡中丟棄,以防止過擬合現(xiàn)象的產(chǎn)生,CNN架構如圖1所示。輸入層為預處理后的I/Q兩路的2×128維度的數(shù)據(jù),第1個卷積層卷積核大小為1×4,特征映射個數(shù)為256個。第2個卷積層卷積核大小為2×3,特征映射個數(shù)為80個。第1層全連接層由256個神經(jīng)元構成,最后一個全連接層神經(jīng)元個數(shù)為6個,對應6種STBC碼類型。
圖1 CNN架構
表1總結了模型中使用的網(wǎng)絡參數(shù),除了第2個全連接層使用SoftMax激活外,其他神經(jīng)網(wǎng)絡層都使用了ReLU激活函數(shù)。為了防止過擬合,使用了正則化處理,dropout比率為0.5。訓練使用分類交叉熵損失函數(shù)和亞當求解器進行。
表1 CNN模型參數(shù)
將預處理后的頻域輸入數(shù)據(jù)使用Keras中的Reshape函數(shù)處理,將2×128維度的編碼數(shù)據(jù)轉(zhuǎn)換為(None,1,2,128)的4D張量,依次代表(樣本數(shù)、圖像高度、圖像寬度、圖像通道數(shù)),作為卷積層的輸入。經(jīng)過兩層卷積層的卷積后,輸出為(None,80,1,131)的4D張量。在第1層全連接層將4D張量轉(zhuǎn)換為(None,80,1,130)轉(zhuǎn)換為2D張量(None, 256),傳遞到最后的全連接層中。
在卷積層中,卷積層的輸入為X∈RA×B。第j個特征圖的卷積網(wǎng)絡激活輸出[23]可以計算成
(9)
通過式(9)卷積層實現(xiàn)了特征圖的卷積,得到了相應的輸出特征。本文采用的非線性激活函數(shù)θ為ReLU,具體表達式為
ReLU(x)=max(0,x)
(10)
卷積層的輸入通道數(shù)由輸入4D張量的通道數(shù)決定。輸出張量的通道數(shù)由卷積層的輸出通道數(shù)決定。輸出張量的高度和寬度計算公式為
(11)
式中,heightout代表卷積層輸出張量的高度;heightin代表卷積層輸入張量的寬度;heightkernel代表卷積核的高度;padding代表掃描方式,本文選擇的是valid;stride代表卷積核個數(shù);widthout代表輸出張量的寬度;widthin和widthkernel分別代表卷積層輸入張量的寬度與卷積核的寬度。
卷積層后,輸入到第1層全連接層,每次訓練隨機刪除50%的隱神經(jīng)元,由于每次訓練刪除的神經(jīng)元不同,使得每個神經(jīng)元會盡可能發(fā)揮自己的作用,避免過擬合的出現(xiàn)。
二層全連接層采用的是softmax函數(shù),其可以用于多分類過程,將多個神經(jīng)元的輸入,映射到(0,1)之間,每個映射可以看成輸出概率,從而進行多分類。假設上一層的輸出為{z1,z2,…,zn},softmax層運算公式為
(12)
式中,ki代表代表zi在預測結果中的概率。將輸出概率轉(zhuǎn)化為圖像顯示,就是混淆矩陣,能直觀地反映各種編碼方式的識別情況。
數(shù)據(jù)預處理是將原始的輸入數(shù)據(jù)——I/Q采樣數(shù)據(jù)變換為另一種易于CNN進行特征識別的數(shù)據(jù)類型[24-26],從而充分發(fā)揮CNN在特征提取方面的優(yōu)勢,降低計算復雜度,提高對多種相似的STBC類型的識別能力。
對輸入信號進行預處理的方式是直接將I/Q采樣信號進行FFT處理。原始的I/Q采樣信號包括無損信息,適用于作為CNN輸入,而FFT是對有限長的I/Q采樣數(shù)據(jù)的無損變換[27]。如:
(13)
式中,N為采樣點數(shù)。本文中,不做特殊說明時,N=128。
與簡單的原始I/Q輸入相比,經(jīng)FFT處理后的頻域輸入數(shù)據(jù)可以有效利用CNN在特征提取方面的優(yōu)勢,產(chǎn)生了更好的分類精度。將時域數(shù)據(jù)變換為頻域數(shù)據(jù),不需要接收端同步,更加有利于后續(xù)CNN的處理和信號識別。
本節(jié)對STBC識別的CNN算法性能進行仿真驗證。STBC盲識別數(shù)據(jù)庫利用Matlab生成??紤]實際接收信號存在的信道效應和噪聲等多因素影響,樣本通過Nakagami信道模型來仿真多徑、衰落信道。該數(shù)據(jù)集共計1 000條數(shù)據(jù),每條數(shù)據(jù)有128個符號,將包含SNR信息和6種STBC類型的標簽添加在前兩列,每條數(shù)據(jù)共有130個符號。數(shù)據(jù)集的大小大約是幾百萬。
實驗運行在WIN7系統(tǒng)下,GPU支持CUDA的RTX 2080ti。網(wǎng)絡搭建的深度學習庫為Keras,后端在Tensorflow框架下,利用Python語言實現(xiàn)了本文模型算法,并進行模型訓練與測試。
采用Nakagami-m信道(m=3),噪聲為高斯白噪聲,仿真采用正交相移鍵控(quadrature phase shift keying,QPSK)信號調(diào)制,SNR設置在-10 ~10 dB,并標記來評估在每個SNR條件下的性能。
本節(jié)對文中提出的CNN盲識別算法進行仿真實驗,SNR范圍為-10~10 dB,每個SNR下進行1 000次蒙特卡羅仿真。如圖2所示,6種STBC類型信號隨SNR變化的識別概率,在SNR=0 dB時,算法的識別概率穩(wěn)定在85%左右。圖3(a)~圖3(e)依次為算法在-10 dB、-5 dB、0 dB、5 dB、10 dB的識別混淆矩陣,反映了6種STBC編碼的識別情況。圖3中縱坐標軸表示真實標簽,橫坐標軸表示預測標簽。圖3中坐標軸0~5依次代表SM,AL,STBC3r=3/4,1,STBC3r=3/4,2,STBC3r=3/8,STBC4 6種STBC方式。
圖2 不同SNR下CNN算法性能
從圖3中可以看出,CNN算法對于STBC3r=3/4,1,STBC3r=3/4,2,STBC3r=3/8,STBC4這4種編碼類型的識別性很好,但是容易將AL、SM兩種編碼混淆。隨著SNR的提升,算法性能的提高主要是對STBC3r=3/4,1,STBC3r=3/4,2,STBC3r=3/8。這3種STBC3編碼的識別率逐漸提升,對于SM和AL兩種編碼的識別能力有所提高,但識別概率仍然較低。
圖3 CNN算法在不同信噪比下的識別混淆矩陣
本文提出的CNN算法將STBC編碼的識別類型擴充到6種,但存在對SM和AL兩種編碼識別效果差的問題,算法識別率只能達到85%。針對該問題,對所提出的CNN算法進行了改進。
文獻[10]中采用自相關函數(shù)對編碼矩陣進行處理,提取了信號特征作為分類的依據(jù),自相關函數(shù)可增強信號的統(tǒng)計特性,而STBC具有碼內(nèi)相關特性,自相關函數(shù)處理后,可以增強STBC內(nèi)特征向量的顯著程度。借鑒該思路,對本文所提出的CNN算法進行改進,在預處理接收信號時,將原始的I/Q兩路數(shù)據(jù)進行自相關函數(shù)處理,以提高編碼矩陣的相關性,加強后續(xù)CNN對信號特征的提取能力。
接收信號的自相關函數(shù)定義為
y(k)=E[r(k)r(k)]
(14)
由式(2)可知,連續(xù)兩個發(fā)射的SM信號由獨立且分布相同的隨機變量組成,自相關函數(shù)可表示為
ySM(k)=E(x0x1)=0
(15)
同樣,對于AL信號,由式(3)可知,兩個連續(xù)的時間周期之間存在相關性。因此,相關函數(shù)可表示為
(16)
對于AL信號,連續(xù)兩個時間段內(nèi)接收到的信號可以表示為
r(0)=h0x0+h1x1+n0
(17)
(18)
自相關函數(shù)y(k)可表示為
(19)
自相關函數(shù)的FFT可表示為
Y(k)=FFT[yAL(k)]
(20)
對于SM信號,連續(xù)兩個時間段內(nèi)接收到的信號可以表示為
r(0)=h0x0+h1x1+n0
(21)
r(1)=h0x3+h1x4+n1
(22)
自相關函數(shù)y(k)可表示為
ySM(k)=E[r(0)r(1)]=0
(23)
對自相關函數(shù)的FFT可表示為
Y(k)=FFT[ySM(k)]
(24)
由式(14)~式(24)可以看出AL信號與SM信號的區(qū)別,AL符號是部分相關的,而SM符號不是相關的。STBC3r=3/4,1,STBC3r=3/4,2,STBC3r=3/8,STBC4的推導過程同理可得,本文不再推導。
自相關CNN算法對輸入信號進行預處理的方式是將I/Q采樣信號進行自相關處理,再經(jīng)過FFT后輸入到CNN進行特征提取識別。
本節(jié)對文中自相關CNN算法進行仿真實驗,SNR范圍為-10~10 dB,每個SNR下進行1 000次蒙特卡羅仿真,仿真條件見第3.2節(jié)。
仿真 1算法性能分析
自相關CNN算法性能分析如圖4所示,6種STBC編碼類型信號隨SNR變化的識別概率,直接對數(shù)據(jù)集進行FFT處理的CNN算法在SNR=0 dB時,算法的識別概率穩(wěn)定在85%左右。而改進后的自相關函數(shù)預處理方法識別效果較好,在4 dB時,算法的識別概率能達到96%。
圖5(a)~圖5(e)依次為算法在-10 dB、-5 dB、0 dB、5 dB、10 dB的識別混淆矩陣,反映了6種STBC的識別情況。
從圖5可以看出,自相關CNN算法的識別性能明顯提升,尤其是對CNN算法中識別效果不佳的SM和AL兩種編碼的識別概率顯著提高,在SNR=5 dB時,兩種編碼的識別概率為95%左右。
圖5 自相關CNN算法在不同SNR下的識別混淆矩陣
仿真 2Nakagami信道m(xù)值對算法的影響
Nakagami信道m(xù)值對算法識別性能的影響如圖6所示。觀察可得,隨著m值的減少算法的性能有所減弱,但對算法的識別性能影響不大。
圖6 Nakagami信道m(xù)值對算法的影響
仿真 3調(diào)制方式對算法的影響
調(diào)制方式與算法性能的關系如圖7所示,采用BPSK、QPSK、8PSK、16QAM等4種常見的調(diào)制方式進行分析。
由圖7觀察可得,算法在BPSK下性能最好,識別率可以達到97%;QPSK的識別率最高為95%;8PSK的識別率有所下降,可以達到89%;而在16QAM時識別性能惡化,最高識別率僅為79%左右。
圖7 調(diào)制方式對算法的影響
仿真 4采樣點數(shù)N對算法的影響
采樣點數(shù)N與算法性能的關系如圖8所示。觀察可知,采樣點數(shù)N為128和64時,識別效果良好,相差不大。但當N為32時,算法的識別性能較差。這是由于采樣點數(shù)N的增加可以提高頻率分辨率,從而提升算法性能,但當N取值偏小時,識別數(shù)據(jù)量太小導致算法的識別性能不佳。
圖8 采樣點數(shù)N對算法的影響
本文提出的CNN算法和自相關CNN算法網(wǎng)絡在數(shù)據(jù)集下的訓練與測試損失函數(shù)如圖9所示。
圖9 訓練次數(shù)與損失函數(shù)圖
從圖9中可以看出,CNN算法經(jīng)過大約15次訓練,網(wǎng)絡的損失函數(shù)趨于穩(wěn)定,沒有出現(xiàn)明顯的波動。說明本論文提出的CNN訓練過程良好,收斂速度快,未出現(xiàn)過擬合或欠擬合的問題。而自相關CNN算法經(jīng)過大約10次訓練,網(wǎng)絡的損失函數(shù)趨于穩(wěn)定,收斂速度有所提升。
4種STBC算法的識別率和本文CNN算法及自相關CNN算法的比較如圖10所示。CNN算法在低SNR下識別效果較差,主要是由于AL和SM的識別率低的不良影響。
圖10 算法性能比較
HOC算法、四階時延向量算法、KS檢驗算法在SNR≈6 dB時,識別概率均能達到98%,而四階循環(huán)平穩(wěn)算法由于在該仿真條件下樣本數(shù)量少,統(tǒng)計特性不明顯,因此識別效果較差。
實時性分析如下:
從實際運行結果來看,自相關CNN算法訓練速度約為3 s/epoch,每次識別耗時總長約為130 s,基本滿足實時應用需求。
CNN算法和自相關CNN算法在5 dB時識別概率約為95%左右,識別性能比傳統(tǒng)基于特征識別的算法要稍低一些,主要是由于CNN算法和自相關CNN算法能夠?qū)?種STBC碼進行識別,尤其是可對于3種相似度高的STBC3碼以及STBC4碼進行識別,影響了其識別性能。CNN算法和自相關CNN算法通過建立CNN網(wǎng)絡進行編碼分類識別,減少了傳統(tǒng)算法中人工設計特征值中存在的不足。
本文結合深度學習的優(yōu)勢,利用CNN提出了一種基于CNN多STBC編碼類型的盲識別的算法,是首次在頻域上使用CNN實現(xiàn)編碼類型識別的算法,與時域上的算法相比,不需要接收端同步,大大提高了算法的適用性。仿真實驗驗證,基于CNN算法能夠識別6種STBC編碼,將目前能夠識別的STBC編碼類型從4種擴充到6種,尤其是能夠識別3種相似度高的STBC3碼,但本算法存在對AL碼和SM識別概率較低的問題。針對AL和SM識別概率低的問題,將所提的CNN算法進行改進,對接收信號進行了自相關函數(shù)預處理,以提高CNN的特征提取能力,自相關CNN算法能有效對6種STBC編碼類型進行識別,在4 dB時,識別概率能達到96%。
本文模型在識別過程中不需要利用大量樣本數(shù)據(jù)得出相關參數(shù),且復雜度較低,大大節(jié)省了識別時間,具有較好的工程應用價值。