王同珍, 黃明煒, 黃宏安, 林進潯, 陳國棟
(1.福州大學(xué) 物理與信息工程學(xué)院,福建 福州 350108;2.福建數(shù)博訊信息科技有限公司,福建 福州 350002)
藥物的最終質(zhì)量和效果與生產(chǎn)環(huán)境的溫度有著密不可分的關(guān)系,生產(chǎn)及保存過程中的溫度波動都有可能造成藥物的失效,后果嚴(yán)重。因此制藥廠對于溫度傳感器的準(zhǔn)確性要求較高。但是現(xiàn)有的高精度溫度傳感器價格過于高昂,故對于部分場景,以較低成本實現(xiàn)較高精度的溫度傳感器校準(zhǔn)有很大的研究價值與應(yīng)用意義。然而,很大一部分溫度傳感器由于設(shè)計水平、制造工藝以及生產(chǎn)成本的制約存在一定的誤差,此外,在實際使用過程中由于設(shè)備老化、環(huán)境多變等因素的影響,也會產(chǎn)生一定的誤差[1]。因此,通過后續(xù)加入校準(zhǔn)模塊來減小乃至消除部分誤差就顯得尤為重要。制藥廠一般要求溫度在18℃~26℃范圍內(nèi)保持恒定,故將溫度傳感器校準(zhǔn)范圍具體至10℃~30℃。
BP神經(jīng)網(wǎng)絡(luò)[2]由輸入層、隱藏層、輸出層組成。數(shù)據(jù)通過輸入層輸入神經(jīng)網(wǎng)絡(luò),經(jīng)線性變換處理,再由激活層進一步到隱藏層輸出。BP算法利用梯度搜索技術(shù)使神經(jīng)網(wǎng)絡(luò)的實際輸出值與期望輸出值的均方誤差最小[3]。BP神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)有兩個過程:信號的前向傳播和誤差的反向傳播。在前向傳播中,前向神經(jīng)網(wǎng)絡(luò)作為非線性函數(shù)映射裝置。輸入數(shù)據(jù)經(jīng)隱含層作用于輸出節(jié)點,通過非線性映射函數(shù)映射到高維特征空間,預(yù)測輸出結(jié)果。當(dāng)前向傳播后的輸出數(shù)據(jù)與期望的輸出數(shù)據(jù)不匹配時,就變?yōu)檎`差反向傳播過程。在誤差反向傳播過程中,各單元對誤差進行分配,并將誤差在隱含層中逐層傳遞到輸入層。反向傳播的目的是修改權(quán)值以獲得最優(yōu)集。
BP神經(jīng)網(wǎng)絡(luò)通過梯度下降法訓(xùn)練網(wǎng)絡(luò),而其初始參數(shù)隨機生成,若選擇不當(dāng),會造成局部最優(yōu)和收斂速度慢等問題。故采用遺傳算法[4]對其進行優(yōu)化。遺傳算法模擬了自然選擇和遺傳機制,是一種高效的并行全局搜索優(yōu)化方法[5]。其基本流程可概括如下:
1)實數(shù)編碼:隨機生成一些權(quán)值和閾值,進而對其編碼生成染色體。
2)初始化種群:由染色體組成一定規(guī)模的種群,并同時開始進化。
3)適應(yīng)度計算:首先對染色體進行解碼,然后進行網(wǎng)絡(luò)訓(xùn)練。采用適應(yīng)度函數(shù)對每個個體進行評價。高適應(yīng)度個體參與遺傳操作,低適應(yīng)度個體被淘汰。
4)雜交與變異:經(jīng)遺傳操作(選擇、交叉、變異)的個體集合形成新一代種群,重復(fù)執(zhí)行此過程直到滿足終止條件。
5)最優(yōu)種群:通過遺傳算法將后代中的最優(yōu)個體放入最優(yōu)種群中。
控制溫濕箱溫度以1℃為增量,在10℃~30℃范圍內(nèi)整數(shù)遞增,同時測得對應(yīng)溫度傳感器示數(shù),重復(fù)實驗5次,共記錄5組100對數(shù)據(jù)集。其中前三組數(shù)據(jù)作為訓(xùn)練集,第四組數(shù)據(jù)作為驗證集,第五組數(shù)據(jù)作為測試集。由于溫度傳感器DS18B20的最小分辨率為0.0625℃,且在-10℃~85℃范圍內(nèi)精度為±0.5℃,故將所有示數(shù)作保留小數(shù)點后一位處理。對數(shù)據(jù)做標(biāo)準(zhǔn)化處理,將其縮放至[-1,1]范圍后送入BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練。
系統(tǒng)首先隨機生成網(wǎng)絡(luò)初始參數(shù),根據(jù)網(wǎng)絡(luò)結(jié)構(gòu)依次計算隱含層及輸出層的輸出,然后計算輸出與標(biāo)簽之間的誤差,采用LM算法對BP神經(jīng)網(wǎng)絡(luò)進行反向訓(xùn)練,更新BP神經(jīng)網(wǎng)絡(luò)中的權(quán)重及偏置。重復(fù)上述步驟,直到達到理想精度或預(yù)設(shè)訓(xùn)練次數(shù)。如圖1所示,BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練25輪后達到最優(yōu)性能。
圖1 傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程
利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)不再簡單的隨機生成初始參數(shù),而是對種群進行多次迭代初始化,淘汰較差的參數(shù),最終產(chǎn)生合適的網(wǎng)絡(luò)初始參數(shù)[6-7]。
首先定義一組神經(jīng)網(wǎng)絡(luò)的參數(shù)為一個個體,共50組初始參數(shù)(50個個體)為一個種群。對BP神經(jīng)網(wǎng)絡(luò)的權(quán)重及偏置參數(shù)進行編碼。然后根據(jù)式(1)計算判斷個體的適應(yīng)性。式中:yi表示BP神經(jīng)網(wǎng)絡(luò)第i個輸出,oi表示第i個訓(xùn)練標(biāo)簽。
(1)
然后進行遺傳操作,即通過選擇、交叉、變異方式進行運算。為了選擇出更好的個體,產(chǎn)生更好的基因,采用輪盤賭選擇法,根據(jù)式(2)、(3)計算適應(yīng)度值的倒數(shù)及每個個體被選擇的概率。個體適應(yīng)性越好,F(xiàn)越小,f越大,p越大,因此適應(yīng)性更好的個體更易被選中,模擬優(yōu)勝劣汰的過程。選中的個體組成新的種群,再根據(jù)式(4)隨機交換不同個體的相應(yīng)基因,接著根據(jù)式(5)(6)進行基因變異,產(chǎn)生新的個體。重復(fù)上述操作100次,得到最優(yōu)個體,將其作為初始參數(shù)來訓(xùn)練。之后過程與傳統(tǒng)方式一致。式中:b、r1、r2為0-1之間的隨機數(shù),g是當(dāng)前迭代次數(shù),Gmax是最大迭代次數(shù)。
fi=k/Fi
(2)
(3)
(4)
(5)
f(g)=r2(1-g/Gmax)2
(6)
如圖2所示,遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)只需訓(xùn)練13輪即可達到最優(yōu)性能。
圖2 遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程
將測試集數(shù)據(jù)分別輸入傳統(tǒng)方式訓(xùn)練的BP神經(jīng)網(wǎng)絡(luò)及利用遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)進行校準(zhǔn),如圖3所示,經(jīng)過遺傳算法優(yōu)化后的BP神經(jīng)網(wǎng)絡(luò)校準(zhǔn)能力得到了進一步提升。
圖3 GA-BP神經(jīng)網(wǎng)絡(luò)校準(zhǔn)前后誤差
利用MATLAB訓(xùn)練好校準(zhǔn)網(wǎng)絡(luò)后,將其搭載至硬件系統(tǒng)??紤]到成本、性能、開發(fā)速度、等因素,選用以Cortex-M3為內(nèi)核的STM32F103系列MCU開發(fā)溫度傳感器校準(zhǔn)系統(tǒng)[8]。完整校準(zhǔn)系統(tǒng)架構(gòu)圖如圖4所示:溫度傳感器DS18B20將讀取到的未校準(zhǔn)溫度值通過通信模塊傳輸至控制模塊,控制模塊先對數(shù)據(jù)進行標(biāo)準(zhǔn)化后再通過校準(zhǔn)模塊校準(zhǔn),得到的校準(zhǔn)值送回控制模塊進行反標(biāo)準(zhǔn)化,最后在LCD上顯示校準(zhǔn)前后的溫度值。硬件系統(tǒng)完成后采用測試集數(shù)據(jù)進行測試,如圖5所示,其校準(zhǔn)精度與Matlab測試結(jié)果一致。
圖4 溫度傳感器校準(zhǔn)系統(tǒng)架構(gòu)圖
圖5 溫度傳感器校準(zhǔn)系統(tǒng)測試圖
如表1所示,利用傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練的校準(zhǔn)網(wǎng)絡(luò)訓(xùn)練收斂輪數(shù)為25,最大誤差從校準(zhǔn)前的0.5℃提升到了0.24℃,均方誤差從0.0875降到了0.0174。當(dāng)利用遺傳算法對BP神經(jīng)網(wǎng)絡(luò)的初始參數(shù)進行優(yōu)化后,收斂輪數(shù)從25降為13;最大誤差從0.24℃降為0.21℃,精度提升了12.5%;均方誤差從0.0174降到了0.0111。由此可知,利用遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)初始參數(shù)可極大的加快訓(xùn)練收斂速度,并提升校準(zhǔn)結(jié)果精度。
表1 遺傳算法優(yōu)化前后對比