唐 立
(安徽經濟管理學院 信息工程系,安徽 合肥 230031)
隨著市場競爭越來越彰顯為人才創造能力的競爭,問題解決能力是創造性人才的核心能力之一,培養創造性人才的關鍵點就是提升學生的問題解決能力.在我國教育改革中,對學生的評價時,除了知識學習以外,還逐步地將學生的問題解決能力測評作為考察之一.
在大數據時代下,如何利用有效的算法,高效準確地預測學生的問題解決能力,一直是一個熱點討論的問題.目前由于BP神經網絡結構簡單且有強大的非線性擬合能力,在各種預測中得到廣泛地運用.但是BP神經網絡本身存在易陷入局部極小值,對大數據量運算速度比較慢等缺點.基于此,筆者針對BP神經網絡的不足,提出基于PSO-Adaboost-BP的問題解決能力測評預測方法,為智能預測學生的問題解決能力提供依據.
問題解決能力的表征往往是以某種成果的形式呈現出來,對問題解決能力測評的難度是在于量化測量,目前國際上對問題解決能力有研究的是PISA測試[1].PISA是在1998年,OECD在全球32個國家和地區啟動了國際學生評價項目[2].PISA問題解決能力測評已經被全球多個國家應用并受到普遍認可,具有較高的信度.在我國也開展多次PISA測試,如2012年PISA測試對上海基礎教育中學生解決問題能力測試,上海學生在數學、閱讀、科學的問題解決能力在全球65個國家和地區中均排第一[3].
筆者以PISA測試為基礎模板,以《FLASH動畫設計》課程為例,對高校計算機專業學生用FLASH軟件的解決問題能力進行測評.開展數據驅動的項目模擬測試,把計算機Flash專業知識點嵌入真實項目制作中,建立項目問題解決的方式,通過學生上機實際操作運用相關知識解決問題.同時結合學生平時實驗報告、單元測試、期末筆試、期末作品的數據分析按學生認知能力、計劃執行能力、實踐操作能力、結果整合能力、知識遷移能力等五個維度的能力綜合測評,形成問題解決能力評測指標體系[4].參照PISA評價框架對學生計算機知識問題解決能力進行評分.表1是問題解決能力測評指標.

表1 問題解決能力測評指標
BP神經網絡算法是神經網絡算法中最常用的算法,也是最具有代表性的,它是由有輸入層、隱藏層、輸出層三層組成,是按誤差逆向傳播的前饋神經網絡算法.BP神經網絡是根據誤差對與隱藏層連接的權重進行修改,提升整個網絡的學習能力,使得輸入層和輸出層之間的非線性映射關系達到最好預期.因此,利用BP神經網絡來實現問題解決能力測評的測評.
BP神經網絡根據誤差e在各層顯示并利用梯度下降原則,對各層單元的權值進行更正,最后使得誤差e減少到可接受的范圍,將學習樣本數為m的第j個樣本的標準的誤差ej定義為公式(1):

其中,期望輸出為Yrj,輸出層輸出為yrj.每個樣本作用時,都會對權矩陣進行一次修改.由于權矩陣的修改沒有參考權值修改后對其他樣本作用的誤差是否減少,最后導致迭代次數增多[5-6].為了避免出現這種誤差影響,采用均方誤差G比較合理,即:

其中輸出節點個數為m,訓練樣本數目為j,期望輸出為Yrj,輸出層輸出為yrj.
通過上述BP神經網絡算法將均方誤差G范圍縮小到最小,反復計算使得均方誤差G為零.但是標準的BP算法依然存缺點,遇到大數據量運算速度極其緩慢,本身收斂速度緩慢,容易陷入局部極小值.
單機下訓練大數據,耗時非常巨大,甚至無法完成訓練.為解決BP神經網絡面對大數據的訓練速度問題,提出基于Spark平臺下采用Adaboost算法對BP神經網絡進行優化,達到分布式并行處理數據.
在Spark平臺下一般采用一個master節點和多個worker節點的典型并行模式,master節點協調多個worker節點的實際訓練工作.首先通過Spark Context.textFlie()函數從分布式文件系統HDFS中讀取所需數據形成RDD[7],接著Spark Context將程序代碼和每個處理機將處理的任務廣播給每個Executor.Adaboost算法的任務就是將多個BP神經網絡算法弱預測器組合成較強的預測器,提高預測精度.
Adaboost算法過程[8]如下:
首先給所有樣本賦予相同的權重,并在訓練集上計算每一個弱預測器的錯誤率st.然后計算每一個弱預測的權重at得到公式(3):

