本书由10章构成。首先,系统、全面地阐述神经网络相关概念、知识点及特征。然后,重点介绍神经网络学习过程的细节,如何用Java实现神经网络特性及设计神经网络架构,如何优化调整神经网络参数等。最后,介绍一些经典案例及实现。本书适合神经网络初学者阅读,也可以作为智能化软件开发人员的工具书。
封面图
目录
- 译者序
- 作者和审校者简介
- 前言
- 第1章 神经网络入门 1
- 1.1探索神经网络 1
- 1.2人工神经网络 2
- 1.2.1神经网络是如何组织的 3
- 1.2.2基本元素—人工神经元 3
- 1.2.3赋予神经元生命—激活函数 4
- 1.2.4可变参数—权重 5
- 1.2.5额外参数—偏置 6
- 1.2.6由部分到整体—层 6
- 1.2.7神经网络体系结构 7
- 1.2.8单层网络 7
- 1.2.9多层网络 8
- 1.2.10前馈网络 8
- 1.2.11反馈网络 8
- 1.3从无知到认知—学习过程 9
- 1.4开始编程—神经网络实践 10
- 1.5神经元类 12
- 1.6NeuralLayer类 14
- 1.7ActivationFunction接口 15
- 1.8神经网络类 15
- 1.9运行程序 17
- 1.10本章小结 19
- 第2章
- 神经网络学习 20
- 2.1神经网络的学习能力 21
- 2.2学习模式 22
- 2.2.1监督学习 22
- 2.2.2无监督学习 22
- 2.3学习过程 23
- 2.3.1寻找损失函数最优下降方向 24
- 2.3.2在学习过程中更新权重 25
- 2.3.3计算损失函数 25
- 2.3.4一般误差和总体误差 27
- 2.3.5神经网络的迭代学习什么时候停止比较好 27
- 2.4学习算法示例 28
- 2.4.1δ规则 29
- 2.4.2学习率 30
- 2.4.3实现δ规则 30
- 2.4.4δ规则学习的核心—train和calcNewWeight方法 31
- 2.4.5另一种学习算法—Hebbian学习 34
- 2.4.6学习机 35
- 2.5在实践中理解学习过程 37
- 2.6测试 41
- 2.7本章小结 43
- 第3章感知机和监督学习 44
- 3.1监督学习—训练神经网络 45
- 3.1.1分类—寻找合适的类别 45
- 3.1.2回归—将实际输入映射到输出 46
- 3.2一个基本的神经结构—感知机 48
- 3.2.1应用和限制 49
- 3.2.2线性可分 49
- 3.2.3“异或”问题 50
- 3.3多层感知机 52
- 3.3.1MLP属性 52
- 3.3.2MLP权重 53
- 3.3.3递归MLP 54
- 3.3.4编码实现MLP 54
- 3.4MLP学习 55
- 3.4.1反向传播算法 56
- 3.4.2动量项 58
- 3.4.3编码实现反向传播 58
- 3.4.4Levenberg-Marquardt算法 62
- 3.4.5编码实现基于矩阵代数的Levenberg-Marquardt算法 64
- 3.4.6极限学习机 66
- 3.5实例1—基于δ规则和反向传播的“异或”问题 69
- 3.6实例2—预测入学状态 72
- 3.7本章小结 75
- 第4章自组织映射 76
- 4.1无监督神经网络 76
- 4.2无监督学习算法 77
- 4.2.1竞争学习 78
- 4.2.2竞争层 80
- 4.3Kohonen自组织映射 82
- 4.3.1将神经网络代码扩展至Kohonen 83
- 4.3.2零维SOM 84
- 4.3.3一维SOM 84
- 4.3.4二维SOM 85
- 4.3.52D竞争层 87
- 4.3.6SOM学习算法 89
- 4.3.7邻近神经元的影响—邻域函数 90
- 4.3.8学习率 91
- 4.3.9竞争学习的一个新类 92
- 4.3.10SOM可视化 95
- 4.3.11绘制训练数据集和神经元权重的2D图 97
- 4.3.12测试Kohonen学习 99
- 4.4本章小结 105
- 第5章预报天气 106
- 5.1神经网络用于回归问题 106
- 5.2加载/选择数据 108
- 5.2.1创建辅助类 108
- 5.2.2从CSV文件加载数据集 111
- 5.2.3创建时序结构 112
- 5.2.4丢弃NaN 113
- 5.2.5获取天气数据 114
- 5.2.6天气变量 115
- 5.3选择输入和输出变量 115
- 5.4预处理 117
- 5.4.1归一化 117
- 5.4.2应用NeuralDataSet处理归一化 121
- 5.4.3应用学习算法进行归一化 123
- 5.4.4天气预报的Java实现 123
- 5.4.5收集天气数据 123
- 5.4.6延迟变量 126
- 5.4.7加载数据并开始运行 126
- 5.4.8相关性分析 128
- 5.4.9创建神经网络 131
- 5.4.10训练和测试 131
- 5.4.11可视化神经网络的输出 133
- 5.5神经网络实验设计 134
- 5.5.1设计实验 134
- 5.5.2结果和模拟 135
- 5.6本章小结 138
- 第6章疾病分类识别 139
- 6.1分类问题的基础 139
- 6.1.1分类数据 140
- 6.1.2处理分类数据 141
- 6.2逻辑回归 142
- 6.2.1多分类与二分类 143
- 6.2.2混淆矩阵 144
- 6.2.3敏感性与特异性 144
- 6.2.4实现混淆矩阵 145
- 6.3分类神经网络 147
- 6.4用神经网络进行疾病识别 147
- 6.4.1乳腺癌识别 148
- 6.4.2糖尿病识别 151
- 6.5本章小结 154
- 第7章客户画像聚类 155
- 7.1聚类任务 156
- 7.1.1聚类分析 156
- 7.1.2聚类评估和验证 157
- 7.1.3实现 158
- 7.1.4外部验证 159
- 7.2应用无监督学习 159
- 7.3画像过程 160
- 7.3.1预处理 160
- 7.3.2Java实现 161
- 7.3.3信用卡—客户画像信用分析 161
- 7.3.4产品画像 165
- 7.3.5多少个簇合适 166
- 7.4本章小结 167
- 第8章文本识别 168
- 8.1模式识别 168
- 8.1.1类已知 169
- 8.1.2类未知 170
- 8.2神经网络用于模式识别 171
- 8.2.1数据预处理 171
- 8.2.2文本识别(光学字符识别) 172
- 8.2.3数字识别 172
- 8.2.4数字表示 172
- 8.2.5Java实现 173
- 8.2.6数据生成 173
- 8.2.7神经结构 174
- 8.2.8实验 174
- 8.2.9结果 176
- 8.3本章小结 179
- 第9章神经网络优化与调整 180
- 9.1神经网络实现的常见问题 181
- 9.2输入数据选择 181
- 9.2.1数据相关性 182
- 9.2.2数据转换 183
- 9.2.3降维 183
- 9.2.4数据过滤 184
- 9.2.5交叉验证 186
- 9.2.6神经网络结构选择 187
- 9.3在线重训练 189
- 9.3.1随机在线学习 190
- 9.3.2实现 190
- 9.3.3应用 191
- 9.4自适应神经网络 193
- 9.4.1自适应谐振理论 193
- 9.4.2实现 194
- 9.5本章小结 195
- 第10章神经网络当前趋势 196
- 10.1深度学习 196
- 10.2深度架构 198
- 10.2.1如何用Java实现深度学习 199
- 10.2.2神经模糊 201
- 10.2.3神经遗传 203
- 10.3实现混合神经网络 204
- 10.4本章小结 207
- 参考文献 208