Python深度学习(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-27 17:52:50

点击下载

作者:(英) 尼格尔·刘易斯(N.D. Lewis)

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Python深度学习

Python深度学习试读:

前言

本书旨在帮助读者掌握强大的深度神经网络工具。希望能帮助读者使用Python编程语言开发实用的应用。通过阅读本书,读者可以用最短的时间来学习、实践,并体验深度学习的强大工具。这些想法帮助了我以及成千上万的人,希望也能帮助读者加速数据科学实践。最后,我希望本书能让成千上万的读者轻松地掌握深度学习的工具。本书内容

本书收集了实用的工具、先进的理念和技巧,初学者可以借助Python进行深度神经网络的快速开发。本书的目标是帮助读者在尽可能短的时间内获得实用的知识,开发性能优异的模型,并改善模型的效率。本书重点介绍了一些有用的方法,读者可以很容易理解并快速实现。基于此,本书详细讲解了以下内容:● 解锁深度神经网络的有效预测能力;● 为二元分类开发成功的解决方案;● 为多元问题设计成功的解决方案;● 调节深度神经网络,以提高、加快并改善性能。抓住深度学习的机会

深度学习是数据科学中最激动人心的课题之一。它产生过令人惊异的结果,有相当出色的表现。它充满着很多伟大的想法——从搜索引擎、语音识别系统、自动驾驶汽车到生成爵士乐。深度学习是一门充满可能性的学科。想象一下如何把它运用在自己的数据科学项目上,哪怕是一个令人难以置信的想法,但这种可能性是多么令人激动啊——至少我希望你是如此。

除了渴望了解前沿预测技术外,还有其他一些原因需要掌握深度学习。例如,假设受过传统线性模型训练的数据科学家顾问,面临着很差的预测性能、最终报告的压力和紧迫的最后期限。如果他在本书中学会运用深层神经网络的工具,将能够更好地提高成功率。无论走到哪里,他都会因自己的数据科学工具包中有前沿深度学习技术而信心百倍。真正令人惊奇的是,有一点知识后,这些工具很容易使用。不需要是个天才

读者不需要是一个天才的统计学家或者编程“大牛”,就能够理解并从本书讨论的实用想法和解决方案中获益。如果读者使用过统计工具包,或者有任何一门简单编程语言的经验,就能轻松、快速地掌握本书中讨论的技术。本书用平实的语言讲解深度神经网络,即使读者从来没有学过线性代数,不想看任何推导公式,也不喜欢复杂的计算机代码,也能轻松理解。读者从本书中得到的想法和实际信息适用于小型广告公司工作的个人数据科学家,适用于某区域宠物食品公司由3位决策科学家组成的团队,也同样适用于完成数据科学项目课程作业的学生或参与当地卫生当局的预测项目独立顾问。生活不易!

对大多数人来说,生活是忙碌的,总是没有足够的时间学习知识。人们被个人和家庭的义务、学习、考试、工作、健身计划、数不清的邮件、项目、工作的截止期限所包围,更不用说充斥着日常生活的社交活动和数不清的杂事。有这么多的事情分心,又从哪里找时间来掌握深度学习呢?

这就是我写本书的初衷。它是一本动手实践的、容易理解和实用的指南,通过Python带读者领略数据科学家在深度神经网络中用到的成功的想法、出色的技术和可用的解决方案。本书关注于“怎么做”,正如本杰明·富兰克林的名言:“告诉我,我会忘记;教给我,我会记住;让我一起实

践,我才会懂得。”

循序渐进地每天从本书中学习一点,几周后,读者便会惊讶于自己的进步。随着练习的持续推进,你对所学知识的理解会不断加深。说不准,因为这一点点耐心、坚持和练习,读者能成为所在团队的深度学习专家,付出就有收获。Python新手

随着Python的兴起,实践深度学习也变得非常容易。本书循序渐进地展示了如何使用免费并且流行的Python编程语言构建每一种模型。书中的示例代码非常清晰,可供读者直接输入Python代码段中。

如果读者完全不懂Python,不妨看一下不错的入门教程——https://www.python.org/about/gettingstarted/。这是为Python初学者准备的,是一个相当不错的教程。

建议读者每天至少学完本书的一节内容,然后和朋友、同事、学生或者任何其他对数据应用深度学习模型感兴趣的人讨论。阅读图解说明,输入Python代码示例并阅读每一章后面的附注。坚持记录关于数据科学的想法,并一点一点地把所学到的东西糅合到自己的数据科学项目中。各就各位,预备……

深度学习完全关于真实的生活、真实的人,也是把机器学习算法用于真实世界的问题以得到有效解决方案的应用。不管你是谁,不管你来自哪里,不管你的背景和学历如何,你都有能力掌握本书列出的想法。我个人坚信,借助合适的软件工具,加上些许坚持和正确的指导,只要有兴趣,你一定能成功地掌握并使用深度学习方法。

希腊哲学家伊壁鸠鲁曾说:“这是为你而写,而不是其他人。有你互为听众,足

矣。”

虽然会有成千上万的人接触到本书中的想法,但我尽力牢记伊壁鸠鲁的原则——让书中的每一页都只对你,是有意义的。承诺

读完本书后,读者能够在自己特别感兴趣的领域实现本书中提及的一个或多个想法。读者会惊奇地发现使用这些技术和用Python进行部署是多么简单、快捷。经过几次不同的运用,读者很快就会成为一名熟练的从业者。资源与支持

本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。配套资源

这本书只提供彩图文件和本书提供如下资源:● 本书源代码。

要获得以上配套资源,请在异步社区本书页面中点击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。提交勘误

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。与我们联系

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线提交投稿(直接访问www.epubit.com/selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

关于异步社区和异步图书“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。异步社区微信服务号第1章如何阅读本书

投资知识,收益最佳。——本杰明·富兰克林

我希望读者能在最短时间内从本书中获得最大的收益。这可以通过输入示例代码、阅读参考文献并进行试验来达成。通过大量的示例和阅读参考文献,你能够拓宽知识面,加深你原有的对深度学习的一些直观理解,强化你的实践技能。

你至少有两种方式来使用这本书。首先,可以把它作为一本高效的参考书。翻阅到需要的章节,快速查看是如何用Python进行计算的。为了使收获最大化,你最好能够输入书中的代码,检查结果,然后根据自己的数据调整样本。其次,可以通过浏览真实的示例、图表、案例研究、技巧和说明来激发你自己的想法。本书既介绍了总体思路,同时也介绍了一些深度学习相关的历史、案例研究和文献。1.1 获取Python

要使用本书,需要下载Python。目前,Python有两个主要的版本——Python 2.7 和Python 3。虽然Python 3在几年前就诞生了,但Python 2.7使用得更广泛,而且目前仍然是数据科学领域所用的流行版本。本书示例使用Python 2.7编写。你可以从Python官方网站下载Python 2.7。

推荐的Python变体版本有很多,许多数据科学家使用Anaconda Python发行版。在其中预打包了许多在数据分析和统计建模中使用的核心软件模块。PyPy变体使用即时编译来加速代码的运行,因此能非常快地运行深度学习的代码。对于Windows用户来说,WinPython是运行Python的简单方式,它省去了安装的麻烦。1.1.1 学习Python

Python是一门强大的编程语言,易于初学者使用和学习。如果你有任何编程语言的经验,就能很快地掌握Python。如果你对编程语言一无所知,或者已经很长时间不使用,下面这些免费的资源可以让你快速上手。● Python指南—— 参见Python官网文档。● 新手学Python—— 参见Python官网。● Python新手指南——参见维基页面。● 交互式Python指南—— 参见Learn Python官网。

另外,请务必访问Python软件基金会官网,那里有最新的新闻和技巧窍门。1.1.2 软件包

高效地使用Python需要用到叫作“包”的软件模块。本书中,我们会用到一些软件包。如果你的计算机中没有本书中提到的软件包,请下载并进行安装。1.2 不需要等待

你不需要读完本书就可以把书中的想法融入自己的分析中。你可以随学随用,也可以直接阅读感兴趣的章节,并立即在自己的研究和分析中进行测试、创建和开发。下面是本书的一个概述,能帮助你开启本书的阅读之旅。1.3 小结

本书是深度神经网络的入门和上手实践的手册。更确切地说,本书力求为你提供使用Python简单、快速地构建深度神经网络所需的工具。其目标是提供给你必要的工具来完成工作,并提供足够的图解说明来帮助你思考在你感兴趣的领域的深度学习相关的应用。我希望这个过程是愉快并且有收获的。其他资源

关注数据科学的Python用户组遍布世界各地,请找到并加入本地的用户组。你可以从如下资源开始学习。● 与Python社区保持联系的一个很好的地方是Python软件基金会网

站。● 与当地的Python开发者取得联系,很多组织有定期的会议。● 持续关注我提供的免费的Python数据科学电子报并获得及时有用

的信息。它关注Python数据科学相关的新闻、文章、软件、活动、

工具和工作机会。

如果你在自己的专业领域成功应用了深度神经网络,请告知我。我很乐意收到你的来信,请发送邮件到info@NigelDLewis.com。第2章深度学习入门

好奇心是学习这根蜡烛的灯芯。——威廉·亚瑟·沃德

读小学时,我的老师马斯特斯女士教给我和同学们“视角”的概念。有4个志愿者参与到一个非常有趣的实验中。在这个实验中,每位志愿者都被蒙住眼睛,并被领着走到一头很大的驴的模型面前。第一个学生被带到驴尾巴的地方,然后被要求描述她摸到的东西是什么样子。接着第二个学生被带到驴腿的地方,也被要求描述摸到的东西是什么样子。剩下的每个学生都被带到驴的不同部位,每个人都描述了他们认为的样子。

因为这些蒙住眼睛的学生都没有全部的信息,他们凭感觉对驴的描述大相径庭。我们对他们的荒唐描述大笑不止。很明显,驴就是驴,怎么可能是其他的样子。当这些同学摘下眼罩后,他们也不禁大笑起来。马斯特斯真是一位好老师。

打个比方说,在本章我将为你绘制一张完整的“驴”。我将概述深度学习、介绍一些主要的成员,接触一些已经应用深度学习的领域,并说明为什么你应该把它添加到自己的数据科学工具箱中。2.1 为什么要学习深度学习

2016年年初,传奇的围棋棋手李世石与一个围棋界的“新手”开始了一系列举世瞩目的较量。

围棋是一种棋盘类游戏,于2500年前发源于中国。它是一种比国际象棋更为复杂的策略游戏,全球有75个国家的选手积极地参与其中。

李世石,围棋九段棋手,从2002年起多次获得世界冠军。他面对的是一个看不见的敌手——AlphaGo。AlphaGo是由伦敦的谷歌DeepMind团队开发的。不知道李世石在赛前对他的对手了解多少,也许他从科学作家马修·布拉加的关于围棋的文章中得到了安慰。该文章于2014年发表,其中谈到了围棋:“……是少数几种计算机智能尚未掌握的游戏之一。该游

戏有着太多的可能的走法,让程序员长期以来陷入僵局。”

但在数据科学领域,24个月已经是一段相当长的时间了。谷歌的深度学习算法可以打败优秀的计算机对手,甚至是在让对手四子先手的情况下。2016年1月,AlphaGo曾以5:0的比分完胜欧洲冠军樊麾。2016年3月,AlphaGo挑战传奇选手李世石。2.1.1 最后一子

在最后一子落下之前,胜负已经十分明了。法国著名媒体机构CAUSEUR尖叫:“李世石感到羞耻的一天。”震惊的九段冠军挣扎着讲述他被数学算法打败:“……我应该表现得更好,应该有更好的结果以及更好的

比赛过程。我为没能满足很多人的期望而道歉。我有些无能

为力。”

李世石仅仅是另一个在人机对战中被高度关注的选手。人机对战的历史可以追溯到约翰·亨利和新技术蒸汽钻那场史诗般的对战。在那场无限制的比赛中,双方表现得旗鼓相当,最终亨利获胜,但不久就因虚脱而死。随着铁路蜿蜒穿越整个美国,蒸汽钻成了必不可少的工具。深度学习之于李世石如同蒸汽钻之于约翰·亨利。2.1.2 一件怪事

奇怪的是,对于那些以建立专家模型为生的人,从神经网络和其他来自机器学习的高度技术中获益是显而易见的。实际上(与理论猜测相反),深度学习的惊人成果受到了商界、政府机构、研究界以及越来越多的学者的高度重视。正如一位学者所说:“20 世纪90 年代,经验主义的复兴是一个激动人心的

时刻。我们从来没有想到,我们的努力会如此成功。当时,

我们想要的只不过是一席之地而已。在当时流行的各项研究

之外,我们所想的只是为不同于当时其他研究的工作争取一

点空间。”2.1.3 两类人

还记得那个古老的笑话吗?世界上有两类人——一类人相信世界上有两类人,而另一类人完全不相信前一观点。好吧,我确实相信世界上有两种数据科学家。我并不是在说那些学习计算机科学的数据科学家和那些学习统计学的数据科学家。任何称职的数据科学家都可以在需要概率、统计、数据结构和算法的时候信手拈来。实际上,本书中的建议同样适用于这两个学科的数据科学家,我们也会看到对两者都有很大好处的例子。

我也不是在谈论机器学习狂热分子与传统统计建模的数据科学家。经典的统计建模和由现代机器学习开发的算法在识别和利用数据集的重要特征方面都起着重要的作用。本书将帮助你更好地理解这两种方法,并将它们更有效地结合到分析数据集中。

我甚至谈论的也不是具有专门领域知识的数据科学家和那些通才的数据科学家。在一个学科深入进去并精通,是会有很好的回报的;灵活地跨越多个学科之间需要非凡的天分,也会是收获颇丰的。本书会在这两个方面帮助到你。

好吧,我认为世界上的两种数据科学家是具备深度学习技术知识的和不具备深度学习技术知识的。我不是说那些缺乏这些知识的人就比他们当代的同行们不专业。简单来说,深度学习的知识能让你接触到更广范围的工具,能从不同的角度解决具有挑战性的问题,并能快速有效地得出解决方案。简而言之,深度学习扩展了你的数据科学工具包。说明一位数据科学家,如果对深度学习优秀的方法知之甚少,那么与具有该技能的同事相比,这会是一个非常显著的缺点。从衰老研究到动物学分析,对深度学习技能的需求都是非常高的。2.2 什么是深度学习

深度学习是机器学习与神经网络、人工智能、图形化建模、优化、模式识别和信号处理等技术融合后产生的一个领域。在严谨的学术期刊中,这个新兴学科的模型一直受严肃理智的学者所推崇:“深度学习网络是神经网络革命性的发展,人们甚至认

为可以用它来创建更强大的预测模型。”2.2.1 成功的蓝图

简单来说,深度神经网络是一种用多层抽象来表示概念或特征的方式。其实,任何工程师或者建筑师都在用这种基本方法。想想大型办公楼的蓝图:在最底层,会标示出电路、水管和排水系统的详细情况;而在最高层,可能会有一个旋转观景台和旗杆,能看到整个30层楼的轮廓。

深度神经网络也遵循这个非常有用的方案。该方案几乎被用于生活的各个领域。医生有诊断书,教师有教学大纲,企业有盈利策划书,甚至学术界都有一个发表研究论文的规范。

实际上,在生活中很难找出不用多层抽象来表达观点的例子——军队指挥官用相同的原则部署作战,政治家以此赢得竞选。相同的原理同样适用于神经网络或者其他多层模型的分类和预测,这是毫无道理的。说明更快的计算机处理器,日益廉价的内存以及层出不穷的新数据格式,使得任意规模的企业都能用深度学习来做数据分析。2.2.2 有监督学习和无监督学习

深度学习使用多层机器学习模型对数据进行有监督学或无监督学习。模型中的不同层由非线性数据变换的多个阶段组成,数据的特征在相继更高、更抽象的层表示。说明数据科学领域有如下两种基本的学习类型。● 有监督学习:训练的数据包含已知的结果。模型相对于这些结果进行训练。● 无监督学习:训练数据不包含任何已知的结果。算法自行发现数据中的联系。2.2.3 深度学习的流程

在学习深度学习的核心思想时,我们采取的通用方法一般如图2.1所示。无论开发什么类型的机器学习模型,最终都回归到这个基本模型。输入数据传递给模型,经过多个非线性层进行过滤,最后一层包含分类器——决定该对象所属的种类。图2.1 通用深度学习框架

用数据进行学习的目标是预测响应变量或者用一组给定的属性对响应变量分类。这与线性回归有点类似,在线性回归中,用一组独立变量(也叫属性或特征)通过一个线性模型来预测因(响应)变量。不过,传统的线性回归模型并不被视为深度学习,因为它们没有对数据进行多层的非线性变换。

其他流行的数据学习技术有决策树(decision tree)、随机森林(random forest)和支持向量机(support vector machine)。这些技术虽然强大,但是并不深入。决策树和随机森林工作在原始输入数据上,不进行变换,也不生成新特征;支持向量机层次较浅,因为它们仅由核函数和线性变换组成。类似地,单隐藏层神经网络也不被视为深度神经网络,因为它们只包含一个隐藏层。2.3 深度学习能解决什么问题

深度学习的威力来自于用适量的并行非线性步骤对非线性数据进行分类或预测的能力。从原始输入数据到数据的实际分类的过程中,深度学习模型学习输入数据的分层特征。每一层从前一层的输出中提取特征。

本书所指的深度学习模型是有多个隐藏层的神经网络。如图2.2所示,最简单的深度神经网络至少包含两层的隐藏神经元。其中每一层的输入来自上一层的输出。图2.2 带两个隐藏层的前馈神经网络

多层深度神经网络有多个非线性层级,可以紧凑地表示高度非线性的和/或高度变化的函数。它们擅长识别数据中的复杂模式,可以用来改进计算机视觉和自然语言处理等工作,并可以解决非结构化数据难题。说明全球发行且读者众多的杂志《IEEE Spectrum》报道:“数据科学家供不应求。这些专业人士享有高薪和大型股票期权……”据麦肯锡全球研究所称,仅美国就缺少14万~19万具备适当技能的数据科学家。哈佛商业评论声称数据科学是21世纪最吸引人的工作。2.4 哪些领域使用深度学习

深度学习技术正商业化地应用在医疗保健行业、医学图像处理、自然语言处理和提高广告点击率等领域。微软、IBM、雅虎、Twitter、百度、PayPal和Facebook都在运用深度学习来了解用户的偏好,以便能推荐针对性的服务和产品。深度学习无处不在,甚至用在智能手机上来支持语音辅助技术。

很难想出一个不能从深度学习受益的商业活动。思考5分钟,把你一些最好的想法列下来。

这是我想到的领域列表:● 过程建模和控制● 健康诊断● 投资组合管理● 军事目标识别● 核磁共振和X光分析● 银行和其他金融机构的个人信用评级● 营销活动● 语音识别● 股市预测● 文本检索● 金融欺诈检测说明Richard Socher写下了自己的列表,从中找到了一个有用的应用,与他人联合创立了MetaMind。该公司专门从事医学图像分析和自动图像识别。其他数据科学家、企业家、应用研究人员,甚至可能是你,将会跟随Richard的脚步进入这个日益增长的利润空间。2.4.1 深度学习能揭开永葆青春的秘密吗

有一天,我从一个科研机构获得一篇新闻稿,其中有一则新奇的消息——发生了一件极具吸引力的事情,其中涉及深度学习。这则新闻报道涉及美容行业,该行业每年有超过2600亿美元的全球市场。

美容产品的核心在于保持青春——逆转衰老。在世界各地,这一承诺反映在人们每年每天花费在市场营销的数百万美元上。充满青春活力、成熟快乐人士的形象广告充斥着人们的手机、平板电脑和笔记本电脑。

无论你在什么时候碰巧读到本书,都会有一个承诺永葆青春的新美容产品刚刚发布。不信你去看看,快速地在网上搜索一下……2.4.2 衰老的挑战

有史以来,衰老的挑战一直是伟大思想家、政治家和科学家关注的前沿。早期美国老年学家I.L. Nascher在他的经典著作中写到:“为什么人会变老,或者为什么经过一段时间的身体机

能完美后,器官和组织会退化,其功能变弱并病变,直到它

们无法维持生命所必需的、和谐的相互关系,这个问题是生

与死这一伟大问题的一部分。”

直到1601年,英国伊丽莎白女王宣布的《济贫法》使这一问题有所缓解,被遗弃的老人因无工作能力穷困无依的困境,是制定该法律的一个关键问题:“……维持秩序,为国家的福祉做出贡献。”《济贫法》要求儿女赡养他们的父母和祖父母,因为I.L.Nascher观察到:“在中国有敬奉祖先和老人的精神,但在我们这里没

有。”《济贫法》在英国持续了250多年。在这段时间里,英国人的预期寿命从约40岁翻了一番,超过了80岁。其他国家也有类似的趋势。2.4.3 众多的理论

预期寿命的稳步上升有很多原因。临床外科专家Victor Horsley爵士将衰老归因于甲状腺的退化;著名科学家Elie Metchnikoff提出“吞噬作用”的理论——大肠白细胞破坏加速老化的细菌;著名的老年学家Shock博士在一次激烈的讨论中大胆地宣称:“或许老年医学研究最有用的贡献之一就是证明衰老不

一定与退化和疾病有关。”

衰老问题依然存在无数理论,生物学家、老年学家和人口学家之间存在巨大的分歧。衰老是一种疾病吗?人类的寿命是有限的吗?衰老可以停止甚至反转吗?2.4.4 数据科学家的答案

一则新的消息引起了我的注意,因为它说到,深度学习很可能一劳永逸地解决衰老这个问题。由青年实验室联合创始人Alex Zhavoronkov带领的研究人员进行了一项研究,旨在确定与衰老相关的一组生物指标。一旦成功,这些指标便可以用来有针对性地长期跟踪干预治疗的有效性。这项研究一个令人震惊的地方便是——它仅需进行基本的血液检测。

研究人员开发了一套深度神经网络来预测实际年龄。它用超过60 000个样本进行训练。研究人员惊奇地发现,该系统确定了5个核心的生物指标,预测精度达81.5%。

这个非常新颖且颇具开拓性的分析发表在世界著名的研究杂志上。该研究结果极具价值,研究人员也受邀参加世界美容创新峰会——深度学习进军美容行业了。说明深度学习需要专业的数据科学人才,而这些人才仍供不应求。目前只有屈指可数的少数公司能从深度学习中获益,其他企业正在迎头赶上。2.5 想使用深度学习——却不知如何开始

深度学习已经成为迄今为止使用人工智能构建解决现实世界问题的系统的有效方法之一。互联网时代产生的海量数据正越来越多地被应用在深度学习中。正如记者Robin Wigglesworth在《金融时报》中写到:“简单来说,深度学习建立在20世纪90年代神经网络发

展的基础上,机器使用人造神经元矩阵扫描信息,寻找模式

并做出决策,很像人脑的运作模式,但速度超快。”

深度学习在需要分类和/或预测的领域非常有用。在商业、工业或者研究的任何领域,任何对预测和分类问题感兴趣的人都应该学习深度学习。实际上,如果有足够的历史数据、需要预测或分类的研究案例,便可以构建一个深度学习模型进行研究。

要学习一个新的东西,最难的事情就是找到容易理解和部署的例子。找到课题相关的大量技术论文非常容易,但找到入门学习并快速搭建的具体的例子是很难的。本书就是为了解决这个问题。书中有直观的插图、实用的例子以及对模型的简单解释,这些可以用Python直接搭建和测试。这样就很容易上手,通过数据和Python进行试验。

运用本书中的想法将改变你的数据科学实践思维。即使仅实践了本书每章中的一个想法,你也不仅可以使用深度学习完成任务,还将能游刃有余地面对更多数据的机会和挑战。2.6 小结

在本章中,我们概述了数据科学家掌握深度学习知识和技能的重要性,回答了“什么是深度学习”的问题,并概述了深度学习可以解决的问题的本质。我们也了解了深度学习技术的主要用户,以及简单掌握深度学习知识和技术的途径。

在下一章中,我们将快速地介绍神经网络的基础。如果你以前从未用过神经网络(或者需要复习一下),可以阅读该章。它涉及了重要的方面,但不会让你陷入数学的细节中。第3章神经网络基础

成功不是终点,失败也并非末日,重要的是继续前进的勇气。——温斯顿·丘吉尔

学习神经网络有可能是一件备受打击的事。也许你要看一篇研究论文,却发现里面满是密密麻麻的数学公式,或者参加一个知名教授的讲座,却迷失在数不清的技术术语中,又或者你看了几个YouTube视频后,却被主讲者单调的声音带进深深的睡梦中。

你不会在阅读本章时发生上述情况。本章是一个简要的神经网络概述,提供了足够的信息来帮助你理解所有技术的细节。本章是后续章节的基础。一旦阅读并消化了本章的内容,你就具备了足够的构建和测试深度神经网络模型的理论知识。3.1 历史备忘录

数十年来,神经网络一直是数据科学家工具包中不可或缺的一部分。它的引入极大地提高了预测准确率,使商业和科学研究不断地从神经网络训练方法的持续改进中受益。1922年春,我在完成经济学硕士论文时第一次接触到神经网络。在查令十字街陈旧的老牌弗伊尔斯书店里,我偶然发现了Russel Beale和Tom Jackson编写的小薄本书《神经计算》。我一口气读完了它,然后决定构建一个预测外汇兑换率变化的神经网络。

编写了几天GW-BASIC代码后,我的神经网络模型已经准备好进行测试了。我启动了自己的Amstrad 2286计算机,把数据“喂”给它。三天半后,结果出来了。预测数字和许多时间段的统计模型匹配得非常好,胜过我所知道的每一个兑换率变化的经济学理论。我丢弃了经济学理论,爱上了可预测分析!从那以后,我构建、部署并调配了很多神经网络以及许多其他出色的可预测分析模型。它们可以用来解决很多问题,这是因为原则上讲它们可以计算任何可算的函数。在实际应用中,它们对有些问题特别有用,比如那些能容忍一定的误差、有大量可用的历史数据或者样本数据,但不能用一些既定的规则简单地来归纳的问题。3.2 神经网络的拓扑结构

神经网络由大量相互连接的节点——通常称之为神经元——构成。它们通常被安排到不同的层上。一个典型的前馈神经网络至少有一个输入层、一个隐藏层和一个输出层。输入层节点的数量和待传入神经网络的特征或属性的数量一致。这和线性回归模型中使用的协变量(独立变量)是类似的。输出结点的数量与你希望预测或者分类的项目数量是一致的。隐藏层一般用来对原始输入属性进行非线性转换。

在其最简单的形式中,前馈神经网络通过在网络中传递属性信息来做出预测。连续的输出结果用作回归分析,离散的结果用于分类。

图3.1是一个典型的前馈神经网络拓扑结构,用于预测儿童年龄。它有两个输入节点,一个包含3个节点的隐藏层和一个输出节点。输入节点将属性(身高,体重)传入网络中。每个属性都有一个输入节点。信息向前馈送给隐藏层,在隐藏层的每个节点上执行数学运算,然后将运算结果传送给输出节点。输出节点计算出数据的加权和来预测儿童的年龄。因为信息向前流经网络,所以称之为前馈神经网络。图3.1 基本的神经网络说明1958年,康奈尔大学航空实验室开发出最初的“感知机”模型。该模型包括没有反馈的3层:(1)一个“视网膜”层用于分发输入信息到第二层。(2)结合加权输入信号与阈值阶跃函数的关联单元。(3)一个输出层。3.3 神经元的作用

神经网络的产生是由于模拟人脑生理结构和功能的愿望。神经元是大脑的基本计算单元。人类的神经系统有大约86亿个神经元,由神经突触连接在一起。

图3.2显示了生物神经元的工作原理。生物神经元通过电信号在彼此间传递信号或消息。相邻的神经元通过其树突接收这些信号。信息从树突流向主细胞体——神经元胞体(SOMA)。信息在那里进行汇总。如果最终总和高于某个阈值,神经元触发,沿着轴突向轴突末梢发送一个脉冲。实际上,生物神经元是在彼此之间传送各种生物功能的消息的计算机器。图3.2 生物神经元人工神经元

数学节点、单元或者神经元是人工神经网络的核心。它是基本的处理单位。输入层神经元接收通过数学函数处理的输入信息,然后把它们分发到隐藏层神经元。信息经隐藏层神经元处理后传送到输出层神经元。

图3.3展示了生物神经元和人工神经元。这里的关键是,信息是通过一个激活函数来处理的。激活函数模拟大脑神经元,输入信号的强度的大小决定了它们被触发或者不被触发。然后处理结果被加权并分配到下一层神经元。从本质上来讲,神经元通过加权和相互激活。这保证了两个神经元之间连接强度的大小由处理信息的权重来确定。图3.3 生物神经元和人工神经元说明虽然复制人类神经元的愿望从未实现,但人们很快发现,人工神经元在分类和预测任务方面表现得同样非常出色。3.4 理解激活函数

如图3.4所示,每个神经元都包含一个激活函数和一个阈值。阈值是输入信息激活神经元所必需的最小值。激活函数作用后,输出被传递到网络中后面的神经元。图3.4 3种激活函数

激活函数被设计用于限制神经元的输出,输出通常为0到1,或者–1到+1之间的值。在大多数情况下,网络中的所有神经元都使用相同的激活函数。几乎所有非线性函数都能做到这一点,然而随机梯度下降算法必须是可微的,如果函数是有界的会很有帮助。

神经元的任务是对输入信号进行加权求和并应用于激活函数,然后将输出传递到下一层。因此,我们看到输入层将数据传递给第一个隐藏层。隐藏层神经元对输入层神经元传递给它们的信息进行求和,然后隐藏层神经元将加权信息传递给输出层神经元,由输出层神经元进行求和操作。说明隐藏层节点的激活函数将非线性引入网络中。3.4.1 数学计算

图3.5说明了单个神经元的工作情况。给定有输入属性{x,...,x}1n的样本,和属性与神经元的每一个连接的权重w。然后,神经元按照ij以下公式对所有输入求和:

参数b被称为偏差,与线性回归模型中的截距相似。它允许网络j将激活函数“向上”或者“向下”转移。这种灵活性对于机器学习的成功是非常重要的。

神经网络的大小通常由需要估计的参数数量来度量。图3.1中的网络具有[2 × 3] + [3 × 1] = 9的权重和3 + 1 = 4的偏差,总共13个可学习参数。这对于传统统计模型来说参数太多了。一般来说,需要估计的参数越多,获取可靠值所需的数据就越多。图3.5 人工神经元说明最好的工业用的深度学习神经网络是建立在大量数据之上的,有超过1亿个参数。3.4.2 sigmoid函数

S形(或称Logistic)函数是二元分类问题的流行的选择。它是一个S形状的可微分激活函数。如图3.6所示,其中参数c取1.5的常量值。

sigmoid函数接收一个实数值,将其“压扁”到0到1的范围内。其中大的负数变为0,大的正数变为1。该函数在深度神经网络中被广泛应用,部分原因在于函数的输出可以被解释为人工神经元“发射”的概率,其计算公式为:图3.6 c = 1.5的sigmoid函数3.4.3 运算成本

sigmoid函数在基本的神经网络中很受欢迎,部分原因是它很容易微分,从而降低了训练过程中的运算成本。可证明:

所以我们看到导数就是logistic函数f(u)乘以1减f(u)。在梯度下降算法中,此导数被用来学习权重向量。因此,S形函数在神经网络学习中可以很方便地用来计算梯度。说明为了在权重上执行梯度下降算法,激活函数需要是可微的。3.5 神经网络如何进行学习

我们对神经网络感兴趣是因为它预测和学习分类规则的能力。神经网络使用特定的学习算法从数据中学习。学习算法有很多,但一般来说,它们都通过迭代地修改连接权重和偏差来训练网络,直到网络产生的输出和期望的输出之间的误差低于指定的阈值。

反向传播算法是第一个广泛使用的学习算法,目前仍被广泛使用。它使用梯度下降算法作为核心学习机制。开始给定随机的权重,反向传播算法计算网络的权重,做出细小调整,并逐渐根据网络产生的结果和预期结果之间的误差做出调整。

该算法从输出向输入传播误差,并且逐渐精细地调整网络权重,来让使用梯度下降法计算的误差总和最小化。学习周期如图3.7所示。学习过程的每个周期被称为一个epoch。图3.7 神经网络学习周期基本算法

反向传播算法被称为是基本的神经网络学习方法,因为误差通过网络反向传播以调整权重和偏差。该算法由以下步骤组成。● 第一步——网络初始化:确定权重的初始值。通常神经网络使

用随机权重进行初始化。● 第二步——前向反馈:通过节点激活函数和权重,信息在网络

中从输入层前向传递到隐藏层和输出层。激活函数(通常)是输

入节点加权和的S形函数(如有上下限,且是可微的)。● 第三步——误差评估:评估误差是否足够小到能满足需求,或

者迭代次数是否已经达到预设的上限。如果满足任何一种情况,

训练结束。反之,学习进程迭代地持续。● 第四步——传播:使用输出层的误差来重新调整权重。算法在

网络中反向传播误差,并计算相对于权重值变化的误差变化的梯

度。● 第五步——调整:以降低误差为目标,使用变化梯度对权重作

出调整。根据激活函数的导数,网络输出和实际目标结果之间的

差异,以及神经元输出,调整每个神经元的权重和偏差。网络通

过该过程进行“学习”。说明神经网络通过设置随机值的权重和偏差进行初始化。一个经验法则是将随机值设置在范围(–2n~2n)内,其中n是输入属性的数量。3.6 解释梯度下降算法

梯度下降是神经网络中流行的优化算法之一。一般来说,我们想要找到最小化误差函数的权重和偏差。梯度下降算法迭代地更新参数,以使整体网络的误差最小化。

该算法在损失函数的梯度上迭代地更新权重参数,直至达到最小值。换句话说,我们沿着损失函数的斜坡方向下坡,直至到达山谷。基本思想大致如图3.8所示。如果偏导数为负,则权重增加(图的左侧部分),如果偏导数为正,则权重减小(图中右半部分)。学习速率参数决定了达到最小值所需步数的大小。图3.8 随机梯度最小化的基本思想3.6.1 误差曲面

寻找全局最佳方案的同时避免局部极小值是一件很有挑战的事情。这是因为误差曲面有很多的峰和谷,如图3.9所示。误差曲面在一些方向上可能是高度弯曲的,但在其他方向是平坦的。这使得优化过程非常复杂。为了避免网络陷入局部极小值的境地,通常要指定一个冲量(momentum)参数。图3.9 典型优化问题的复杂误差曲面

我很早就发现,使用梯度下降的反向传播通常收敛得非常缓慢,或者根本不收敛。在编写第一个神经网络时,我使用了反向传播算法,该网络包含一个很小的数据集。网络用了3天多的时间才收敛到一个解决方案。幸亏我采取一些措施加快了处理过程。说明虽然反向传播相关的学习速率相对较慢,但作为前馈算法,其在预测或者分类阶段是相当快速的。3.6.2 随机梯度下降

传统的梯度下降算法使用整个数据集来计算每次迭代的梯度。对于大型数据集,这会导致冗余计算,因为在每个参数更新之前,非常相似的样本的梯度会被重新计算。随机梯度下降(SGD)是真实梯度的近似值。在每次迭代中,它随机选择一个样本来更新参数,并在该样本的相关梯度上移动。因此,它遵循一条曲折的通往极小值的梯度路径。在某种程度上,由于其缺乏冗余,它往往能比传统梯度下降更快地收敛到解决方案。说明随机梯度下降的一个非常好的理论特性是,如果损失函数是凸的,那么保证能找到全局最小值。3.7 小结

在本章中,我们已经涵盖了很多基础知识。我们从神经网络的历史开始,概述了生物神经元和人工神经元的关系,讨论了神经网络的拓扑结构、激活函数的作用、前向和反向传播,以及通过梯度下降来最小化网络误差。

在下一章,我们将使用Python完成第一个实际的深度神经网络的任务,并对该神经网络进行详细的解释。说明进化算法是神经网络众多的训练算法之一。随着时间的推移,通过调整权重和偏差并能更好地在总体样本上执行分类/预测,神经网络不断进行“进化”。实际上,我发现进化算法效率低下,而且速度相对较慢。第4章深度神经网络简介

人学走路从来不是靠规矩,而是从尝试与跌倒中学习。——理查德·布兰森

深度学习技术的实际应用取得了显著的成绩。经过几十年的研究,经历了众多失败的应用,只有极少数的专家研究人员坚持下来没有放弃。曾经被认为不可能的深度学习网络现在变得可行,因为其在诸如对象识别、场景感知和遮挡检测等应用中,比其他所有先进的机器学习工具表现得更出色,深度神经网络获得了巨大的推动。

在本章中,我们将讨论深度神经网络(DNN)的几个实际应用,如雾天可视性增强、恶意软件检测和图像压缩,然后用Python构建一个简单的深度神经网络来演示通用逼近定理。4.1 深度神经网络简析

深度学习模型由于其优秀的预测性能,包括对过度拟合的鲁棒性,正在迅速发展并广泛应用于商业领域。它们越来越多成功地应用于从自然语言处理到文档识别和交通标志分类等各种应用中。

如图4.1所示,一个DNN模型由一个输入层、一个输出层以及夹在中间的一些隐藏层组成。它类似于多层感知器,但是有许多的隐藏层,在每一层有多个连接的神经元。DNN的多个隐藏层是非常有用的,因为它们可以模拟极其复杂的决策功能。图4.1 一个DNN模型

隐藏层与输入层相连,它们对输入值进行组合和加权,产生新的实际值,然后将其传递到输出层。

输出层使用在隐藏层中计算的抽象特征进行分类或预测决策。

在DNN学习期间,不同层之间连接的权重会被更新,以使输出值尽可能地接近目标输出。说明隐藏层可以被认为是非常复杂的特征转换。4.2 怎样在一分钟内解释深度神经网络

作为数据科学家,我们经常需要向其他数据科学家解释我们使用的技术,这些科学家可能对这种方法并不熟悉。能够做到一分钟内讲清楚DNN是一项了不起的技能。如果必须在60秒或更短的时间内解释DNN,深吸一口气然后指向图4.1——隐藏层是DNN的秘密所在。神经元所执行的非线性数据转换是这些技术的核心。4.2.1 如何看待DNN

我们可以将DNN视为多个回归模型的组合。这些模型(又称神经元)被链接在一起,给定它们一组输入,它们可以提供比单一模型更灵活的输出组合。正是这种灵活性,使它们能够拟合任何功能。

对于分类问题,各个神经元的输出结合在一起,形成可能和不可能两种可能性。最终的结果是某个结果属于某个特定类别的合理猜测的可能性。4.2.2 统计学家的视角

在某些情况下,我们可以将每个隐藏层解释为一个简单的对数线性模型。对数线性模型是广义线性模型的特例之一,经常被用于泊松分布的数据。它是双向应变分析的延伸。

回想一下你的统计学基础课,它讲到过通过列联表中单元格频数的自然对数来测量两个或多个离散分类变量间的条件关系。如果你上过课但想不起来,不用担心。我也觉得在统计学课上保持清醒是不容易的,因为我教过这门课!4.2.3 一个关键的观点

一个关键的观点是,由于典型DNN中有很多层,所以隐藏层可以看作是一堆对数线性模型,在给定输入属性的情况下,这些模型共同地逼近响应类的后验概率。

给定输入属性,隐藏层对条件独立的隐藏二元神经元的后验概率进行建模。最后,输出层估计出类别的后验概率。4.3 深度神经网络的3种使用方式

为了吊一下您的胃口,让我们先看看DNN技术的3个实际用途。通过研究这些应用,你将会认识到DNN在各个领域的巨大潜力。在阅读本节时,问自己下面这个问题:“我怎样使用这些世界级学者创造的DNN思想来解决我

感兴趣的问题呢?”说明一个最早的分层神经系统是日本东京NHK广播科学研究实验室在20世纪70年代后期开发的Neocognitron。这是一个视觉模式识别的神经网络。虽然这是一个很大的突破,但是这项技术几十年来一直处于学术研究领域。

首先快速阅读本节来激发你的思考。然后定期重复阅读,并查阅参考资料。所需的工具会在下面的章节中讲到。4.3.1 增强雾天的可视性

假设你正在去参加一个重要会议的途中。你需要开车穿过城镇中一条三千米长的主街道。你的老板已经警告你不要迟到。再迟到一次,你的职位就不保了!

幸好,你刚好能准时赶到,路上没有出现交通拥堵情况!但是当你转到大街上时,一层厚厚的浓雾笼罩了你。如果慢下来,你会迟到;如果不慢下来,你有可能会到得更晚!

图4.2显示了有雾和无雾情况下能见度的巨大差异。我想我们都同意这样的观点——即使是在空旷的道路上,视觉导航在模糊的环境中也要困难得多。起因和传统解决方案

事实证明,由于雾、霾和霭等大气颗粒对光的吸收或散射,在雾天行驶时,场景可视性和对比度会比较低,这严重地降低了能见度。能见度的降低会大大降低驾驶员对车辆的判断能力,在人的远程感知系统中产生错误的感知,因此可见性预测和增强具有相当实用的价值。

通常,除雾算法需要一张没有雾的相同场景的图像,或者在有雾图像中有像车道标识或者交通标志这样提供距离信息的显著物体。图4.2 雾对视觉的影响(图片来自 Hussain 和Jeong)DNN突破性进展

汉阳大学Jechang Jeong教授和计算机工程学生Farhan Hussain开发了一种深度神经网络方法,实时去除图像中的雾气,这对于不可见的图像是很有效的。他们采用的方法十分有趣,他们认为:“图像中的雾可以通过未知的复杂函数进行数学模拟,

我们利用深度神经网络来近似相应的雾的数学模型。”

他们利用深度神经网络生成了雾合成的近似模型。他们算法的细节在图4.3中给出。下面研究人员所说的方法的核心潜在优势:“我们的技术优点如下:它的实时操作和基于最小的输

入,即单个图像,以及对各种不可见图像数据所展现的鲁棒

性和泛化。”图4.3 Jeong 和Hussain的除雾DNN算法(图片来自 Hussain and Jeong)出色的结果

事实证明,由这两位开发的DNN甚至可以很好地消除不可见图像中的雾。如图4.4所示,顶部图像(见图4.4a)显示了没有雾的原始场景,(中间图像(见图4.4b)是雾景,底部图像(见图4.4c)使用DNN去雾的图像。

Hussain和Jeong总结到:“对各种合成图像进行的实验表明,我们提出的技术有

能力合理地近似相应的雾函数,并将其去除以获得更好的可

视性和安全性……这里提出的方法是健壮的,因为它对大量

看不见的模糊图像生成了很好的结果。”图4.4 Jeong和Hussain的去雾DNN算法的图像样本(图片由 Hussain和Jeong提供)4.3.2 打击黑客犯罪

恶意软件,如木马、蠕虫病毒、间谍软件和僵尸网络,是指可以关闭计算机的恶意软件。从有互联网用户起,刑事犯罪网络就已经在利用这些软件获取非法利益。

一位在公益组织工作的朋友最近发现他的计算机完全被这种恶意软件关闭了。不仅他个人不能访问关键的软件文件,还被执行这一攻击的罪犯勒索大量的“赎金”来解锁计算机系统。你可能也经历过类似的事情。

幸好我的朋友有备份,不用支付赎金。但是恶意软件耗费了他很多时间,也让他很担心,并用了几天时间来焦急地恢复文件。这种攻击不仅影响个人开展合法的业务,还影响到企业甚至国家政府。虽然人们已经采取了许多方法来而遏制这种恶性活动,但它依然十分猖獗。深度学习解决方案

来自Invincea Labs, LLC 的Joshua Saxe和Konstantin Berlin使用深度神经网络来帮助识别恶意软件。DNN体系结构由一个输入层、两个隐藏层和一个输出层组成。输入层有1024个输入特征,每一个隐藏层有1024个神经元。

Joshua和Konstantin使用来自客户和内部恶意软件库的超过400

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载