神经网络算法与实现——基于Java语言 - (EPUB全文下载)
文件大小:0.27 mb。
文件格式:epub 格式。
书籍内容:
神经网络算法与实现——基于Java语言
第1章 初识神经网络
第2章 神经网络是如何学习的
第3章 运用感知机
第4章 自组织映射
第5章 天气预测
第6章 疾病诊断分类
第7章 客户特征聚类
第8章 模式识别(OCR案例)
第9章 神经网络优化与自适应
附录A NetBeans环境搭建
附录B Eclipse环境搭建
附录C 参考文献
欢迎来到异步社区!
第1章 初识神经网络
本章介绍神经网络及其用途,主要讲解神经网络的基本概念,为后续章节打下基础。其主要内容包含以下几个部分:
人工神经元
权值和偏置
激活函数
神经元层
用Java实现神经网络
1.1 探索神经网络
首先,“神经网络”这个词会在我们脑海里创建出一种模拟人脑的景象,特别是刚刚接触到神经网络的人可能产生这样的想法。实际上,这也是正确的,大脑就是一个巨大的自然神经网络。然而,人工神经网络又是什么呢?其实“人工”是相对于自然神经网络中的“自然”而言的,一提到“人工”一词,首先映入脑海的往往是一张人工大脑或机器人的图片。我们受人脑结构的启发创造了与人脑相似的神经网络结构,所以这也可以被叫作人工智能。读到这里,之前对人工神经网络没有什么经验的读者可能认为这本书是教大家怎么创造智能系统的,例如人造大脑就可以用Java代码模拟人类大脑思考的过程,不是吗?当然,我们不会涉及像黑客帝国里人工智能机器人那样的产物,但是,我们会谈到神经网络可以实现很多不可思议的功能。充分利用Java编程语言框架的优势,为读者提供定义和创建神经网络结构的完整Java代码。
1.2 为什么要用人工神经网络
在不清楚人工神经网络的起源,包括一些人工神经网络的专业术语时,我们不宜马上展开讨论。在本书中,我们认为神经网络(neural network,NN)和人工神经网络(artificial neural network,ANN)是同一个概念,尽管神经网络的概念更加宽泛,它还包括自然神经网络。那么,到底什么是ANN?让我们来简单探索这个术语的历史。
20世纪40年代,神经生理学家Warren McCulloch和数学家Walter Pits设计了第一个包含神经系统学基础和数学操作的人工神经元的数学实现模型。在那时,很多研究的方向是弄清楚人类大脑的结构和它是否可以被模拟以及如何模拟,但是这些研究都只停留在神经系统学科领域内。McCulloch和Pits的想法是非常创新的,因为他们引入了数学的元素。另外,想想我们的大脑由数十亿计的神经元组成,每个神经元又和其他数百万神经元相连接,最终得到数万亿计的神经元连接,这是一个多么巨大的神经网络。然而,每个神经元单元是非常简单的,仅仅是作为一个能够汇总求和以及传递信号的处理器。
基于此,McCulloch和Pits 设计了一个简单的单个神经元模型,最初用于模拟人类的视觉。那时候的计算器和计算机还是非常少的,但是它们善于快速处理数学操作。另外,即使是现在,如果不用一些特殊的编程框架,视觉处理和声音识别的编程也是很难的,这恰恰与计算机能快速处理函数和数学操作的事实相反。然而,如表1-1所示,人脑在视觉处理和声音识别方面比计算器和计算机更高效,这确实激励了很多科学家和研究人员从事这方面的研究。
因此,人们认为人工神经网络能够很好地完成诸如模式识别、机器学习,以及预测趋势等任务,就像一个专家可以根据基础知识进行工作一样。而与那些需要执行一系列步骤来完成一个既定目标的传统算法方法恰恰相反,人工神经网络反而有能力通过它高度互联的网络结构去学习怎样自己解决问题。
表1-1
人类能快速解决的任务
计算机能快速解决的任务
图片分类
复杂计算
声音识别
语法错误纠正
人脸识别
信号处理
通过经验预测事件
操作系统管理
1.3 神经网络的构造
可以说人工神经网络是受自然启发的结构,它和人脑有很多相似之处。图1-1展示了一个自然神经元结构,它由神经元细胞核、树突和轴突组成,轴突分出很多分支来与其他神经元的树突相连而形成突触。
图1-1
所以,人工神经元有相似的结构,它也包含一个核(处理单元)、多个树突(类似于输入)以及一个轴突(类似于输出),如图1-2所示。
图1-2
在所谓的神经网络中,神经元之间的连接类似于自然神经结构中的突触。
1.3.1 基础元素——人工神经元
自然神经元被证实为一个信号处理器,这是由于它可以在树突端接收微信号,根据信号的强度或者大小,会在轴突触发一个信号。我们可以认为神经元在输入端有一个信号接收器,在输出端有一个响应单元,它可以根据不同的强度和量级触发一个可以向前传递至其他神经元的信号。因此,我们可以定义一个人工神经元结构,如图1-3所示。
图1-3
提示:
在自然神经元中,有一个阈值(threshold),当刺激达到这个阈值,就会产生神经冲动并沿着轴突把信号传递到其他神经元。我们用激活函数来模拟这种神经冲动,在表示神经元的非线性行为中,这是很有用的。
1.3.2 赋予神经元生命——激活函数
神经元的输出是通过激活函数得到的,激活函数为神经网络处理加入了非线性特征,由于自然神经元具有非线性行为,所以非线性特征是非常必要的。激活函数往往把输出信号限制在一定范围内,因此,激活函数常常是非线性函数,但是在一些特殊情况下,也可能是线性函数。
如下是4种最常用的激活函数:
S函数(Sigmoid);
双曲正切函数(Hyperbolic tangent);
阈值函数(Hard limiting threshold);
纯线性函数(Purely linear)。
表1-2展示的是与这些函数对应的公式及图像。
表1-2
函数
公式
图像
Sigmoid
Hyperbolic tangent
Hard limiting threshold
Linear
1.3.3 基础值——权值
在神经网络中,权值代表着神经元之间的连接并且它可以放大或减小神经元信号 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » 神经网络算法与实现——基于Java语言 - (EPUB全文下载)