×
机器学习编程:从编码到深度学习:from coding to deep learning

机器学习编程:从编码到深度学习:from coding to deep learning

1星价 ¥72.3 (7.3折)
2星价¥72.3 定价¥99.0
暂无评论
图文详情
  • ISBN:9787111680918
  • 装帧:一般胶版纸
  • 册数:暂无
  • 重量:暂无
  • 开本:26cm
  • 页数:14,277页
  • 出版时间:2021-06-01
  • 条形码:9787111680918 ; 978-7-111-68091-8

本书特色

适读人群 :本书是从零基础初学者的思维角度编写的,适合作为智能科学与技术、数据科学与大数据技术、计算机科学与技术以及相关专业的本科生或研究生的机器学习入门教材,也可供工程技术人员和自学读者学习参考。l 语言幽默,举例生动,适合零基础读者学习机器学习。 l 广泛覆盖梯度下降、线性与非线性分类模型、感知机、神经网络、超参数调优、过度拟合和卷积神经网络等重要热门主题。 l 附带配套网站ProgML(www.progml.com),读者可自行参阅重要内容的额外解释与细节部分。 l 每章都附有可供读者完成的编程练习,练习还配备了参考答案。 l 附录中有Python简单入门教程与术语表。

内容简介

本书从一个完全不了解机器学习的程序员的视角出发,通过一系列生动有趣的具体应用实例,运用诙谐的语言以循序渐进的方式比较系统地介绍机器学习的本质思想、基本理论和重要算法,比较细致地剖析线性模型、感知机模型、浅层神经网络、深度神经网络的设计原理与编程方法,引导读者亲自动手从零开始打造和完善机器学习的底层代码,逐步消除对机器学习算法原理的认知盲点,让广大初学者能够较为轻松地掌握机器学习和深度学习的基本理论和编程技术。本书是从零基础初学者的思维角度编写的,适合作为智能科学与技术、数据科学与大数据技术、计算机科学与技术以及相关专业的本科生或研究生的机器学习入门教材,也可供工程技术人员和自学读者学习参考。

目录

