黃權(quán),阮建高
(工業(yè)和信息化部電子第五研究所,廣東廣州 510610)
在近場(chǎng)掃描電磁圖像的處理[1-3]中,需要對(duì)電磁圖像進(jìn)行變換,如空域變換、頻域變換,近場(chǎng)掃描電磁圖像通過(guò)電磁場(chǎng)探頭探測(cè)得到[4-6]。傳統(tǒng)的快速傅里葉變換能夠?qū)﹄姶艌D像進(jìn)行快速運(yùn)算后得到結(jié)果,但基于近場(chǎng)掃描電磁圖像所反映的電磁輻射圖案的多樣性,希望能夠設(shè)計(jì)一種算法去學(xué)習(xí)這些圖案的特征,從而為電磁圖案的后續(xù)分析如聚類等提供有效的圖案特征,神經(jīng)網(wǎng)絡(luò)是最適合學(xué)習(xí)圖案特征的框架,在研究的過(guò)程中發(fā)現(xiàn)神經(jīng)網(wǎng)絡(luò)不僅可以有效地學(xué)習(xí)到電磁圖案的特征,還能夠?qū)W習(xí)到離散傅里葉矩陣。
目前,深度學(xué)習(xí)的絕大多數(shù)構(gòu)建模塊、技術(shù)和架構(gòu)都基于實(shí)數(shù)的運(yùn)算和表征。但是,近來(lái)在循環(huán)神經(jīng)網(wǎng)絡(luò)和其他更古老的基礎(chǔ)理論上的分析表明復(fù)數(shù)可以有更加豐富的表征能力,也可以促進(jìn)對(duì)噪聲魯棒的記憶檢索機(jī)制[7-9]。盡管它們?cè)趲?lái)全新的神經(jīng)架構(gòu)上有引人注目的性質(zhì)和潛力,但由于缺少設(shè)計(jì)這種模型所需的構(gòu)建模塊,復(fù)數(shù)值的深度神經(jīng)網(wǎng)絡(luò)一直處于邊緣化的狀態(tài)[10]。隨著計(jì)算機(jī)硬件的發(fā)展,神經(jīng)網(wǎng)絡(luò)的應(yīng)用越來(lái)越廣泛,在預(yù)測(cè)、分類方面取得了很大的應(yīng)用[11],比如推薦系統(tǒng)、人臉識(shí)別等。
Reichert 等人從生物學(xué)的角度出發(fā),將復(fù)數(shù)神經(jīng)元用在深度神經(jīng)網(wǎng)絡(luò)中,這些使用復(fù)數(shù)表示的神經(jīng)元具有更加豐富的表達(dá)能力,復(fù)數(shù)值的公式允許人們用神經(jīng)元的放電率和活動(dòng)的相對(duì)時(shí)間來(lái)表示神經(jīng)元的輸出。該復(fù)數(shù)神經(jīng)元的振幅代表放電率,而其相位則代表活動(dòng)的相對(duì)時(shí)間[12]。復(fù)數(shù)中的相位信息在信號(hào)處理時(shí)也是十分重要的,在語(yǔ)音信號(hào)中,相位信息影響著語(yǔ)音信號(hào)的可理解性[8]。Oppenheim 和Lim 還表明,在圖像的相位中存在的信息量足以恢復(fù)以其大小編碼的大部分信息。事實(shí)上,相位在編碼形狀、邊緣和方向時(shí)提供了對(duì)象的詳細(xì)描述[13]。
最近,Rippel等人將傅里葉譜表示用于卷積神經(jīng)網(wǎng)絡(luò),提供一種在頻譜域中參數(shù)化卷積核權(quán)值的技術(shù),并在信號(hào)的頻譜表示上執(zhí)行池化[14],然而,作者在論文中回避了執(zhí)行復(fù)數(shù)值卷積,而是從空間域中的實(shí)值進(jìn)行核卷積構(gòu)建。為了確保譜域中的復(fù)數(shù)值參數(shù)化映射到實(shí)數(shù)值核函數(shù),作者對(duì)譜域權(quán)重施加了共軛對(duì)稱約束,這樣當(dāng)對(duì)它們應(yīng)用傅里葉逆變換時(shí),它只產(chǎn)生實(shí)數(shù)值的核函數(shù)[14]。
離散傅里葉變換作為一種有效的信號(hào)處理工具得到了廣泛的應(yīng)用,經(jīng)典的快速傅里葉變換[15]更是將這個(gè)算法的應(yīng)用發(fā)揮到了極致,但是快速傅里葉變換涉及到復(fù)數(shù)運(yùn)算,而目前神經(jīng)網(wǎng)絡(luò)在復(fù)數(shù)運(yùn)算方面基本上是不支持的,為了將神經(jīng)網(wǎng)絡(luò)應(yīng)用到信號(hào)處理中,一方面設(shè)計(jì)可以進(jìn)行復(fù)數(shù)運(yùn)算的神經(jīng)網(wǎng)絡(luò),另一方面是通過(guò)某種變換和設(shè)計(jì),將復(fù)數(shù)進(jìn)行拆解,使之能夠按照實(shí)數(shù)進(jìn)行計(jì)算,卻不丟失原來(lái)復(fù)數(shù)運(yùn)算包含的信息。
該文研究的離散傅里葉矩陣構(gòu)建方法,完美地避開了復(fù)數(shù)運(yùn)算,同時(shí)保留了和原始矩陣同樣的信息量,并基于神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)和重構(gòu)離散傅里葉矩陣,該矩陣可用于近場(chǎng)掃描之后的數(shù)據(jù)處理中[17]。
對(duì)于一個(gè)長(zhǎng)度為N的信號(hào)序列x=[x0,x1,…,xN-1],它的離散傅里葉變換公式為:
式(1)可以寫成點(diǎn)積的形式:
式(2)寫成矩陣形式:
式(3)寫成矩陣形式:
其中,F(xiàn)∈RN×N,(F)kn=。式(2)、(3)都包含復(fù)數(shù),復(fù)數(shù)運(yùn)算是比較復(fù)雜和耗時(shí)的,因此引入歐拉公式:
對(duì)此,令:
代入式(5)可得:
將式(7)的實(shí)部和虛部分開,然后排放在一個(gè)矩陣的上半部分和下半部分:
令WFourier表示式(8)右邊的復(fù)指數(shù)值構(gòu)成的矩陣,x表示[x0,x1,…,xN-1]T,則式(8)可以簡(jiǎn)寫為:
y和包含的信息是完全一樣的,但是式(9)不包含復(fù)數(shù)計(jì)算,因?yàn)橐霘W拉公式將其實(shí)部和虛部放在矩陣的上半部分和下半部分,所以的長(zhǎng)度是y長(zhǎng)度的2倍。
1.2.1 神經(jīng)網(wǎng)絡(luò)架構(gòu)
如圖1 所示,所設(shè)計(jì)的神經(jīng)網(wǎng)絡(luò)共有兩層,輸入層因?yàn)橛糜谠紨?shù)據(jù)輸入,通常只是進(jìn)行了展平處理,對(duì)數(shù)據(jù)沒(méi)有影響,所以不作為層計(jì)數(shù),隱藏層的神經(jīng)元數(shù)量為輸入層神經(jīng)元數(shù)量的2 倍,輸出層只有一個(gè)神經(jīng)元,用于計(jì)算損失。
圖1 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
1.2.2 訓(xùn)練過(guò)程
如圖2 所示是神經(jīng)網(wǎng)絡(luò)重構(gòu)離散傅里葉矩陣的原理框圖,重構(gòu)步驟如下:
圖2 神經(jīng)網(wǎng)絡(luò)訓(xùn)練的原理框圖
1)隨機(jī)初始化離散傅里葉矩陣WFourier,該矩陣是神經(jīng)網(wǎng)絡(luò)需要學(xué)習(xí)的參數(shù);
2)生成隨機(jī)樣本輸入x,與第1)步的參數(shù)矩陣進(jìn)行線性相乘;
3)根據(jù)式(3)取出對(duì)應(yīng)的實(shí)部和虛部,進(jìn)行信號(hào)的重構(gòu),重構(gòu)的方法如下:
已知一個(gè)信號(hào)的離散傅里葉變換的系數(shù)y=a+jb,其中y是一個(gè)復(fù)數(shù),根據(jù)傅里葉分析理論,則對(duì)應(yīng)的信號(hào)部分x為:
代入y=a+jb,展開可得:
其中,a和b對(duì)應(yīng)第3)步中實(shí)部和虛部。
5)式(12)的損失函數(shù)(LossFunction)作為神經(jīng)網(wǎng)絡(luò)訓(xùn)練精度的衡量標(biāo)準(zhǔn),并計(jì)算它的梯度后,進(jìn)行參數(shù)更新,重復(fù)從第(1)步-第(4)步繼續(xù)訓(xùn)練,直到訓(xùn)練達(dá)到指定的次數(shù)或者符合誤差要求。
文中的實(shí)驗(yàn)環(huán)境為搭載Intel(R) Core(TM) i5-8265U CPU@1.60 GHz 1.80,雙核1.60 GHz 主頻處理器,內(nèi)存8 GB的計(jì)算機(jī),實(shí)驗(yàn)在64位Windows 10操作系統(tǒng),使用神經(jīng)網(wǎng)絡(luò)框架pytorch 1.8.1+cpu 版及numpy1.16.5 條件下進(jìn)行實(shí)現(xiàn)。
如圖3 所示是理論計(jì)算的離散傅里葉矩陣與神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的離散傅里葉矩陣的對(duì)比,其中神經(jīng)網(wǎng)絡(luò)迭代次數(shù)為10 000次,從圖形上可以直觀地看出,神經(jīng)網(wǎng)絡(luò)基本上學(xué)習(xí)到了離散傅里葉矩陣的特征。
圖3 兩種方法得到的離散傅里葉矩陣的對(duì)比
如圖4和圖5所示,可以看出重構(gòu)信號(hào)的損失值和RMSE在2 000次迭代以后基本上不變,即通過(guò)神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的離散傅里葉矩陣已經(jīng)能夠很好地還原原始信號(hào),同時(shí)也說(shuō)明在精度上,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的離散傅里葉矩陣基本上不再隨著迭代次數(shù)的增加而有所提升。
圖4 重構(gòu)信號(hào)的損失值隨迭代的變化
圖5 離散傅里葉矩陣均方差隨迭代的變化
圖6 是原始的信號(hào),圖7 是使用神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的離散傅里葉矩陣重構(gòu)的信號(hào),可以看出,兩種信號(hào)幾乎完全相同,這是因?yàn)樵谏窠?jīng)網(wǎng)絡(luò)訓(xùn)練2 000 次之后,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的離散傅里葉矩陣基本上與理論計(jì)算的離散傅里葉矩陣完全相同,這可以從圖4和圖5 得到驗(yàn)證。文中的實(shí)驗(yàn)數(shù)據(jù)沒(méi)有加入噪聲,因而重構(gòu)信號(hào)的誤差取決于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到離散傅里葉矩陣的誤差,從圖5 中可以看出,這個(gè)誤差在迭代2 000 次之后基本上再無(wú)變化,假如數(shù)據(jù)包含噪聲,那么這種情況可能是神經(jīng)網(wǎng)絡(luò)在訓(xùn)練時(shí)過(guò)擬合了,因?yàn)閺膱D3 來(lái)看神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到的離散傅里葉矩陣和理論計(jì)算的離散傅里葉矩陣是有差別的,而迭代次數(shù)在2 000 次之后對(duì)這種差別卻無(wú)明顯的改善,說(shuō)明神經(jīng)網(wǎng)絡(luò)在結(jié)構(gòu)分布上可以完美地學(xué)習(xí)到離散傅里葉矩陣,但是在數(shù)值精度上不能完美地接近。通過(guò)實(shí)驗(yàn)得到迭代次數(shù)與模型損失關(guān)系如表1 所示。
圖6 原始信號(hào)
圖7 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的離散傅里葉矩陣重構(gòu)的信號(hào)
表1 迭代次數(shù)與模型損失
通過(guò)表1可以看出,迭代次數(shù)在4 000 次以后,損失值基本上接近于0。
該文提出了一種將離散傅里葉變換避開矩陣運(yùn)算的復(fù)數(shù)操作方法,并使用神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)該矩陣??梢钥闯錾窠?jīng)網(wǎng)絡(luò)很完美地學(xué)習(xí)到了該矩陣,且用該矩陣重構(gòu)的信號(hào)與原始信號(hào)基本相似。其根本原因是該文設(shè)計(jì)的神經(jīng)網(wǎng)絡(luò)是一種線性變換,而離散傅里葉變換也是一種線性變換。那么在使用隨機(jī)梯度下降的迭代中,只要迭代次數(shù)足夠,就可以完美地學(xué)習(xí)這種線性變換。后續(xù)可研究的工作是用神經(jīng)網(wǎng)絡(luò)研究二維離散傅里葉變換,同時(shí)結(jié)合圖像降噪的理論研究近場(chǎng)掃描電磁數(shù)據(jù)的降噪設(shè)計(jì)。