当前位置:
首页 > 互联网+ > 人工智能 > 神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载

神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载

书名:神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载

推荐语:

作者:(巴西)法比奥·M.索尔斯(FabioM.Soares),艾伦·M.F.索萨(AlanM.F.Souza),王彩霞,夏妍等译

出版社:机械工业出版社

出版时间:2018-05-01

书籍编号:30416565

ISBN:9787111600121

正文语种:中文

字数:127095

版次:1

所属分类:互联网+-人工智能

全书内容:

神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载







译者序


众所周知,人工智能是当下非常热门的技术。其概念在20世纪80年代就已经炒得火热,但是由于软硬件两方面的技术局限使其两度陷入低谷。而如今,各大IT巨头(诸如谷歌、Facebook、Apple、百度、腾讯、阿里等)纷纷在人工智能领域密集布局,通过巨额研发投入、人才储备、投资并购及开源合作等方式极力打造各自的人工智能生态圈。人工智能已经成为这个时代激动人心、值得期待的技术,或将成为未来10年乃至更长时间内IT产业发展的焦点。究其原因,除了互联网大数据积累、计算能力提升及计算成本降低等推动因素外,其本质原因是孜孜不倦积累30多年的神经网络技术的集中爆发。


神经网络(Neural Network)是人工智能领域最重要的基础模型之一,也是目前非常热门的研究方向—深度学习的核心。作为一门重要的机器学习技术,其已经广泛应用于自动驾驶、机器翻译、语音识别、图像识别等许多前沿领域。而当前人工智能领域的诸多应用平台(如智能客服等)都基于Java服务框架开发,因此,通过Java实现机器学习算法对于业务平台实现真正的智能化非常重要。


遗憾的是,现有的书籍要么只阐述机器学习方面的算法理论,要么只阐述Java理论,缺少基于工程性语言的机器学习算法实现,由此带来的问题是智能化应用产品的落地和实现过程的复杂化。


作为一本集神经网络理论、神经网络Java实现及优秀案例于一体的书,本书以一种简单易懂、循序渐进的方式介绍神经网络。本书由10章构成。首先系统、全面地阐述了神经网络的相关概念、知识点及特征。然后重点介绍了神经网络学习过程的细节,如何用Java实现神经网络特性及设计神经网络架构,如何优化调整神经网络参数等。最后介绍了一些经典案例。结合Java实现神经网络架构是本书的一个主要特色。这是一本基于Java语言阐述神经网络架构特性、设计实现过程又包含经典实践案例的优秀书籍。


本书的读者对象如下:1)神经网络初学者,本书全面阐述了神经网络的相关概念、知识点以及神经网络架构的创建过程;2)有Java背景且对智能化方向感兴趣的软件开发者,本书介绍了如何基于Java实现神经网络核心算法;3)智能化软件开发人员,本书提供了基于神经网络Java实现的诸多案例,为解决实践中的问题提供了很好的借鉴。本书不需要读者有深厚的数学基础,但是懂一些机器学习基础知识更有助于理解本书。


参与本书翻译工作的人员主要有:百度研发工程师王彩霞和蔚来汽车研发工程师夏妍。非常感谢百度地图刘懿的牵线引荐,让我能有机会和机械工业出版社合作。衷心感谢刘懿、百度美国大数据实验室的杨涛、百度推荐技术平台部的尚斌及网易产品经理马庆提出的修改建议。也非常感谢清华大学公派加州大学伯克利分校博士顾维玺、机械工业出版社张梦玲编辑的无私帮助。


限于水平,对中文语言的表达及内容的理解难免存在不当之处,在此敬请读者批评指正。本人十分荣幸能有机会成为本书的译者,认真阅读本书也一定会使你受益匪浅。


王彩霞


2018年5月于厦门

前言


程序员需要持续不断地学习,而且经常会面对新技术和新方法的挑战。生活中人们虽然习惯了重复的事情,但也会经历新的事情。学习过程是科学界最有趣的话题之一,很多尝试都试图描述或者再现人类的学习过程。


本书的主要挑战是学习并掌握业界最新的内容。虽然神经网络这个名字可能看起来很奇怪,甚至可能误认为它是关于神经学的,但是我们通过把重点放在你决定购买这本书的原因上来简化这些细微差别。我们打算建立一个框架,告诉你神经网络其实很简单,很容易理解,你不需要有足够的先验知识,就完全可以理解本书提到的概念。


