摘要:针对中国对虾养殖产业遭受病害重创的情况,为解决基层相关技术人员短缺以及病害诊断准确率低的问题,结合神经网络专家系统在疾病诊断领域的应用,采用ASP.NET技术和B/S三层架构思想,设计并建立了基于BP神经网络的对虾病害诊断与防治专家系统。该系统是虾蟹养殖专家系统中的一个子系统,有效地解决了传统专家系统获取知识困难、自学习能力差和推理能力弱等问题,实现了对虾养殖的咨询、病害诊断与防治等功能,界面友好,操作简单实用,维护方便,具有一定的现实意义和推广价值。
关键词: 专家系统;BP神经网络;对虾病害诊断与防治;ASP.NET技术
2010年,一场虾病席卷中国整个对虾养殖业,造成了严重的经济损失。时至今日,病害问题仍然是对虾养殖环节最大的问题。目前,在基层进行虾病诊断的专家相对短缺,导致虾病诊断与防治不及时,延误病情,甚至有可能使疾病扩散开来。因此,为指导基层养殖户和集约化养殖场技术人员科学养殖对虾,开发对虾病害诊断与防治专家系统是很有必要的[1-7]。
对虾病害防治专家系统是虾蟹养殖专家系统的一个子系统,也是集约化水产养殖数字化系统的重要组成部分。该系统运用智能化信息处理技术、网络技术,将汇集总结的虾、蟹养殖领域专家的知识和经验展现在用户面前。采用BP神经网络与专家系统相结合的设计方法,解决了传统专家系统知识获取的“瓶颈”,如推理能力弱、智能水平低、实用性差等问题[8-13]。通过对收集到的对虾病害诊治数据进行处理,设计并构建BP网络,编码实现,进行训练,最终得到了比较准确的诊断结果。
1.1 系统构架
系统在浏览器、Web服务器和数据库服务器的B/S三层架构下,通过Web浏览器实现用户工作界面;运用ASP.NET技术,以Visual Studio 2010为开发平台,用C#语言编程开发动态、交互、高性能的Web服务应用程序;利用SQL Server 2008数据库,实现对虾病害防治信息的数据库和神经网络知识库的后台数据管理。该系统的体系结构如图1所示。
用户通过浏览器登录系统,选择对虾的种类,了解和掌握该种类对虾生态学特征、养殖情况、养殖要点等相关信息和知识,完成对虾病害查询和病害诊断。领域专家将对虾疾病症状和典型病例等信息输入到数据库,训练神经网络,形成神经网络知识库,利用BP神经网络实现自学习功能。用户选择患病对虾症状,系统根据输入症状通过BP神经网络推理策略来推断对虾所患疾病,并将该病的详细情况,包括病原、流行情况、防治方法等信息返回给用户,系统也会根据用户的诊断结果做相应的记录,以便提供给知识工程师和领域专家进一步完善知识库。
1.2 系统功能模块
根据专家系统具体实现功能,系统功能模块主要分为四部分:用户管理模块、数据库管理模块、知识库管理模块和病害防治模块,如图2所示。
图1 系统体系结构
Fig.1 The architecture in the system
图2 系统功能模块划分
Fig.2 The function modules in the system
用户管理模块主要是对用户的登录及注册信息进行管理;数据库管理模块主要管理症状和疾病相关信息,可以实现更新、添加、删除、查询等功能;知识库管理模块主要存储典型病例知识及神经网络知识,可以实现更新、添加、删除、查询等功能;病害防治模块主要分为病害查询模块和病害诊断模块,用户可以实现对虾病害信息的查询,以及利用神经网络的自学习功能进行对虾病害的诊断。
1.3 文件组织结构
每个项目都会有相应的文件夹组织结构,本系统按照三层架构的模式来开发,包括4个项目文件夹,如图3所示。CrustaceansSystem.BLL用于实现业务逻辑层,主要负责数据的传递和处理;CrustaceansSystem.DAL用于数据访问层,主要实现对数据的读取、保存和更新等操作;CrustaceansSystem.Models用于实现模型层,包含所有与数据库中的表相对应的实体类;ASP.NET网站文件为表示层,用于显示和接收用户提交的数据,为用户提供交互式的界面[14]。
1.4 数据库设计
对虾病害防治专家系统的数据库主要由四部分组成:症状库、疾病库、规则库和病例库。症状库是存放与对虾病害相关症状的名称、文字描述和图片等相关信息的数据库,这里将对虾的症状进行了分类,分为摄食情况、行为特征、虾体症状、镜/剖检四类。疾病库主要存放对虾的疾病名称、病原、流行规律、防治方法等相关信息,是诊断的结论部分。规则库中存储的是通过样本训练而得到的神经网络推理规则,将通过对神经网络的训练把知识变换为网络的连接权值和阈值分布存储起来。病例库中存储的是典型病例以及用来训练神经网络的病例样本,包括症状与对应的疾病相关信息。
图3 系统文件组织结构
Fig.3 The file structure in the system
根据BP神经网络的构建原则以及以往经验,以对虾疾病症状为输入变量,疾病名称为输出变量,确定网络层数、各层节点数和激活函数,构建神经网络模型[15]。
2.1 BP网络结构设计
理论上已经证明:具有偏差和至少一个S型隐含层和一个线性输出层的网络,便能逼近所有有理数。虽然增加隐含层层数可以降低误差,提高精度,但同时也使网络复杂化,训练时间更长。实际上,也可以通过增加神经元数目来提高误差精度,其训练效果也比增加隐含层层数更容易观察和调整。故本系统采用含有一个隐含层的3层BP神经网络,其结构如图4所示。在网络的训练过程中,通过调整隐含层的神经元数目来提高精度。
图4 BP网络结构图
Fig.4 BP network structure
2.2 输入输出层设计
系统根据每个疾病症状的输入样本集为各节点确定输入值,每个节点对应一种症状,当用户选中某条症状时,该节点赋值为1,无此症状时,该节点赋值为0。输出变量对应病害的名称,输出节点数为疾病的总数目,如果是该病,则得到该节点值为1,反之,节点值则为0。例如该系统中总结的南美白对虾的疾病症状共有84种,病害种类有23种,即输入层节点数84个,输出层节点数23个。
2.3 隐含层设计
隐含层的节点数先用经验公式(1)确定一个相对较小的节点数:
。
(1)
其中:ni为输入层节点数;no为输出层节点数。然后根据训练收敛速度和测试的误差来决定是否增加隐含层节点数,直到网络收敛为止[16]。
2.4 训练参数设置
(1) 激励函数。对于如图4所示BP网络的正向计算,输入层节点的输入和输出相同,由式(2)计算得到隐含层的输入neti,后经激励函数处理即得隐含层输出yi,如式(3)。输出层的计算方法与隐含层相同,这里隐含层和输出层的激励函数均采用S型函数,将网络的输出限制在(0,1)之间。
,
(2)
。 (3)
其中:xh为输入层第h个神经元的输入值;vih为输入层第h个神经元到隐含层第i个神经元的连接权值;ai为隐含层第i个神经元的阈值。
(2) 权值和阈值初始化。为了使每个节点的输出值经过初始加权后都接近于0,这里将输入层与隐含层的连接权值vih、隐含层与输出层的连接权值wji、隐含层各神经元阈值ai和输出层各神经元阈值bj均初始化为一个(-1,1)区间内的随机数,从而保证它们的权值都能够在S型激励函数变化最大处进行调节。
(3) 误差函数与误差精度。在BP网络的反向传播过程中,对于m个训练样本的总误差准则函数如下:
。
(4)
其中为神经网络的期望输出;为神经网络的实际输出。当误差值大于误差精度时,则反向调整神经网络的连接权值和阈值,反之,则表示训练成功。这里将误差精度设为e=0.001。
(4) 学习速率和权值阈值调整。学习速率决定了每一次循环训练中权值所产生的变化量。一般倾向于选取较小的学习速率以保证系统的稳定性,这里将初始学习速率η设为0.01,并且采用变化的自适应学习速率,根据权值对误差的影响进行调整。根据以下公式对权值阈值进行调整:
输出层权值调整公式为
,
(5)
输出层阈值调整公式为
,
(6)
隐含层权值调整公式为
f′(neti)xh,
(7)
隐含层阈值调整公式为
。
(8)
虾蟹养殖专家系统以Visual Studio 2010为集成开发环境,运用ASP.NET技术、C#程序编程语言和JavaScript脚本语言实现用户交互界面和计算逻辑,客户端不需要加载任何其他组件,用户只需通过浏览器即可使用系统的各项功能。对虾病害诊断专家系统是其主要的子系统,不仅拥有大量的数据和图片,还具备分析、预测和辅助诊断的能力。不仅实现了对虾病害诊断与防治的数字化、智能化和网络化,更重要的是利用BP神经网络实现了系统的自学习功能,让病害诊断不仅仅局限在已知病例知识的查询上。系统的功能模块有很多,本研究中仅简单介绍其中两个模块的实现过程。
3.1 用户登录界面
系统采用自然化、人性化设计风格设计了清新自然、简洁明了的用户登录界面,模块功能齐全,操作简单,如图5所示。
图5 用户登录界面
Fig.5 User login interface
3.2 对虾病害防治子系统
此子系统是整个系统的核心组成部分,包括对虾的诊断防治、疾病浏览、疾病查询等功能。在病害诊断部分,用户通过选择症状,系统通过训练好的BP神经网络进行推理诊断,将诊断结果返回给用户,包括该病的病原、流行规律、防治方法等相关信息。系统的运行实例简要介绍如下。
(1) BP网络的训练。系统的后台负责对BP神经网络的管理,包括网络参数的设置,训练样本的添加与删除等,如图6所示。
病害诊断BP神经网络推理过程实现的部分关键代码如下:
计算隐含层节点数代码:
public int computeHideNum(int m, int n)
{
double s = Math.Sqrt(m + n);
int ss = Convert.ToInt32(s);
return ((s-(double)ss) > 0.5) ? ss + 1: ss;
}
计算隐含层的输入和输出代码:
for (int j = 0; j < hideNum; j++)
{
o1[j] = 0.0;
for (int i = 0; i < inNum; i++)
{
o1[j] += w[i, j] * x[i];
}
x1[j] = 1.0 / (1.0 + Math.Exp(-o1[j]-b1[j]));
}
计算输出层的输入和输出代码:
for (int k = 0; k < outNum; k++)
{
o2[k] = 0.0;
for (int j = 0; j < hideNum; j++)
{
o2[k] += v[j, k] * x1[j];
}
x2[k] = 1.0 / (1.0 + Math.Exp(-o2[k]-b2[k]));
}
图6 BP网络管理界面
Fig.6 Interface of BP network management
(2) 实现诊断。诊断界面如图7所示,用户进入前台系统后,选择疾病症状,通过后台训练好的BP神经网络进行计算,实现对疾病的诊断。
图7 病害诊断界面
Fig.7 Interface of disease diagnosis
参考文献:
[1] 兰天尧.亲历病虾四次病害防治[N].中国渔业报,2014-09-08(B02).
[2] 邓昌明.南美白对虾病害困扰浙江养殖户[N].中国渔业报,2014-11-10(B02).
[3] 刘志玲,唐启胜.对虾病害的防治方法[J].科学养鱼,2014(8):89.
[4] 刘双印,徐龙琴,沈玉利.基于.NET的对虾病害防治专家系统的设计与实现[J].计算机工程与设计,2008,29(13):3444-3447.
[5] 段金荣,张红燕,刘凯,等.基于WebGIS水产动物疾病专家系统的设计与实现[J].中国农业科技导报,2008,10(5):99-103.
[6] 于毅,徐睿,刘鑫,等.专家系统在水产养殖病害上的应用与发展[J].北京农业,2011(8):42-43.
[7] 曹晶,谢骏,王海英,等.基于BP神经网络的水产健康养殖专家系统设计与实现[J].湘潭大学自然科学学报,2010(3):117-121.
[8] 张昕,邓长辉.BP神经网络在水质参数预测中的应用[J].大连海洋大学学报,2012,27(S):86-88.
[9] 高艳萍,于红,崔新忠.基于优化BP网络的工厂化水产养殖水质预测模型的实现[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].现代计算机:专业版,2010(4):23-26.
[14] 杨红利.陶瓷配方专家系统的研究与设计[D].西安:陕西科技大学,2012.
[15] 叶进,邢传鼎.基于人工神经网络的病症诊断原型系统[J].东华大学学报:自然科学版,2004,29(4):43-47.
[16] 陈强,吴平,郑丽敏.基于BP神经网络的水牛疾病诊断专家系统[J].计算机工程与设计,2008,29(6):1485-1488.
Abstract: An expert system for shrimp disease diagnose and prevention is established and practiced to solve shortage of technical persons and low disease diagnostic accuracy based on back propagation artificial neural network, combined with the application of neural network expert system in the field of disease diagnosis in shrimp industry suffered from diseases. The system as a subsystem of crustacean aquaculture expert system is designed by ASP, NET technology and B/S three layers architecture ideas, and effectively solves problems, such as difficulties of acquiring knowledge, poor ability of self-learning and reasoning for traditional expert system. The system is characterized by user-friendly, simple, practical and easy to maintain, and has the functions of the shrimp culture consulting, and disease diagnosis and prevention, with certain practical significance and promotional value.
Key words: expert system; BP neural network; shrimp disease diagnose and prevention; ASP.NET technology
基金项目: 辽宁省科学研究计划项目(2011203005);辽宁省优秀人才支持计划项目(LR2012024);国家“星火计划”项目(2012GA651004)
收稿日期: 2014-10-13
中图分类号:TP183
文献标志码:A
文章编号:2095-1388(2015)03-0319-05
DOI:10.16535/j.cnki.dlhyxb.2015.03.016