再調整樣本的權值,即:

Bt為歸一化因子,Qt(i)分布樣本的權值,di為預測結果,yt(xi)為BP預測結果.
最后根據弱預測器組合成強預測器函數H(x),得到公式(5):

Adaboost算法,每產生一個弱預測器 h(yt,at)之后,對樣本權值 Qt(i)進行更新,得到新的弱預測器,最后由多個弱預測器 h(yt,at)聯合組成強預測器函數 H(x).
由于BP神經網絡采用的是梯度下降法,訓練誤差函數不能呈現標準的凹函數,容易在搜索最優權值時,陷入局部最小化,影響算法精度和效率[9].因此采用粒子群算法(PSO)全局搜索最優值來彌補BP神經網絡這一缺點.
粒子群算法是基于群體智能理論的優化算法,開始受鳥類群體尋食而啟發,通過群體與個體的信息共享和合作尋找最佳方法[10].在PSO中每個粒子代表解空間里的一個潛在解,這個解的優劣程度是由適應函數來決定的.設一個群體可以延伸到N維空間,粒子i在N維空間的位置表示為Xi=(X1,X2,…,Xn),粒子位置變化速度為Vi=(V1,V2,…,Vn).每個粒子的任務是發現自己最好的位置pbest,同時還要知道整個群體中所有粒子發現的最好位置gbest,粒子通過跟蹤pbest,gbest來更新自己,最后找到最優值.粒子根據公式(6)和公式(7)更新自己的速度 Vi和位置 Xi,即:

公式(6)中C1,C2是步伐因子,C1是粒子飛向自身最優位置的步伐因子,C2是粒子飛向群體最優位置的步伐因子,rand()是隨機數,W是慣性因子,其值為非負數,其值大小直接影響全局和局部尋優能力.一般在尋優過程中,粒子的位置和速度會限制在一定0到Vmax之間,如果超過了Vmax,則速度Vi=Vmax.迭代終止條件是最大迭代次數和粒子群迄今為止尋找到最優位置滿足預定最小適應閾值.
為了提高問題解決能力測評的效率和精確度,不僅利用PSO對BP神經網絡全局優化權值,避免局部極小化和收斂速度慢問題,還同時使用Adaboost算法并行化BP神經網絡,來提高算法的效率.PSO-Adaboost-BP具體算法步驟為:
(1)通過Spark Context.textFlie()函數從分布式文件系統HDFS中讀取所需數據形成RDD.(2)采用PSO算法對BP神經網絡算法的初始權值進行全局優化:①初始化參數,確定BP神經網絡初始連接權值和閥值,根據權值和閥值的個數確定粒子群維數D;設定規模M;設定迭代次數N,得到初始種群,在一定允許范圍內得到粒子初始速度和初始位置.②訓練BP神經網絡,得到的均方誤差作為粒子適應度函數,根據適應函數得到適應值.③比較各個粒子的適應度和歷史最優值,如果當前的適應值更優,則更新歷史最優.④判斷是否滿足終止條件,如滿足則停止,否則進入步驟2.2進行下一輪,直到求出粒子全局最優位置.(3)Spark Context將程序代碼和每個處理機將處理的任務廣播給每個Executor,并構建神經網絡結構.(4)計算每個弱預測器的預測序列權重at,并更新樣本的記錄權重.(5)主節點將從節點上的連接權值跟新,收集每個Executor對應的記錄正確率和記錄條數.(6)主節點對BP神經網絡進行更新并計算出整體的正確率以及公式(3)中的權重at.(7)判斷是否滿足終止條件,如滿足終止訓練,不滿足則轉為步驟3.(8)主節點將根據Adaboost計算出多個預測器的權重at進行加權集成,組合成強預測器.
樣本數據來源于安徽經濟管理學院信息工程系1 198名學生《FLASH動畫設計》課程的項目模擬測試、平時實驗報告、單元測試、期末筆試、期末作品的數據.通過幾位老師合作完成試卷分析,數據整理,最后收集整理了1 062條有效數據為本文實驗數據.為了解決數據量問題,通過原有數據經過代碼生成技術在原數據量的基礎下生成50萬條數據.分別用不同數臺機器上運算.每塊數據集中訓練樣本與測試樣本是以4∶1的比例.
實驗環境是以一臺為Master節點,若干臺為Slave節點,搭建Spark集群.所有計算機具有CUP i3 2.75 GHz、內存4 G配置,使用linux操作系統.
由于本實驗驗證問題解決能力,根據問題解決能力測評指標表1,可以確定輸入層的神經元個數是17,而對問題解決能力測評輸出層神經元為1.實驗運用到SPO算法公式(4)中慣性因子W是一個浮動值,浮動遵循線性遞減權值策略,其公式為:

