《神经网络编程实战:Java语言实现》由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.6 NeuralLayer类 14
- 1.7 ActivationFunction接口 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.1 MLP属性 52
- 3.3.2 MLP权重 53
- 3.3.3 递归MLP 54
- 3.3.4 编码实现MLP 54
- 3.4 MLP学习 55
- 3.4.1 反向传播算法 56
- 3.4.2 动量项 58
- 3.4.3 编码实现反向传播 58
- 3.4.4 Levenberg-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.3 Kohonen自组织映射 82
- 4.3.1 将神经网络代码扩展至Kohonen 83
- 4.3.2 零维SOM 84
- 4.3.3 一维SOM 84
- 4.3.4 二维SOM 85
- 4.3.5 2D竞争层 87
- 4.3.6 SOM学习算法 89
- 4.3.7 邻近神经元的影响—邻域函数 90
- 4.3.8 学习率 91
- 4.3.9 竞争学习的一个新类 92
- 4.3.10 SOM可视化 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.2 Java实现 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.5 Java实现 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