您的浏览器不支持JavaScript,请开启后继续
Python深度学习实战

Python深度学习实战

  • 作者
  • (美)罗恩·克努斯(Ronald T. Kneusel) 著

本书与机器学习和深度学习相关,向读者讲述了如何建立一个数据集,并展示了如何使用该数据集训练一个成功的深度学习模型。此后,本书探讨了经典的机器学习算法,为探讨深度学习方法理论奠定基础。本书最后4章探讨了卷积神经网络,从案例研究出发,讲解如何从数据集到评估预测模型的方法。这些章节中的实验使用的都是本领域研究人员熟悉的标准数据集。同时,本书介绍了如何通过当前实践的...


  • ¥129.00

ISBN: 978-7-122-44960-3

版次: 1

出版时间: 2024-08-01

图书信息

ISBN:978-7-122-44960-3

语种:汉文

开本:16

出版时间:2024-08-01

装帧:平

页数:285

内容简介

本书与机器学习和深度学习相关,向读者讲述了如何建立一个数据集,并展示了如何使用该数据集训练一个成功的深度学习模型。此后,本书探讨了经典的机器学习算法,为探讨深度学习方法理论奠定基础。本书最后4章探讨了卷积神经网络,从案例研究出发,讲解如何从数据集到评估预测模型的方法。这些章节中的实验使用的都是本领域研究人员熟悉的标准数据集。同时,本书介绍了如何通过当前实践的标准来调整和评估机器学习模型的性能。
本书不仅为读者提供扎实的概念基础,还为读者设计自己的项目和解决方案提供了实用的指导,适用于探索机器学习和深度学习领域的新手和业余爱好者。本书也可以帮助读者为探索更高级的方法和算法提供知识储备。

编辑推荐

本书的特色:区别于传统基于python的人工智能深度学习书籍只讲程序、案例、应用,而没有系统性说明如何构建公认的、性能优良的数据集。本书从原理上讲解机器学习,神经网络的应用场景,而这一点,也恰恰为我们国内人工智能领域急需突破的“瓶颈”,对人工智能研发人员具有很强的启发意义。 本书的亮点为第四章、第五章和第十一章。第四、五章论述了深度学习模型训练所用到的数据集如何构造的问题,第十一章论述如何评价所获得的训练模型的性能的问题,都是其他书中较少提及的关键内容。

图书前言

