車兵輝,尹欣繁,彭先敏,章貴川
(中國空氣動力研究與發(fā)展中心,四川 綿陽 621000)
天平是用于風洞試驗中的具有多分量的力傳感器,在使用之前必須對其進行校準和標定,獲取其計算公式。天平的靜校是在實驗室內(nèi)模擬天平使用時的受力狀態(tài),通過在各分量上單獨加載或組合加載不同的載荷,獲取天平的對應(yīng)輸出電壓值,然后通過插值擬合、解方程等方法獲取輸入和輸出量之間的對應(yīng)函數(shù)。目前普遍采用線性插值擬合的方法獲取天平公式[1],然而多分量天平各分量之間存在干擾,在擬合公式是要考慮干擾項,通常二次干擾和組合干擾會出現(xiàn)非線性特性,采用線性擬合方法會產(chǎn)生較大誤差。
神經(jīng)網(wǎng)絡(luò)具有很強的非線性映射和泛化功能,能夠較好地描述非線性系統(tǒng)和不確定系統(tǒng)。目前神經(jīng)網(wǎng)絡(luò)在多領(lǐng)域獲得了極其廣泛的應(yīng)用,尤其是BP網(wǎng)絡(luò),即反向傳播網(wǎng)絡(luò),使用最為廣泛。BP網(wǎng)絡(luò)是利用非線性可微分函數(shù)進行權(quán)值訓(xùn)練的多層網(wǎng)絡(luò),在函數(shù)逼近、多維插值、模式識別等領(lǐng)域得到廣泛應(yīng)用[2]。在系統(tǒng)辨識、傳感器非線性修正、傳感器校準等方面也有廣泛應(yīng)用。多分量天平是一個典型的多變量傳感器,輸入輸出關(guān)系是一個典型的多輸入多輸出系統(tǒng),因此本文針對多分量天平的特點,采用BP神經(jīng)網(wǎng)絡(luò)算法對多分量天平公式擬合方法進行研究,通過算例驗證此方法的應(yīng)用效果。
BP網(wǎng)絡(luò)(Back-Propagation Network)又稱反向傳播神經(jīng)網(wǎng)絡(luò),是一種多層的前饋神經(jīng)網(wǎng)絡(luò),他是一種具有3層或3層以上的神經(jīng)網(wǎng)絡(luò),由輸入層、中間層、輸出層組成,中間層可以是1個也可以是多個,典型的3層網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,信號從輸入層進入順序經(jīng)過中間層節(jié)點處理,最后傳到輸出節(jié)點,同一層內(nèi)節(jié)點互不相連,且每一層節(jié)點都與相鄰層所有節(jié)點相連,因此每一層節(jié)點只對下一層節(jié)點產(chǎn)生影響[3-6]。其主要的特點是:信號是前向傳播的,而誤差是反向傳播的。
圖1 典型的3層網(wǎng)絡(luò)結(jié)構(gòu)
BP網(wǎng)絡(luò)采用的傳遞函數(shù)是非線性變換函數(shù)——Sigmoid函數(shù)(又稱S函數(shù)),即:
(1)
式中,xi為神經(jīng)網(wǎng)絡(luò)中第i個輸入,wij為前一層節(jié)點i至該層節(jié)點j之間的權(quán)值,輸出層傳遞函數(shù)為線性傳遞函數(shù)。
由于BP網(wǎng)絡(luò)采用誤差梯度最快下降法,在計算誤差梯度時需要對傳遞函數(shù)求偏導(dǎo),S函數(shù)本身及其導(dǎo)數(shù)都是連續(xù)的,因而在處理上十分方便。
BP網(wǎng)絡(luò)學(xué)習(xí)算法的基本原理是梯度最速下降法,他的主要思想是調(diào)整網(wǎng)絡(luò)連接權(quán)值,使網(wǎng)絡(luò)總誤差最小,也就是采用梯度搜索原理,尋找合適的連接權(quán)值,使網(wǎng)絡(luò)的實際輸出值與期望輸出至誤差均方差最小。網(wǎng)絡(luò)的學(xué)習(xí)過程是一種誤差不斷向后傳播不斷修正權(quán)系數(shù)的過程。這種學(xué)習(xí)過程以一種訓(xùn)練過程,是網(wǎng)絡(luò)各神經(jīng)元連接方式、連接權(quán)值和閾值的調(diào)整尋優(yōu)過程,更是參數(shù)辨識過程。學(xué)習(xí)的方法是使誤差達到設(shè)定值,從而獲得輸入輸出數(shù)據(jù)之間的關(guān)系。
BP網(wǎng)絡(luò)所有的連接權(quán)值和閾值都可以通過學(xué)習(xí)調(diào)節(jié)。多層網(wǎng)絡(luò)學(xué)習(xí)過程包含正向和反向傳播兩個階段,第一階段是信號的前向傳播,輸入信息從輸入層經(jīng)過中間層逐層處理,并傳到輸出層,每層神經(jīng)元的輸出只影響下一層神經(jīng)元的狀態(tài)。如果輸出層不能得到期望輸出,則進入第二階段反向傳播,誤差信號從輸出層到中間層,最后到輸入層,依次調(diào)節(jié)中間層到輸出層的權(quán)重和閾值,輸入層到中間層的權(quán)重和閾值。重復(fù)以上兩個階段,直到系統(tǒng)整體誤差最小。
根據(jù)以上分析,多層BP網(wǎng)絡(luò)學(xué)習(xí)的具體過程和步驟如下:
1)初始化參數(shù),給權(quán)值和閥值賦予(0,1)區(qū)間的隨機數(shù)。
2)選取一組輸入和目標樣本。
3)用輸入樣本、權(quán)值、閥值逐層計算輸出值,并與期望目標比較,當誤差滿足時結(jié)束,否則進行下一步。
4)根據(jù)誤差修正權(quán)值和閥值,公式如下:
(2)
其中:v為中間層至輸出層連接權(quán)值,w為輸入層至中間層的連接權(quán)值,γ和θ分別是輸出層閥值和中間層閥值,d為輸出層各節(jié)點誤差,b為中間層節(jié)點輸出,e為中間層各節(jié)點誤差,x為輸入層節(jié)點輸入,λ和β為學(xué)習(xí)參數(shù),取之范圍為(0,1)區(qū)間。
5)返回步驟2)重復(fù),直到所有樣本學(xué)習(xí)完為止。
網(wǎng)絡(luò)訓(xùn)練完成后可以獲得v,w,γ,θ參數(shù)的值,則網(wǎng)絡(luò)可表示為:
(3)
式中,N為中間層節(jié)點數(shù),F(xiàn)i(i=1,…,6)為輸出信號,g為輸出層節(jié)點傳遞函數(shù),f為中間層節(jié)點傳遞函數(shù),Sm(m=1,…,6)為輸入信號。根據(jù)上式即可計算出給定輸入值對應(yīng)的輸出值。
天平的靜校是在實驗室內(nèi)模擬天平使用時的受力狀態(tài),對天平施加靜態(tài)載荷,通過靜校求出天平使用公式、精度和準度[7]。
天平加載得到一組施加載荷和相應(yīng)的電壓值輸出,設(shè)Fi(i=1,…,6表示6個分量)為加載的載荷,Si(i=1,…,6表示6個分量)為輸出電壓值,則天平公式可表示為:
(4)
式中,ai,bi,…,fi(i=1…27)分別為Fi(i=1…6)分量的27個校準參數(shù)。以上關(guān)系建立在參數(shù)ai,bi,…,fi(i=1…27)為線性條件下,加載載荷Fi和電壓輸出值Si(i=1…6)為已知量,參數(shù)ai,bi,…,fi通過曲線擬合獲得[8-9]。
將上式簡寫為:
[F]=[K][S]
(5)
則系數(shù)矩陣[K]可表示為:
[K]=[[S]T[S]]-1[S]T[F]
(6)
根據(jù)上式可計算出天平公式中的系數(shù)矩陣,從而獲得天平計算公式。
以上分析是建立在系數(shù)矩陣為線性的,如果系數(shù)矩陣具有非線性特性,通過上述方法擬合出的計算公式會有較大的誤差。
天平校準是根據(jù)加載已知載荷作為天平系統(tǒng)的輸入,獲得的各分量應(yīng)變計輸出電壓為輸出。天平系統(tǒng)模型是載荷到電壓值之間的映射關(guān)系,然而在使用時天平所加載的載荷是未知數(shù),可獲取的是各分量應(yīng)變計電壓值,需要根據(jù)電壓值求取載荷值,因此需要獲取電壓值到載荷值之間的映射關(guān)系,是天平系統(tǒng)模型的反函數(shù),天平公式的擬合就是求取天平系統(tǒng)模型的反函數(shù),圖2給出了天平公式擬合原理。
圖2 天平公式擬合原理
根據(jù)BP神經(jīng)網(wǎng)絡(luò)具有極強的輸入-輸出非線性映射能力的特點,以天平校準獲得的各分量應(yīng)變計輸出電壓值數(shù)據(jù)集Si(i=1…6)為輸入樣本,對應(yīng)的加載載荷Fi(i=1…6)為輸出樣本,對神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練,逐層計算輸出,并與目標值比較,獲取誤差e,根據(jù)誤差修正各層權(quán)重矩陣,使得擬合誤差滿足要求,完成訓(xùn)練過程,得到各層的連接權(quán)重矩陣。在使用時,根據(jù)獲得的天平各分量的電壓值,采用式(3)即可計算出對應(yīng)的載荷值。
BP神經(jīng)網(wǎng)絡(luò)中間層節(jié)點數(shù)可自由設(shè)定,研究表明一個三層網(wǎng)絡(luò)可實現(xiàn)以任意精度近似任何連續(xù)函數(shù)。因此采用BP神經(jīng)網(wǎng)絡(luò)作為天平公式模型是可行的。神經(jīng)網(wǎng)絡(luò)訓(xùn)練時加載輸入端的數(shù)據(jù)太大,會使參數(shù)收斂速度慢。此外,由于在神經(jīng)網(wǎng)絡(luò)中采用S型函數(shù),輸出范圍為[0,1],因此在神經(jīng)網(wǎng)絡(luò)訓(xùn)練前對數(shù)據(jù)進行變換,使其在區(qū)間[0,1],變換公式如下:
(7)
式中,xi為輸入或輸出數(shù)據(jù),xmin為數(shù)據(jù)樣本中的最小值,xmax為數(shù)據(jù)樣本中的最大值。
建立神經(jīng)網(wǎng)絡(luò)天平公式模型的步驟如下:
1)獲取天平校準原始數(shù)據(jù)。表1給出了天平校準時的部分加載載荷數(shù)據(jù)(各分量的最大、最小值和零載荷),每個分量的加載載荷在量程范圍內(nèi)等間隔選取,六各分量共計81個樣本,表2給出了對應(yīng)的天平輸出電壓值。
表1 部分典型加載載荷 kg、kg·m
2)由式(7)將原始數(shù)據(jù)進行歸一化,得到訓(xùn)練神經(jīng)網(wǎng)絡(luò)的輸入輸出樣本。
3)確定神經(jīng)網(wǎng)絡(luò)輸入輸出端數(shù)量、各層節(jié)點輸、λ和β的值。網(wǎng)絡(luò)輸入端數(shù)量與輸入層節(jié)點數(shù)量相同,輸出端數(shù)量與輸出層節(jié)點數(shù)相同,均等于天平的份量個數(shù)(一般為6)。中間層節(jié)點數(shù)根據(jù)擬合精度確定,精度要求高時,取較大值,反之亦然。中間層數(shù)量、λ和β的值的確定需要結(jié)合精度要求、訓(xùn)練效果等確定。根據(jù)所確定的輸入輸出數(shù)量建立的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
4)將訓(xùn)練樣本輸入構(gòu)建好的網(wǎng)絡(luò)進行訓(xùn)練,直到達到要求的精度為止,保存獲得的連接權(quán)重和閾值。
5)將獲得的連接權(quán)重和閾值帶入式(3)即可獲得天平載荷計算公式。
采用c語言實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,將訓(xùn)練樣本讀入程序,實現(xiàn)自動學(xué)習(xí),并保存訓(xùn)練后的結(jié)果。
根據(jù)第1節(jié)中描述的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練步驟編寫程序,圖3給出了軟件實現(xiàn)的流程圖。
首先建立網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)并初始化變量,網(wǎng)絡(luò)數(shù)據(jù)結(jié)構(gòu)如下:
typedef struct BPNet{
int LayerNum;//中間層數(shù)量
double **v;//中間層權(quán)矩陣
double **w;//輸出層權(quán)矩陣
double StudyRate;//學(xué)習(xí)率
double *bi;//中間層閥值
double *bo;//輸出層閥值
double Accuracy;//精度控制參數(shù)
int MaxLoop;//最大循環(huán)次數(shù)
}BPNet;
表2 對應(yīng)的天平輸出電壓值(單位:10 μV)
圖3 軟件實現(xiàn)的流程圖
變量主要有中間層權(quán)重矩陣V和閾值bi、輸出層權(quán)重矩陣W和閾值bo,其中V為m×n的二維數(shù)組,W為n×r的二維數(shù)組,bi為n個元素的一維數(shù)組,bo為r個元素一維數(shù)組,m為輸入層個數(shù),n為中間層個數(shù),r為輸出層個數(shù)。將這些變量初始化為(0,1)范圍內(nèi)的隨機數(shù)。
訓(xùn)練過程實現(xiàn)如下:
讀取樣本并根據(jù)式(7)歸一化樣本數(shù)據(jù),初始化學(xué)習(xí)率StudyRate、精度Accuracy等參數(shù);
E=0;//初始化誤差
While E>Accuracy do
{
For i=1 to SamplesNumber
{
For k=1 to n//計算中間層輸出
{
}
For t=1 to r//計算輸出層輸出
{
}
計算輸出誤差e;
按照式(2)修正權(quán)重矩陣和閥值;
}
E=E+e;
}
保存得到的權(quán)值矩陣和閥值向量;
訓(xùn)練結(jié)束。
采用某天平的校準數(shù)據(jù),共81個樣本。選用以下參數(shù)對網(wǎng)絡(luò)進行訓(xùn)練:輸入層節(jié)點數(shù)6,分別為天平6個分量(3個力和3個力矩)的電壓值,中間層節(jié)點數(shù)為10,輸出層節(jié)點數(shù)6,分別為天平6個分量的載荷,學(xué)習(xí)率λ和β取0.001,目標精度0.001。將樣本歸一化后輸入網(wǎng)絡(luò),神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)16 700次達到精度要求,圖4給出了訓(xùn)練收斂特性。
圖4 訓(xùn)練收斂特性
從圖中可以看出訓(xùn)練過程能夠很好地收斂,訓(xùn)練次數(shù)越多精度越高,增加訓(xùn)練次數(shù)可近一步提高訓(xùn)練精度。中間層的節(jié)點數(shù)關(guān)系到網(wǎng)絡(luò)的訓(xùn)練性能,圖中也給出了中間層節(jié)點數(shù)為15、20、30時的收斂特性,節(jié)點數(shù)增加時收斂速度會加快,當節(jié)點數(shù)為30時過程中出現(xiàn)波動,收斂速度的沒有明顯變化,因此節(jié)點數(shù)的選擇不是越大越好,對于輸入向量數(shù)較少的網(wǎng)絡(luò)中間層數(shù)量不宜選擇過大,需根據(jù)訓(xùn)練結(jié)果綜合考慮。
為了檢驗神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果,選取訓(xùn)練樣本中的一部分作為檢驗樣本,將輸入值進行歸一化后,根據(jù)式(3)計算電壓值對應(yīng)的載荷值,通過網(wǎng)絡(luò)計算出的載荷值為歸一化后的數(shù)據(jù),要獲取實際載荷值,需要采用訓(xùn)練時的歸一化參數(shù)進行反歸一化,反歸一化公式如下:
(8)
圖5 兩種方法計算的誤差
本文通過對天平校準數(shù)據(jù)的處理和公式擬合方法進行了研究,提出了BP神經(jīng)網(wǎng)絡(luò)的擬合方法,建立了基于神經(jīng)網(wǎng)絡(luò)的天平輸入輸出模型,通過校準數(shù)據(jù)對模型進行訓(xùn)練。這種方法充分利用了神經(jīng)網(wǎng)路的非線性特性、學(xué)習(xí)能力,通過樣本訓(xùn)練逼近系統(tǒng)的輸入輸出特性,有效地克服了系統(tǒng)的非線性誤差。結(jié)果表明,采用神經(jīng)網(wǎng)絡(luò)模型的天平公式擬合和采用多項式擬合方法相比,天平公式的計算精度平均提高了67%,取得了很好的效果。該方法為天平或其他多變量傳感器的校準提供了新的思路。