李政清,穆繼亮,莫小琴
(1. 三亞學(xué)院理工學(xué)院,海南 三亞 570200;2. 中北大學(xué)儀器與電子學(xué)院,山西 太原 030000)
在工業(yè)生產(chǎn)中,大部分?jǐn)?shù)據(jù)都具有時(shí)序性,其排列順序包含著重要的信息。對(duì)時(shí)序數(shù)據(jù)進(jìn)行分析時(shí),常常會(huì)有一些特殊的數(shù)據(jù)與其它 數(shù)據(jù)呈現(xiàn)的波動(dòng)規(guī)律不同,這些數(shù)據(jù)被稱為異常點(diǎn),異常點(diǎn)通常是由于系統(tǒng)誤差和隨機(jī)誤差造成的。異常點(diǎn)會(huì)直接影響到數(shù)據(jù)預(yù)測的結(jié)果,因此對(duì)異常點(diǎn)的識(shí)別與檢測非常重要。目前對(duì)異常點(diǎn)的判別方法主要有[1-4]:統(tǒng)計(jì)方法、距離方法、聚類方法、密度方法和極值理論方法等。時(shí)序數(shù)據(jù)主要通過簡潔的方式表示數(shù)據(jù)的基本特征,因此設(shè)計(jì)出合適的算法加快數(shù)據(jù)處理和識(shí)別數(shù)據(jù)處理異常點(diǎn)具有重要的意義。
文獻(xiàn)[5]使用多模態(tài)數(shù)據(jù)流技術(shù)和大數(shù)據(jù)流技術(shù)分別對(duì)異常和濫用進(jìn)行檢測,由模糊規(guī)則對(duì)異常和濫用的輸出結(jié)果執(zhí)行最后的檢測,并采用特征向量對(duì)數(shù)據(jù)流的實(shí)時(shí)運(yùn)行狀態(tài)進(jìn)行描述,該方法能夠較全面的反映數(shù)據(jù)流的基本特征,具有良好的擴(kuò)展性,但沒有對(duì)多模態(tài)數(shù)據(jù)流加以考慮。文獻(xiàn)[6]對(duì)實(shí)例進(jìn)行處理得出線性組合關(guān)系,并求出實(shí)例的鄰近關(guān)系矩陣,為了自動(dòng)選擇鄰近關(guān)系及算法中的參數(shù),采用譜聚類方法對(duì)數(shù)據(jù)的異常點(diǎn)進(jìn)行識(shí)別,將異常點(diǎn)在11個(gè)真實(shí)數(shù)據(jù)集上進(jìn)行比較,結(jié)果表明該方法具有較高的穩(wěn)定性,但計(jì)算過程耗時(shí)較長。文獻(xiàn)[7]提出統(tǒng)計(jì)的異常點(diǎn)檢測方法,對(duì)有增長率的時(shí)間序列數(shù)據(jù)進(jìn)行預(yù)處理,通過正態(tài)分布概率密度函數(shù)對(duì)置信區(qū)間外的異常點(diǎn)進(jìn)行修正,并采用壓縮變換函數(shù)防止對(duì)異常點(diǎn)的過糾正處理,該方法的預(yù)測精度具有明顯的提升,但還需要對(duì)潛在的異常點(diǎn)做進(jìn)一步的判斷。
基于以上研究,針對(duì)時(shí)序數(shù)據(jù)處理異常點(diǎn)識(shí)別過程卷積計(jì)算復(fù)雜度較高、模型占用空間大及運(yùn)行速度慢等問題,本文提出基于時(shí)序CNN的FPGA數(shù)據(jù)處理異常點(diǎn)識(shí)別方法。
時(shí)序數(shù)據(jù)的表示形式不統(tǒng)一,不利于直接應(yīng)用卷積神經(jīng)網(wǎng)絡(luò),因此需要對(duì)時(shí)序數(shù)據(jù)進(jìn)行特征提取。在數(shù)據(jù)采集和處理過程中,由于設(shè)備、系統(tǒng)和外部環(huán)境等原因可能造成數(shù)據(jù)發(fā)生錯(cuò)誤,因此實(shí)際中的數(shù)據(jù)不僅包含有用的數(shù)據(jù),還包含異常的數(shù)據(jù)。
數(shù)據(jù)異常點(diǎn)會(huì)造成數(shù)據(jù)質(zhì)量下降,影響數(shù)據(jù)的一致性與可靠性。根據(jù)錯(cuò)誤數(shù)據(jù)的來源,可將錯(cuò)誤數(shù)據(jù)分為噪聲錯(cuò)誤和缺失錯(cuò)誤兩種類型。根據(jù)噪聲錯(cuò)誤中噪聲的分布情況,可將其分成若干種類的噪聲,如高斯、泊松、散斑、椒鹽噪聲等噪聲的一種。缺失數(shù)據(jù)一般分為數(shù)據(jù)片段缺失和部分值缺失兩種情況。由于實(shí)際中噪聲錯(cuò)誤和缺失錯(cuò)誤比較復(fù)雜,若使用添錯(cuò)誤的加方法,很容易將錯(cuò)誤繼續(xù)添加到數(shù)據(jù)中,因此本文從以下幾方面加以考慮。
高斯噪聲:在通信過程中,通信信道很容易受到自然源的寬帶高斯噪聲影響,因此在數(shù)據(jù)采集過程中,由于不良的光照、透射和高溫等均會(huì)導(dǎo)致傳感器上產(chǎn)生高斯噪聲,高斯會(huì)隨著灰階的概率密度函數(shù)發(fā)生改變,公式可表示為
(1)
其中,a表示灰階;σ表示標(biāo)準(zhǔn)差;μ表示均值。
泊松噪聲:一般在亮度較低或高倍電子放大電路中存在泊松噪聲,泊松分布屬于離散概率分布,公式可表示為
(2)
散斑噪聲:一般在有源雷達(dá)或孔徑雷達(dá)周圍存在散斑噪聲,它是一種顆粒狀的干擾,主要影響醫(yī)學(xué)超聲和光學(xué)掃描的質(zhì)量,散斑噪聲是一種乘性噪聲,公式可表示為
ρspe=bimag+n*bimag
(3)
其中,n表示指定均值和方差的均值噪聲。
椒鹽噪聲:椒鹽噪聲通常由圖像信號(hào)中尖銳的干擾造成的,通過-1、0、1表示稀疏出現(xiàn)的黑白雜點(diǎn),其可以模擬數(shù)據(jù)中的隨機(jī)錯(cuò)誤。
數(shù)據(jù)片段缺失:每段數(shù)據(jù)均由若干數(shù)組組成,可以隨機(jī)刪除數(shù)據(jù)中的某段,在數(shù)據(jù)中添加數(shù)據(jù)片段缺失錯(cuò)誤。首先確定需要添加缺失錯(cuò)誤的起始位置和終止位置,然后在起始到終止部分的數(shù)組中添加錯(cuò)誤。
部分值缺失:在錄入信息的過程中,經(jīng)常出現(xiàn)一些數(shù)據(jù)缺失的情況,因此通過隨機(jī)刪除數(shù)據(jù)中某些值的方式添加錯(cuò)誤。首先通過一個(gè)變量確定是否對(duì)當(dāng)前的數(shù)據(jù)添加錯(cuò)誤,若需要添加,隨機(jī)的確定添加缺失錯(cuò)誤的起始位置和終止位置,對(duì)起始到終止部分的數(shù)據(jù)添加錯(cuò)誤;若不需要,則不對(duì)該段數(shù)據(jù)處理。
由于數(shù)據(jù)的采樣頻率不同,為了保證不同數(shù)據(jù)關(guān)聯(lián)的有效性,需要對(duì)各個(gè)數(shù)據(jù)進(jìn)行對(duì)齊處理,并提取出數(shù)據(jù)的特征。對(duì)于各種類型的數(shù)據(jù)樣本,將其轉(zhuǎn)化為可通過樞軸模態(tài)的時(shí)間戳表示形式,對(duì)樣本應(yīng)用合并函數(shù)collapse functions進(jìn)行處理,從而使所有數(shù)據(jù)具有相同長度。在collapse functions函數(shù)處理過程中,會(huì)舍棄時(shí)間間隔較小的數(shù)據(jù)序列。首先取出文本中的各個(gè)數(shù)據(jù),然后將得到的數(shù)據(jù)進(jìn)行對(duì)齊保存data[i],data[i]表示對(duì)齊數(shù)據(jù)中的第i個(gè)單詞。通過這樣的處理方式,可以清楚的知道每個(gè)數(shù)據(jù)中的單詞個(gè)數(shù)。
原始數(shù)據(jù)信息量較大,若進(jìn)行直接計(jì)算會(huì)占用大量的存儲(chǔ)空間,且大量的數(shù)據(jù)并非都是有用的,導(dǎo)致訓(xùn)練模型難以收斂,因此使用GloVe方法對(duì)原始數(shù)據(jù)中含有明顯特征的數(shù)據(jù)淺層特征進(jìn)行提取。GloVe算法中融入了先驗(yàn)統(tǒng)計(jì)信息,不僅可以提高模型的訓(xùn)練速度,還能控制單詞的權(quán)重,目標(biāo)函數(shù)用公式可表示為
(4)
其中,ei和ej分別表示單詞i和j對(duì)應(yīng)的詞向量;xij表示單詞j在單詞i中出現(xiàn)的次數(shù)和;gi和gj表示偏置項(xiàng);f(xij)表示修正函數(shù)。
在模型訓(xùn)練過程中,對(duì)卷積神經(jīng)網(wǎng)絡(luò)預(yù)處理可以提高運(yùn)算速度,有利于模型的定點(diǎn)量化。卷積神經(jīng)網(wǎng)絡(luò)由輸入層、卷積層、激活層和全連接層組成,卷積計(jì)算實(shí)際上是數(shù)據(jù)乘積后的累加操作,公式可表示為
(5)
(6)
其中,β表示縮放因子;μ表示均值;σ2表示方差;χ表示較小的正數(shù);δ表示偏置。歸一化層的增加對(duì)數(shù)據(jù)訓(xùn)練起到積極作用,但多一層的運(yùn)算,在一定程度上會(huì)降低運(yùn)算速率,因此將歸一化層的參數(shù)合并到卷積層的權(quán)值參數(shù)中,合并后卷積計(jì)算公式可表示為
(7)
經(jīng)過變換后,卷積計(jì)算在每次計(jì)算過程中都會(huì)減少開方和除法的運(yùn)算操作,可大大提高卷積的運(yùn)算速率。對(duì)激活層采用ReLU函數(shù)進(jìn)行處理,公式表示為
(8)
在FPGA中浮點(diǎn)運(yùn)算相比定點(diǎn)運(yùn)算要耗費(fèi)更多的時(shí)間,不同CNN模型的權(quán)值在零點(diǎn)兩側(cè)呈對(duì)稱分布,不同卷積層的權(quán)值具有動(dòng)態(tài)性,若對(duì)其進(jìn)行定點(diǎn)量化[9],將CNN模型中所有層的參數(shù)量化為同一范圍,會(huì)造成較為嚴(yán)重的精度損失,因此采用動(dòng)態(tài)指數(shù)定點(diǎn)方式對(duì)參數(shù)進(jìn)行量化。將每層參數(shù)分到Arr數(shù)組中,且每組中小數(shù)部分的位數(shù)是相同的,不同組間有差異。將每個(gè)網(wǎng)絡(luò)層分為輸入、權(quán)重和輸出三組,方便覆蓋每層參數(shù)的動(dòng)態(tài)范圍。動(dòng)態(tài)定點(diǎn)量化計(jì)算公式可表示為
(9)
由于輸入層每次傳入的數(shù)據(jù)不一樣,每層輸出的差異較大,不能確定輸入的量化范圍,為了減少計(jì)算量、保證精度,本文采用散度計(jì)算輸入?yún)?shù)定點(diǎn)化的尺度。首選構(gòu)建數(shù)據(jù)和定點(diǎn)數(shù)的映射關(guān)系,設(shè)置一個(gè)閾值H,通過閾值與定點(diǎn)數(shù)的最大值計(jì)算輸入尺度Sin。在選擇閾值和尺度時(shí)盡量減少數(shù)據(jù)丟失,可設(shè)置矯正數(shù)據(jù)集對(duì)輸入尺度進(jìn)行選擇,通過計(jì)算最小化散度確定最佳尺度,最小化散度用公式可表示為
(10)
其中,φ[x]和φ[x]表示離散概率分布。當(dāng)散度為最小值時(shí),可以求出閾值H,進(jìn)而求出每層參數(shù)的尺度Sin,公式可表示為
(11)
在CNN模型計(jì)算中,卷積層的輸出由多個(gè)嵌套循環(huán)卷積組成,導(dǎo)致卷積層計(jì)算量大、耗時(shí)多,而這種情況非常適合將CNN算法映射到FPGA中實(shí)現(xiàn)硬件加速。FPGA框架主要有CNN訓(xùn)練參數(shù)和硬件約束參數(shù)兩組輸入?yún)?shù),主要包含映射階段和實(shí)現(xiàn)階段。在映射階段,F(xiàn)PGA框架將CNN訓(xùn)練結(jié)果切分成若干細(xì)粒度子圖,并將其映射到FPGA集群的各個(gè)節(jié)點(diǎn)上。在實(shí)現(xiàn)階段FPGA的RTL代碼生成器根據(jù)映射階段產(chǎn)生的參數(shù)配置文件為FPGA節(jié)點(diǎn)建立加速器代碼。
FPGA框架利用CNN訓(xùn)練結(jié)果對(duì)若干卷積層特征進(jìn)行顯式劃分,將算法簡化到可以在多項(xiàng)式的時(shí)間要求內(nèi)求解完畢。FPGA算子圖切分分為粗粒度切分和細(xì)粒度切分兩個(gè)步驟。
(12)
大規(guī)模集群:卷積引擎的數(shù)量為Neng_i,卷積引擎的最大性能為Per(Neng_i),那么卷積引擎的需求和系統(tǒng)處理能力用公式可表示為
(13)
在FPGA集群中,一部分卷積引擎和緩存器可分別采用硬核單元(θNeng_i)和(?Bufi)構(gòu)建,另一部分卷積引擎和緩存器可分別采用軟核單元((1-θ)Neng_i)和((1-?)Bufi)構(gòu)建,F(xiàn)PGA的硬件約束條件用公式可表示為:
(14)
其中,f2,…f5表示返回對(duì)應(yīng)模塊所占用邏輯資源的個(gè)數(shù)。
小規(guī)模集群:為了使所有的CNN訓(xùn)練加速器都存入小規(guī)模集群中,采用模型參數(shù)均衡方法,目標(biāo)函數(shù)最小化存儲(chǔ)需求用公式可表示為
Nee=max(f6(?iBufi)+f7(?iBufi,(1-?)Bufi))
(15)
其中,f6和f7表示返回對(duì)應(yīng)模塊所占用邏輯資源的個(gè)數(shù)。采用模型參數(shù)均衡方法可以將最后幾層FPGA所需的模型參數(shù)存儲(chǔ)到前幾層的遠(yuǎn)程FPGA上,充分利用前幾層FPGA多余空間存儲(chǔ)器,對(duì)于CNN模型的所有卷積層,僅需使用FPGA片上存儲(chǔ)器即可。
為了驗(yàn)證基于時(shí)序CNN的FPGA數(shù)據(jù)處理異常點(diǎn)識(shí)別方法的有效性,本文選擇C語言編寫程序在FPGA上實(shí)現(xiàn)數(shù)據(jù)異常點(diǎn)識(shí)別的加速計(jì)算,選擇格式為PascalVOC的人臉數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。人臉數(shù)據(jù)集包含2000張圖像數(shù)據(jù),隨機(jī)選取1500張作為訓(xùn)練集,剩余500張作為測試集,CNN模型為15層的卷積網(wǎng)絡(luò)。
保持每層輸入特征值位寬不變的情況下,對(duì)權(quán)值定點(diǎn)量化,驗(yàn)證人臉數(shù)據(jù)集每類平均準(zhǔn)確率值隨量化位寬的變化情況,同時(shí)驗(yàn)證平均準(zhǔn)確率、精度和召回率隨量化位寬的變化情況,實(shí)驗(yàn)結(jié)果如圖1所示。
a.不同類別平均準(zhǔn)確率變化
b.平均準(zhǔn)確率、精度、召回率變化
圖1 權(quán)值定點(diǎn)化結(jié)果
從圖中可以看出,本文方法對(duì)權(quán)值定點(diǎn)化具有較好的魯棒性,當(dāng)權(quán)值參數(shù)壓縮到8bit時(shí),壓縮率比較大,數(shù)據(jù)精度和平均準(zhǔn)確率損失較小,說明本文方法可以充分利用FPGA資源,高效讀取數(shù)據(jù),可充分識(shí)別數(shù)據(jù)處理中的異常點(diǎn)。
提取量化后的模型參數(shù),使用C語言搭建網(wǎng)絡(luò)模型后,輸入量化后的人臉數(shù)據(jù)訓(xùn)練集,將真生成的文件導(dǎo)入開發(fā)板上,輸入數(shù)據(jù)進(jìn)行驗(yàn)證,得到加速器SoC各個(gè)資源的利用情況如表1所示。
表1 加速器SoC各個(gè)資源利用情況
從表中可以看出,處理器與加速器在工作頻率為300MHz下,完成單張圖片數(shù)據(jù)所需要的推理時(shí)間為118.5ms,與其它FPGA的實(shí)現(xiàn)方法相比,在能效和峰值性能上有較大的提升。
本文提出一種基于時(shí)序CNN的FPGA數(shù)據(jù)處理異常點(diǎn)識(shí)別方法,設(shè)計(jì)了卷積計(jì)算策略,通過C語言編寫程序在FPGA上實(shí)現(xiàn)數(shù)據(jù)異常點(diǎn)識(shí)別,選擇人臉數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。本文方法不僅有較高的運(yùn)算峰值,還具有較高的FPGA資源利用率,通過人臉識(shí)別數(shù)據(jù)集對(duì)平均準(zhǔn)確率、精度和召回率進(jìn)行驗(yàn)證,損失均在1%以內(nèi),說明本文方法可有效利用FPGA資源,充分識(shí)別數(shù)據(jù)處理中的異常點(diǎn)。