因此,我们希望你充分掌握本书的内容,在面对棘手问题时,能始终以初学者的态度运用神经网络的功能来解决。本书对提到的每个概念都用简单的语言进行解释,但理解它也需要一定的技术背景。本书的目的是让你了解智能应用可以通过简单语言编写。


各章概览


第1章主要介绍神经网络的概念,解释基本神经元结构(单层感知机、学习机),以及激活函数、权重和学习算法。此外,该章还演示了用Java创建基本神经网络的整个过程。


第2章主要介绍神经网络学习过程的细节,解释几个有用的概念,如训练、测试和验证,演示如何实现训练和验证算法、如何进行误差评估。


第3章主要讨论感知机和监督学习的特性,展示这类神经网络的训练算法,以及如何用Java实现这些特性。


第4章主要介绍无监督学习和自组织映射,即Kohonen神经网络在分类和聚类问题中的应用。


第5章主要阐述如何用神经网络解决天气预报的问题,你会看到来自不同地区、不同时间的历史天气数据记录,并学习如何在神经网络训练之前对数据进行预处理。


第6章主要介绍分类问题,这属于监督学习的范畴。运用患者的数据构建基于神经网络的专家系统,专家系统能够根据患者的症状给出诊断结果。


第7章讨论如何应用无监督学习算法和神经网络实现聚类,进而实现客户画像聚类。


第8章主要介绍另一种涉及神经网络的常见任务:光学字符识别(OCR)。OCR非常有用,它显示了神经网络强大的学习能力。


第9章主要介绍神经网络优化的相关技术,如输入选择,切分训练数据集、验证数据集和测试数据集的较优方法,以及数据过滤和隐含神经元个数的选择。


第10章主要介绍神经网络领域的新技术动态,启发你理解并设计出适用于更复杂问题的新策略。


附录内容为在线内容,可以通过以下链接下载:https://www.packtpub.com/sites/default/files/downloads/Neural_Network_Programming_with_Java_SecondEdition_Appendices.pdf。附录内容主要涉及搭建Netbeans开发环境的详细步骤,搭建Eclipse开发环境的详细步骤。


阅读准备


需要Netbeans(www.netbeans.org)或者Eclipse(www.eclipse.org)软件,两者都是免费的,可以从官方网站下载。


本书读者对象


本书适合以下Java开发者:想知道如何运用神经网络的功能开发更智能的应用。同时本书适用于那些处理大量复杂数据并希望在日常应用中有更高效率的人士。本书的读者最好具有一些统计计算的基础知识。


下载示例代码


可以从网站http://www.packtpub.com或华章网站www.hzbook.com下载本书中的示例代码。

神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载


本章将介绍神经网络及其设计目的。作为后续章节的基础,本章主要介绍神经网络的基本概念。本章将讨论以下主题:


·人工神经元


·权重和偏置


·激活函数


·神经元层


·使用Java实现神经网络


1.1 探索神经网络


听到神经网络这个词,从直觉上我们会想到大脑,的确,我们可以将大脑看成一个大型的天然神经网络。然而,人工神经网络又是什么呢?人工是一个与天然相对的词,我们首先想到的就是人工大脑或者机器人,这就是所谓的人工。在这种情况下,受人脑的启发,我们创建出一个和人脑相似的结构,称之为人工智能。


ANN初学者可能认为本书是讲如何构建智能系统的,例如人工大脑,智能系统能用Java代码模拟人类思维,是这样吗?答案是肯定的,但是,我们不会像电影《黑客帝国》中那样讨论如何创造人工思考机器;而会介绍人工神经网络解决方案的设计过程,它能够利用整个Java框架,从原始数据抽象知识。


1.2 人工神经网络


在不了解神经网络的起源和相关术语的情况下,无法讨论神经网络。本书中神经网络(NN)和人工神经网络(ANN)是同义词,尽管NN因涵盖自然神经网络而更加通用。那么,什么是ANN呢?下面探究这个词的历史。


20世纪40年代,神经生理学家Warren McCulloch和数学家Walter Pitts将神经学基础和数学运算结合起来,设计了人工神经元的第一个数学实现。当时,人脑被大量研究以弄懂那些潜在及神秘的行为,不过主要在神经学领域。众所周知,生物神经元结构有一个细胞核和多个树突(接收来自其他神经元传入的信号),以及一个轴突(将信号传递给其他神经元),如图1-1所示。


神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载


图1-1 生物神经元结构


