王福杰,俞恒杰,陸輝山
(中北大學(xué)機械工程學(xué)院,山西太原 030051)
PSD(Position Sensitive Detector)是一種能在感光表面連續(xù)移動光點位置的光電子傳感器,屬于位置敏感檢測器,廣泛應(yīng)用于光學(xué)位置和角度的測量與控制、位移和振動監(jiān)測、激光光束校準、自動范圍探測系統(tǒng)以及人體運動及分析系統(tǒng)等。然而,由于敏感層電阻不均、電極結(jié)構(gòu)差異以及邊緣效應(yīng)等因素,PSD存在較大非線性誤差[1],使其輸出坐標不能正確地反映入射光點的實際位置。
孫淑光、王天游[2]等基于壓電執(zhí)行器的精密刀具伺服系統(tǒng)精確測量平移滑塊的整體直線度誤差,實現(xiàn)對PSD輸出結(jié)果的誤差補償;A.Saha,S.Das,M. Suresh[3]等將微機電系統(tǒng)數(shù)字加速度計集成在安裝二維PSD的同一平臺上,以消除自振的影響;S. Regnier,S. Haliyo等[4]提出了一種非線性標定方法將正常位置電壓響應(yīng)的靈敏度誤差控制在3.6%以內(nèi)。通過組建硬件系統(tǒng)對誤差進行補償?shù)姆椒▽ο到y(tǒng)的要求高,非線性標定的算法需要得到電壓相關(guān)靈敏度的連續(xù)函數(shù)。軟件補償方法有模擬退火方法、差分進化算法、BP神經(jīng)網(wǎng)絡(luò)等。陳盛,趙東標,陸永華等[5]采用模擬退火算法對螺紋參數(shù)測量誤差進行修正,但它的初始溫度要高、終止溫度要低、降溫速率要慢,且抽樣數(shù)目多,因此優(yōu)化過程較長;呼靜靜,李國勇等[6]采用差分進化算法辨識直線電機的摩擦模型參數(shù),原理簡單,受控參數(shù)少,但隨著迭代次數(shù)的增加,個體間的差異會逐漸減小,影響變異的多樣性;Z. Sun,Q. Song等[7]利用反向傳播(BP)神經(jīng)網(wǎng)絡(luò)來補償二維 PSD的非線性誤差,但它的收斂速度仍舊非常緩慢,進入局部極小的情況仍舊很多。
本文在現(xiàn)有研究的基礎(chǔ)上,利用改進的粒子群算法(Modified Particle Swarm Optimization,MPSO)優(yōu)化后的人工神經(jīng)網(wǎng)絡(luò)模型對PSD輸出的非線性誤差進行補償。與 BP 神經(jīng)網(wǎng)絡(luò)對比,進一步表明改進 MPSO-BP算法在非線性誤差補償上的優(yōu)越性。
實驗中建立了基于高靈敏度光電位置傳感器(PSD)的光電測試系統(tǒng),測量并記錄已知角度下的系統(tǒng)輸出的電信號;通過設(shè)計三層 BP神經(jīng)網(wǎng)絡(luò)模型,以MPSO 算法在多源傳感數(shù)據(jù)樣本集上確定模型連接權(quán)值和閾值,之后將訓(xùn)練好的 MPSO-BP 神經(jīng)網(wǎng)絡(luò)用于PSD輸出誤差的補償,最后在測試集上對 MPSO-BP 算法的收斂速度和識別準確率進行了分析,并同現(xiàn)有方法做了比較。
(1)
由于PSO中粒子都向最佳位置聚集,會形成粒子種群的快速趨同效應(yīng),容易陷入局部最優(yōu)和過早收斂現(xiàn)象[10]。
為了克服上述不足,分別對慣性因子和學(xué)習(xí)因子做出改進[9-12]。在優(yōu)化初期,ω取為較大值,增強全局尋優(yōu)能力,這樣有利于跳出局部極小,而隨著優(yōu)化過程的不斷推進,ω應(yīng)逐漸減小,這樣有利于增強局部搜索能力,提高算法的收斂速度。故采取線性遞減慣性因子:
(2)
式中:ωmax為初始慣性因子;ωmin為最終慣性因子;itermax為最大迭代次數(shù);iter為當前迭代次數(shù)。
學(xué)習(xí)因子的大小決定了粒子自我認知和社會認知對粒子的影響,為了防止陷入局部最優(yōu),可以通過動態(tài)地改變c1和c2來保持粒子始終具有多樣性。優(yōu)化后的算法在初期使粒子具有大的自我認識(大的c1)和小的社會認知(小的c2),便于快速搜索;在算法后期,應(yīng)有小的自我認知(小的c1)和大的社會認知(大的c2),加快算法收斂和在全局范圍內(nèi)尋找最優(yōu)解。對此有如下改進:
(3)
式中:cst和cend分別為c1的初始值和最終值。
BP神經(jīng)網(wǎng)絡(luò)是一種采用誤差反向傳播訓(xùn)練算法的多層前向神經(jīng)網(wǎng)絡(luò),其理論依據(jù)堅實、推導(dǎo)過程嚴謹、物理概念清晰、通用性強,具有較強的自學(xué)習(xí)能力,能夠解決非線性模式識別問題。
多層前向神經(jīng)網(wǎng)絡(luò)的輸入與輸出之間的關(guān)系,可以看成是一種映射關(guān)系,這種映射是一個高度非線性映射,如果輸入節(jié)點數(shù)為N,輸出節(jié)點數(shù)為M,網(wǎng)絡(luò)是從N維歐氏空間到M維歐氏空間的映射。這種映射是通過輸入層與隱層之間的傳遞函數(shù)(作用函數(shù)或激活函數(shù)),以及隱層與隱層之間,隱層與輸出層之間的傳遞函數(shù)將各層的輸入經(jīng)傳遞函數(shù)作用后輸出來實現(xiàn)的[3]。其結(jié)構(gòu)圖見圖1所示。
據(jù)此建立三層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型:輸入層節(jié)點數(shù)N個,隱層節(jié)點數(shù)S個,輸出層節(jié)點數(shù)M個。目前,傳遞函數(shù)的選擇常用的是3種Sigmoid函數(shù)[4]:log-sigmoid函數(shù)、tansig函數(shù)、purelin函數(shù)。
圖1 BP網(wǎng)絡(luò)結(jié)構(gòu)
MPSO-BP神經(jīng)網(wǎng)絡(luò)的具體實現(xiàn)流程如圖2所示。
圖2 MPSO-BP算法流程
建立了基于PSD的光電測試系統(tǒng)。實驗之前,對系統(tǒng)進行標定:用高精度的經(jīng)緯儀代替物體,旋轉(zhuǎn)經(jīng)緯儀產(chǎn)生類似物體擾動的角位移,測量并記錄已知角度下系統(tǒng)輸出的電信號。標定角位移如圖3所示,在標定角位移下的電壓輸出如圖4所示。
圖3 標定的水平和垂直角位移
圖4 標定輸出的電信號
理論上,輸出電壓和水平角位移成線性關(guān)系;輸出電壓和垂直角位移成線性關(guān)系。但是實際由于各種因素影響,從圖3和圖4可以看出,被測量與輸出結(jié)果出現(xiàn)非線性偏差。
本文根據(jù)一組角位移坐標對應(yīng)一組電壓坐標的關(guān)系,采用MPSO-BP神經(jīng)網(wǎng)絡(luò)將電壓坐標映射到角位移坐標。根據(jù)該方法將實驗所測得的電壓值轉(zhuǎn)化為對應(yīng)的角位移。
根據(jù)標定數(shù)據(jù),建立一個2×35×2的BP網(wǎng)絡(luò)模型。輸入層神經(jīng)元2個,隱含層35個神經(jīng)元,輸出層2個神經(jīng)元。傳遞函數(shù)采用sigmoid函數(shù):第一層采用tangsig函數(shù),第二層采用purelin函數(shù)。無偏移向量θ。網(wǎng)絡(luò)設(shè)計訓(xùn)練目標誤差為0.000 1,粒子最大速度為0.5,初始慣性因子為0.9,最終慣性因子為0.3,c1的初始值為1、最終值為3,最大迭代次數(shù)為200。實驗采用動態(tài)信號測試分析系統(tǒng)DH5920進行測試數(shù)據(jù)記錄。
實驗首先測得299組數(shù)據(jù)(水平角位移電壓值、垂直角位移電壓值)并進行人工標定,標定后得到標準的水平角位移和垂直角位移。將這299組數(shù)據(jù)分別作為BP神經(jīng)網(wǎng)絡(luò)和PSO-BO神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本,隨機選取其中240組數(shù)據(jù)(80%)用作模型的訓(xùn)練,其余59組數(shù)據(jù)用作模型的測試,比較訓(xùn)練結(jié)果。算法訓(xùn)練目標是使得網(wǎng)絡(luò)輸出和期望輸出的誤差平方和達到最小,適應(yīng)度函數(shù)為
(4)
為更好的體現(xiàn)誤差相對于標定數(shù)據(jù)的偏差程度,將網(wǎng)絡(luò)輸出和期望輸出的誤差平方和的算術(shù)平均值作為評價模型的誤差指標,即
(5)
BP神經(jīng)網(wǎng)絡(luò)與MPSO—BP神經(jīng)網(wǎng)絡(luò)的輸出誤差對比如圖5和圖6所示。
圖5 BP神經(jīng)網(wǎng)絡(luò)角位移誤差
圖6 MPSO-BP神經(jīng)網(wǎng)絡(luò)角位移誤差
為驗證算法的特性,分別使用BP神經(jīng)網(wǎng)絡(luò)、MPSO-BP神經(jīng)網(wǎng)絡(luò)對訓(xùn)練樣本進行100次模型建立與測試,分別計算平均誤差,如表1所示。
從誤差的對比可以看出,MPSO-BP神經(jīng)網(wǎng)絡(luò)的水平角位移誤差為BP神經(jīng)網(wǎng)絡(luò)水平角位移誤差的7.3%,其垂直角位移誤差為BP神經(jīng)網(wǎng)絡(luò)水平角位移
表1 100次測試的平均誤差統(tǒng)計
誤差的29.1%,其絕對誤差總和為BP神經(jīng)網(wǎng)絡(luò)水平誤差總和的17.6%;相比于BP神經(jīng)網(wǎng)絡(luò)0.297%的相對誤差,MPSO-BP神經(jīng)網(wǎng)絡(luò)的相對誤差減小0.052%,準確度提高5倍以上。
將MPSO學(xué)習(xí)訓(xùn)練好的網(wǎng)絡(luò)權(quán)值矩陣用于該系統(tǒng)信號分析處理,實驗采樣頻率200 000 Hz,記錄時間0~5.24287 s,數(shù)據(jù)分析時間段為0~0.066 82 s。試驗獲得的電信號如圖7和圖8所示,共13 366組數(shù)據(jù)。
圖7 試驗水平角位移電壓值
圖8 試驗垂直角位移電壓值
經(jīng)過MPSO-BP神經(jīng)網(wǎng)絡(luò)轉(zhuǎn)換處理后的角位移如圖9和圖10所示。
圖9 轉(zhuǎn)換后的水平角位移
圖10 轉(zhuǎn)換后的垂直角位移
特別地,為了增強對比性,圖中未將0.055 s后的畸變信號剔除。對比圖7和圖9,以及圖8和圖10:很明顯地,MPSO-BP神經(jīng)網(wǎng)絡(luò)處理后,角位移數(shù)據(jù)保持了原電信號數(shù)據(jù)的特征,保持了數(shù)據(jù)的一致性。
本文針對光電位置傳感器測試系統(tǒng)的輸出非線性問題,提出了采用改進粒子群算法和BP神經(jīng)網(wǎng)絡(luò)對輸出結(jié)果進行補償修正。將優(yōu)化后的初始值代入神經(jīng)網(wǎng)絡(luò)中進行訓(xùn)練,加快學(xué)習(xí)速率、克服陷入局部最優(yōu)的情況,同時提高識別準確率。試驗結(jié)果表明:該方法有很好的容錯和泛化能力,能有效降低PSD測試系統(tǒng)本身及環(huán)境對測量精度的影響。