译者序
众所周知,人工智能是当下非常热门的技术。其概念在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月于厦门
作者和审校者简介
作者简介
Fabio M.Soares目前是位于巴西北部的帕拉联邦大学(UFPA)的博士研究生。他几乎对所有领域的技术都充满热情,2004年起开始设计神经网络解决方案,此后将该技术应用于电信、工业过程控制
和建模、水力发电、财务应用、零售客户分析等多个领域。他的研究课题涉及针对数据驱动模型的监督学习。2017年以来,他主要在铝冶炼和铁镍合金方面进行化学过程建模及控制的研究,同时也作为计
算机编程和人工智能课程的讲师,从事教学工作。作为一名活跃的研究者,他已经在诸多会议和期刊上发表了数篇论文,参与4本书的编写。
Alan M.F.Souza是IESAM(Instituto de Estudos Superiores da Amazonia)的一名IT工程师,他拥有帕拉联邦大学软件项目管理专业的研究生学历和工业过程专业(应用计算)的硕士学位。2009
年以来,他一直从事神经网络相关工作,并且自2006年起,他和巴西IT公司共同致力于Java、PHP、SQL及其他编程语言的相关研发工作。他非常热爱编程和计算智能。目前他是UNAMA的教授,同时也
是UFPA的博士研究生。
审校者简介
Charles Griffiths是一名对技术、医学、经济学和营养学感兴趣的软件工程师和大学教授。他在GitHub和Unity Asset Store上都发布过源码。
无论走到哪里,都很感谢那些指引我前进的朋友,感谢他们一直以来对我的支持和信任。
前言
程序员需要持续不断地学习,而且经常会面对新技术和新方法的挑战。生活中人们虽然习惯了重复的事情,但也会经历新的事情。学习过程是科学界最有趣的话题之一,很多尝试都试图描述或者再现
人类的学习过程。
本书的主要挑战是学习并掌握业界最新的内容。虽然神经网络这个名字可能看起来很奇怪,甚至可能误认为它是关于神经学的,但是我们通过把重点放在你决定购买这本书的原因上来简化这些细微差
别。我们打算建立一个框架,告诉你神经网络其实很简单,很容易理解,你不需要有足够的先验知识,就完全可以理解本书提到的概念。
因此,我们希望你充分掌握本书的内容,在面对棘手问题时,能始终以初学者的态度运用神经网络的功能来解决。本书对提到的每个概念都用简单的语言进行解释,但理解它也需要一定的技术背景。
本书的目的是让你了解智能应用可以通过简单语言编写。
各章概览
第1章主要介绍神经网络的概念,解释基本神经元结构(单层感知机、学习机),以及激活函数、权重和学习算法。此外,该章还演示了用Java创建基本神经网络的整个过程。
第2章主要介绍神经网络学习过程的细节,解释几个有用的概念,如训练、测试和验证,演示如何实现训练和验证算法、如何进行误差评估。
第3章主要讨论感知机和监督学习的特性,展示这类神经网络的训练算法,以及如何用Java实现这些特性。
评论