人工神经网络是由众多连接权值可调的神经元连接而成,具有大规模并行处理、分布式信息存储、良好的自组织自学习能力等特点,能够完成模式识别、机器学习以及预测趋势等任务。
本书通过9章内容,并结合Java编程语言,由浅入深地介绍了神经网络算法的应用。书中涉及神经网络的构建、神经网络的结构、神经网络的学习、感知机、自组织映射等核心概念,并将天气预测、疾病诊断、客户特征聚类、模式识别、神经网络优化与自适应等经典案例囊括其中。本书在附录中详细地指导读者进行开发环境的配置,帮助读者更加顺利地进行程序开发。
本书非常适合对神经网络技术感兴趣的开发人员和业余读者阅读,读者无需具备Java编程知识,也无需提前了解神经网络的相关概念。本书将从零开始为读者进行由浅入深地讲解。
神经网络已成为从大量原始的,看似无关的数据中提取有用知识的强大技术。 Java语言是用于实现神经网络的zui合适的工具之一,也是现阶段非常流行的编程语言之一,包含多种有助于开发的API和包,具有一次编写,随处运行的可移植性。
本书完整地演示了使用Java开发神经网络的过程,既有非常基础的实例也有高级实例。首先,你将学习神经网络的基础知识、感知机及其特征。 然后,你将使用学到的概念来实现自组织映射网络。 此外,你还会了解一些应用,如天气预报、疾病诊断、客户特征分析和光学字符识别(OCR)等。 zui后,你将学习实时优化和自适应神经网络的方法。
首先,你将学习神经网络的基础知识和它们的学习过程。 然后我们关注感知机及其特征。 接下来,您将使用您学到的概念实现自组织映射。 此外,您将了解一些应用,如天气预报,疾病诊断,客户特征分析和光学字符识别(OCR)。 zui后,您将学习优化和适应实时神经网络的方法。
本书所有的示例都提供了说明性的源代码,这些源代码综合了面向对象编程(OOP)概念和神经网络特性,以帮助你更好的学习。
通过阅读本书,你讲能够:
掌握神经网络的知识及其用途;
运用常见实例开发神经网络;
探索和编码zui广泛使用的学习算法,让你的神经网络可以从大多数类型的数据中学习 知识;
发现神经网络的无监督学习过程的力量,提取隐藏在数据背后的内在知识;
应用实际示例(如天气预测和模式识别)中生成的代码;
了解如何选择zui合适的学习参数,以确保应用更高效;
选择数据集,将数据集切分为训练集、测试集和验证集,并探索验证策略;
了解如何改善和优化神经网络。
Fábio M. Soares拥有帕拉联邦大学(Universidade Federal do Pará,UFPA)的计算机应用专业硕士学位,目前是该所大学的在读博士生。他从2004年开始就一直在设计神经网络解决方案,在电信、化学过程建模等多个领域开发了神经网络技术的应用,他的研究主题涉及数据驱动建模的监督学习。
他也是一名个体经营者,为巴西北部的一些中小型公司提供IT基础设施管理和数据库管理等服务。在过去,他曾为大公司工作,如Albras(世界上zui重要的铝冶炼厂之一)和Eletronorte(巴西的一个大型电源供应商)。他也有当讲师的经历,曾在亚马逊联邦农业大学(Federal Rural University)和卡斯塔尼亚尔的一个学院授课,两所学校都在帕拉州,所教的学科涉及编程和人工智能。
他出版了许多作品,其中许多都有英文版,所有作品都是关于针对某些问题的人工智能技术。他在众多权v会议上发表了一系列学术文章,如TMS(矿物金属和材料学会)、轻金属学会和智能数据工程、自动学习学会等学术会议。他还为Intech写过两章内容。
Alan M.F. Souza是来自亚马逊高级研究所(Instituto de Estudos Superiores da Amaz?nia,IESAM)的计算机工程师。他拥有软件项目管理的研究生学位以及帕拉联邦大学(Universidade Federal do Pará,UFPA)的工业过程(计算机应用)硕士学位。自2009年以来,他一直从事神经网络方面的工作,并从2006年开始与巴西的IT公司合作进行Java、PHP、SQL和其他编程语言的开发。他热衷于编程和计算智能。目前,他是亚马逊大学(Universidade da Amaz?nia,UNAMA)的教授和帕拉联邦大学的在读博士生。
第1章 初识神经网络1
1.1 探索神经网络1
1.2 为什么要用人工神经网络2
1.3 神经网络的构造3
1.3.1 基础元素人工神经元3
1.3.2 赋予神经元生命
激活函数4
1.3.3 基础值权值5
1.3.4 重要参数偏置5
1.3.5 神经网络组件层5
1.4 神经网络结构6
1.4.1 单层神经网络7
1.4.2 多层神经网络7
1.4.3 前馈神经网络8
1.4.4 反馈神经网络8
1.5 从无知到有识学习过程8
1.6 实践神经网络9
1.7 小结15
第2章 神经网络是如何学习的16
2.1 神经网络的学习能力16
2.2 学习范式17
2.2.1 监督学习17
2.2.2 无监督学习18
2.3 系统结构学习算法19
2.3.1 学习的两个阶段训练
和测试20
2.3.2 细节学习参数21
2.3.3 误差度量和代价函数22
2.4 学习算法示例22
2.4.1 感知机22
2.4.2 Delta规则23
2.5 神经网络学习过程的编码23
2.5.1 参数学习实现23
2.5.2 学习过程24
2.5.3 类定义26
2.6 两个实例33
2.6.1 感知机(报警系统)34
2.6.2 ADALINE(交通预测)37
2.7 小结42
第3章 运用感知机43
3.1 学习感知机神经网络43
3.1.1 感知机的应用和局限性44
3.1.2 线性分离44
3.1.3 经典XOR(异或)
例子45
3.2 流行的多层感知机(MLP)47
3.2.1 MLP属性48
3.2.2 MLP权值49
3.2.3 递归MLP50
3.2.4 MLP在OOP范式中的
结构50
3.3 有趣的MLP应用51
3.3.1 使用MLP进行分类51
3.3.2 用MLP进行回归53
3.4 MLP的学习过程54
3.4.1 简单但很强大的学习
算法反向传播55
3.4.2 复杂而有效的学习算法
Levenberg?CMarquardt57
3.5 MLP实现58
3.5.1 实战反向传播算法61
3.5.2 探索代码62
3.6 Levenberg?CMarquardt实现66
3.7 实际应用新生入学68
3.8 小结71
第4章 自组织映射72
4.1 神经网络无监督学习方式72
4.2 无监督学习算法介绍73
4.3 Kohonen 自组织映射76
4.3.1 一维SOM77
4.3.2 二维SOM78
4.3.3 逐步实现自组织映射网络
学习80
4.3.4 如何使用SOM81
4.4 Kohonen算法编程81
4.4.1 探索Kohonen类84
4.4.2 Kohonen实现
(动物聚类)86
4.5 小结88
第5章 天气预测89
5.1 针对预测问题的神经网络89
5.2 无数据,无神经网络
选择数据91
5.2.1 了解问题天气变量92
5.2.2 选择输入输出变量92
5.2.3 移除无关行为
数据过滤93
5.3 调整数值数据预处理94
5.4 Java实现天气预测96
5.4.1 绘制图表96
5.4.2 处理数据文件97
5.4.3 构建天气预测神经网络98
5.5 神经网络经验设计101
5.5.1 选择训练和测试
数据集101
5.5.2 设计实验102
5.5.3 结果和模拟103
5.6 小结105
第6章 疾病诊断分类106
6.1 什么是分类问题,以及如何应用
神经网络106
6.2 激活函数的特殊类型
逻辑回归107
6.2.1 二分类VS多分类109
6.2.2 比较预期结果与产生
结果混淆矩阵109
6.2.3 分类衡量灵敏度和
特异性110
6.3 应用神经网络进行分类111
6.4 神经网络的疾病诊断114
6.4.1 使用神经网络诊断
乳腺癌114
6.4.2 应用神经网络进行早期糖
尿病诊断118
6.5 小结121
第7章 客户特征聚类122
7.1 聚类任务123
7.1.1 聚类分析123
7.1.2 聚类评估和验证124
7.1.3 外部验证125
7.2 应用无监督学习125
7.2.1 径向基函数神经网络125
7.2.2 Kohonen 神经网络126
7.2.3 数据类型127
7.3 客户特征128
7.4 Java实现129
7.5 小结135
第8章 模式识别(OCR案例)136
8.1 什么是模式识别136
8.1.1 定义大量数据中的
类别137
8.1.2 如果未定义的类没有被
定义怎么办138
8.1.3 外部验证138
8.2 如何在模式识别中应用神经网络
算法138
8.3 OCR问题140
8.3.1 简化任务数字
识别140
8.3.2 数字表示的方法140
8.4 开始编码141
8.4.1 生成数据141
8.4.2 构建神经网络143
8.4.3 测试和重新设计
试错144
8.4.4 结果145
8.5 小结148
第9章 神经网络优化与自适应149
9.1 神经网络实现中的常见问题149
9.2 输入选择150
9.2.1 数据相关性150
9.2.2 降维151
9.2.3 数据过滤152
9.3 结构选择152
9.4 在线再训练154
9.4.1 随机在线学习155
9.4.2 实现156
9.4.3 应用157
9.5 自适应神经网络159
9.5.1 自适应共振理论159
9.5.2 实现160
9.6 小结162
附录A NetBeans环境搭建163
附录B Eclipse环境搭建175
附录C 参考文献186