当我还在上高中时,就编写了一个井字游戏程序,用户可以在计算机上玩该游戏。当时,我还没有意识到真正的计算机科学家是如何解决这一问题的。我只有自己的想法,那些想法是使用非结构化的苹果电脑版BASIC语言支持的粗略if-then和goto语句来实现许多规则。而当时的这些规则往往有几百行之多。
最后,该程序运行良好,直到我发现我的规则未能涵盖所有的动作序列而不能每次都取胜。我确信一定有一种方法可以通过显示示例的方式而不是蛮力代码和规则来教计算机如何做事,这一定是一种使计算机自行学习的方法。
作为20世纪80年代后期的一名本科生,我曾经很兴奋地报名参加一个人工智能课程。该课程最终教会了我如何正确编写井字游戏程序,但是没有回答如何让计算机学习,它仍然只是使用一个聪明的算法。顺便说一句,同样的课程使我们确信,虽然人们预计有朝一日计算机会击败世界上最好的国际象棋手(发生在1997年),但计算机不可能在围棋这样的游戏中击败最优秀的棋手。直到2016年3月,AlphaGo深度学习计划做到了这一点。
2003年,我在一家科学计算公司担任顾问时,被分配到一个主要开发医疗设备的项目。该项目的目的是通过使用机器学习对冠状动脉的血管内超声图像进行实时分类。这是人工智能的一个子领域,项目要求计算机可以从数据中进行自主学习,并要求我们开发出当时的程序还难以明确实现的模型。这就是我在等的!
我模糊地意识到机器学习领域中有一种叫作神经网络的“怪兽”没准可以做一些有趣的事情,但是在当时大多数情况下,机器学习只是一个很小的研究领域,而不是普通计算机科学人员所关注的东西。在项目期间,我对不需要编写大量精确代码就可以训练计算机进行学习的研究方向产生了浓厚的兴趣。即使在项目结束后,我仍然坚持自学相关领域的知识。
大约在2010年,我参与了另一个机器学习项目,就当时的参与时机来说,堪称完美。当时的人们才刚刚开始讨论一种称为深度学习的机器学习新方法,而这种方法复兴了以往的神经网络。当时光迈入2012年时,深度学习的研究呈波涛汹涌之势,异军突起。我很幸运能进入在苏格兰爱丁堡举行的ICML 2012会议室,当时Google展示了其深度学习最初的突破性成果,该成果展示了如何对YouTube视频中的猫进行追踪。那时的会议室相当拥挤,多达800人。
2020年,我参加的机器学习会议有13000多名与会者。机器学习迅猛发展,这不是一时的风尚。机器学习已经深刻影响了我们的生活,并将继续如此。我们最好了解一些知识,以便了解经常被大肆宣传的演示的本质核心,这很有趣。这就是这本书存在的原因,以帮助您学习机器学习的基础。具体来说,我们将专注于深度学习方法。
本书为谁而著?
本书为没有机器学习背景但保持好奇心并愿意尝试新鲜事物的读者而著。我尽量将数学推导压缩至最低水平。我的目标是帮助您理解核心概念并建立直觉,以备日后使用。
同时,我不想写一本书,只是指导您如何使用现有工具包,却没有深挖任何实质意义上的东西。的确,如果您只关心方法,那么就可以构建有用的模型。但是,如果您不理解其中深层的原因,那只会令您沮丧,更不用说最终通过您自己的贡献来推动这一领域的发展了。
就我的假设而言,我假设您对任何语言的计算机编程都比较熟悉。无论您是学生还是职业人员,机器学习的首选语言是Python,因此我们将使用该语言。我还假设您熟悉高中数学,但不熟悉微积分。无论如何,机器学习里都会有一些微积分,但是即使您不熟悉该技术,您也可以理解其中的思想。我还要假设您了解一些统计数据和基本概率。如果您从高中起就忘记了这些主题,请不要担心——您会在第1章中找到相关内容,这些内容为您提供了足够的背景知识以供您参考。
您能学到什么?
如果您全面阅读本书,则可以了解以下内容:
·如何建立良好的训练数据集。这个数据集能让您在“现场”环境下使您的模型获得成功。
·如何使用两个领先的机器学习工具包:scikit-learn和Keras。
·训练和测试模型后,如何评估模型的性能。
·如何使用几个经典的机器学习模型,例如k-最近邻法(k-Nearest Neighbors,k-NN)、随机森林或支持向量机。
·神经网络如何工作和训练。
·如何使用卷积神经网络开发模型。
·如何从一组给定的数据开始,从头建立成功的模型。
关于本书
这本书与机器学习相关。机器学习与构建模型相关,这些模型接收输入数据并从中得出一些结论。该结论可能是将物体放入特定类别的物体(例如某种狗)中的标签,或者是连续的输出值,例如价格应该对应具有特定设施的房屋。这里的关键是模型可以自己从数据中学习。实际上,该模型是通过示例学习的。
您可以将模型视为一个数学函数y=f(x),其中y是输出、类标签或连续值,而x表示未知输入的特征集。特征是模型可以用来了解要生成什么输出的度量或有关输入的信息。例如,x可能是代表一条鱼的长度、宽度和重量的矢量,其中每个尺寸都是一个特征。我们的目标是找到f,这是x和y之间的映射,我们可以在只知道x,不知道y的新实例上使用它。
学习函数f的标准方法是给我们的模型(或算法)提供已知数据,并让模型学习使f成为有用映射所需的参数。这就是机器学习这个名称的由来:机器正在学习模型的参数。我们不是在自己考虑规则,而是在代码中巩固它们。确实,对于某些模型类型(例如神经网络),我们甚至还不清楚该模型学到了什么,只是该模型现在能够在有用的水平上运行。
机器学习有三个主要分支:监督学习、无监督学习和强化学习。我们刚刚描述的过程属于监督学习。我们用一组已知的x和y值(训练集)监督了模型的训练。我们将这样的数据集称为带标签的数据集,因为我们知道每个x都带有y。无监督学习尝试仅使用x来学习模型使用的参数。我们不会在这里讨论无监督学习,但是如果您以后想自己探索该领域,则可以参考很多我们对监督学习的讨论。
强化学习训练模型执行诸如象棋或围棋之类的任务。该模型学习了在给定其当前状态的情况下要采取的一组操作。这是机器学习的重要领域,强化学习以前被认为仅属于在人类领域的任务上取得了很显著的成功。可惜的是,为了使本书易于理解,必须做出一些妥协,因此我们将完全忽略强化学习。
关于术语的简要说明。在媒体上,我们在本书中所谈论的很多东西都被称为人工智能(Artificial Intelligence,AI)。尽管这没有错,但在某种程度上却具有误导性:机器学习是人工智能领域的一个子领域。您经常会听到的另一个术语是深度学习。这个术语有点含糊,但出于我们的目的,我们将使用它来表示使用神经网络进行机器学习,尤其是具有很多层(较深)的神经网络。图1显示了这些术语之间的关系。
当然,机器学习和深度学习领域的模型和方法种类繁多。在本书中,我们将遇到许多模型。我们可以将它们排列在“机器学习树”中,如图2所示。
该树显示了从传统的机器学习到现代深度学习的发展过程。我们将在本书中介绍所有的这些模型。同样,在结束本章之前,我们将给出每章的简要介绍。
第1章:开篇。本章告诉您如何设置我们假定的工作环境。它还包括有关向量、矩阵、概率和统计量的部分,您可以将其用作复习或背景知识。
第2章:使用Python。本章将教您开始使用Python。
第3章:使用NumPy。NumPy是Python的扩展,这就是使Python对机器学习有用的原因。如果您不熟悉它,请仔细阅读本章。
第4章:使用数据工作。错误的数据集会导致错误的模型。我们将教您什么才是好的数据。
第5章:构建数据集。我们将构建整本书中使用的数据集。您还将学习如何增强数据集。
第6章:经典机器学习。要了解去向,有时最好先知道从哪里来。在这里,我们将介绍一些原始的机器学习模型。
第7章:经典模型实验。本章介绍传统的机器学习方法的优缺点。在本书中,我们将参考这些结果以进行比较。
第8章:神经网络介绍。现代深度学习全都与神经网络有关,我们将在本章介绍它们。
第9章:训练神经网络。这一具有挑战性的章节为您提供了如何训练神经网络所需的知识。本章介绍了一些基本的演算,但请不要惊慌—为了使您有直观的认识,我们对它进行了高层次的讨论,并且该概念并不像最初看起来那样令人恐惧。
第10章:神经网络实验。在这里,我们进行实验以建立直觉,并获得实际使用数据的感觉。
第11章:评价模型。要了解机器学习论文、演讲和讲座中提出的结论,我们需要了解如何评价模型。本章将带您了解整个过程。
第12章:卷积神经网络介绍。我们将在本书中重点关注的深度学习体现在卷积神经网络(CNN)的概念中。本章讨论了这些网络的基本构建块。
第13章:基于Keras和MNIST的实验。这章我们将通过MNIST数据集(深度学习的主要力量)进行实验,来探索CNN的工作方式。
第14章:基于CIFAR-10的实验。MNIST数据集非常有用,它是CNN里可以轻松掌握的简单数据集。本章我们探索了另一个主力数据集CIFAR-10,该数据集由实际图像组成,将挑战我们的模型。
第15章:实例研究:音频数据分类。我们将以实例研究作为结束。我们从一个不被广泛使用的新数据集开始,并逐步建立一个良好的模型。本章使用我们在书中研究的所有内容,包括构建和数据增强、经典模型、传统神经网络、CNN和模型集合。
第16章:走向未来。没有一本书是完整的。本章指出了我们忽略的一些内容,可帮助您筛选与机器学习相关的大量资源,以便您专注于接下来应该学习的内容。
本书配套源代码及相关资源可扫描下方二维码获取下载链接。