其中Win,Wmax分別是初始慣性權值和迭代到最大時的慣性權值,Gmax,d分別為最大迭代次數和當前迭代數.根據本實驗Win=0.9,Wmax=0.4,步伐因子C1=C2=2.26,最大速度Vmax=0.6.
(1)傳統BP神經網絡與本文提出的用PSO優化BP神經網絡算法對比實驗,為了準確地放映兩種算法的速度,對兩種運算在運算過程中的均方誤差G進行比較(見圖1),可以看出兩種算法對測試樣本(test),訓練樣本(train)和驗證樣本(validation)的均方誤差統計.很明顯PSO-BP收斂速度快很多,當迭代次數達到22次為最佳,而傳統BP神經網絡則需要迭代到60次才可以達到最佳,迭代次數越少運算速度越快.同時對于PSO-BP算法我們得到最佳的均方誤差值為0.000 128,而傳統BP神經網絡是0.000 139,這說明PSO-BP算法均方誤差更小,精確度更高.由此可見,通過PSO優化BP神經網絡,有效避免陷入局部極小值的困境,使得運算速度提高,精確度也得到一定的提升.
(2)在都使用PSO-BP算法的情況下,分別在單機下進行運算和多臺機器下PSO-Adaboost-BP并行化運算,通過實驗得出最后的結果見表2.在運算速度方面,一臺計算機下的PSO-BP算法不如多臺計算機下的PSO-Adaboost-BP算法快,而且相同的PSO-Adaboost-BP算法下,運行時間是隨著計算機的個數增加而減少的.在正確率方面,由于都是使用了PSO優化,正確率差距不是很大,但是PSO-Ad-aboost-BP算法中,Adaboost集成的弱預測器數目隨迭代次數增加而增加,最終組合的強預測器的正確率也隨之得到一點提高,這說明了PSO-Adaboost-BP算法對大量數據處理效果是明顯的.

圖1 傳統BP神經網絡算法與PSO-BP性能對比

表2 兩種算法實驗對比
利用PSO優化BP神經網絡,幫助找到全局優化權值,而沒有用GA來優化BP,是因為PSO沒有GA的交叉和變異操作,粒子速度更新比較簡單,參數也更少了,比較容易實現,另外PSO有記憶性,能把最好解的知識保存下來,沒有遺忘性.同時本文也沒有在傳統的Hadoop平臺下對BP并行化,而是Spark平臺下利用Adaboost算法優化組合BP神經網絡,是因為Spark是通用并行框架,繼承了Hadoop所有優點,并且優于Hadoop,其處理過程中,其中間結果不再像Hadoop寫入磁盤上而是直接保存在內存中,避免迭代過程中多次讀取磁盤所用的時間.通過PSO-Adaboost-BP算法運用到問題解決能力預測上,其結果證明PSO-Adaboost-BP算法的運算速度和預測準確率明顯高于傳統BP神經網絡,該方法是有效可行的.