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