陳勇
摘 要: 針對BP神經(jīng)網(wǎng)絡(luò)固有的局限性和在應(yīng)用于成績預(yù)測時出現(xiàn)的問題,運用遺傳算法對BP神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值進行優(yōu)化,通過詳細(xì)設(shè)計遺傳算法的編碼方式、適應(yīng)度函數(shù),遺傳算子使二者結(jié)合后的遺傳神經(jīng)網(wǎng)絡(luò)模型具有更快的學(xué)習(xí)訓(xùn)練收斂速度,為了提高優(yōu)化效果,設(shè)計了自適應(yīng)的遺傳算法交叉算子和變異算子,并通過與基本BP神經(jīng)網(wǎng)絡(luò)和自適應(yīng)BP神經(jīng)網(wǎng)絡(luò)的對比,顯示了優(yōu)化的有效性和可行性。運用Matlab實現(xiàn)了遺傳神經(jīng)網(wǎng)絡(luò)模型,并完成了模型的訓(xùn)練,運用Java語言完成了模型的調(diào)用和成績預(yù)測系統(tǒng)的實現(xiàn)。分析結(jié)果表明,該遺傳神經(jīng)網(wǎng)絡(luò)模型在成績預(yù)測方面具有較高的準(zhǔn)確性,具有一定的實用價值。
關(guān)鍵詞: 成績預(yù)測; BP神經(jīng)網(wǎng)絡(luò); 遺傳算法; Matlab; Java
中圖分類號: TN711?34; TP183 文獻標(biāo)識碼: A 文章編號: 1004?373X(2016)05?0096?05
0 引 言
近年來,神經(jīng)網(wǎng)絡(luò)的研究被廣泛應(yīng)用于如生物、醫(yī)學(xué)、經(jīng)濟等諸多領(lǐng)域,基于神經(jīng)網(wǎng)絡(luò)進行成績預(yù)測的研究也逐漸開始受到人們的關(guān)注[1]。有效的學(xué)生成績統(tǒng)計分析和預(yù)測在指導(dǎo)學(xué)校合理分配教學(xué)資源,全面提高教學(xué)質(zhì)量方面都發(fā)揮著至關(guān)重要的作用。因此,將神經(jīng)網(wǎng)絡(luò)技術(shù)應(yīng)用于學(xué)生課程成績預(yù)測具有很強的現(xiàn)實意義與研究價值[2]。目前,在為數(shù)不多的課程成績預(yù)測實踐中,絕大部分的學(xué)者采取應(yīng)用最為廣泛的BP神經(jīng)網(wǎng)絡(luò)模型進行實現(xiàn),這在取得一定成果的同時暴露了BP神經(jīng)網(wǎng)絡(luò)算法收斂速度慢,效率低下等弊端和對課程成績預(yù)測領(lǐng)域的不適應(yīng)性。本文通過與基本BP神經(jīng)網(wǎng)絡(luò)和自適應(yīng)BP神經(jīng)網(wǎng)絡(luò)的對比,驗證模型的收斂速度,體現(xiàn)出算法改進的效果[3]。運用Matlab實現(xiàn)了設(shè)計好的遺傳神經(jīng)網(wǎng)絡(luò)模型,并完成了模型的訓(xùn)練,運用Java語言完成了模型的調(diào)用和成績預(yù)測系統(tǒng)的實現(xiàn)。研究結(jié)果能有效地指導(dǎo)學(xué)校合理分配教學(xué)資源,預(yù)防可能發(fā)生的重大教學(xué)事故,對于全面提高教學(xué)質(zhì)量發(fā)揮著至關(guān)重要的作用。
1 遺傳算法結(jié)合BP神經(jīng)網(wǎng)絡(luò)的設(shè)計
遺傳算法具有較強的全局搜索能力和很強的魯棒性,非常適合對BP神經(jīng)網(wǎng)絡(luò)進行優(yōu)化[4]。將二者結(jié)合起來,可大大減少網(wǎng)絡(luò)陷入局部極小的概率,同時進一步提高網(wǎng)絡(luò)的收斂速度,能較快的獲得所求問題的全局最優(yōu)解。遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的基本原理就是將BP神經(jīng)網(wǎng)絡(luò)的權(quán)值交給遺傳算法來控制,即將BP神經(jīng)網(wǎng)絡(luò)各隱層的節(jié)點權(quán)值和閾值作為遺傳算法的輸入,將它們進行編碼,生成初始種群,利用遺傳算法的選擇交叉和變異來產(chǎn)生新的后代,即新的神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值,再交還給BP神經(jīng)網(wǎng)絡(luò),由神經(jīng)網(wǎng)絡(luò)進行后續(xù)的求解過程。
從算法的角度上講就是先通過遺傳算法在目標(biāo)問題的解空間中進行搜索[5],當(dāng)搜索到一個較優(yōu)的網(wǎng)絡(luò)形式時,再利用BP算法進行定位,確切地找到這個較優(yōu)的解空間中的最優(yōu)解或滿意解。遺傳算法結(jié)合BP算法的主要流程如圖1所示。
2 成績預(yù)測系統(tǒng)的實現(xiàn)
2.1 數(shù)據(jù)預(yù)處理及相關(guān)度分析
本文所進行的成績預(yù)測數(shù)據(jù)均來自學(xué)校網(wǎng)絡(luò)中心的真實學(xué)生成績數(shù)據(jù),獲取的數(shù)據(jù)規(guī)格為:每一行為一組輸入,內(nèi)容包括學(xué)號、學(xué)年、學(xué)期、課程名稱、課程代碼、課程性質(zhì)、成績等項,預(yù)計輸入項在100 000以上。針對原始的學(xué)生課程成績數(shù)據(jù),首先要做的是數(shù)據(jù)的預(yù)處理,主要內(nèi)容為數(shù)據(jù)的清洗,刪除與成績預(yù)測無關(guān)的課程代碼等數(shù)據(jù)。主要步驟包括:去除空項,去除非正??荚図?,去除非專業(yè)課成績,處理成績數(shù)據(jù),處理課程名稱等。預(yù)處理后的學(xué)生課程成績數(shù)據(jù)格式如表1所示。
采取Apriori算法對課程進行相關(guān)度分析。在橫向比較所有學(xué)生成績歷史數(shù)據(jù)的過程中將隨目標(biāo)課程成績的優(yōu)秀而同樣取得高分、隨目標(biāo)課程成績過低而同樣取得低分的課程稱為該課程的相關(guān)課程。即便有很多與目標(biāo)課程成績相關(guān)的課程,也存在相關(guān)度的高低,如果將所有的相關(guān)課程都作為神經(jīng)網(wǎng)絡(luò)的輸入項,不但使算法的參數(shù)變得復(fù)雜,收斂速度緩慢,而且也影響了預(yù)測的結(jié)果,成為了干擾項。因此,只選擇五門相關(guān)課程進行成績的預(yù)測。
經(jīng)過Apriori算法對數(shù)據(jù)進行預(yù)處理后,大量原始數(shù)據(jù)被簡化為只有5門相關(guān)課程和目標(biāo)課程成績的數(shù)據(jù)表,保存為一個文本文檔供神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練使用,格式如表2所示。同時預(yù)留另一部分?jǐn)?shù)據(jù)作為成績預(yù)測效果的驗證數(shù)據(jù)。
2.2 遺傳神經(jīng)網(wǎng)絡(luò)模型的實現(xiàn)
根據(jù)遺傳算法與神經(jīng)網(wǎng)絡(luò)相結(jié)合的遺傳神經(jīng)網(wǎng)絡(luò)模型的總體設(shè)計,運用Matlab實現(xiàn)遺傳神經(jīng)網(wǎng)絡(luò)模型的過程需要將BP神經(jīng)網(wǎng)絡(luò)函數(shù)與遺傳算法的編碼解碼函數(shù)和適應(yīng)度函數(shù)分別進行實現(xiàn),主函數(shù)為gabpMain.m[6],實現(xiàn)BP神經(jīng)網(wǎng)絡(luò)的創(chuàng)建和神經(jīng)網(wǎng)絡(luò)參數(shù)的設(shè)計。同時,gabpMain函數(shù)還需實現(xiàn)神經(jīng)網(wǎng)絡(luò)與遺傳算法的對接工作,因此還要實現(xiàn)遺傳算法種群的初始化和基本參數(shù)的設(shè)定。
Matlab實現(xiàn)神經(jīng)網(wǎng)絡(luò)模型后,開始用大量的數(shù)據(jù)對模型進行訓(xùn)練。經(jīng)過訓(xùn)練的模型才能夠被應(yīng)用于成績預(yù)測系統(tǒng),通過調(diào)用該模型,輸入預(yù)測課程的5門相關(guān)課程成績數(shù)據(jù),進行目標(biāo)課程的成績預(yù)測。通過對模型的訓(xùn)練,進行算法和參數(shù)的調(diào)整,同時比較各個算法的收斂曲線,驗證基于遺傳算法對BP神經(jīng)網(wǎng)絡(luò)進行優(yōu)化的效果。比較的對象選擇為一個沒有遺傳算法進行改進,基本BP神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置完全相同的神經(jīng)網(wǎng)絡(luò)模型,采用同樣的數(shù)據(jù)源進行訓(xùn)練,兩個模型分別進行仿真訓(xùn)練各五次,分別選出其中目標(biāo)進化函數(shù)收斂效果最好的結(jié)果圖進行比對,其中,采用基本BP神經(jīng)網(wǎng)絡(luò)的模型收斂圖如圖2所示。而本文設(shè)計的采用遺傳算法進行優(yōu)化的BP神經(jīng)網(wǎng)絡(luò)模型收斂圖如圖3所示。
通過比較不難發(fā)現(xiàn),單一BP算法和遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的混合算法在收斂速度方面的差別十分巨大,兩者在訓(xùn)練次數(shù)的上限均為500次,目標(biāo)誤差平局方差均為10-3的情況下,基本BP神經(jīng)網(wǎng)絡(luò)模型收斂速度緩慢,在進行了500次訓(xùn)練后,誤差停留在了0.032 915,仍然沒有達到目標(biāo)值,而遺傳神經(jīng)網(wǎng)絡(luò)模型的收斂速度大大加快,僅在第56次訓(xùn)練就達到了目標(biāo)值。
為了進一步加強對比,再次建立基于自適應(yīng)學(xué)習(xí)算法改進后的BP神經(jīng)網(wǎng)絡(luò)模型,用同樣的樣本數(shù)據(jù)進行訓(xùn)練,以驗證是否是特殊原因造成二者差距過大的現(xiàn)象,同時驗證遺傳算法相對其他算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的優(yōu)勢,訓(xùn)練的結(jié)果如圖4所示。
網(wǎng)絡(luò)模型函數(shù)收斂效果圖
由圖中可以看出,在500次訓(xùn)練后,函數(shù)的誤差均收斂于0.024 146,效果較之于基本的BP神經(jīng)網(wǎng)絡(luò)模型大有提高,前期的收斂速度也有所加快,但是仍然沒有在500次訓(xùn)練以內(nèi)達到目標(biāo)。在基于對兩種BP算法模型進行了對比之后,可以總結(jié)造成這種差距的原因是輸入的樣本數(shù)據(jù)數(shù)量相對較少,同時課程成績數(shù)據(jù)的特點是離散但是重復(fù)度很高,訓(xùn)練的效果更加依賴隱層節(jié)點和權(quán)值的設(shè)計,而這正是遺傳算法對BP神經(jīng)網(wǎng)絡(luò)優(yōu)化的核心,因此體現(xiàn)出的效果比較顯著[7]。由此可見遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)確實在應(yīng)用于成績預(yù)測等類似領(lǐng)域的時候具有一定的優(yōu)越性。
3 預(yù)測結(jié)果分析
完成神經(jīng)網(wǎng)絡(luò)模型的實現(xiàn)后,此處通過Java語言實現(xiàn)一個調(diào)用神經(jīng)網(wǎng)絡(luò)模型[8],允許使用者自行選擇目標(biāo)課程,并直觀查看從數(shù)據(jù)預(yù)處理到成績預(yù)測結(jié)果的軟件系統(tǒng)。如圖5所示,該系統(tǒng)界面簡潔明了,進入軟件界面后,分別選擇年級、學(xué)院、科目等3項參數(shù),并連續(xù)點擊“下一步”,即可直觀地看到用數(shù)據(jù)預(yù)處理開始到成績預(yù)測結(jié)果的全部中間數(shù)據(jù)。
成績預(yù)測的結(jié)果可以采取兩種查看方式,即列表方式與圖表方式。其中列表方式顯示了學(xué)生的學(xué)號和系統(tǒng)預(yù)測該目標(biāo)課程取得的成績。能夠以紅顏色標(biāo)記成績預(yù)測結(jié)果過低的學(xué)生,方便使用系統(tǒng)的用戶了解學(xué)生的成績和課程情況,如果成績過低的學(xué)生過多,則證明該課程存在發(fā)生教學(xué)事故的風(fēng)險,需要采取嚴(yán)格管理等措施來防范。通過這種方式,成績預(yù)測系統(tǒng)達到了通過成績預(yù)測協(xié)助進行學(xué)生管理和教學(xué)事故預(yù)防的目的,成績預(yù)測的列表方式顯示如圖6所示。
為了驗證成績預(yù)測系統(tǒng)的預(yù)測準(zhǔn)確度,需要以一些已經(jīng)有成績的歷史數(shù)據(jù)進行預(yù)測。圖表方式以紅色的“*”標(biāo)記目標(biāo)課程的預(yù)測成績;以圓圈標(biāo)記目標(biāo)課程的實際成績;“*”和圓圈的距離形象地顯示了預(yù)測成績與實際成績之間的差距。成績預(yù)測的圖表方式顯示如圖7所示。
為了通過分析成績預(yù)測結(jié)果得知遺傳神經(jīng)網(wǎng)絡(luò)應(yīng)用于成績預(yù)測的實際效果,使用系統(tǒng)預(yù)測2009級軟件學(xué)院學(xué)生“軟件工程實踐”這門課程的成績,并以其中的16條數(shù)據(jù)進行誤差比對,測試的結(jié)果如表3所示。
由于預(yù)測的分?jǐn)?shù)全部進行取整,所以精度有所影響,因此規(guī)定實際輸出與預(yù)計輸出相差小于或者等于3分的情況下,輸出的結(jié)果為正確,反之為錯誤。統(tǒng)計得知,使用遺傳神經(jīng)網(wǎng)絡(luò)的成績預(yù)測系統(tǒng)對學(xué)生的學(xué)習(xí)成績進行預(yù)測,正確率為87.5%,證明遺傳神經(jīng)網(wǎng)絡(luò)算法在應(yīng)用于成績預(yù)測時確實取得了比較好的效果。
4 結(jié) 論
本文在對神經(jīng)網(wǎng)絡(luò)和遺傳算法的基本理論和優(yōu)劣勢的研究基礎(chǔ)上,設(shè)計了遺傳算法與BP神經(jīng)網(wǎng)絡(luò)相結(jié)合的遺傳神經(jīng)網(wǎng)絡(luò)模型,通過詳細(xì)設(shè)計遺傳算法的編碼方式、適應(yīng)度函數(shù)、遺傳算子使二者結(jié)合后的遺傳神經(jīng)網(wǎng)絡(luò)模型具有更快的學(xué)習(xí)訓(xùn)練收斂速度,并通過與基本BP神經(jīng)網(wǎng)絡(luò)和自適應(yīng)BP神經(jīng)網(wǎng)絡(luò)的對比,顯示了優(yōu)化的有效性和可行性。進一步充分運用Matlab實現(xiàn)了設(shè)計好的遺傳神經(jīng)網(wǎng)絡(luò)模型,并完成了模型的訓(xùn)練,運用Java語言完成了模型的調(diào)用和成績預(yù)測系統(tǒng)的實現(xiàn),以直觀的方式顯示了預(yù)測結(jié)果,經(jīng)過分析,預(yù)測結(jié)果具有較高的準(zhǔn)確率和效率。但是,將RBF神經(jīng)網(wǎng)絡(luò)應(yīng)用于成績預(yù)測領(lǐng)域,是不是會取得比BP神經(jīng)網(wǎng)絡(luò)更好的效果,需要通過實驗進行進一步的驗證。
參考文獻
[1] 周凌翱.改進BP神經(jīng)網(wǎng)絡(luò)在模式識別中的應(yīng)用及研究[D].南京:南京理工大學(xué),2010.
[2] SOCHA K, BLUM C. An ant colony optimization algorithm for continuous optimization: application to feed?forward neural network training [J]. Neural computing and applications, 2007, 16(3): 239?247.
[3] 黃慶斌.BP算法的改進及其應(yīng)用研究[D].西安:西安交通大學(xué),2010.
[4] 尹然,丁曉明,李小亮,等.基于SA?BP神經(jīng)網(wǎng)絡(luò)的軟件缺陷預(yù)測模型的研究[J].西南師范大學(xué)學(xué)報(自然科學(xué)版),2013,38(8):147?152.
[5] 康珺,孟文俊.一種基于改進神經(jīng)網(wǎng)絡(luò)的系統(tǒng)辨識方法[J].計算機與數(shù)字工程,2012,40(1):31?33.
[6] 鄒麗娜,丁茜.基于BP算法的成績預(yù)測模型[J].沈陽師范大學(xué)學(xué)報(自然科學(xué)版),2011,29(2):226?229.
[7] 陳文,龐琳娜.GABP神經(jīng)網(wǎng)絡(luò)在交通流預(yù)測中的應(yīng)用研究[J].微計算機信息,2009,25(14):245?247.
[8] 易安.基于神經(jīng)網(wǎng)絡(luò)的模糊推理模型和算法研究[D].重慶:西南大學(xué),2010.