译者序 前言 致谢 **部分 从零开始的 图像识别 第1章 机器学习的原理 2 1.1 编程与机器学习 2 1.2 监督学习 4 1.3 魔法背后的数学原理 6 1.4 设置系统 8 第2章 首个机器学习程序 12 2.1 了解问题 12 2.1.1 监督比萨 13 2.1.2 理解数据 13 2.2 编写线性回归代码 15 2.2.1 定义模型 16 2.2.2 进行预测 18 2.2.3 进行训练 18 2.2.4 计算误差 19 2.2.5 越来越接近 20 2.2.6 运行代码 21 2.3 添加偏置 23 2.4 小结 25 2.5 动手研究:设置超参数 26 第3章 梯度 28 3.1 算法的缺陷 28 3.2 梯度下降法 30 3.2.1 少量数学知识 32 3.2.2 陡坡速降 33 3.2.3 脱离平面 34 3.2.4 偏导数 35 3.2.5 测试梯度下降法 37 3.2.6 何时梯度下降法不适用 38 3.3 小结 40 3.4 动手研究:露营地问题 40 第4章 超空间 41 4.1 添加更多维度 42 4.2 矩阵代数 44 4.2.1 矩阵乘法 45 4.2.2 矩阵转置 47 4.3 升级学习程序 47 4.3.1 数据准备 48 4.3.2 升级预测函数 50 4.3.3 升级损失函数 51 4.3.4 升级梯度公式 52 4.3.5 整合函数 53 4.4 告别偏置 54 4.5 *后一次试运行 55 4.6 小结 56 4.7 动手研究:统计学家 56 第5章 能辨识的机器 58 5.1 线性回归的不足 58 5.2 S型函数 61 5.2.1 信心与疑虑 62 5.2.2 平滑过程 63 5.2.3 升级梯度 65 5.2.4 模型函数受到的影响 66 5.3 操作中的分类函数 67 5.4 小结 69 5.5 动手研究:权重的影响 70 第6章 计算机视觉初探 71 6.1 处理数据 72 6.1.1 MNIST入门 72 6.1.2 训练与测试 73 6.2 我们自己的MNIST库 74 6.2.1 准备输入矩阵 74 6.2.2 处理数据 76 6.3 实际运行 79 6.4 小结 80 6.5 动手研究:难以识别的数字 80 第7章 *后的挑战 81 7.1 多元分类 81 7.1.1 独热编码 83 7.1.2 独热编码实践 84 7.1.3 解码分类器的答案 85 7.1.4 需要更多的权重 85 7.1.5 回顾矩阵维数 86 7.2 验证与结果 87 7.3 小结 89 7.4 动手研究:扫雷舰 89 第8章 感知机 91 8.1 认识感知机 91 8.2 组装感知机 92 8.3 感知机的不足 93 8.3.1 线性可分数据 94 8.3.2 线性不可分数据 95 8.4 感知机史话 97 8.4.1 终极之战 98 8.4.2 论战余波 98 第二部分 神经网络 第9章 设计神经网络 100 9.1 用感知机组装神经网络 101 9.1.1 链式感知机 102 9.1.2 节点数量 103 9.2 加入softmax函数 105 9.3 构建方案 106 9.4 小结 106 9.5 动手研究:网络冒险 107 第10章 构建神经网络 108 10.1 编写正向传播代码 108 10.1.1 编写softmax函数 110 10.1.2 编写分类函数 112 10.2 交叉熵 112 10.3 小结 114 10.4 动手研究:时间旅行的测试 115 第11章 训练神经网络 116 11.1 反向传播的使用场合 116 11.2 从链式法则到反向传播 118 11.2.1 简单网络结构的链式法则 118 11.2.2 复杂网络的链式法则 119 11.3 使用反向传播算法 121 11.3.1 开始之前 123 11.3.2 计算w2的梯度 123 11.3.3 计算w1的梯度 124 11.3.4 提炼反向函数 125 11.4 初始化权重 126 11.4.1 可怕的对称性 126 11.4.2 死亡神经元 127 11.4.3 正确的权重初始化 129 11.5 完成网络模型 130 11.6 小结 132 11.7 动手研究:错误的开始 133 第12章 分类器的工作原理 134 12.1 寻找边界 134 12.1.1 感知机的主场 135 12.1.2 理解分类 136 12.1.3 线性不可分 138 12.2 弯曲的边界 139 12.3 小结 141 12.4 动手研究:高难数据 141 第13章 小批量处理 142 13.1 训练过程的可视化 143 13.2 分批处理 145 13.2.1 小批量样本集的构造 145 13.2.2 批量样本的训练 147 13.3 理解小批量 148 13.3.1 扭曲的路径 148 13.3.2 大型和小型批处理 150 13.3.3 批处理的优缺点 151 13.4 小结 152 13.5 动手研究:*小的批量 153 第14章 测试的禅意 154 14.1 过度拟合的威胁 154 14.2 测试的难题 156 14.3 小结 158 14.4 动手研究:思考测试 159 第15章 来做开发吧 160 15.1 准备样本数据 161 15.1.1 检查输入变量的范围 161 15.1.2 标准化输入变量 162 15.1.3 标准化的实践 163 15.2 调优超参数 164 15.2.1 选择历元的数量 164 15.2.2 调优隐藏节点数量 165 15.2.3 调优学习率 168 15.2.4 调优批量大小 170 15.3 *终测试 171 15.4 动手研究:实现99% 17
展开全部

节选