著者

目录

简要目录
第1章 开篇 001

第2章 使用Python 008

第3章 使用NumPy 021

第4章 使用数据工作 038

第5章 构建数据集 060

第6章 经典机器学习 077

第7章 经典模型实验 091

第8章 神经网络介绍 120

第9章 训练神经网络 132

第10章 神经网络实验 154

第11章 评价模型 174

第12章 卷积神经网络介绍 197

第13章 基于Keras和MNIST的实验 214

第14章 基于CIFAR-10的实验 235

第15章 实例研究:音频数据分类 258

第16章 走向未来 282



详细目录
第1章 开篇 001
1.1 操作环境 001
1.1.1 NumPy 001
1.1.2 scikit学习 001
1.1.3 基于TensorFlow的Keras 001
1.2 安装工具包 002
1.3 线性代数基础 003
1.3.1 向量 003
1.3.2 矩阵 003
1.3.3 向量和矩阵相乘 004
1.4 统计和概率 005
1.4.1 描述性统计 005
1.4.2 概率分布 005
1.4.3 统计检验 006
1.5 图形处理单元 006

第2章 使用Python 008
2.1 Python解释器 008
2.2 语句与空格 008
2.3 变量与基本数据结构 009
2.3.1 数字表示 009
2.3.2 变量 010
2.3.3 字符串 010
2.3.4 列表 011
2.3.5 字典 013
2.4 控制结构 014
2.4.1 if-elif-else 语句 014
2.4.2 for循环 014
2.4.3 while循环 016
2.4.4 break与continue语句 016
2.4.5 with语句 017
2.4.6 使用try-except块处理错误 017
2.5 函数 018
2.6 模块 019