McCulloch和Pitts的创新是在神经元模型中加入了数学成分,他们假设神经元是一个简单的处理器,用于合并所有输入信号并产生新的信号以激活其他神经元,如图1-2所示。


此外,考虑到大脑由数十亿个神经元组成,每个都与成千上万个其他神经元相联系,产生了数万亿的连接,因此我们讨论的是一个巨大的网络结构。基于这个事实,McCulloch和Pitts为单个神经元设计一个简单的模型,最初用来模拟人类视觉。当时可用的计算器或计算机资源虽然有限,但能很好地处理数学运算。即使今天,像视觉和声音识别这类任务,没有特殊的框架仍然很难编程实现。然而,相比于复杂的数学运算,人脑可以更高效地识别声音和图像,这激起了科学家和研究人员的兴趣。


神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载


图1-2 神经元模型


然而,众所周知,人脑执行的所有复杂活动都基于所学知识,为了克服传统算法在人类易于解决的问题上所面临的困难,我们设计了ANN解决方案,期望它具备基于外部刺激(数据),通过自学习来解决问题的能力(见表1-1)。


表1-1 人类和计算机可解决的任务


神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载


1.2.1 神经网络是如何组织的


结合人脑的特点和结构,可以说ANN是一种自然启发的方法。每个神经元与许多其他神经元相接,这些神经元又会和其他大量神经元相连,形成一个高度互连的结构。本书后续章节将会介绍,神经元之间的连通性解释了学习能力,因为每个连接都可以根据刺激和期望目标进行配置。


1.2.2 基本元素——人工神经元


我们来看看最基本的人工神经元素——人工神经元。已证明生物神经元是信号处理器,神经元中的树突会根据接收到信号的强度和振幅,发送信号到轴突。可以这样认为,神经元在输入上有一个信号收集器,在输出上有一个激活单元,它可以触发一个新的信号,然后传递给其他神经元,如图1-3所示。


神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载


图1-3 人工神经元


神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载提示 生物神经元中,存在一个潜在的阈值,一旦达到该值,会触发轴突并传递信号到其他神经元。这一行为可以通过激活函数来模拟,已经证明,激活函数在表示神经元的非线性行为方面非常有用。


1.2.3 赋予神经元生命——激活函数


激活函数是指一个神经元根据输入信号,执行计算并产生输出。从数学方面讲,激活函数用于为神经网络模型的处理加入非线性因素,从而提供人工神经网络的非线性行为,这对模拟生物神经元的非线性特征非常有用。激活函数通常是一个非线性函数,输出限制在某个区间范围内,但某些特定情况下,也可以是线性函数。


虽然任何函数都可以用作激活函数,但是本章主要介绍常用的几种,见表1-2。


表1-2 常见激活函数


神经网络编程实战:Java语言实现(原书第2版)pdf/doc/txt格式电子书下载


在这些函数和图形中,系数a可以通过激活函数进行设置。


1.2.4 可变参数——权重


尽管神经网络的结构能固定,但通过神经元之间的连接权重能够增强或减弱接收到的神经信号,所以可以通过修改权重影响神经元的输出。因此,神经元的激活不仅依赖输入信号,还依赖权重。如果输入来自其他神经元或者外部世界(刺激),权重可以看成神经网络在神经元之间建立的连接。由于权重是神经网络的内部组件且影响输出,因此也可将权重视为神经网络的认知,即改变权重将会改变神经网络对外界刺激的应答。


1.2.5 额外参数——偏置


作为一个独立组件,偏置主要为激活函数增加一个额外信号,这对人工神经元非常有用。它的作用类似一个输入,只是这个输入等于一个固定值(通常是1)乘以相关性权重。这一特性有助于神经网络认知表现为一个更纯粹的非线性系统,假设当所有输入都为零时,神经元的输出不仅可以不为零,反而可以由偏置和相关权重触发一个不同的值。


1.2.6 由部分到整体——层


为抽象化处理层次,如我们大脑处理问题的方式,神经元按层组织。输入层接收外部世界的直接刺激,输出层触发一些行为,对外部世界产生直接影响。输入层和输出层之间,有许多隐含层,某种意义上,这些隐含层对外部世界不可见。在人工神经网络中,同一层的所有神经

....

本站仅展示书籍部分内容

如有任何咨询

请加微信10090337咨询

本站仅展示书籍部分内容
如有任何咨询

请加微信10090337咨询

再显示