内容简介
《自己动手写神经网络》讲解通俗易懂,使用简单的语言描述人工神经网络的原理,并力求以具体实现与应用为导向,除了理论介绍外,每一章节的应用和实践都有具体的实例实现,让读者达到学以致用。《自己动手写神经网络》分为11章,主要内容为:简单的人工神经网络模型和理论应用;介绍了一个基于Java的人工神经网络框架Neuroph;介绍了基于Neuroph开发一个简单的人工神经网络系统 感知机;介绍了ADALINE网络以及使用Neuroph实现ADALINE神经网络;介绍了BP神经网络的基本原理和具体实现;介绍了BP神经网络的具体实践应用;介绍了Hopfield网络的原理、实践和应用;介绍了双向联想网络BAM的原理、实践和应用;介绍了竞争学习网络,特别是SOM网络以及相关算法与实现;介绍了PCA方法以及与PCA方法等价的PCA神经网络。 《自己动手写神经网络》适合以下类型的读者:对神经网络感兴趣,期望可以初步了解神经网络原理的读者;有一定编程经验,期望学习和掌握神经网络的程序员;期望对神经网络进行实际应用的工程人员;任何一名神经网络爱好者。作者简介:
葛一鸣,浙江工业大学硕士,国家认证系统分析师,Oracle OCP。长期从事Java软件开发工作,对Java技术、人工智能、神经网络、数据挖掘等技术有浓厚兴趣。 现着有《自己动手写神经网络》《Java程序性能优化》《实战Java虚拟机》《实战Java高并发程序设计》。目 录:
第1章 人工神经网络概述 11.1 人工智能与神经网络简史 1
1.1.1 人工智能的诞生:1943~1956年 2
1.1.2 黄金发展期:1956~1974年 3
1.1.3 第一次低谷期:1974~1980年 4
1.1.4 繁荣期:1980~1987年 5
1.1.5 第二次低谷期:1987~1993年 5
1.1.6 再次崛起:1993年至今 6
1.2 生物学研究对神经网络的影响 6
1.3 大数据对人工智能的影响 8
1.4 计算机硬件发展对人工智能的影响 9
1.5 计算机软件发展对人工智能的影响 9
1.6 人工智能的广泛应用 10
第2章 人工神经元模型与感知机 12
2.1 人工神经元组成要素 12
2.1.1 人工神经元的基本结构 12
2.1.2 传输函数类型 13
2.2 感知机 15
2.2.1 使用感知机识别水果 15
2.2.2 让感知机记忆逻辑与 17
2.2.3 感知机的学习算法 18
2.3 总结 20
第3章 神经网络框架Neuroph介绍 21
3.1 Neuroph是什么 21
3.2 Neuroph系统的构成 22
3.3 Neuroph Studio的功能展示 22
3.3.1 使用Neuroph Studio构造感知机处理逻辑与 23
3.3.2 使用Neuroph Studio进行动物分类实验 28
3.4 Neuroph Library架构分析 34
3.4.1 Neuroph Library核心架构 35
3.4.2 Neuron神经元 35
3.4.3 Layer层 36
3.4.4 NeuralNetwork神经网络 37
3.4.5 LearningRule学习算法 37
3.4.6 DataSet和DataSetRow 38
3.5 Neuroph开发环境搭建 38
3.5.1 基础平台 Java介绍以及安装 39
3.5.2 包管理工具 Maven安装 39
3.5.3 开发工具 Eclipse安装 40
3.6 总结 41
第4章 使用Java实现感知机及其应用 42
4.1 第一个Neuroph程序 使用感知机记忆逻辑与 42
4.1.1 创建感知机网络 42
4.1.2 理解输入神经元InputNeuron 45
4.1.3 理解贝叶斯神经元BiasNeuron 45
4.1.4 step传输函数是如何实现的 46
4.2 让感知机理解坐标系统 47
4.2.1 感知机网络的设计 47
4.2.2 感知机网络的实现 47
4.3 感知机学习算法与Java实现 49
4.3.1 感知机学习规则的实现 50
4.3.2 一个自学习的感知机实现 SimplePerceptron 51
4.3.3 小试牛刀 SimplePerceptron学习逻辑与 52
4.3.4 训练何时停止 53
4.4 再看坐标点位置识别 55
4.5 感知机的极限 异或问题 57
4.6 总结 58
第5章 ADALINE网络及其应用 59
5.1 ADALINE网络与LMS算法 59
5.2 ADALINE网络的Java实现 60
5.3 使用ADALINE网络识别数字 62
5.3.1 印刷体数字识别问题概述 62
5.3.2 代码实现 63
5.3.3 加入噪点后再尝试 66
5.4 总结 67
第6章 多层感知机和BP学习算法 68
6.1 多层感知机的结构与简单实现 68
6.1.1 多层感知机结构的提出 68
6.1.2 定义多层感知机处理异或问题 69
6.1.3 多层感知机的简单实现 71
6.2 多层感知机学习算法 BP学习算法 74
6.2.1 BP学习算法理论介绍 74
6.2.2 BP学习算法与BP神经网络的实现 77
6.3 BP神经网络细节优化 84
6.3.1 随机化权值的方式 84
6.3.2 Sigmoid函数导数的探讨 86
6.4 带着算法重回异或问题 87
6.5 总结 89
第7章 BP神经网络的案例 90
7.1 奇偶性判别问题 90
7.1.1 问题描述 90
7.1.2 代码实现 90
7.2 函数逼近 94
7.2.1 问题描述 94
7.2.2 代码实现 94
7.3 动物分类 99
7.3.1 问题描述 99
7.3.2 问题分析 100
7.3.3 代码实现 102
7.4 简单的语音识别 104
7.4.1 问题描述 104
7.4.2 代码实现 104
7.5 MNIST手写体识别 106
7.5.1 问题描述 106
7.5.2 问题分析 108
7.5.3 代码实现 108
7.6 总结 112
第8章 Hopfield神经网络 113
8.1 Hopfield神经网络的结构和原理 113
8.1.1 Hopfield网络的结构 113
8.1.2 网络吸引子 114
8.1.3 网络权值的设计 115
8.2 网络的存储容量 117
8.3 Hopfield神经网络的Java实现 118
8.3.1 Hopfield网络构造函数 118
8.3.2 Hopfield网络的神经及其特点 119
8.3.3 Hopfield网络学习算法 120
8.4 Hopfield网络还原带有噪点的字符 121
8.5 Hopfield网络的自联想案例 123
8.6 总结 126
第9章 BAM双向联想记忆网络 127
9.1 BAM网络的结构与原理 127
9.2 BAM网络的学习算法 128
9.3 使用Java实现BAM网络 129
9.3.1 BAM网络的静态结构 129
9.3.2 BAM网络学习算法 130
9.3.3 BAM网络的运行 131
9.4 BAM网络的应用 133
9.4.1 场景描述 人名与电话 133
9.4.2 数据编码设计 134
9.4.3 具体实现 136
9.5 总结 140
第10章 竞争学习网络 141
10.1 竞争学习的基本原理 141
10.1.1 向量的相似性 142
10.1.2 竞争学习规则 143
10.2 自组织映射网络SOM的原理 144
10.2.1 SOM网络的生物学意义 144
10.2.2 SOM网络的结构 144
10.2.3 SOM网络的运行原理 145
10.2.4 有关初始化权重的问题 146
10.3 SOM网络的Java实现 147
10.3.1 SOM网络拓扑结构的实现 147
10.3.2 SOM网络的初始权值设置 150
10.3.3 Kohonen算法的实现 153
10.4 SOM网络的应用 157
10.4.1 使用SOM网络进行动物聚类 158
10.4.2 使用SOM网络进行城市聚类 161
10.5 总结 164
第11章 PCA神经网络 165
11.1 PCA方法概述 165
11.1.1 PCA方法数学背景 166
11.1.2 PCA计算示例 167
11.2 PCA神经网络学习算法 170
11.2.1 Oja算法 170
11.2.2 Sanger算法 171
11.3 基于Neuroph实现PCA网络 172
11.3.1 Oja算法的实现 172
11.3.2 Sanger算法的实现 177
11.4 使用PCA网络预处理MNIST手写体数据集 178
11.5 总结 181