束學淵 汪立新
(杭州電子科技大學通信工程學院 浙江 杭州 310018)
隨著無線通信技術(shù)的快速發(fā)展,人們對移動通信的傳輸速率和時延需求不斷提高,各種新技術(shù)占用了新的頻段,導致頻譜資源日趨緊缺。而傳統(tǒng)的靜態(tài)頻譜分配方法導致部分頻段存在空閑狀態(tài)的情況,頻譜利用率亟待提升[1]。頻譜感知作為認知無線電技術(shù)的基礎(chǔ)與核心技術(shù)之一,能夠快速準確地對主用戶信號進行精確檢測,已是人們在研究如何充分利用頻譜資源、減少頻譜空閑問題的研究熱點[2-4]。傳統(tǒng)的頻譜感知算法主要包括能量檢測[5]、匹配濾波器檢測[6]和循環(huán)平穩(wěn)特征檢測[7]等。傳統(tǒng)算法通過構(gòu)造統(tǒng)計量基于手動調(diào)節(jié)的閾值進行判決,而人工設定的閾值,受到采樣不完全等影響,很難確定較優(yōu)的閾值,在低信噪比情況下分類效果較差。而基于機器學習的分類算法,在大量數(shù)據(jù)上通過損失函數(shù)進行迭代優(yōu)化,訓練分類模型,模型基于樣本特征進行分類判決,避免了用單一閾值進行判決。文獻[8-9]將神經(jīng)網(wǎng)絡應用于頻譜感知中,在低信噪比下獲得了較好的檢測概率。文獻[10]運用狼群優(yōu)化方法對訓練后的BP神經(jīng)網(wǎng)絡模型的權(quán)值矩陣進一步優(yōu)化,其檢測性能優(yōu)于自組織神經(jīng)網(wǎng)絡算法。文獻[11-13]利用支持向量機訓練模型對測試信號特征進行分類檢測。文獻[14]使用隨機森林算法作為頻譜感知分類器。
本文采用XGBoost算法作為頻譜感知分類器。XGBoost算法[15]是陳天奇等于2015提出的一種集成學習算法,是GBDT算法的改進算法。GBDT算法是提升(boosting)方法的一種實現(xiàn),其思想是不斷降低殘差,使上一次的迭代模型殘差在當前梯度方向上下降,不斷優(yōu)化模型。模型達到較好評估指標一般需要一定數(shù)量的CART樹,當數(shù)據(jù)量較大時,會導致GBDT模型計算量巨大,而XGBoost算法在特征粒度上進行并行處理。XGBoost算法在訓練之前,預先對數(shù)據(jù)進行了排序,并以block結(jié)構(gòu)保存,在之后的迭代優(yōu)化中重復地使用這一結(jié)構(gòu)。在進行節(jié)點的分裂時,需要計算每個特征各個切分點的增益,最終選擇增益最大的那個特征的切分點去做分裂,對各個特征切分點的增益計算進行并行處理,大大減小了計算量。在迭代優(yōu)化過程中,GBDT算法的損失函數(shù)只進行了一階泰勒展開,而XGBoost算法對其損失函數(shù)進行二階泰勒展開,對損失函數(shù)進行更精確的估計。并且該算法在計算損失時加入正則懲罰項,在迭代優(yōu)化時進行預剪枝,有效控制模型的復雜度。
為了對頻譜資源展開實時有效的檢測,根據(jù)認知無線電系統(tǒng)中PU信號頻譜感知特點,假設存在W個主用戶和G個次級用戶,且各主用戶信號互不干擾。各路徑具有不同時延,并分別進入判決系統(tǒng)中。對任何一個次級用戶,可以將其抽象為一個二元假設檢驗模型:
(1)
假設任意一個二級用戶的接收端信號為y(t),其循環(huán)自相關(guān)函數(shù)為:
(2)
式中:α為循環(huán)頻率;T0為循環(huán)周期;R(t,τ)為y(t)的自相關(guān)函數(shù)。
對其自相關(guān)函數(shù)進行傅里葉變換得到循環(huán)譜密度函數(shù)為:
(3)
采用頻域平滑法進行循環(huán)譜估計,在去除零循環(huán)頻率情況下,選取能量最大的循環(huán)譜向量作為初始樣本特征,但是此時數(shù)據(jù)維度很高,因此采用PCA進行降維處理。
PCA是一種常用的數(shù)據(jù)分析方法。PCA通過線性變換將原始數(shù)據(jù)變換為一組各維度線性無關(guān)的表示,可用于提取數(shù)據(jù)的主要特征分量,對高維數(shù)據(jù)進行降維處理,降低數(shù)據(jù)冗余。在頻譜感知模型中,利用PCA算法對循環(huán)譜向量進行降維的主要步驟如下:
設x1,x2,…,xn表示n個在H0或H1情況下信號循環(huán)譜能量最大的向量,每個樣本向量有m個變量,組成初始數(shù)據(jù)集矩陣X。
(4)
1) 求矩陣X的相關(guān)系數(shù)矩陣:
(5)
矩陣R中的元素:
(6)
2) 求矩陣R的特征值,并按從大到小的順序排列λ1≥λ2≥…≥λm;分別求出對應于特征值的特征向量U1,U2,…,Um。
3) 計算主成分累計貢獻率,選取主成分:
(7)
式中:φ(K)累計貢獻率;假設threshold≥0.80;K 設Y為降維后取前K個主成分矩陣,則: Y=XU 式中:U=[U1,U2,…,UK]。 通過以上步驟就可以對樣本實現(xiàn)降維處理,實現(xiàn)高維數(shù)據(jù)向低維數(shù)據(jù)的映射。 XGBoost是串行樹結(jié)構(gòu),第k棵樹結(jié)構(gòu)的生成取決于前k-1棵樹的結(jié)構(gòu)。XGBoost算法希望建立K個回歸樹,使得樹群的預測值盡可能逼近真實值而且有盡量大的泛化能力,是一個泛函最優(yōu)化問題。 XGBoost的數(shù)學模型表示為: (8) 式中:K為樹的棵數(shù);fk(xi)是第k棵樹對于輸入xi特征的輸出得分值;fk是相對應的映射函數(shù);F是相應函數(shù)空間。 損失函數(shù)表示為: (9) 每次循環(huán)的往模型中加入一棵回歸樹,其損失函數(shù)都會發(fā)生改變。在加入第t棵樹時,前第t-1棵樹已經(jīng)訓練完成,此時前t-1棵樹的正則懲罰項和訓練誤差均是已知常數(shù)項。 此時,XGBoost的目標函數(shù)可以寫為: (10) 對于目標損失函數(shù)中的正則懲罰項部分,從單一的樹結(jié)構(gòu)來考慮,對于其中每一棵回歸樹,其模型可以寫成: ft(x)=wq(x)w∈RT,q:Rd→{1,2,…,T} (11) 式中:T為該樹的葉子節(jié)點個數(shù);w為葉子節(jié)點的得分值;q(x)是模型映射,用來將樣本映射到1到T的某個節(jié)點內(nèi),代表了CART樹的結(jié)構(gòu);wq(x)即為單個樹模型對樣本x的預測值了。 樹的L2復雜度懲罰為: (12) 此時,XGBoost的目標函數(shù)可以改寫為: (13) 用泰勒二階展開式近似表示損失函數(shù),將ft(xi)看作Δx,則原目標損失函數(shù)可以寫成: (14) (15) (16) 式中:T表示第t棵樹中葉子節(jié)點數(shù)量;Ij={i|q(xi)=j}表示分在第j個葉子節(jié)點上樣本的序號;wj表示第j個葉子節(jié)點的打分值。 (17) 對wj求偏導,并令其導函數(shù)為0,則有: Gj+(Hj+λ)wj=0 (18) (19) 則目標函數(shù)最優(yōu)值為: (20) L*是用來評估第t棵CART樹節(jié)點分裂的標準。 評價任意一個特征的任意一個切分點好壞的標準如下: (21) Gain是單節(jié)點的L*減去切分后生成的兩個節(jié)點的L*,Gain如果為正數(shù),并且值越大,就越值得切分。γ是一個臨界值,它的值越大,表示對切分后L*降低的幅度要求越嚴格,相當于在建樹的同時做了預剪枝,控制模型的復雜度。 對剩余特征的所有切分點掃描結(jié)束后,通過計算確定是否分裂該節(jié)點,如果分裂,對分裂出來的兩個節(jié)點,遞歸地調(diào)用這個分裂過程,最優(yōu)的樹結(jié)構(gòu)找到后,繼續(xù)迭代生成下一棵樹,直到模型達到最優(yōu)或一定閾值停止。 步驟1根據(jù)系統(tǒng)模型,分別在H1和H0情況下,生成信號循環(huán)譜。在去除零循環(huán)頻率后,選取能量最大的循環(huán)譜向量作為初始正負樣本特征,設正負初始樣本分別生成Q1、Q0個。 步驟2利用PCA對初始樣本組成的矩陣進行降維變換處理,確定主成分累積貢獻率閾值,計算降維后主成份提取維數(shù),獲取降維樣本數(shù)據(jù)。 步驟3將樣本數(shù)據(jù)切分為訓練樣本data_train和測試樣本data_test。 步驟4根據(jù)上文XGBoost算法生成步驟,利用訓練數(shù)據(jù)data_train對XGBoost算法進行訓練優(yōu)化,通過分步網(wǎng)格搜索確定超參數(shù),確定最終算法模型。 步驟5利用測試樣本data_test通過各項指標對算法模型進行評估。 為了驗證本文算法在低信噪比條件下的感知效果,以BPSK信號作為主用戶信號,在MATLAB R2014a和Python中聯(lián)合仿真。信號的仿真參數(shù)設置為:載波頻率fc為3.5 kHz;采樣頻率fs為500 Hz;采樣點數(shù)N=4 000。采用頻域平滑法進行循環(huán)譜估計,通過網(wǎng)格參數(shù)搜索確定XGBoost算法的超參數(shù)。 實驗一訓練數(shù)據(jù)采樣對比實驗。 本文分別增加低信噪比數(shù)據(jù)比例和高信噪比數(shù)據(jù)比例與均勻采樣的訓練數(shù)據(jù)作對比,訓練數(shù)據(jù)信噪比取值在-20~-6 dB之間。其中:第一組各信噪比處均為800個;第二組:-10,-12,-14,-16,-18,-20各取800個,-6,-8各取1 200個;第三組:-6,-8,-10,-12,-14,-16各取800個,-18,-20各取1 200個。測試數(shù)據(jù)各信噪比處均為1 200個。分別將以上三組訓練數(shù)據(jù)使用XGBoost算法訓練出三個模型model_1、model_2、model_3,各模型測試結(jié)果如圖1、表1所示。 圖1 模型在各信噪比測試數(shù)據(jù)上AUC值 表1 三組模型時間效率對比 從圖1可以看出,Model_2表現(xiàn)相對于Model_1基本一致,由于低信噪比處數(shù)據(jù)噪聲較少,模型對低噪聲數(shù)據(jù)分類效果已經(jīng)接近極限,增加數(shù)據(jù)量也不會提升其表現(xiàn),只會增加模型訓練和測試時間。Model_3相對于Model_1在-18 dB、-20 dB處的測試集AUC值分別提升4.57%、4.97%,在-14 dB處下降2.54%,這表明增加低信噪比數(shù)據(jù)可使得模型在低信噪處表現(xiàn)有一定提升,但是其一次訓練時間相對于Model_1增加了37.96%,通過網(wǎng)格搜索或分步網(wǎng)格搜索其訓練時間增加量是很大的。此外對一共9 600個測試樣本來看,Model_3的檢測效率明顯降低,相對于Model_1其檢測時間增加了12.92%,這表明Model_3的復雜度更高。因此以下實驗均采用第一組訓練數(shù)據(jù)采集方案。 實驗二信號檢測性能對比實驗。 圖2為在信噪比分別為-12 dB、-16 dB情況下基于XGBoost、RF、SVM的循環(huán)平穩(wěn)特征算法與傳統(tǒng)循環(huán)平穩(wěn)特征算法ROC曲線的比較,可以看出基于機器學習的改進算法在各虛警率處均明顯高與傳統(tǒng)算法。而基于XGBoost的改進算法在各信噪比的檢測概率均優(yōu)于基于SVM和RF的改進算法。如表2所示,在虛警率為0.01、0.03、0.05、0.07處,測試數(shù)據(jù)-12 dB時,XGBoost改進算法的檢測概率相對于SVM改進算法分別提升8.53%、5.34%、5.92%、5.17%,相對于RF改進算法分別提升7.62%、7.31%、6.81%、3.62%。如表3所示,測試數(shù)據(jù)為-16 dB時,XGBoost改進算法的檢測概率相對于SVM改進算法分別提升13.48%、13.95%、12.18%、9.48%,相對于RF改進算法分別提升13.11%、11.03%、16.25%、12.84%。這說明XGBoost改進算法在低虛警率情況下提升明顯。 圖2 基于XGBoost算法和RF算法、SVM算法、 傳統(tǒng)循環(huán)平穩(wěn)特征算法ROC曲線比較 表2 SNR為-12 dB,各算法在低虛警率處檢測概率比較 表3 SNR為-16 dB,各算法在低虛警率處檢測概率比較 實驗三信號檢測概率對比實驗。 圖3為在虛警率為0.05的情況下,當信噪比大于等于-8 dB時,各算法均達到或接近100%的檢測概率。在信噪比小于等于-10 dB時,基于機器學習的改進算法大幅優(yōu)于傳統(tǒng)的循環(huán)。XGBoost算法在低信噪比時也全面優(yōu)于SVM算法和RF算法,在信噪比為-14 dB、-16 dB、-18 dB、-20 dB時,XGBoost算法相對于SVM算法分別提升了11.05%、12.21%、20.36%、23.53%,相對于RF算法分別提升了12.42%、14.54%、11.13%、12.24%。這說明XGBoost算法有更好的抗噪聲能力。 圖3 三種算法在不同信噪比下檢測概率比較 本文提出了一種基于極限梯度提升樹的循環(huán)譜特征頻譜感知算法,通過對比支持向量算法、隨機森林算法、傳統(tǒng)循環(huán)平穩(wěn)特征算法,本文算法在低信噪比處檢測概率明顯優(yōu)于傳統(tǒng)機器學習算法和傳統(tǒng)循環(huán)譜算法。后續(xù)將嘗試構(gòu)造新特征,并做模型融合嘗試。3 XGBoost算法
3.1 損失函數(shù)
3.2 求解節(jié)點最優(yōu)值
3.3 求解最優(yōu)樹結(jié)構(gòu)
4 頻譜感知算法步驟
5 實驗與分析
6 結(jié) 語