◆前言 ◆ 机器学习看上去就像魔法一样。计算机是如何识别图像中物体的呢?车辆又是如何自动驾驶的呢? 不论是对于普通人,还是对于你我这样的软件开发者来说,这些神奇的功能都令人感到沮丧。即使是我这种已经编写了很多年代码的程序员,也不知道机器学习的原理。当我在鼓捣*新的Web框架的时候就有人在编写酷炫的软件。这些软件看上去就像科幻片一样,我甚至都无法理解。 我想要从事这种软件的开发,想要亲自打造属于自己的机器学习软件。 我知道应该怎么去写程序,所以自以为很快就能上手机器学习程序的开发。我想,那能有多难呢?我带着自信满满的微笑开始学习。然后,我将之前的疑虑抛到脑后,保持着自信的微笑。 机器学习对于我们这种程序开发人员来说很陌生。这个领域充满了数学术语、研究惯例以及糟糕的代码。人们会把你引向各种讲座和研究论文,而非教程。对于我们中的大多数而言,机器学习既迷人又危险。 我刚开始学习机器学习时就没有这样一本书—用程序员习惯的语言编写出版的机器学习开发者入门指南。读完本书,你会熟悉机器学习的基本原理,并且能够编写一些机器学习程序。虽然你也许还不能编写出属于自己的自动驾驶程序,但是至少知道机器学习是怎么一回事了。 关于本书 这是一本写给想要从头开始学习机器学习的程序开发人员的入门指南。 机器学习涉及的范围十分广泛,没有哪本书能够涵盖机器学习的所有内容。本书内容将集中在机器学习*重要的三个方面:监督学习、神经网络和深度学习。随着本书内容的展开,我们将以逐渐深入的方式介绍这些术语,下图和下文中的简单定义能够帮助你入门。 监督学习是一种特殊的机器学习类型。机器学习有几种具有不同特点的类型,监督学习是其中*流行的一种。本书的**部分就是监督学习的一个实践指南。在开始的几章里,我们将编写小型的机器学习程序。然后,我们将逐步提升程序的编写水平,直至完成一个名为感知机的机器学习系统。我们的感知机是一个真正的计算机视觉系统,功能强大到足以识别手写符号。我们完全依靠自己完成程序的编写,不使用程序库,你可以理解程序中的每一行代码。 实现监督学习系统有很多方法,其中*流行的一种是神经网络。神经网络是受人脑神经元连接方式启发而发明出来的一种美妙算法。本书第二部分专注于神经网络。我们将把**部分构造出来的程序逐步转换为成熟的神经网络模型。我们会在研究过程中面临一些挑战,但获得的回报是巨大的:*后得到的神经网络模型要比初始程序强大得多。这里再次重申,我们会自己一行一行地编写代码。我们将公开代码内核以便读者自己进行尝试。 近年来,研究者发明了一些具有突破性的技术来设计并使用神经网络,神经网络也因此获得了巨大的发展。这种强化版的神经网络技术要比老式的简单神经网络技术强大得多,以致得到一个名为深度学习的新名称。本书第三部分就是深度学习。在这部分,我们将使用现代机器学习程序库重新编写神经网络模型,由此得到的代码将成为我们理解深度学习的起跑线。在第三部分的*后,我们将浏览先进的深度学习技术,为将来的发展打下基础。 严格地说,前面的示意图中表示的内容并不完全准确。例如,神经网络可用于机器学习的其他领域,而并不仅限于监督学习领域。然而,该示意图是顺利理解本书内容的精髓及其整合方式的起点。 开始之前 虽然本书没办法让你在一夜之间成为机器学习专家,但它能够让你从直觉和实践的角度理解机器学习的原理。我想要掀开机器学习的神秘面纱,展示机器学习的奥秘,阐明机器学习的魔法。一旦掌握了机器学习的基本原理,你就会发现深挖机器学习技术并将这些技术结合到日常工作中变得更加容易,甚至还有可能开启你的机器学习工程师职业生涯。 虽然不是只有职业程序开发者才能阅读本书,但你必须能享受编写程序的过程。如果你懂得Python语言,那么你的运气不错,本书自始至终使用的都是Python语言,你会像在自己家里一样自在。如果你不懂Python语言,那也不用担心。Python是一种非常友好的语言,本书的所有代码都不会过于复杂。你可以阅读附录A来快速入门,如果卡壳了就上网搜索更多的信息吧。 机器学习涉及不少数学内容。虽然我不会简化数学部分的内容,但会尽可能地让这些数学内容变得易于直观理解。你需要掌握部分高中数学知识,我默认大家都能看懂笛卡儿坐标系,知道什么是“坐标轴”和“原点”,也能够理解函数图像。除此之外,不需要其他更多的先修数学知识了。 数学探究 我们都喜欢直观的数学,但有时你可能需要更加形式化的表述。如果你在对公式进行分析的时候感到迷茫,或者你喜欢数学并且想要学得更深,那就阅读“数学探究”这个信息框吧。它们会将卓越的可汗学院的相关数学截图呈现给你。不论你现在的数学水平如何,这个网站总能给你提供帮助。 事先说明一下,这些额外的课程内容是选学的。学习本书的知识并不需要这些内容,只有在你想要彻底掌握机器学习的数学知识时才需要学习它们。 另外,如果你有扎实的线性代数和微积分基础,那就会觉得有些数学表达是显而易见的。此时,你就可以不假思索地跳过那些不必阅读的解释。 机器学习有着丰富而且特定的词汇库。你可能会偶尔看见新名词,或者旧词新意。请放轻松,你不用记住所有这些词汇。再次遇到这些词汇的时候,我会提醒你其中很多词汇的含义。每当你遇到不记得含义的术语,都可以查看附录B。 可以使用一句话概括我将在具体应用实例中使用的样本数据集:其中许多数据集是图像集合。但请放心,除了图像识别之外,机器学习还可以做更多其他方面的事情。它可以分析文本、生成音乐,甚至可以进行自动对话。然而,图像识别是一个非常直观的应用实例,所以我将它作为整本书首选的程序应用。 *后,别忘了浏览本书的网站并下载关于应用实例的源代码。你还能在本书的网站上找到关于勘误表的链接,拼写错误、bug和致命错误的勘误也都写在勘误表里。 本书还有一个名为ProgML的配套网站,其中包含一些无法放入书中的额外内容。有时你会在注释中找到对ProgML的引用,以链接到那些关于选学内容的介绍。如果你想要知道更多细节,那就去看看吧。 关于本书的简介就到这里。让我们从**部分开始学习吧。 致  谢 首先,我要大声地感谢我的技术评审员们:Alessandro Bahgat、Arno Bastenhof、Roberto Bettazzoni、Guido“Zen”Bolognesi、Juan de Bravo、Simone Busoli、Pieter Buteneers、Andrea Cisternino、Sebastian Hennebrüder、Alberto Lumbreras、Russ Olsen、Luca Ongaro、Pierpaolo Pantone、Karol Przystalski、Dan Sheikh、Leonie Sieger、Gal Tsubery、l’ùmarèin pugnàtta di Casalecchio和Giancarlo Valente。谢谢你们提出富有见地的意见,不断地优化本书。Roberto Bettazzoni我就不客气了,他就像我的好朋友一样,得为本书出现的任何错误背锅。 我要感谢我的读者们:Marco Arena、Glen Aultman-Bettridge、Juanjo Bazan、Zbynek Bazanowski、Jamis Buck、Charles de Bueger、Leonardo Carotti、Amir Ebrahimi、Helge Eichhorn、George Ellis、Bruno Girin、Elton Goci、Dave Halliday、Darren Hunt、Peter Lin、Karen Mauney、Bradley Mirly、Vasileios Ntarlagiannis、Volkmar Petschnig、David Pinto、Conlan Rios、Roman Romanchuk、Ionut Simion、Drew Thomas和Jeroen Wenting。谢谢你们在本书的预出版阶段提出意见并参与勘误工作。 谢谢我的朋友Annamaria Di Sebastiano,感谢你和我分享了第1章开头的故事。 感谢Marc Schnierle,谢谢你那无与伦比的LaTeX4technics网络App,我用它来生成公式;感谢Kimberly Geswein,谢谢你设计的独立花体字,我在图中使用了这种字体;感谢设计了DejaVu Sans和DejaVu Sans Mono的团队,我在本书中广泛地使用了它们;还要感谢布里斯班市议会发布了美丽的针鼹图片,它出现在本书的末尾几章之中。 本书历经三位编辑之手。三位编辑都很优秀,我真的很幸运。感谢Meghan Blanchette和Susan Conant,谢谢你们帮助我从草稿开始到完成半成品。如果我在这里表现对你们的偏爱,你们应该会原谅我吧。我还要特别感谢Katharine Dvorak,谢谢你对本书做出的巨大努力,也谢谢你坚定不移但又充满耐心的指引。Katharine,你真的是一名令人称奇的编辑。 我要感谢我的大家庭:爸、妈、Anna、Susanna以及我遍布全球的亲朋好友们。有你们在我身边真是一年四季欢乐无比。 *后,我要感谢我的妻子Irene,当我开始撰写本书的时候,你在我身边支持我度过苦苦挣扎的炎炎夏日。现在本书即将付梓,你一如既往,始终不渝。我无比感激,将本书献给你。

