葉嬋,鄧長輝,曹向南,劉駿,姜玉聲
(1.大連海洋大學(xué)信息工程學(xué)院,遼寧大連116023;2.大連海洋大學(xué)機(jī)械與動(dòng)力工程學(xué)院,遼寧大連116023;3.大連海洋大學(xué)海洋科技與環(huán)境學(xué)院,遼寧大連116023;4.大連海洋大學(xué)水產(chǎn)與生命學(xué)院,遼寧大連116023)
2010年,一場蝦病席卷中國整個(gè)對(duì)蝦養(yǎng)殖業(yè),造成了嚴(yán)重的經(jīng)濟(jì)損失。時(shí)至今日,病害問題仍然是對(duì)蝦養(yǎng)殖環(huán)節(jié)最大的問題。目前,在基層進(jìn)行蝦病診斷的專家相對(duì)短缺,導(dǎo)致蝦病診斷與防治不及時(shí),延誤病情,甚至有可能使疾病擴(kuò)散開來。因此,為指導(dǎo)基層養(yǎng)殖戶和集約化養(yǎng)殖場技術(shù)人員科學(xué)養(yǎng)殖對(duì)蝦,開發(fā)對(duì)蝦病害診斷與防治專家系統(tǒng)是很有必要的[1-7]。
對(duì)蝦病害防治專家系統(tǒng)是蝦蟹養(yǎng)殖專家系統(tǒng)的一個(gè)子系統(tǒng),也是集約化水產(chǎn)養(yǎng)殖數(shù)字化系統(tǒng)的重要組成部分。該系統(tǒng)運(yùn)用智能化信息處理技術(shù)、網(wǎng)絡(luò)技術(shù),將匯集總結(jié)的蝦、蟹養(yǎng)殖領(lǐng)域?qū)<业闹R(shí)和經(jīng)驗(yàn)展現(xiàn)在用戶面前。采用BP神經(jīng)網(wǎng)絡(luò)與專家系統(tǒng)相結(jié)合的設(shè)計(jì)方法,解決了傳統(tǒng)專家系統(tǒng)知識(shí)獲取的“瓶頸”,如推理能力弱、智能水平低、實(shí)用性差等問題[8-13]。通過對(duì)收集到的對(duì)蝦病害診治數(shù)據(jù)進(jìn)行處理,設(shè)計(jì)并構(gòu)建BP網(wǎng)絡(luò),編碼實(shí)現(xiàn),進(jìn)行訓(xùn)練,最終得到了比較準(zhǔn)確的診斷結(jié)果。
系統(tǒng)在瀏覽器、Web服務(wù)器和數(shù)據(jù)庫服務(wù)器的B/S三層架構(gòu)下,通過Web瀏覽器實(shí)現(xiàn)用戶工作界面;運(yùn)用 ASP.NET技術(shù),以 Visual Studio 2010為開發(fā)平臺(tái),用C#語言編程開發(fā)動(dòng)態(tài)、交互、高性能的Web服務(wù)應(yīng)用程序;利用SQL Server 2008數(shù)據(jù)庫,實(shí)現(xiàn)對(duì)蝦病害防治信息的數(shù)據(jù)庫和神經(jīng)網(wǎng)絡(luò)知識(shí)庫的后臺(tái)數(shù)據(jù)管理。該系統(tǒng)的體系結(jié)構(gòu)如圖1所示。
用戶通過瀏覽器登錄系統(tǒng),選擇對(duì)蝦的種類,了解和掌握該種類對(duì)蝦生態(tài)學(xué)特征、養(yǎng)殖情況、養(yǎng)殖要點(diǎn)等相關(guān)信息和知識(shí),完成對(duì)蝦病害查詢和病害診斷。領(lǐng)域?qū)<覍?duì)蝦疾病癥狀和典型病例等信息輸入到數(shù)據(jù)庫,訓(xùn)練神經(jīng)網(wǎng)絡(luò),形成神經(jīng)網(wǎng)絡(luò)知識(shí)庫,利用BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)自學(xué)習(xí)功能。用戶選擇患病對(duì)蝦癥狀,系統(tǒng)根據(jù)輸入癥狀通過BP神經(jīng)網(wǎng)絡(luò)推理策略來推斷對(duì)蝦所患疾病,并將該病的詳細(xì)情況,包括病原、流行情況、防治方法等信息返回給用戶,系統(tǒng)也會(huì)根據(jù)用戶的診斷結(jié)果做相應(yīng)的記錄,以便提供給知識(shí)工程師和領(lǐng)域?qū)<疫M(jìn)一步完善知識(shí)庫。
根據(jù)專家系統(tǒng)具體實(shí)現(xiàn)功能,系統(tǒng)功能模塊主要分為四部分:用戶管理模塊、數(shù)據(jù)庫管理模塊、知識(shí)庫管理模塊和病害防治模塊,如圖2所示。
圖1 系統(tǒng)體系結(jié)構(gòu)Fig.1 The architecture in the system
圖2 系統(tǒng)功能模塊劃分Fig.2 The function modules in the system
用戶管理模塊主要是對(duì)用戶的登錄及注冊(cè)信息進(jìn)行管理;數(shù)據(jù)庫管理模塊主要管理癥狀和疾病相關(guān)信息,可以實(shí)現(xiàn)更新、添加、刪除、查詢等功能;知識(shí)庫管理模塊主要存儲(chǔ)典型病例知識(shí)及神經(jīng)網(wǎng)絡(luò)知識(shí),可以實(shí)現(xiàn)更新、添加、刪除、查詢等功能;病害防治模塊主要分為病害查詢模塊和病害診斷模塊,用戶可以實(shí)現(xiàn)對(duì)蝦病害信息的查詢,以及利用神經(jīng)網(wǎng)絡(luò)的自學(xué)習(xí)功能進(jìn)行對(duì)蝦病害的診斷。
每個(gè)項(xiàng)目都會(huì)有相應(yīng)的文件夾組織結(jié)構(gòu),本系統(tǒng)按照三層架構(gòu)的模式來開發(fā),包括4個(gè)項(xiàng)目文件夾,如圖3所示。CrustaceansSystem.BLL用于實(shí)現(xiàn)業(yè)務(wù)邏輯層,主要負(fù)責(zé)數(shù)據(jù)的傳遞和處理;CrustaceansSystem.DAL用于數(shù)據(jù)訪問層,主要實(shí)現(xiàn)對(duì)數(shù)據(jù)的讀取、保存和更新等操作;CrustaceansSystem.Models用于實(shí)現(xiàn)模型層,包含所有與數(shù)據(jù)庫中的表相對(duì)應(yīng)的實(shí)體類;ASP.NET網(wǎng)站文件為表示層,用于顯示和接收用戶提交的數(shù)據(jù),為用戶提供交互式的界面[14]。
圖3 系統(tǒng)文件組織結(jié)構(gòu)Fig.3 The file structure in the system
對(duì)蝦病害防治專家系統(tǒng)的數(shù)據(jù)庫主要由四部分組成:癥狀庫、疾病庫、規(guī)則庫和病例庫。癥狀庫是存放與對(duì)蝦病害相關(guān)癥狀的名稱、文字描述和圖片等相關(guān)信息的數(shù)據(jù)庫,這里將對(duì)蝦的癥狀進(jìn)行了分類,分為攝食情況、行為特征、蝦體癥狀、鏡/剖檢四類。疾病庫主要存放對(duì)蝦的疾病名稱、病原、流行規(guī)律、防治方法等相關(guān)信息,是診斷的結(jié)論部分。規(guī)則庫中存儲(chǔ)的是通過樣本訓(xùn)練而得到的神經(jīng)網(wǎng)絡(luò)推理規(guī)則,將通過對(duì)神經(jīng)網(wǎng)絡(luò)的訓(xùn)練把知識(shí)變換為網(wǎng)絡(luò)的連接權(quán)值和閾值分布存儲(chǔ)起來。病例庫中存儲(chǔ)的是典型病例以及用來訓(xùn)練神經(jīng)網(wǎng)絡(luò)的病例樣本,包括癥狀與對(duì)應(yīng)的疾病相關(guān)信息。
根據(jù)BP神經(jīng)網(wǎng)絡(luò)的構(gòu)建原則以及以往經(jīng)驗(yàn),以對(duì)蝦疾病癥狀為輸入變量,疾病名稱為輸出變量,確定網(wǎng)絡(luò)層數(shù)、各層節(jié)點(diǎn)數(shù)和激活函數(shù),構(gòu)建神經(jīng)網(wǎng)絡(luò)模型[15]。
理論上已經(jīng)證明:具有偏差和至少一個(gè)S型隱含層和一個(gè)線性輸出層的網(wǎng)絡(luò),便能逼近所有有理數(shù)。雖然增加隱含層層數(shù)可以降低誤差,提高精度,但同時(shí)也使網(wǎng)絡(luò)復(fù)雜化,訓(xùn)練時(shí)間更長。實(shí)際上,也可以通過增加神經(jīng)元數(shù)目來提高誤差精度,其訓(xùn)練效果也比增加隱含層層數(shù)更容易觀察和調(diào)整。故本系統(tǒng)采用含有一個(gè)隱含層的3層BP神經(jīng)網(wǎng)絡(luò),其結(jié)構(gòu)如圖4所示。在網(wǎng)絡(luò)的訓(xùn)練過程中,通過調(diào)整隱含層的神經(jīng)元數(shù)目來提高精度。
圖4 BP網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.4 BP network structure
系統(tǒng)根據(jù)每個(gè)疾病癥狀的輸入樣本集為各節(jié)點(diǎn)確定輸入值,每個(gè)節(jié)點(diǎn)對(duì)應(yīng)一種癥狀,當(dāng)用戶選中某條癥狀時(shí),該節(jié)點(diǎn)賦值為1,無此癥狀時(shí),該節(jié)點(diǎn)賦值為0。輸出變量對(duì)應(yīng)病害的名稱,輸出節(jié)點(diǎn)數(shù)為疾病的總數(shù)目,如果是該病,則得到該節(jié)點(diǎn)值為1,反之,節(jié)點(diǎn)值則為0。例如該系統(tǒng)中總結(jié)的南美白對(duì)蝦的疾病癥狀共有84種,病害種類有23種,即輸入層節(jié)點(diǎn)數(shù)84個(gè),輸出層節(jié)點(diǎn)數(shù)23個(gè)。
隱含層的節(jié)點(diǎn)數(shù)先用經(jīng)驗(yàn)公式 (1)確定一個(gè)相對(duì)較小的節(jié)點(diǎn)數(shù):
其中:ni為輸入層節(jié)點(diǎn)數(shù);no為輸出層節(jié)點(diǎn)數(shù)。然后根據(jù)訓(xùn)練收斂速度和測試的誤差來決定是否增加隱含層節(jié)點(diǎn)數(shù),直到網(wǎng)絡(luò)收斂為止[16]。
(1)激勵(lì)函數(shù)。對(duì)于如圖4所示BP網(wǎng)絡(luò)的正向計(jì)算,輸入層節(jié)點(diǎn)的輸入和輸出相同,由式(2)計(jì)算得到隱含層的輸入neti,后經(jīng)激勵(lì)函數(shù)處理即得隱含層輸出yi,如式 (3)。輸出層的計(jì)算方法與隱含層相同,這里隱含層和輸出層的激勵(lì)函數(shù)均采用S型函數(shù),將網(wǎng)絡(luò)的輸出限制在 (0,1)之間。
其中:xh為輸入層第h個(gè)神經(jīng)元的輸入值;vih為輸入層第h個(gè)神經(jīng)元到隱含層第i個(gè)神經(jīng)元的連接權(quán)值;ai為隱含層第i個(gè)神經(jīng)元的閾值。
(2)權(quán)值和閾值初始化。為了使每個(gè)節(jié)點(diǎn)的輸出值經(jīng)過初始加權(quán)后都接近于0,這里將輸入層與隱含層的連接權(quán)值vih、隱含層與輸出層的連接權(quán)值wji、隱含層各神經(jīng)元閾值ai和輸出層各神經(jīng)元閾值bj均初始化為一個(gè) (-1,1)區(qū)間內(nèi)的隨機(jī)數(shù),從而保證它們的權(quán)值都能夠在S型激勵(lì)函數(shù)變化最大處進(jìn)行調(diào)節(jié)。
(3)誤差函數(shù)與誤差精度。在BP網(wǎng)絡(luò)的反向傳播過程中,對(duì)于m個(gè)訓(xùn)練樣本的總誤差準(zhǔn)則函數(shù)如下:
(4)學(xué)習(xí)速率和權(quán)值閾值調(diào)整。學(xué)習(xí)速率決定了每一次循環(huán)訓(xùn)練中權(quán)值所產(chǎn)生的變化量。一般傾向于選取較小的學(xué)習(xí)速率以保證系統(tǒng)的穩(wěn)定性,這里將初始學(xué)習(xí)速率η設(shè)為0.01,并且采用變化的自適應(yīng)學(xué)習(xí)速率,根據(jù)權(quán)值對(duì)誤差的影響進(jìn)行調(diào)整。根據(jù)以下公式對(duì)權(quán)值閾值進(jìn)行調(diào)整:
輸出層權(quán)值調(diào)整公式為
輸出層閾值調(diào)整公式為
隱含層權(quán)值調(diào)整公式為
隱含層閾值調(diào)整公式為
蝦蟹養(yǎng)殖專家系統(tǒng)以Visual Studio 2010為集成開發(fā)環(huán)境,運(yùn)用ASP.NET技術(shù)、C#程序編程語言和JavaScript腳本語言實(shí)現(xiàn)用戶交互界面和計(jì)算邏輯,客戶端不需要加載任何其他組件,用戶只需通過瀏覽器即可使用系統(tǒng)的各項(xiàng)功能。對(duì)蝦病害診斷專家系統(tǒng)是其主要的子系統(tǒng),不僅擁有大量的數(shù)據(jù)和圖片,還具備分析、預(yù)測和輔助診斷的能力。不僅實(shí)現(xiàn)了對(duì)蝦病害診斷與防治的數(shù)字化、智能化和網(wǎng)絡(luò)化,更重要的是利用BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了系統(tǒng)的自學(xué)習(xí)功能,讓病害診斷不僅僅局限在已知病例知識(shí)的查詢上。系統(tǒng)的功能模塊有很多,本研究中僅簡單介紹其中兩個(gè)模塊的實(shí)現(xiàn)過程。
系統(tǒng)采用自然化、人性化設(shè)計(jì)風(fēng)格設(shè)計(jì)了清新自然、簡潔明了的用戶登錄界面,模塊功能齊全,操作簡單,如圖5所示。
圖5 用戶登錄界面Fig.5 User login interface
此子系統(tǒng)是整個(gè)系統(tǒng)的核心組成部分,包括對(duì)蝦的診斷防治、疾病瀏覽、疾病查詢等功能。在病害診斷部分,用戶通過選擇癥狀,系統(tǒng)通過訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行推理診斷,將診斷結(jié)果返回給用戶,包括該病的病原、流行規(guī)律、防治方法等相關(guān)信息。系統(tǒng)的運(yùn)行實(shí)例簡要介紹如下。
(1)BP網(wǎng)絡(luò)的訓(xùn)練。系統(tǒng)的后臺(tái)負(fù)責(zé)對(duì)BP神經(jīng)網(wǎng)絡(luò)的管理,包括網(wǎng)絡(luò)參數(shù)的設(shè)置,訓(xùn)練樣本的添加與刪除等,如圖6所示。
病害診斷BP神經(jīng)網(wǎng)絡(luò)推理過程實(shí)現(xiàn)的部分關(guān)鍵代碼如下:
計(jì)算隱含層節(jié)點(diǎn)數(shù)代碼:
計(jì)算隱含層的輸入和輸出代碼:
計(jì)算輸出層的輸入和輸出代碼:
圖6 BP網(wǎng)絡(luò)管理界面Fig.6 Interface of BP network management
(2)實(shí)現(xiàn)診斷。診斷界面如圖7所示,用戶進(jìn)入前臺(tái)系統(tǒng)后,選擇疾病癥狀,通過后臺(tái)訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行計(jì)算,實(shí)現(xiàn)對(duì)疾病的診斷。
圖7 病害診斷界面Fig.7 Interface of disease diagnosis
[1]蘭天堯.親歷病蝦四次病害防治[N].中國漁業(yè)報(bào),2014-09-08(B02).
[2]鄧昌明.南美白對(duì)蝦病害困擾浙江養(yǎng)殖戶[N].中國漁業(yè)報(bào),2014-11-10(B02).
[3]劉志玲,唐啟勝.對(duì)蝦病害的防治方法[J].科學(xué)養(yǎng)魚,2014(8):89.
[4]劉雙印,徐龍琴,沈玉利.基于.NET的對(duì)蝦病害防治專家系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(13):3444-3447.
[5]段金榮,張紅燕,劉凱,等.基于WebGIS水產(chǎn)動(dòng)物疾病專家系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國農(nóng)業(yè)科技導(dǎo)報(bào),2008,10(5):99-103.
[6]于毅,徐睿,劉鑫,等.專家系統(tǒng)在水產(chǎn)養(yǎng)殖病害上的應(yīng)用與發(fā)展[J].北京農(nóng)業(yè),2011(8):42-43.
[7]曹晶,謝駿,王海英,等.基于BP神經(jīng)網(wǎng)絡(luò)的水產(chǎn)健康養(yǎng)殖專家系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].湘潭大學(xué)自然科學(xué)學(xué)報(bào),2010(3):117-121.
[8]張昕,鄧長輝.BP神經(jīng)網(wǎng)絡(luò)在水質(zhì)參數(shù)預(yù)測中的應(yīng)用[J].大連海洋大學(xué)學(xué)報(bào),2012,27(S):86-88.
[9]高艷萍,于紅,崔新忠.基于優(yōu)化BP網(wǎng)絡(luò)的工廠化水產(chǎn)養(yǎng)殖水質(zhì)預(yù)測模型的實(shí)現(xiàn)[J].大連海洋大學(xué)學(xué)報(bào),2008,23(3):221-224.
[10]Deng C H,Lin X L,Gu J,et al.Expert system for fish disease diagnosis based on neural network[C]//2012 Second International Conference on Electric Information and Control Engineering,Jiangxi,China,2012:3640-3644.
[11]Gu J,Deng C H,Lin X L,et al.Expert system for fish disease diagnosis based on fuzzy neural network[C]//ICICIP 2012 3rd International Conference on Intelligent Control and Information Processing,Dalian,China,2012:146-149.
[12]Deng C H,Wang W,Gu J,et al.Research of fish disease diagnosis expert system based on artificial neural networks[C]//The Fifth Chinese Conference on Parallel Control,Parallel Management and Social Computing,Qingdao,China,2013:591-595.
[13]鐘昌樂,鐘勇,李寧.基于BP神經(jīng)網(wǎng)絡(luò)的畜禽疾病診斷專家系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī):專業(yè)版,2010(4):23-26.
[14]楊紅利.陶瓷配方專家系統(tǒng)的研究與設(shè)計(jì)[D].西安:陜西科技大學(xué),2012.
[15]葉進(jìn),邢傳鼎.基于人工神經(jīng)網(wǎng)絡(luò)的病癥診斷原型系統(tǒng)[J].東華大學(xué)學(xué)報(bào):自然科學(xué)版,2004,29(4):43-47.
[16]陳強(qiáng),吳平,鄭麗敏.基于BP神經(jīng)網(wǎng)絡(luò)的水牛疾病診斷專家系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(6):1485-1488.