第3章 使用NumPy 021
3.1 为什么是NumPy? 021
3.1.1 数组对列表 021
3.1.2 测试数组与列表的速度 022
3.2 基本数组 024
3.2.1 使用np.array定义数组 024
3.2.2 用0和1定义数组 026
3.3 访问数组中的元素 027
3.3.1 数组索引 027
3.3.2 数组切片 028
3.3.3 省略号 030
3.4 算子和广播 031
3.5 数组的输入与输出 033
3.6 随机数 035
3.7 NumPy和图像 036

第4章 使用数据工作 038
4.1 分类与标签 038
4.2 特征与特征向量 039
4.2.1 特征的类型 039
4.2.2 特征选择与维数灾难 040
4.3 优秀数据集的特征 042
4.3.1 插值与外推 042
4.3.2 父分布 043
4.3.3 先验类概率 044
4.3.4 混淆 044
4.3.5 数据集规模 045
4.4 数据准备 045
4.4.1 特征缩放 046
4.4.2 特征缺失 049
4.5 训练、验证和测试数据 050
4.5.1 三个子集 050
4.5.2 数据集划区 050
4.5.3 k折交叉验证 054
4.6 看看你的数据 055
4.6.1 从数据中寻找问题 056
4.6.2 警示案例 058

第5章 构建数据集 060
5.1 鸢尾花(irises)数据集 060
5.2 乳腺癌数据集 062
5.3 MNIST数据集 063
5.4 CIFAR-10数据集 065
5.5 数据增强 067
5.5.1 为什么要增强训练数据? 067
5.5.2 增强训练数据的方法 068
5.5.3 鸢尾花数据集的增强 069
5.5.4 CIFAR-10数据集的增强 073

第6章 经典机器学习 077
6.1 最近质心 077
6.2 k-最近邻 080
6.3 朴素贝叶斯 081
6.4 决策树与随机森林 084
6.4.1 递归初步 085
6.4.2 构建决策树 086
6.4.3 随机森林 087
6.5 支持向量机 088
6.5.1 边距 088
6.5.2 支持向量 089
6.5.3 优化 089
6.5.4 核 090

第7章 经典模型实验 091
7.1 鸢尾花数据集实验 091
7.1.1 测试经典模型 091
7.1.2 实现最近质心分类器 094
7.2 乳腺癌数据集实验 095
7.2.1 两次初始测试运行 096
7.2.2 随机拆分的影响 098
7.2.3 加入k折验证 099
7.2.4 搜索超参数 103
7.3 MNIST数据集实验 107
7.3.1 测试经典模型 107
7.3.2 分析运行时间 112
7.3.3 PCA主元的实验 113
7.3.4 扰动我们的数据集 115
7.4 经典模型小结 116
7.4.1 最近质心 116
7.4.2 k-最近邻(k-NN) 116
7.4.3 朴素贝叶斯 116
7.4.4 决策树 117
7.4.5 随机森林 117
7.4.6 支持向量机 117
7.5 使用经典模型的时机 118
7.5.1 处理小数据集 118
7.5.2 处理计算要求不高的任务 118
7.5.3 可解释的模型 118
7.5.4 以向量作为输入的任务 118

第8章 神经网络介绍 120
8.1 神经网络剖析 120
8.1.1 神经元 121
8.1.2 激活函数 122
8.1.3 网络结构 124
8.1.4 输出层 125
8.1.5 权重和偏置的表示 126
8.2 一个简单神经网络的实现 127
8.2.1 建立数据集 127
8.2.2 实现神经网络 128
8.2.3 训练和测试神经网络 130