作者简介

◆译者简介◆ 汪荣贵 合肥工业大学计算机与信息学院(人工智能学院)教授、博士生导师,中国人工智能学会离散智能计算专委会委员,安徽省人工智能学会理事,主要研究方向为多媒体技术与深度学习、视频大数据与计算机视觉,已承担完成或正在承担国家重点研发计划项目、国家自然基金企业联合基金重点项目、国家自然基金面上项目、工信部电子产业基金项目、安徽省科技攻关重点项目(科技强警),以及企业委托研发项目等多个课题的研究,已发表高水平学术论文八十余篇,近期研究成果获中电集团科技进步一等奖、安徽省科技进步二等奖、合肥市科技进步一等奖,长期从事《离散数学》、《算法设计与分析》、《机器学习》、《计算机视觉》、《优化计算方法》等本科生或研究生课程的教学工作,编著出版的教材《离散数学及其应用》、《算法设计与应用》、《机器学习及其应用》、《机器学习简明教程》,以及近期出版的译著《优美的教学思维——问题求解与证明》、《机器学习编程——从编码到深度学习》深受广大读者的欢迎和好评。

预估到手价 ×

预估到手价是按参与促销活动、以最优惠的购买方案计算出的价格(不含优惠券部分),仅供参考,未必等同于实际到手价。

确定
快速
导航