书籍作者:张力柯 | ISBN:9787121382703 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:7416 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
随着AI技术的普及,如何快速理解、掌握并应用AI技术,成为绝大多数程序员亟需解决的问题。本书基于Keras框架并以代码实现为核心,详细解答程序员学习AI算法时的常见问题,对机器学习、深度神经网络等概念在实际项目中的应用建立清晰的逻辑体系。
《程序员的AI书:从代码开始》分为上下两篇,上篇(第1~4章)可帮助读者理解并独立开发较简单的机器学习应用,下篇(第5~9章)则聚焦于AI技术的三大热点领域:推荐系统、自然语言处理(NLP)及图像处理。其中,第1章通过具体实例对Keras的机器学习实现进行快速介绍并给出整体概念;第2章从简单的神经元开始,以实际问题和代码实现为引导,逐步过渡到多层神经网络的具体实现上,从代码层面讲解神经网络的工作模式;第3章讲解Keras的核心概念和使用方法,帮助读者快速入门Keras;第4章讲解机器学习中的常见概念、定义及算法;第5章介绍推荐系统的常见方案,包括协同过滤的不同实现及Wide&Deep模型等;第6章讲解循环神经网络(RNN)的原理及Seq2Seq、Attention等技术在自然语言处理中的应用;第7~8章针对图像处理的分类及目标识别进行深度讨论,从代码层面分析Faster RCNN及YOLO v3这两种典型识别算法;第9章针对AI模型的工程部署问题,引入TensorFlow Serving并进行介绍。
《程序员的AI书:从代码开始》主要面向希望学习AI开发或者转型算法的程序员,也可以作为Keras教材,帮助读者学习Keras在不同领域的具体应用。
张力柯
腾讯某AI实验室负责人、AI系统设计专家。在操作系统内核、网络安全、搜索引擎、推荐系统、大规模分布式系统、图像处理、数据分析等领域具有丰富的实践经验。
于美国德克萨斯大学圣安东尼奥分校获得计算机科学博士学位,曾先后在美国微软、BCG、Uber及硅谷其他创业公司担任研发工程师及项目负责人等。
潘晖
阿里巴巴某算法中心小组负责人。在推荐系统、自然语言处理、图像处理、数据分析等领域具有丰富的实践经验。
于美国佛罗里达理工大学获得计算机科学博士学位,曾先后在中国微软、美团、腾讯从事算法研发和管理工作。发表过多篇论文,拥有多项专利,曾获得2018年腾讯互动娱乐事业群技术突破奖等奖项。
这本书和市面上的大多数机器学习书不一样。
(1) 它们从数学角度切入;本书从代码角度切入,不存在天书符号。
(2) 它们先堆各种新鲜概念;本书通过代码展示问题,再引出知识。
(3) 它们重在抽象理论;本书让初学者即刻体验和实践算法,为应用打下基础。
另外,作者资深且用心写作,在书中介绍AI概念、动手写代码及测试代码时下了一番苦功。。
(1) 作者在美国微软、BCG、Uber、腾讯等工作多年,经验老道,深深理解程序员学习机器学习的痛点。
(2) 在阐述算法的背景和内容时既有深度又直观形象。
(3) 对数学公式的引用对于有程序员背景的读者来说恰到好处。
(4) 在实际代码的解释上紧扣主题、讲解清晰。
(5) 内容通俗易懂,覆盖了AI在多个领域的应用场景。
推荐序一
认识力柯兄多年,一直认为他是一员虎将——能用代码说话,便绝不打无谓的嘴仗;能用技术与产品直接证明,便绝不空谈“形式”和“主义”。这次,通过力柯兄写的这本书,一如既往地看到他“心有猛虎”的一面:直截了当、大开大合。
在机器学习或者说工业界AI火起来的这几年,程序员这一受众群体一直缺少优秀的教程。有些教程过于浅显,很难称其为“入门教程”,只能称其为科普书;有些教程则过于贴近理论推导,对夯实读者的数理基础大有裨益,也能给研究生提供参考,但对程序员来说,则理论有余而实践不足,常常令注重工程实践的他们一头雾水:毕竟不是每个程序员都有耐心、有必要一门一门地捡回微积分、概率统计、偏微分方程、线性代数和数值计算等基础学科的知识,再真正实现一个属于自己的模型。如何在数学理论和工程实践之间找到一个平衡点,让具有工程背景的广大读者从中获得实际的价值,而非进行简单的脑力或数学训练,这一直是我评价机器学习教程时最为看重的要素。现在,我有幸从力柯兄的成书中找到了这些要素,实乃幸事!
这是一本写给程序员看的机器学习指南。它有针对性地从程序员的视角切入(而非像市面上的大多数机器学习教程一样,从数学的角度切入),介绍了工业界流行的若干模型及应用场景,同时涵盖了神经网络的原理和基础实现、Keras库的使用方法和TensorFlow的部署方案,可谓有的放矢。另外,本书章节不多,却简短有力。这不是一本科普读物,不存在浅尝辄止;也不是一本百科全书,不存在天书符号。这是一本有代码的书,是一本谈工程实现的书。我认为,这正是机器学习领域所缺少的那一类教程。
本书的上篇,让我不由得想起多年前力柯兄刚从硅谷回国高就时,与我围绕“怎样的面试题对于机器学习程序员是合适的”这一话题展开的讨论。那时AI正在升温,无数有着各种背景、能力和水平的人都在尝试接触AI方面的内容,但对于人才的选拔和录用,却似乎没有一个行业内的公认标准和规范。力柯兄的面试题十分简单粗暴,要求面试者仅使用一些基础的Python库去实现一个深度神经网络。这听起来有点让人匪夷所思,但事后细想,却是大道至简。这可以让人抛去繁杂的模型,回归神经网络最本质的前向传播和反向传播,将一切都落实在代码层面。虽然需要运用的数学知识不过是一点高等数学的皮毛,却可以同时从工程和数学两个角度考察候选人的基本功。这几年间,机器学习和深度学习教程及相关公开课越来越多,我阅课无数,竟发现很少有一门课能够沉下心来,仔仔细细地告诉读者和学员,搭建和实现这些神经网络的基础元素从何而来,又为何如此。而本书的上篇,尤其是在第2章中,一丝不苟地介绍了神经元、激活函数和损失函数,从偏微分方程层面严谨地推导反向传播,又从代码层面给出了那道面试题的答案。这都让我不由得敬佩力柯兄在工程上的执着。本书的下篇,则是标准的实战深度学习入门。
至此,我不再“剧透”,因为当你从实战角度阅读这些章节时,会有一种不断发现珍宝的惊喜感,而我更愿意把这些“珍宝”留给本书的读者。
周竟舸,Pinterest机器学习平台技术负责人
2019年12月
推荐序二
近十余年,计算机领域中令人瞩目的亮点就是以深度学习为代表的一系列突破。无论是人脸检测还是图像识别,抑或文本翻译或无人驾驶,这些在过去几十年里让计算机科学家苦苦思索却不能解的种种难题,在深度学习的帮助下,竟被一一攻克,这不能不说是人类科技史上一颗耀眼的明星。
AI技术的突飞猛进,却使传统程序员产生不少困惑:过去常用的数据结构、排序搜索、链表数组等,现在变成了模型、卷积、权重和激活函数……无论是要开发AI应用,还是和算法研究人员共同工作,他们都存在同一个问题:如何学习AI技术?如何理解AI算法人员常用的名词和概念?更重要的是,如何把AI相关的代码和自己的软件开发经验联系起来?
现在市面上已经有很多深度学习和机器学习教程了,其中也不乏从实例入手、以代码实现为重点的书籍,但并没有一本书真正地从程序员的视角来看待深度学习技术。或者,我们也可以这么说,大部分相关书籍的重点是讲解深度学习理论,所用的实例是解释深度学习理论的实际应用。尽管有不少书籍在讲解理论和代码时详尽而深入,却没有涉及核心问题:要解决这个问题,为什么非用深度学习或机器学习不可?没有这些方法就不能做吗?用深度学习处理该问题的优势是什么?是十全十美,还是存在问题?
打开本书,我惊喜地发现它并非像市面上的其他书籍那样,直接把各种新鲜概念放到读者面前并强迫他们接受。它一开始就没有在机器学习概念上过多纠缠,而是先快速展示了简短的AI实现代码的结构和流程,然后带出一些常常让初学者疑惑的问题,针对这些问题再带出新的内容。我们可以看到,本书每一章都用到了类似的形式:阐述一个领域中的实际问题,提出不同的解决方法,简要探讨不同的方法,找到人们难以解决的问题,然后解释机器学习或深度学习处理这些问题的原理。读者了解到的并非单纯的机器学习理论,而是不同领域的具体技术挑战和相关算法的解决方案,从而真正理解机器学习的真正意义。
必须要说的是,作者在美国工作多年,养成了求真务实和独立思考的习惯,我们从书中能感受到他独特的风格,并有愉悦的阅读体验。本书在理论讲解方面也没有概念堆砌的枯燥无味,作者常常加入一些对技术的调侃和个人见解,以供读者思考。在代码解析阶段,作者着眼于整体框架与流程,把重点放在理论中的网络结构如何在实际代码中实现,而不会浪费篇幅在代码的语言细节上。
阅读本书,不但是对不同领域AI开发的学习,也是一次以资深程序员的视角去审视相关代码实现的体验。本书无论是对于应用开发程序员,还是对于算法研究人员,都相当有价值,非常值得阅读。
喻杰博士,华为智能车云首席技术官
2019年12月
推荐序三
随着AlphaGo在人机大战中一举成名,关于机器学习的研究开始备受人们关注。机器学习和神经网络已经被广泛应用于互联网的各个方面,例如搜索、广告、无人驾驶、智能家居,等等。AI井喷式发展的主要动力如下。
其一,数据的积累。各大IT公司都拥有了自己的数据平台,数据积累的速度越来越快。各大高校针对不同的机器学习任务,积累了多样化的数据集。
其二,计算机性能指数级的增长。从当初的CPU到GPU,再从GPU到专门为AI设计的芯片,都提供了强大而高效的并行计算能力,大大推动了AI算法的进步。
其三,AI理论及模型的突破,例如卷积网络、长短期记忆等。
其四,深度学习开源框架日趋完善。TensorFlow是当前领先的深度学习开源框架,越来越多的人在使用它从事计算机视觉、自然语言处理、语音识别和一般性的预测分析工作。TensorFlow集成的Keras是为人类而非机器设计的API,易于学习和使用。
这是一本非常适合程序员入门和实践深度学习的书,理论和实践并重,使用Keras作为机器学习框架,侧重于AI 算法实现。
本书以从代码出发,再回归AI相关原理为宗旨,深入浅出、循序渐进地讲解了Keras及常见的深度学习网络,还讲解了深度学习在不同领域的应用及模型的部署与服务。读者在一步步探索AI算法奥秘的同时,也在享受解决问题的喜悦和成就感,并开启深度学习之旅。
衷心地希望有志于AI学习的读者抓住机会,早做准备,成为AI时代的弄潮儿。
王昀绩,Google AI高级研究员
2019年12月
上篇
第1章 机器学习的HELLO WORLD 2
1.1 机器学习简介 2
1.2 机器学习应用的核心开发流程 3
1.3 从代码开始 6
1.3.1 搭建环境 6
1.3.2 一段简单的代码 7
1.4 本章小结 9
1.5 本章参考文献 9
第2章 手工实现神经网络 10
2.1 感知器 10
2.1.1 从神经元到感知器 10
2.1.2 实现简单的感知器 12
2.2 线性回归、梯度下降及实现 15
2.2.1 分类的原理 15
2.2.2 损失函数与梯度下降 16
2.2.3 神经元的线性回归实现 18
2.3 随机梯度下降及实现 21
2.4 单层神经网络的Python实现 23
2.4.1 从神经元到神经网络 23
2.4.2 单层神经网络:初始化 25
2.4.3 单层神经网络:核心概念 27
2.4.4 单层神经网络:前向传播 28
2.4.5 单层神经网络:反向传播 29
2.4.6 网络训练及调整 34
2.5 本章小结 38
2.6 本章参考文献 38
第3章 上手KERAS 39
3.1 Keras简介 39
3.2 Keras开发入门 40
3.2.1 构建模型 40
3.2.2 训练与测试 42
3.3 Keras的概念说明 44
3.3.1 Model 44
3.3.2 Layer 48
3.3.3 Loss 65
3.4 再次代码实战 70
3.4.1 XOR运算 70
3.4.2 房屋价格预测 73
3.5 本章小结 75
3.6 本章参考文献 76
第4章 预测与分类:简单的机器学习应用 77
4.1 机器学习框架之sklearn简介 77
4.1.1 安装sklearn 78
4.1.2 sklearn中的常用模块 78
4.1.3 对算法和模型的选择 79
4.1.4 对数据集的划分 80
4.2 初识分类算法 80
4.2.1 分类算法的性能度量指标 81
4.2.2 朴素贝叶斯分类及案例实现 86
4.3 决策树 90
4.3.1 算法介绍 90
4.3.2 决策树的原理 91
4.3.3 实例演练 96
4.3.4 决策树优化 99
4.4 线性回归 101
4.4.1 算法介绍 101
4.4.2 实例演练 101
4.5 逻辑回归 102
4.5.1 算法介绍 102
4.5.2 多分类问题与实例演练 107
4.6 神经网络 108
4.6.1 神经网络的历史 108
4.6.2 实例演练 114
4.6.3 深度学习中的一些算法细节 117
4.7 本章小结 120
4.8 本章参考文献 120
下篇
第5章 推荐系统基础 122
5.1 推荐系统简介 122
5.2 相似度计算 124
5.3 协同过滤 125
5.3.1 基于用户的协同过滤 126
5.3.2 基于物品的协同过滤 128
5.3.3 算法实现与案例演练 129
5.4 LR模型在推荐场景下的应用 131
5.5 多模型融合推荐模型:Wide&Deep模型 135
5.5.1 探索-利用困境的问题 135
5.5.2 Wide&Deep模型 137
5.5.3 交叉特征 137
5.6 本章小结 145
5.7 本章参考文献 145
第6章 项目实战:聊天机器人 146
6.1 聊天机器人的发展历史 146
6.2 循环神经网络 148
6.2.1 Slot Filling 148
6.2.2 NLP中的单词处理 150
6.2.3 循环神经网络简介 153
6.2.4 LSTM网络简介 154
6.3 Seq2Seq原理介绍及实现 157
6.3.1 Seq2Seq原理介绍 157
6.3.2 用Keras实现Seq2Seq算法 158
6.4 Attention 173
6.4.1 Seq2Seq的问题 174
6.4.2 Attention的工作原理 175
6.4.3 Attention在Keras中的实现 178
6.4.4 Attention示例 180
6.5 本章小结 185
6.6 本章参考文献 185
第7章 图像分类实战 187
7.1 图像分类与卷积神经网络 187
7.1.1 卷积神经网络的历史 187
7.1.2 图像分类的3个问题 188
7.2 卷积神经网络的工作原理 190
7.2.1 卷积运算 191
7.2.2 传统图像处理中的卷积运算 193
7.2.3 Pooling 195
7.2.4 为什么卷积神经网络能达到较好的效果 197
7.3 案例实战:交通图标分类 200
7.3.1 交通图标数据集 200
7.3.2 卷积神经网络的Keras实现 202
7.4 优化策略 209
7.4.1 数据增强 210
7.4.2 ResNet 214
7.5 本章小结 216
7.6 本章参考文献 217
第8章 目标识别 218
8.1 CNN的演化 218
8.1.1 CNN和滑动窗口 218
8.1.2 RCNN 220
8.1.3 从Fast RCNN到Faster RCNN 223
8.1.4 Faster RCNN核心代码解析 228
8.2 YOLO 242
8.2.1 YOLO v1 242
8.2.2 YOLO v2 248
8.2.3 YOLO v3 251
8.3 YOLO v3的具体实现 253
8.3.1 数据预处理 253
8.3.2 模型训练 260
8.4 本章小结 293
8.5 本章参考文献 294
第9章 模型部署与服务 296
9.1 生产环境中的模型服务 296
9.2 TensorFlow Serving的应用 299
9.2.1 转换Keras模型 299
9.2.2 TensorFlow Serving部署 302
9.2.3 接口验证 303
9.3 本章小结 307
9.4 本章参考文献 308