第9章 训练神经网络 132
9.1 高层次的概述 132
9.2 梯度下降 133
9.2.1 找出最小值 134
9.2.2 更新权重 134
9.3 随机梯度下降法 135
9.3.1 批次和小批次 135
9.3.2 凸函数与非凸函数 137
9.3.3 终止训练 138
9.3.4 更新学习率 138
9.3.5 动量 139
9.4 反向传播 139
9.4.1 反推第一步 140
9.4.2 反推第二步 142
9.5 损失函数 144
9.5.1 绝对损失和均方误差损失 145
9.5.2 交叉熵损失 145
9.6 权重初始化 146
9.7 过拟合与正则化 147
9.7.1 理解过拟合 148
9.7.2 理解正则化 149
9.7.3 L2正则化 150
9.7.4 丢弃 151

第10章 神经网络实验 154
10.1 我们的数据集 154
10.2 多层感知机分类器 154
10.3 架构和激活函数 155
10.3.1 代码 155
10.3.2 结果 158
10.4 批次大小 161
10.5 基础学习率 164
10.6 训练集大小 165
10.7 L2正则化 166
10.8 动量 168
10.9 权重初始化 169
10.10 特征排序 172

第11章 评价模型 174
11.1 定义与假设 174
11.2 为什么仅有准确性是不够的 175
11.3 2×2混淆矩阵 176
11.4 从2×2混淆矩阵中导出度量指标 178
11.4.1 从2×2表中导出度量指标 178
11.4.2 使用我们的指标来解释模型 180
11.5 更多高级度量指标 181
11.5.1 知情度与标记度 182
11.5.2 F1得分 182
11.5.3 Cohen系数κ 182
11.5.4 马修斯相关系数 183
11.5.5 实现我们的指标 183
11.6 接收者操作特征曲线 184
11.6.1 集成我们的模型 184
11.6.2 绘制我们的指标 186
11.6.3 探索ROC曲线 187
11.6.4 采用ROC分析对比模型 188
11.6.5 生成一条ROC曲线 190
11.6.6 精确度-召回率曲线 191
11.7 处理多个类 191
11.7.1 扩展混淆矩阵 192
11.7.2 计算加权准确率 194
11.7.3 多类马修斯相关系数 195

第12章 卷积神经网络介绍 197
12.1 为什么是卷积神经网络? 197
12.2 卷积 198
12.2.1 用核进行扫描 198
12.2.2 图像处理中的卷积 200
12.3 卷积神经网络的剖析 200
12.3.1 不同类型的层 201
12.3.2 通过CNN传递数据 202
12.4 卷积层 203
12.4.1 卷积层如何工作 203
12.4.2 使用卷积层 205
12.4.3 多卷积层 207
12.4.4 初始化卷积层 207
12.5 池化层 208
12.6 全连接层 209
12.7 全卷积层 209
12.8 运行情况分析 211

第13章 基于Keras和MNIST的实验 214
13.1 在Keras中构建CNN 214
13.1.1 加载MNIST数据 214
13.1.2 建立我们的模型 216
13.1.3 训练和评价模型 217
13.1.4 绘制误差 219
13.2 基础实验 220
13.2.1 架构实验 221
13.2.2 训练集尺寸、小批次和历时 223
13.2.3 优化器 225
13.3 全卷积网络 226
13.3.1 构建和训练模型 226
13.3.2 制作测试图像 228
13.3.3 测试模型 229
13.4 加扰动的MNIST数字 233

第14章 基于CIFAR-10的实验 235
14.1 CIFAR-10的复习 235
14.2 使用全部CIFAR-10数据集 236
14.2.1 构建模型 236
14.2.2 分析模型 239
14.3 动物还是车辆? 240
14.4 二元还是多分类? 244
14.5 迁移学习 247
14.6 微调模型 251
14.6.1 建立数据集 252
14.6.2 微调以适应模型 254
14.6.3 测试我们的模型 256

第15章 实例研究:音频数据分类 258
15.1 建立数据集 258
15.1.1 增强数据集 259
15.1.2 数据预处理 262
15.2 音频特征分类 264
15.2.1 使用经典模型 264
15.2.2 使用传统神经网络 266
15.2.3 使用卷积神经网络 267
15.3 频谱图 271
15.4 频谱图分类 273
15.4.1 初始化、正则化、批次归一化 275
15.4.2 检查混淆矩阵 276
15.5 集成 277

第16章 走向未来 282
16.1 携手卷积神经网络走向未来 282
16.2 强化学习与无监督学习 283
16.3 生成对抗式网络 283
16.4 循环神经网络 284
16.5 在线资源 284
16.6 会议 284
16.7 推荐书籍 285
16.8 再会,谢谢 285

发送电子邮件联系我们