






摘要:BP(Back Propagation)神經(jīng)網(wǎng)絡算法是一種典型的神經(jīng)網(wǎng)絡算法,具有廣泛的應用。為了直觀地顯示該算法訓練和驗證數(shù)據(jù)的完整流程,文章設計了一個基于國產(chǎn)化平臺Qt的BP神經(jīng)網(wǎng)絡演示軟件,使用Qt自帶的圖形化控件來實現(xiàn)算法的結(jié)果演示。文章首先介紹了BP神經(jīng)網(wǎng)絡的基本原理、公式推導和工作流程,其次使用Qt實現(xiàn)了該算法并繪制了圖形化界面,最后使用該算法對經(jīng)典的鳶尾花數(shù)據(jù)集進行訓練和驗證,并將驗證結(jié)果在界面上顯示。實驗驗證,該軟件能夠支持BP神經(jīng)網(wǎng)絡算法的算法運行與結(jié)果顯示,滿足軟件設計的相關(guān)要求。
關(guān)鍵詞:Qt;BP神經(jīng)網(wǎng)絡;軟件設計
中圖分類號:TP311文獻標志碼:A
0 引言
BP(Back Propagation)神經(jīng)網(wǎng)絡算法是由Rumelhart等[1-2]于1985年提出的一種神經(jīng)網(wǎng)絡算法。該算法是人腦特征的抽象和模仿,具有強大的泛化能力,能以任意精度逼近任何連續(xù)函數(shù),因此適合于處理十分復雜且推理規(guī)則不明確的相關(guān)問題。經(jīng)過多年的研究,BP神經(jīng)網(wǎng)絡算法目前已在各個領(lǐng)域獲得了廣泛的應用,例如醫(yī)療領(lǐng)域[3]、教育領(lǐng)域[4]和金融領(lǐng)域[5]。因此,BP神經(jīng)網(wǎng)絡算法成為神經(jīng)網(wǎng)絡領(lǐng)域的一種經(jīng)典算法,也是當今的熱門研究問題之一。
本文針對在國產(chǎn)化平臺下進行BP神經(jīng)網(wǎng)絡算法實現(xiàn)和演示的需求,設計了一個基于Qt的BP神經(jīng)網(wǎng)絡演示軟件。該軟件實現(xiàn)了BP神經(jīng)網(wǎng)絡算法,通過對鳶尾花數(shù)據(jù)集的訓練和驗證,能夠?qū)Ⅱ炞C的誤差結(jié)果通過圖形化控件顯示出來。Qt是最優(yōu)秀的跨平臺界面開發(fā)框架之一[6],在各行各業(yè)的項目開發(fā)中得到了廣泛的使用,例如上位機軟件[7]和飛行控制軟件[8]。因此,在國產(chǎn)化平臺下使用Qt開發(fā)界面軟件是合適的選擇。
1 BP神經(jīng)網(wǎng)絡
1.1 原理
BP神經(jīng)網(wǎng)絡的基本原理是對于d個輸入樣本,已知與其對應的l個理論輸出樣本,用神經(jīng)網(wǎng)絡的實際輸出與理論輸出之間的誤差來調(diào)整神經(jīng)網(wǎng)絡的參數(shù),從而使得實際輸出和理論輸出盡可能接近,即誤差平方和達到最小。一個典型的3層BP神經(jīng)網(wǎng)絡分為輸入層、隱層和輸出層。BP神經(jīng)網(wǎng)絡的整體流程分為正向傳播和反向傳播。在正向傳播中,輸入樣本從輸入層經(jīng)過隱層,然后傳播到輸出層,每一層只影響下一層的狀態(tài),如果在輸出層的實際輸出和理論輸出之間的誤差較大,則轉(zhuǎn)入反向傳播。反向傳播將誤差信號沿著原有的通路返回,通過修改各層的參數(shù),從而使得誤差信號減少。接下來繼續(xù)反復進行這個流程,直到誤差小于指定閾值為止。
1.2 公式推導
圖1描述了一個擁有d個輸入神經(jīng)元、l個輸出神經(jīng)元、q個隱層神經(jīng)元的3層BP神經(jīng)網(wǎng)絡。其中輸出層第j個神經(jīng)元的閾值用θj表示,隱層第h個神經(jīng)元的閾值用γh表示。輸入層第i個神經(jīng)元與隱層第h個神經(jīng)元之間的連接權(quán)為vih,隱層第h個神經(jīng)元與輸出層第j個神經(jīng)元之間的連接權(quán)為whj。記隱層第h個神經(jīng)元接收到的輸入為αh=∑di=1vihxi,輸出層第j個神經(jīng)元接收到的輸入為βj=∑qh=1whjbh,其中bh為隱層第h個神經(jīng)元的輸出。假設隱層和輸出層神經(jīng)元使用的都是Sigmoid函數(shù)。
則BP神經(jīng)網(wǎng)絡在(xk,yk)上的均方誤差公式為:
對于式(2)中的誤差Ek,給定學習率η,有:
同理可得:
Δθj=-ηgj(4)
進一步推導如下:
同理可得:
Δγh=-ηeh(6)
1.3 算法流程
BP神經(jīng)網(wǎng)絡算法基本流程為對于指定的訓練樣例,將其輸入輸入層神經(jīng)元,然后逐層將信號前傳,直至輸出層并產(chǎn)生輸出結(jié)果,計算輸出結(jié)果誤差,并將誤差逆向傳播,并根據(jù)式(1)—(6)對連接權(quán)和閾值進行調(diào)整。該流程循環(huán)進行,直到輸出誤差小于指定值為止。該基本流程如圖2所示。
2 BP神經(jīng)網(wǎng)絡演示軟件設計
2.1 界面設計
Qt是一個跨平臺的C++圖形用戶界面應用程序框架,具有很長久的發(fā)展歷史。1991年Qt最早由芬蘭奇趣科技公司開發(fā),2008年諾基亞公司收購Qt,2012年Qt又被芬蘭的軟件公司Digia公司收購,2014年,推出跨平臺的集成開發(fā)環(huán)境Qt Creator。Qt具有諸多開發(fā)優(yōu)勢:(1)Qt具有跨平臺優(yōu)勢,支持幾乎所有的平臺;(2)Qt具有簡化內(nèi)存的回收機制,提高了開發(fā)效率;(3)Qt具有良好的社區(qū)環(huán)境,方便進行技術(shù)問題的討論;(4)Qt的接口簡單,容易上手。有很多經(jīng)典的軟件都是使用Qt開發(fā)的,例如WPS Office辦公軟件、Google Earth谷歌地球軟件、Linux桌面環(huán)境KDE軟件。
Qt具有諸多良好的技術(shù)特點,其中信號與槽是典型的一個技術(shù)特點。信號與槽完成了對象間的通信機制,實現(xiàn)了對象間通信的解耦,信號發(fā)送者不需要知道信號的接收者是誰,只需要發(fā)送信號即可。一個信號可以發(fā)送至多個槽函數(shù),一個槽函數(shù)也可以接收多個信號。信號與槽的良好設計使其應用于Qt界面開發(fā)的方方面面,無論是界面按鈕的點擊還是后臺對象間的通信,都會用到信號與槽。除了信號與槽以外,Qt的對象樹機制也是很好的技術(shù)特點,可以避免手動釋放控件內(nèi)存造成的開發(fā)效率降低問題。
該演示軟件使用銀河麒麟桌面操作系統(tǒng)V10 (SP1)下的Qt 5.6.3開發(fā),使用QChartView控件繪制誤差折線圖。
2.2 算法數(shù)據(jù)樣本選擇
鳶尾花數(shù)據(jù)集是機器學習領(lǐng)域的經(jīng)典數(shù)據(jù)集,最初由Edgar Anderson測量得到。它是一類多重變量分析的數(shù)據(jù)集。通過花萼長度、花萼寬度、花瓣長度、花瓣寬度這4個屬性來預測鳶尾花卉屬于山鳶尾(Setosa)、雜色鳶尾(Versicolour)、維吉尼亞鳶尾(Virginica)3個種類中的哪一類。
該數(shù)據(jù)集包含4個屬性列和1個品種類別列,屬性列由花萼長度、花萼寬度、花瓣長度、花瓣寬度這4個屬性構(gòu)成,品種類別由山鳶尾(Setosa)、雜色鳶尾(Versicolour)、維吉尼亞鳶尾(Virginica)3個種類構(gòu)成。實際使用中,本文將品種類別用3列表示,3列分別使用(1,0,0)(0,1,0)(0,0,1)代表山鳶尾(Setosa)、雜色鳶尾(Versicolour)、維吉尼亞鳶尾(Virginica)3個種類。
數(shù)據(jù)集包含150條數(shù)據(jù),本文將數(shù)據(jù)打亂順序并歸一化后,將前100條作為訓練數(shù)據(jù),將后50條作為驗證數(shù)據(jù)。訓練數(shù)據(jù)用來調(diào)整BP神經(jīng)網(wǎng)絡的相關(guān)參數(shù),驗證數(shù)據(jù)用來驗證調(diào)整參數(shù)后BP神經(jīng)網(wǎng)絡的誤差情況。
2.3 算法參數(shù)初始化
BP神經(jīng)網(wǎng)絡由輸入層、隱層、輸出層組成,每層由若干個神經(jīng)元組成,因此需要確定網(wǎng)絡的層數(shù)、每層中神經(jīng)元的個數(shù)、每個神經(jīng)元的權(quán)值和閾值以及激活函數(shù)等參數(shù)。本文中網(wǎng)絡層數(shù)選取經(jīng)典的3層結(jié)構(gòu)。根據(jù)數(shù)據(jù)樣本的基本信息,輸入層包含4個神經(jīng)元,隱層包含4個神經(jīng)元,輸出層包含3個神經(jīng)元,各層的激活函數(shù)都使用Sigmoid函數(shù),各個神經(jīng)元的權(quán)值和閾值使用(0,1)范圍內(nèi)進行隨機初始化。除此以外,算法迭代次數(shù)設定為100000次,學習率設定為0.1。
3 實驗結(jié)果與分析
在BP神經(jīng)網(wǎng)絡演示軟件中,本文首先對算法參數(shù)進行初始化,然后將鳶尾花數(shù)據(jù)集的前100條數(shù)據(jù)作為訓練數(shù)據(jù),來訓練BP神經(jīng)網(wǎng)絡的相關(guān)模型參數(shù),然后將鳶尾花數(shù)據(jù)集的后50條數(shù)據(jù)作為驗證數(shù)據(jù),以驗證調(diào)整參數(shù)后BP神經(jīng)網(wǎng)絡的誤差情況。
運行該演示軟件產(chǎn)生的誤差如圖3所示。圖中橫坐標為鳶尾花數(shù)據(jù)集編號,從0到49,共50組數(shù)據(jù);縱坐標為誤差,該誤差計算方法為將式(2)中的均方誤差Ek做lg運算得到的結(jié)果。
從圖3中可以看到,50組鳶尾花數(shù)據(jù)集中,縱坐標誤差在-3.0以下(即均方誤差小于10-3)的為48組。因此,可以得到一個結(jié)論:該BP神經(jīng)網(wǎng)絡演示軟件,針對鳶尾花數(shù)據(jù)集的識別率為96%,識別結(jié)果良好,說明該BP神經(jīng)網(wǎng)絡演示軟件的設計是有效和合理的。
4 結(jié)語
本文通過銀河麒麟桌面操作系統(tǒng)V10 (SP1)下的Qt開發(fā)框架,開發(fā)設計并實現(xiàn)了一個BP神經(jīng)網(wǎng)絡演示軟件。該軟件可以按設定的參數(shù)通過BP神經(jīng)網(wǎng)絡對鳶尾花數(shù)據(jù)集進行訓練和驗證,并將驗證誤差結(jié)果通過折線圖顯示出來。文中首先介紹了BP神經(jīng)網(wǎng)絡的原理、公式推導和算法流程,然后描述了軟件的界面設計、樣本選擇和參數(shù)初始化,最后通過實驗驗證,該演示軟件能很好地顯示驗證誤差結(jié)果的分布情況且誤差整體較小,從而證明該軟件功能是合理和完善的。
參考文獻
[1]RUMELHART D E, HINTON G E, WILLIAMS R J. Learning representations by back-propagation errors[J]. Nature, 1986: 533-536.
[2]RUBANOV N S. The layer wise method and the back propagation hybrid approach to learning a feedforward neural network[J]. IEEE Transactions on Neural Networks, 2000(2): 295-305.
[3]常虹,張冰.神經(jīng)網(wǎng)絡在結(jié)構(gòu)損傷識別中的應用研究[J].吉林建筑大學學報,2014(1):23-25.
[4]楊麗麗,白艷萍,苗靜,等.基于BP神經(jīng)網(wǎng)絡的中學考試成績分類[J].機電技術(shù),2011(3):40-41.
[5]李麗珍.地方政府或有隱性債務風險預警系統(tǒng)構(gòu)建與應用研究——基于BP神經(jīng)網(wǎng)絡分析法[J].財經(jīng)論叢,2021(3):14-25.
[6]王維波,栗寶鵑,侯春望.Qt 5.9 C++開發(fā)指南[M].北京:人民郵電出版社,2018.
[7]徐敬.基于Qt的Mifare IC卡讀卡器上位機軟件設計與實現(xiàn)[J].電腦知識與技術(shù),2021(33):124-126.
[8]許夢華.基于Qt的地面模擬飛行控制系統(tǒng)軟件設計與實現(xiàn)[J].電子測試,2022(1):29-31.
Design of BP neural network demonstration software based on Qt
Abstract:BP neural network algorithm is a typical neural network algorithm, which has a wide range of applications. In order to display the complete process of training and verifying data of the algorithm intuitively, this paper designs a BP neural network demonstration software based on the localization platform Qt, and uses the graphical controller of Qt to realize result demonstration of the algorithm. Firstly, the basic principle, formula derivation and workflow of BP neural network are introduced, and then Qt is used to realize the algorithm and draw a graphical interface. Then the algorithm is used to train and verify the iris dataset, and the verification results are displayed on the interface. After experiment verification, the software can support BP neural network algorithm running and result display, and can meet the related requirements of software design.
Key words: Qt; BP neural network; software design