郭利進(jìn),許瑞偉,李博侖
(天津工業(yè)大學(xué)大學(xué)控制科學(xué)與工程學(xué)院,天津 300387)
民以食為天,食以糧為先,保障糧食安全是國(guó)家的戰(zhàn)略需要[1]。據(jù)統(tǒng)計(jì),我國(guó)因糧食霉變?cè)斐傻膿p失約占糧食總產(chǎn)量的4%。為降低糧食損失,眾多科研人員致力于糧食霉變研究。Wang等[2]通過比色傳感器技術(shù)對(duì)捕獲小麥不同發(fā)霉程度的氣味信息,實(shí)現(xiàn)了小麥霉菌高精度檢測(cè)。萬立昊等[3]對(duì)稻谷儲(chǔ)藏中霉菌菌落數(shù)、脂肪酸、丙二醛等品質(zhì)指標(biāo)檢測(cè),深入探究了稻谷霉變程度與品質(zhì)指標(biāo)的變化關(guān)系。以上研究成果側(cè)重于霉變檢測(cè)手段和霉變過程規(guī)律。而本研究側(cè)重于糧食霉變發(fā)生的預(yù)測(cè)研究,以稻谷為例,根據(jù)稻谷含水量、儲(chǔ)藏時(shí)間、溫度等已知信息,建立基于IFA-SVM的糧食霉變預(yù)測(cè)模型,通過預(yù)測(cè)結(jié)果制定相應(yīng)對(duì)策,對(duì)降低糧食霉變風(fēng)險(xiǎn)、減少糧食損失有著重大意義。
對(duì)于預(yù)測(cè)算法主要包括神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)、灰色理論等方法。針對(duì)糧情霉變程度預(yù)測(cè),國(guó)內(nèi)學(xué)者不乏使用BP神經(jīng)網(wǎng)絡(luò)算法進(jìn)行預(yù)測(cè),BP神經(jīng)網(wǎng)絡(luò)屬于監(jiān)督式算法,具有若干個(gè)彼此影響的非線性單元處理器,具有良好的非線性映射能力[4]。但是因?yàn)樵撍惴ū举|(zhì)是依據(jù)梯度下降法,所以導(dǎo)致收斂速度較慢,在區(qū)間范圍進(jìn)一步擴(kuò)大時(shí),易出現(xiàn)陷入極值局部極小化現(xiàn)象。與BP神經(jīng)網(wǎng)絡(luò)算法對(duì)比,支持向量機(jī)(SVM)具有訓(xùn)練時(shí)間短、泛化能力強(qiáng)、預(yù)測(cè)精度高,并且克服了神經(jīng)網(wǎng)絡(luò)算法在小樣本、非線性問題中的重復(fù)性差、過度擬合等不足,更適用于預(yù)測(cè)研究。然而SVM模型構(gòu)建的關(guān)鍵是解決核參數(shù)δ和懲罰因子C的最優(yōu)取值問題,初期算法參數(shù)選取多依賴于實(shí)驗(yàn)人員的主觀經(jīng)驗(yàn),缺乏嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)依據(jù),所以引入螢火蟲算法(FA)對(duì) SVM 參數(shù)進(jìn)行優(yōu)化,同時(shí)提出一種基于高斯函數(shù)非線性變步長(zhǎng)α的進(jìn)化策略,改進(jìn)FA算法尋優(yōu)精度,有效提高模型的預(yù)測(cè)準(zhǔn)確度。
HPS-250 生化培養(yǎng)箱,HG-9246A 型電熱恒溫鼓風(fēng)干燥箱,DJSFM-1糧食水分測(cè)試粉碎磨,SMART顯微鏡。
將不同含水量的稻谷密封置于不同儲(chǔ)藏溫度(5、10、15、20、25、30 ℃)的生化培養(yǎng)箱模擬儲(chǔ)藏環(huán)境下180 d,采樣周期為10 d,每次檢測(cè)水稻的水分和真菌孢子數(shù)。其中水分和真菌孢子數(shù)的檢測(cè)方法分別依據(jù)GB 5009.3—2016《食品安全國(guó)家標(biāo)準(zhǔn)食品中水分的測(cè)定》[5]、 LS/T 6132—2018《糧油檢測(cè)儲(chǔ)糧真菌的檢測(cè)孢子計(jì)數(shù)法》[6]。
支持向量回歸機(jī)(SVM)的核心思想是在高維映射空間中找到1個(gè)間隔超平面,其學(xué)習(xí)策略是令其間隔最大化轉(zhuǎn)化為凸二次規(guī)劃問題的求解。
針對(duì)二分類問題,設(shè)N個(gè)輸入樣本xi(i=1,2,…,n),且yi∈{-1,1}。其中xi作為預(yù)測(cè)模型的相關(guān)輸入向量,yi為輸出向量。在本研究霉變預(yù)測(cè)中,yi為1時(shí)可代表未發(fā)生霉變,為-1時(shí)可代表發(fā)生霉變。決策面可表示為式(1)。
f(x)=ωTφ(x)+b
(1)
式中:ω為決策面法向量;φ(x)為原始樣本數(shù)據(jù)的非線性映射函數(shù);b為偏置值。根據(jù)最小結(jié)構(gòu)風(fēng)險(xiǎn)原則,最優(yōu)超平面滿足式(2)。
yi(ωTφ(xi)+b)≥1
(2)
引入松弛變量ξi,目的是將分類誤差控制在一個(gè)有限范圍內(nèi),則可建立式(3)。
(3)
式中:c為懲罰因子,懲罰因子c的取值影響到模型的結(jié)構(gòu)風(fēng)險(xiǎn),取值過大時(shí),結(jié)構(gòu)風(fēng)險(xiǎn)越大;取值過小,模型會(huì)過于簡(jiǎn)單化[7]。
引入拉格朗日乘子αi,將式(3)變換為對(duì)偶形式,見式(4)。
(4)
式中:K(xi,xj)=φ(xi)φ(xj)為核函數(shù),其中核函數(shù)根據(jù)需要選取,本研究選用徑向核函數(shù),表達(dá)式見式(5)。
K(xi,xj)=exp(-(xi-xj)2/2σ2)
(5)
式中:σ為徑向核函數(shù)的核參數(shù),其取值大小也對(duì)模型的效果有所影響,取值過小會(huì)導(dǎo)致模型的泛化能力減弱,取值過大會(huì)令模型出現(xiàn)過擬合現(xiàn)象[8]。
因此,SVM模型構(gòu)建的關(guān)鍵是解決核參數(shù)σ和懲罰因子c的最優(yōu)取值問題。所以本研究引入螢火蟲算法對(duì)SVM模型參數(shù)進(jìn)行優(yōu)化,提高模型預(yù)測(cè)性能。
螢火蟲算法是一種啟發(fā)式算法,是根據(jù)自然界中螢火蟲的發(fā)光行為而提出的。在螢火蟲算法中,空間里的每1個(gè)解就好比螢火蟲種群里的每1只螢火蟲,空間里的初始解可以理解為螢火蟲種的初始位置,螢火蟲通過互相之間的吸引來進(jìn)行移動(dòng),完成位置的更新即完成解的更新[9]。
搜索過程涉及到螢火蟲的發(fā)光亮度和相互吸引度這2個(gè)參數(shù)。這2個(gè)參數(shù)都與螢火蟲之間的距離成反比,這與自然現(xiàn)象中光在空間傳播時(shí)被傳播介質(zhì)吸收而逐漸衰減的特性相一致[10]。
光強(qiáng)(I)與光源距離(r)的數(shù)學(xué)表達(dá)式見式(6)。
(6)
FA算法中螢火蟲的發(fā)光強(qiáng)度公式見式(7)。
(7)
式中:當(dāng)與光源的距離逐漸趨近或接近于零時(shí),則發(fā)光亮度最為明亮即為I0。
由于光的傳播中,不同的傳播介質(zhì)也會(huì)影響到光的亮度。吸收系數(shù)γ的改變可以理解為不同的傳播介質(zhì),可以將其設(shè)置為常數(shù);rij表示螢火蟲i與螢火蟲j之間的距離。螢火蟲的吸引度見式(8)。
(8)
與螢火蟲發(fā)光強(qiáng)度同理,當(dāng)與光源的距離逐漸趨近或接近于零時(shí),則吸引度最大即為β0。螢火蟲i被吸引向螢火蟲j移動(dòng)的位置更新由式(9)決定。
xi=xi+β(xj-xi)
(9)
通常情況采用式(10)。
xi=xi+β(xj-xi)+α(rand-0.5)
(10)
式中:擾動(dòng)項(xiàng)α(rand-0.5),α為步長(zhǎng)因子,是介于0與1之間的常數(shù);rand是[0,1]上服從均勻分布的隨機(jī)因子,擾動(dòng)項(xiàng)的加入是為了擴(kuò)大尋優(yōu)區(qū)域。
因此,步長(zhǎng)α與尋優(yōu)精度有較大影響,但α為固定參數(shù)導(dǎo)致在進(jìn)化后期難以尋找全局最優(yōu)。因此應(yīng)對(duì)α采用遞減的策略,在進(jìn)化前期快速收斂,進(jìn)化后期充分在局部進(jìn)行尋優(yōu)找到最優(yōu)值。對(duì)于α進(jìn)行線性遞減在解決非線性問題上通常尋找不到最優(yōu)解。結(jié)合上述思想,本研究設(shè)計(jì)一種基于高斯函數(shù)的非線性變步長(zhǎng)的進(jìn)化策略,步長(zhǎng)α迭代關(guān)系如式(11)所示。
(11)
式中:αmax為初始權(quán)重;αmin為最終權(quán)重;t為當(dāng)前迭代次數(shù);T為最大迭代次數(shù);k為固定參數(shù)。
用IFA算法優(yōu)化SVM參數(shù)的過程,就是螢火蟲尋找最佳位置X(c*,σ*)的過程,基本步驟為:
步驟一:對(duì)改進(jìn)螢火蟲算法參數(shù)初始化設(shè)置:螢火蟲數(shù)量為M,初始吸引度β0,光強(qiáng)吸收系數(shù)γ,最大迭代次數(shù)T以及螢火蟲的初始位置為(c,σ)。
步驟二:[c,σ]作為SVM的初始參數(shù),也代表螢火蟲的一個(gè)位置。將訓(xùn)練集樣本作為SVM模型的輸入,并輸出預(yù)測(cè)集{y1,y2,…,yn}。
步驟三:將訓(xùn)練集的預(yù)測(cè)錯(cuò)誤率作為IFA-SVM算法的適應(yīng)度函數(shù)。
步驟四:判斷終止條件:當(dāng)前迭代次數(shù)大于設(shè)置的最大迭代次數(shù)。滿足終止條件則執(zhí)行步驟六,若不滿足則執(zhí)行下一步驟。
步驟五:根據(jù)螢火蟲的相對(duì)亮度決定到下一個(gè)位置的移動(dòng)方向并調(diào)整步長(zhǎng)α,若目標(biāo)位置劣于之前的位置,螢火蟲位置保持不變,否則螢火蟲進(jìn)行位置的更新,產(chǎn)生新的[c,σ],返回步驟二。
步驟六:將輸出的最優(yōu)解代入SVM預(yù)測(cè)模型,獲得SVM模型的最佳參數(shù)(c*,σ*)。
研究選取稻谷水分、儲(chǔ)藏溫度、儲(chǔ)藏時(shí)間這3個(gè)特征變量作為FA-SVR預(yù)測(cè)模型的輸入,稻谷霉變情況作為預(yù)測(cè)模型的輸出。稻谷霉變程度共分為5個(gè)等級(jí):{安全、臨界、危害、嚴(yán)重危害},分別與霉變等級(jí){Ⅰ、Ⅱ、Ⅲ、Ⅳ}相映射,劃分依據(jù)見表1。
表1 儲(chǔ)糧安全分類標(biāo)準(zhǔn)
選取的樣本數(shù)據(jù)(稻谷水分、儲(chǔ)藏溫度、儲(chǔ)藏時(shí)間)通常不直接使用,因?yàn)椴煌愋偷臄?shù)據(jù)其量綱單位也不同,樣本數(shù)值波動(dòng)較大時(shí),不利于SVM模型的學(xué)習(xí)訓(xùn)練,為了消除特征向量間的量綱影響及保證模型運(yùn)行速度,應(yīng)把訓(xùn)練樣本數(shù)值進(jìn)行歸一化處理,會(huì)改善SVM的學(xué)習(xí)效果,提高最終的預(yù)測(cè)精度,將數(shù)據(jù)映射到[0,1]空間,可通過歸一化公式實(shí)現(xiàn),見式(12)。
(12)
式中:x為任意一組樣本的某一維數(shù)據(jù);max(x)為最大值;min(x)為最小值。
采用IFA-SVM算法進(jìn)行糧食霉變分類預(yù)測(cè)的結(jié)構(gòu)圖如1所示。
建模方法:選取實(shí)驗(yàn)臺(tái)原始數(shù)據(jù),進(jìn)行預(yù)處理。實(shí)驗(yàn)共收集水稻樣本936,將“Ⅲ級(jí)-危害”作為判斷是否霉變的標(biāo)準(zhǔn),將未發(fā)生霉變樣本用“1”標(biāo)記,已發(fā)生霉變樣本用“-1”標(biāo)記。隨機(jī)選取其中500組樣本作為預(yù)測(cè)模型的總樣本,將所選取的總樣本集按9∶1的比例劃分為訓(xùn)練集和測(cè)試集,其中隨機(jī)選取450組實(shí)驗(yàn)臺(tái)生化培養(yǎng)箱數(shù)據(jù)對(duì)模型進(jìn)行訓(xùn)練,將剩余50組樣本數(shù)據(jù)進(jìn)行測(cè)試本研究的IFA-SVM預(yù)測(cè)模型效果。
設(shè)置IFA算法的初始參數(shù),螢火蟲數(shù)目M=100,光強(qiáng)吸收系數(shù)γ=1.0,初始吸引度β0=0.8,步長(zhǎng)因子設(shè)置為0.5,最大迭代次數(shù)T=100。對(duì)SVM進(jìn)行離線參數(shù)尋優(yōu),得到最優(yōu)核參數(shù)σ*=0.560 6,懲罰因子c*=46.068 5,從而建立最優(yōu)的SVM預(yù)測(cè)模型結(jié)構(gòu),見圖1。
圖1 基于FA-SVM的糧情霉變預(yù)測(cè)結(jié)構(gòu)圖
根據(jù)訓(xùn)練集數(shù)據(jù)對(duì)得到的SVM預(yù)測(cè)模型進(jìn)行訓(xùn)練,當(dāng)?shù)竭_(dá)理想訓(xùn)練精度后,輸入測(cè)試集進(jìn)行驗(yàn)證,并對(duì)輸出結(jié)果進(jìn)行評(píng)估。
根據(jù)建模過程與初始參數(shù),在MATLAB R2018b環(huán)境下借助支持向量回歸機(jī)工具箱及運(yùn)行IFA-SVM模型,算法訓(xùn)練的適應(yīng)度曲線如圖2所示。
圖2 不同模型參數(shù)的適應(yīng)度曲線對(duì)比
算法收斂速度越快,代表所建立的預(yù)測(cè)模型表現(xiàn)能力越好。圖2表明,F(xiàn)A算法對(duì)SVM的參數(shù)尋優(yōu)速度很快,迭代次數(shù)在第10次時(shí)已經(jīng)收斂,體現(xiàn)了FA-SVM良好的收斂性。動(dòng)態(tài)變步長(zhǎng)的IFA-SVM在第6次就已經(jīng)收斂,但收斂的最優(yōu)適應(yīng)度僅比FA-SVM降低了0.004,說明通過動(dòng)態(tài)調(diào)整步長(zhǎng)可以有效地縮短收斂時(shí)間,在最優(yōu)解的適應(yīng)度上與FA算法結(jié)果相差不大,但具有參考意義。二者相比單一的SVM算法,引入的FA算法優(yōu)化了c與σ這2個(gè)參數(shù),大大降低了參數(shù)值選擇的隨機(jī)性。
選取了50組樣本數(shù)據(jù)進(jìn)行測(cè)試,結(jié)果節(jié)選見表2。
表2 測(cè)試數(shù)據(jù)結(jié)果節(jié)選
圖3為50組測(cè)試樣本的霉變分類預(yù)測(cè)結(jié)果,可看出IFA-SVM預(yù)測(cè)模型的預(yù)測(cè)結(jié)果和實(shí)際結(jié)果基本符合,僅有2份數(shù)據(jù)的預(yù)測(cè)結(jié)果與實(shí)際不符,準(zhǔn)確率高達(dá)96%。
圖3 IFA-SVM預(yù)測(cè)結(jié)果圖
為驗(yàn)證IFA-SVM模型的優(yōu)越性,使用相同的樣本數(shù)據(jù),對(duì)比研究BP模型、SVM模型和FA-SVM的糧食霉變預(yù)測(cè)效果。不同算法預(yù)測(cè)準(zhǔn)確率對(duì)比見表3。由表3可知,本研究所采用的IFA-SVM算法有較高的預(yù)測(cè)準(zhǔn)確率,在糧食霉變預(yù)測(cè)領(lǐng)域具備一定可行性。
表3 不同算法預(yù)測(cè)準(zhǔn)確率對(duì)比
本研究利用MATLAB建立了基于FA-SVM的糧食霉變預(yù)測(cè)分類模型。通過理論研究和實(shí)驗(yàn)數(shù)據(jù),利用生化培養(yǎng)箱對(duì)真實(shí)儲(chǔ)藏環(huán)境進(jìn)行模擬,將IFA-SVM模型運(yùn)用到生化培養(yǎng)箱進(jìn)行存儲(chǔ)預(yù)測(cè)。相比BP神經(jīng)網(wǎng)絡(luò)、普通SVM模型,IFA-SVM泛化能力強(qiáng)、預(yù)測(cè)準(zhǔn)確率高;相比于傳統(tǒng)FA-SVM模型,IFA-SVM尋優(yōu)時(shí)間降低,在預(yù)測(cè)準(zhǔn)確率上二者相差不大,但為改進(jìn)FA算法提供一定的參考。對(duì)于生化培養(yǎng)箱數(shù)據(jù),IFA-SVM模型準(zhǔn)確率高達(dá)96%。IFA-SVM模型的提出為實(shí)際糧食儲(chǔ)藏的霉變預(yù)測(cè)提供了一種新思路,具有一定實(shí)際應(yīng)用意義。