張蔚



摘? 要:深度學(xué)習(xí)本質(zhì)是一種經(jīng)驗(yàn)化的方法,伴隨計(jì)算機(jī)能力的提高,深度學(xué)習(xí)已可用于越來越多的實(shí)踐。本文探索了將深度學(xué)習(xí)(主要是一維CNN及RNN)用于空空導(dǎo)彈測試自動(dòng)數(shù)據(jù)判讀的可行性。利用深度學(xué)習(xí)的相關(guān)特性,可以很好地實(shí)現(xiàn)判讀數(shù)據(jù)的特征工程,可一定程度避免人為提取數(shù)據(jù)特征進(jìn)行判讀所帶來的不穩(wěn)定性。
關(guān)鍵詞:深度學(xué)習(xí);神經(jīng)網(wǎng)絡(luò);數(shù)據(jù)判讀
神經(jīng)網(wǎng)絡(luò)的具體方法理論提出已久,但受制于硬件計(jì)算能力一直未得到較為廣泛的應(yīng)用。近年來由于高并發(fā)計(jì)算能力的提高(比如將高性能GPU用于一般計(jì)算以及出現(xiàn)專用于人工智能高并發(fā)計(jì)算的芯片TPU)以及高并發(fā)計(jì)算社區(qū)的完善(比如NVIDIA公司所推出的CUDA和開源的OpenCL,徹底封裝了高并發(fā)計(jì)算的底層實(shí)現(xiàn),其中CUDA還有非常完善的對于人工智能計(jì)算的支持),神經(jīng)網(wǎng)絡(luò)的使用代價(jià)正在變得越來越可接受,而深度學(xué)習(xí)是一種多層次的神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn),通過一定量層次的增加,可以使網(wǎng)絡(luò)實(shí)現(xiàn)復(fù)雜度更高的邏輯,相應(yīng)也增加了計(jì)算復(fù)雜度。
傳統(tǒng)上對于數(shù)據(jù)判讀的人工智能方法主要通過淺層的分類方法實(shí)現(xiàn),比如SVM [1],其方法是在一個(gè)多維的特征空間中劃分出一個(gè)離不同分類樣本集合中的邊界上的分類樣本距離之和最小的一個(gè)超平面,是一種典型的二分類方法,在特征工程明確的前提下,這種分類的方法十分可靠。但在特征工程不明確時(shí),這種方法則不具有穩(wěn)定性,多數(shù)情況下判別的好壞完全取決于人工分類的好壞,更不用說在某些情況下,特征之間還存在一定的相關(guān)性。而神經(jīng)網(wǎng)絡(luò)的方法淡化了提取特征的過程,如果簡單地理解即,輸入的特征完全取決于樣本所擁有的可能性,而樣本的可能性不會(huì)多于樣本在所有采樣點(diǎn)的組合,通過足夠量的數(shù)據(jù)去盡可能遍歷所有可能性,就可能去擬合一個(gè)網(wǎng)絡(luò)盡可能覆蓋樣本具有的特征。深度學(xué)習(xí)作為層次較多的神經(jīng)網(wǎng)絡(luò),因而可以實(shí)現(xiàn)一種類似人類的判讀效果,比如經(jīng)典的由Yann LeCun實(shí)現(xiàn)的手寫數(shù)字的判讀,早期就被用于自動(dòng)讀取郵政編碼,還有近年來熱門的卷積神經(jīng)網(wǎng)絡(luò)對圖片分類的效果,基于循環(huán)神經(jīng)網(wǎng)絡(luò)的機(jī)器翻譯及語音生成等[2],另外在航空航天的數(shù)據(jù)處理也已有相關(guān)的應(yīng)用[3]。同時(shí),測試數(shù)據(jù)的類型差別較大,比如對于周期的時(shí)鐘量如果只判斷頻率,對于電壓量如果只判斷某一階段的幅值,這些有明確特征工程的數(shù)據(jù)都不需要通過神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)判讀,而如果要關(guān)注比如時(shí)鐘頻率是否有相位突變,是否有不可接受的某些波動(dòng),對于電壓量關(guān)注其建立過程的曲線是否符合以往的一致性,還有一些無法歸納類型但體現(xiàn)產(chǎn)品工作的某一特征的測試曲線,以上種種,適合通過神經(jīng)網(wǎng)絡(luò)的方法進(jìn)行判讀。
1.深度學(xué)習(xí)對應(yīng)的實(shí)現(xiàn)方法及其用于數(shù)據(jù)判讀適用性分析。
常用的深度學(xué)習(xí)方法包括以下幾種,其他網(wǎng)絡(luò)模型大多是以下幾種方法的變體,有些模型雖然有更好的驗(yàn)證精度和最終測試結(jié)果,但也一定程度上提高了算法復(fù)雜度。
1.1 密集層(即Dense層或稱全連接層)深度學(xué)習(xí)網(wǎng)絡(luò)
較為簡單地神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn)及訓(xùn)練的一般方法如下:
1. 完成數(shù)據(jù)工程,將數(shù)據(jù)標(biāo)準(zhǔn)化,將數(shù)據(jù)隨機(jī)分為訓(xùn)練集、驗(yàn)證集以及測試集;
2. 先選取較為合適的網(wǎng)絡(luò)層次,網(wǎng)絡(luò)規(guī)模(即每一層所擁有的節(jié)點(diǎn)數(shù)量);
3. 隨機(jī)生成前向傳播矩陣,但不可為零,通常取值為0~1之間,否則進(jìn)行反向傳遞的時(shí)候梯度無法計(jì)算;
4. 運(yùn)用合適的激活函數(shù)(sigmod,ReLU,tanh,softmax等)計(jì)算前向傳播fp并得到預(yù)測值;
5. 根據(jù)實(shí)際值與預(yù)測值計(jì)算得到殘差,計(jì)算反向傳播bp,常用的bp計(jì)算方法是按照傳播矩陣貢獻(xiàn)系數(shù)所貢獻(xiàn)的誤差比例,得到每一層的誤差,依據(jù)最大梯度原則(即 ,其中δ為反向傳播殘差,σ為學(xué)習(xí)率),針對一層中的每個(gè)節(jié)點(diǎn)更新對應(yīng)的傳播矩陣的每一行系數(shù);
6. 將訓(xùn)練集進(jìn)行迭代計(jì)算,選取合適的輪次訓(xùn)練網(wǎng)絡(luò),使用驗(yàn)證集對網(wǎng)絡(luò)參數(shù)進(jìn)行驗(yàn)證評估,調(diào)整網(wǎng)絡(luò)參數(shù),包括網(wǎng)絡(luò)層次,網(wǎng)絡(luò)每一層節(jié)點(diǎn)數(shù)量,及訓(xùn)練輪次數(shù)量。最后使用測試集對該網(wǎng)絡(luò)模型用于實(shí)際情況進(jìn)行評估。
因此,按照上述方法,網(wǎng)絡(luò)訓(xùn)練過程中并沒有人為的特征提取過程,但是該模型卻面臨兩個(gè)重要的問題,其一是輸入數(shù)據(jù)量不足或數(shù)據(jù)量分布過于集中于某一特征則導(dǎo)致網(wǎng)絡(luò)訓(xùn)練成熟度不足,如果一味增加訓(xùn)練輪次,則可能導(dǎo)致訓(xùn)練出來的網(wǎng)絡(luò)過早擬合,即對訓(xùn)練集的測試數(shù)據(jù)表現(xiàn)良好,對驗(yàn)證集中未曾見過的數(shù)據(jù)表現(xiàn)不佳;其二是網(wǎng)絡(luò)層次增加導(dǎo)致的梯度消失問題,在需要表達(dá)足夠復(fù)雜的邏輯時(shí),如果層次過多則網(wǎng)絡(luò)會(huì)變得無法訓(xùn)練(雖然增加不同特征的數(shù)據(jù)能一定程度消除這種問題)。其本質(zhì)矛盾是數(shù)據(jù)質(zhì)量與網(wǎng)絡(luò)模型可訓(xùn)練之間的矛盾??紤]導(dǎo)彈測試中一條比如1萬個(gè)采樣點(diǎn)的遙測數(shù)據(jù),如果通過這種方式進(jìn)行計(jì)算,則需求的數(shù)據(jù)量是遠(yuǎn)多于1萬條的,這一點(diǎn)在實(shí)際測試中不可接受,因此通過一定的限制條件減小數(shù)據(jù)量是十分必要的。
1.2 卷積神經(jīng)網(wǎng)絡(luò)(CNN)
因?yàn)橥耆腄ense層網(wǎng)絡(luò)連接數(shù)量過于龐大,且如果對數(shù)據(jù)的分布特性判斷不佳,選取的數(shù)據(jù)不夠具有代表性,那么最終訓(xùn)練出的網(wǎng)絡(luò)除了過擬合的問題,還有可能導(dǎo)致一種意料之外的情況,比如對圖像的分類問題,有可能因?yàn)閳D像噪聲導(dǎo)致網(wǎng)絡(luò)的錯(cuò)誤分類。實(shí)際上噪聲所包含的信息對于分類并沒有意義。簡單的理解就是數(shù)據(jù)經(jīng)常體現(xiàn)了一種局部特征,現(xiàn)實(shí)中收集到的數(shù)據(jù)也都有一定分布特征,這所有的錯(cuò)誤情況既包含了局部的判錯(cuò)情況,也包含了局部與局部之間,局部與整體的各種組合,因此不太可能把所有的錯(cuò)誤情況樣本收集到輸入給網(wǎng)絡(luò)(現(xiàn)實(shí)中收集到的數(shù)據(jù)多數(shù)都是一般情況,這一點(diǎn)也符合概率)。所以就有了對網(wǎng)絡(luò)的學(xué)習(xí)范圍進(jìn)行限制的方法,CNN就是這種思維具體實(shí)現(xiàn)。
CNN主要在圖像識別領(lǐng)域有廣泛應(yīng)用,其構(gòu)成的思想也與傳統(tǒng)上數(shù)字圖像處理中邊緣檢測,圖像分塊等的方法十分相似,即對圖像用卷積的方法與卷積核相關(guān),突出特定頻率特征的響應(yīng)。相比Dense層網(wǎng)絡(luò),CNN沒有使用全連接,通過與圖像卷積的方法,輸出的卷積層的每個(gè)點(diǎn)實(shí)際上僅與輸入中這個(gè)點(diǎn)周圍一定范圍內(nèi)的卷積塊有關(guān),取決于卷積核的大小(一般是3×3或者5×5),這樣就大大減小了連接的密集度,而這樣使用地邏輯在于圖像中一個(gè)像素點(diǎn)與它周圍的點(diǎn)是有很大的相關(guān)性的,這一點(diǎn)對于導(dǎo)彈的測試數(shù)據(jù)判讀也是同理。 輸入的樣本深度通常為1或者3(表示顏色通道),一次卷積后輸出卻是多深度的,這個(gè)深度取決于卷積核,其體現(xiàn)了卷積核所能擁有的模式數(shù)量,因?yàn)榫矸e過程就是凸顯圖像或數(shù)據(jù)中存在卷積核對應(yīng)的模式,最終這些模式的存在導(dǎo)致分類,神經(jīng)網(wǎng)絡(luò)所需要做的就是訓(xùn)練出這一模式。在前面的卷積層則表現(xiàn)了邊緣這種高頻分量,對于導(dǎo)彈測試數(shù)據(jù)的判讀來說則是類似上升下降沿的數(shù)據(jù)點(diǎn)。求得卷積并將相同的模式合并后,需要對該層輸出進(jìn)行激活得到這一層最終的輸出,CNN中卷積層所使用的通常為relu函數(shù)(其相對于sigmod函數(shù)收斂快且十分易于計(jì)算,但不適合最終分類的激活,因?yàn)樗鼪]有上確界,所以僅適用于中間層的激活)。
經(jīng)過卷積后進(jìn)行了一步池化(Pooling)操作(即數(shù)據(jù)集中化的意思),通常方法有均值池化(Avg-Pooling)和最大池化(Max-Pooling),示例如下:
Pooling層存在的意義在于進(jìn)一步減少最終輸出Dense層的元素?cái)?shù)量,因?yàn)樵財(cái)?shù)量減少,相應(yīng)的整個(gè)網(wǎng)絡(luò)連接的數(shù)量也減少了,不會(huì)因?yàn)閿?shù)據(jù)輸入不足使網(wǎng)絡(luò)無法訓(xùn)練。其邏輯在于相對的高頻分量如邊緣所體現(xiàn)的模式,在組合后可以體現(xiàn)小的圖像分塊的模式,即由邊緣構(gòu)成細(xì)節(jié),由細(xì)節(jié)構(gòu)成局部,由局部構(gòu)成小的圖塊。
卷積神經(jīng)網(wǎng)絡(luò)用于圖像識別所采用的池化方法通常為最大池化,相對于均值池化來說,最大池化更容易通過激活,對于高頻的比如邊緣的特性,如果使用均值池化,其特征就會(huì)變得不明顯。
以一個(gè)典型的網(wǎng)絡(luò)(比如LeNet)為例,其層次劃分的示意圖如下:
方法基本等同于純Dense層網(wǎng)絡(luò),只不過CNN的傳播矩陣是由卷積核構(gòu)成的,而在其最后兩層網(wǎng)絡(luò)則使用了Dense層,僅因?yàn)樽詈髢蓪拥臄?shù)據(jù)量已足夠小,且Conv層的每個(gè)圖像元素(Feature Map)的尺寸也已足夠小,不適合進(jìn)行卷積(因?yàn)榫矸e是強(qiáng)化被卷積圖中符合卷積層特征的圖塊,經(jīng)過多次池化,每個(gè)像素的關(guān)聯(lián)已經(jīng)足夠小了,與其增加卷積核的數(shù)量把每一種可能包含進(jìn)去,不如直接密集層連接)。則將最后一層Conv層的Feature Map按照每個(gè)像素展開為Dense層的每一個(gè)元素,然后進(jìn)行最后一步傳播,使元素?cái)?shù)量較小到適合判別的范圍。其判別結(jié)果殘差的反向傳播與純Dense網(wǎng)絡(luò)同理,Dense層網(wǎng)絡(luò)之間,Pooling層到Conv層的反向傳播均使用最大梯度原則,Conv層到Pooling層的殘差的反向傳播則通過直接映射的方式將殘差均分到原有的Conv層。
對于導(dǎo)彈測試數(shù)據(jù)判斷來說,測試數(shù)據(jù)可以看作是包含特征的一維圖像,數(shù)據(jù)圖像同樣具有相近點(diǎn)之間的相關(guān)性,因此可以考慮CNN的方法以降低輸入數(shù)據(jù)的樣本量。由于測試數(shù)據(jù)的極短的時(shí)間內(nèi)(比如一個(gè)數(shù)據(jù)點(diǎn))的突變很難體現(xiàn)其特征,而往往代表信號受到干擾(在不同環(huán)境下的測試數(shù)據(jù)通過遙測回傳時(shí)有可能受到干擾),因此對于一維CNN用于測試數(shù)據(jù)判斷時(shí),其卷積核的尺度可以相應(yīng)地變大,卷積核的深度相比二維圖像也應(yīng)該相應(yīng)減少,因?yàn)閳D像的細(xì)節(jié)模式通過旋轉(zhuǎn)等二維的變化并不會(huì)發(fā)生改變,因此不同的卷積核對于二維圖像來說,可以只是不同角度的結(jié)果,而測試數(shù)據(jù)只有一個(gè)維度,如果選取的卷積核深度較大(即卷積核的模式較多),會(huì)對測試數(shù)據(jù)的分布質(zhì)量帶來不必要的要求,或者造成最終結(jié)果過擬合(這一點(diǎn)也可以通過驗(yàn)證集試驗(yàn)得到,但考慮一個(gè)較為合理的值可以避免過多地通過驗(yàn)證集結(jié)果調(diào)整網(wǎng)絡(luò)參數(shù),以此避免不必要的計(jì)算量)。
考慮實(shí)際測試中獲得的導(dǎo)彈測試數(shù)據(jù)分布狀態(tài),通常最終產(chǎn)品狀態(tài)的測試結(jié)果,正常的測試結(jié)果分布較多,異常的結(jié)果少,且個(gè)例特點(diǎn)較為集中,因此應(yīng)采用方法降低訓(xùn)練網(wǎng)絡(luò)的過擬合。參考CNN用于圖像分類中的方法,對于圖像分類來說,其樣本量相對卷積核可選的模式來說還是較少的,因此也存在類似的問題,對于這種問題,CNN的處理方式通常包括Dropout方法和圖像的數(shù)據(jù)增強(qiáng)。Dropout具體實(shí)現(xiàn)方法即在中間層每次relu激活后,隨機(jī)對其少部分元素清零,即部分保持未激活狀態(tài),進(jìn)行網(wǎng)絡(luò)訓(xùn)練,在訓(xùn)練過程中相當(dāng)于引入了隨機(jī)的誤差,也相當(dāng)于梯度下降的時(shí)候會(huì)隨機(jī)地向一個(gè)靠近最大梯度的方向下降,而不是直接向最大梯度方向下降,不容易使梯度下降落入局部殘差最小的區(qū)間,以這種方法即使增加訓(xùn)練的輪次,也不會(huì)使網(wǎng)絡(luò)過早的擬合。圖像的數(shù)據(jù)增強(qiáng)則是依據(jù)圖像的特性,放大縮小、拉伸、旋轉(zhuǎn)等操作不會(huì)從根本上改變圖像的識別,因此對輸入樣本進(jìn)行此類操作可以增加有效樣本的數(shù)量。相對于導(dǎo)彈的測試數(shù)據(jù)判讀也是同理,對于局部細(xì)節(jié)來說,用Dropout方法引入隨機(jī)誤差,即表示了一定程度的隨機(jī)細(xì)節(jié)干擾也是可以接受的,這一點(diǎn)也符合實(shí)際判讀的數(shù)據(jù)特征。對于數(shù)據(jù)增強(qiáng)的方法,考慮到最終產(chǎn)品因?yàn)閱栴}在單元模塊層級已大量篩查,可用數(shù)據(jù)大多為正常的測試結(jié)果,而數(shù)據(jù)判讀的重點(diǎn)則是尋找異常的結(jié)果,因此除了對異常數(shù)據(jù)進(jìn)行時(shí)間尺度上的位移變換作為新的樣本,也可依據(jù)導(dǎo)彈測試的工作邏輯生成一些合適的異常樣本作為輸入。
1.3 循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)
循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)是一種可以構(gòu)建時(shí)間尺度上聯(lián)系的神經(jīng)網(wǎng)絡(luò),因此適用于基于上下文環(huán)境的數(shù)據(jù)判讀,生成數(shù)據(jù)、數(shù)據(jù)預(yù)測等[4],適合于處理層次化的數(shù)據(jù)[5],比如類似于自然語言的翻譯,對未來一段時(shí)間溫度曲線的判斷等,可以說RNN是一種適合于處理序列數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)[6]。對于導(dǎo)彈的測試數(shù)據(jù)判讀來說,由于一次測試數(shù)據(jù)中,不同的數(shù)據(jù)項(xiàng)目之間可以有存在相關(guān)性的情況,比如在某條數(shù)據(jù)發(fā)生狀態(tài)變化的時(shí)刻,另一條數(shù)據(jù)在延后一定時(shí)間后應(yīng)發(fā)生相應(yīng)的狀態(tài)變化,或取某一特定值才體現(xiàn)正確值。對于這種情況,如果只是對一條數(shù)據(jù)的一個(gè)項(xiàng)目單獨(dú)判讀,則會(huì)可能導(dǎo)致對于相對延時(shí)的錯(cuò)誤判讀。RNN則可以一定程度上解決這種問題。相比于一般的神經(jīng)網(wǎng)絡(luò),其激活前的輸入除了包含經(jīng)過傳播矩陣的上一層輸入及偏置值,還包括來自上一時(shí)刻的狀態(tài)傳播,具體如下:
其中, 代表偏置。
因此如何確定前置狀態(tài)值state的取值是較為重要的,如果state狀態(tài)只與前一時(shí)刻相關(guān)聯(lián),構(gòu)成的網(wǎng)絡(luò)較為簡單,同時(shí)有可能導(dǎo)致梯度消失問題,因此通常使用的RNN方法為長短期記憶(LSTM)方法[7]。
其前向傳播方法示意如下
其中,隱藏層可以為不止一層,隱藏層中的單一單元示意如下,其輸入包含三項(xiàng):輸入向量樣本、上一時(shí)間序列的輸出結(jié)果向量、上一時(shí)間的輸出狀態(tài)向量。
LSTM的網(wǎng)絡(luò)中包含三個(gè)門限即輸入門、遺忘門、輸出門。
圖中左下為輸入門,sigmod函數(shù)取值在0到1之間,圖中的×也并非表示向量內(nèi)積或叉積,而是向量的每一個(gè)元素和門限向量的同一位置元素相乘組成一個(gè)新的向量,因此輸入門計(jì)算得到的向量就如同一個(gè)門限控制輸入成分向后傳遞的量,決定輸入門限的包括上一次時(shí)間序列的輸出結(jié)果,上一次時(shí)間序列的攜帶狀態(tài)及本次的輸入。其中: