当前位置: 首页 > news >正文

为什么“蜥蜴书”是机器学习入门必读书?

导读:懂行人都知道,这本“蜥蜴书”江湖地位有多高。这本书曾经点燃了无数人学习AI的热情!很多大佬都把这本书列为AI工程师的必读书。我们一起看看这本书该怎么读。

作者:木羊同学 

来源:华章计算机(hzbook_jsj)

现在机器学习很热,大家都想学习机器学习,可是看哪本书呢?时间宝贵,肯定得选经典的“必读书”。所以,现在网上到处都是“机器学习必读书单”。我看过很多个版本的书单,总感觉差点意思。怎么说呢,我见到的大部分书单,里面的书确实都挺好,也都是业内公认的经典,确实值得一读。不过,现在有一个大家都很爱争论的话题:给初学者推荐经典到底是好还是不好?

就拿机器学习来说吧,机器学习是无论在理论、技术还是应用方面都是“大型跨界话题”,大家都叫“机器学习”,但在同一面旗帜下,每一个方向对知识都有不同的侧重,有时甚至可能差异很大。这就可能导致一个问题:某一个方向的经典书籍,可能在另一个方向看来就有点跑偏,让人产生“只见树木不森林”的感觉。

对于初学者来说,另一个问题可能更为严重。我们看书,肯定都想着由浅入深、由易到难,循序渐进地学习下去——先夯实脚下基础,再考虑飞天绝技。但是呢,很多水平很高的作者都很难免俗,多少有点偶像包袱,总想把书写出水平来。这当然是好事,不过这就导致了一个结果,有相当部分的书,单从书的内容本身来,说确实是好书,思想水平很高,确实“经典必读”。但很多时候,为了内容显得不那么拖沓,这些书的作者都作了一个假设——假设读者对机器学习已经有了基本的了解,最好还有相当的实践经验。所以,作者把一些基础内容,尤其是初学者最为关注的“入门必踩坑”给省略过去了。作为读者,如果你不了解其中省略部分的内容,自然就会读得磕磕碰碰,有一种上下文衔接不上的突兀感。这就是为什么很多人并不建议初学者上来就读经典,认为这些站得太高的经典反而容易给初学者留下“不很友好”的感觉。

实战入门典范:蜥蜴书——《机器学习实战》

那么,有没有从初学者角度写作的经典教材呢?有的。

《机器学习实战:基于Scikit-Learn、Keras和TensorFlow:原书第2版》(以下简称“蜥蜴书”),是机器学习领域非常有名的一本书。由于书的封面画着一只蜥蜴目的动物,所以有人按照动物书的习俗,把它称为“蜥蜴书”。当然了,生物学上的蜥蜴目家大业大,样子也都长得差不多,你管这只动物叫壁虎或者守宫,我想应该也没什么问题,我自己就更喜欢把这本书称为“壁虎书”。

这本书成名很早,很有名,有名到了什么地步呢?记得有段时期,我找了五六个版本的“机器学习必读书单”来看,每个书单里都有“蜥蜴书”,真的是“卷卷有爷名”。所以,大家给了它一个相当有意思的称号—— “机器学习四大名著”之一。

为什么这本书这么经典,让大家纷纷推荐呢?

说实话,这是个很难回答的问题。觉得“蜥蜴书”是好书的人很多。不过,一千个人眼里就有一千个哈姆雷特,我想大家应该都有自己喜爱这本书的理由。就我的个人观感来说,答案就写在书名上。

《机器学习实战》是中译版的书名,原版书名为《Hands-On Machine Learning with Scikit-Learn,Keras&TensorFlow》,“Hands-On”不妨直接翻译为“上手”,这是一个比较特别的视角,也是我觉得这本书特别适合初学者阅读的一个地方。机器学习的书大致可以分为两类,一类偏重理论介绍,翻开都是各种数学公式、定理和证明,机器学习如果给你一种很难学也很难用的感觉,应该就是因为先看了这些书。另一类则偏重应用工具的介绍,机器学习最终是需要编程才能发挥作用的,也有许多成熟的开发框架,而这类书就是介绍这些框架的使用方法,虽然也爱自称“实战”,不过翻开往往都是API、说明文档和代码,让你又觉得机器学习好像也没什么特别,像是一种新的编程技术。

“蜥蜴书”属于哪种呢?也许你会觉得属于第二种,其实还是有很大区别。很多人都说,这本书好就好在结构清晰、解释清楚,更重要的是,真的能见微知著。这么说可能有点抽象,关键就在于书名的“上手”。它不会让你觉得是一本编程技术的使用手册,而是首先告诉你机器学习能解决什么问题,怎样解决这些问题,以及使用什么样的工具来解决,让你能够搞清楚,机器学习到底是一项怎样的工作。

“蜥蜴书”写了很多内容,我曾经请教一位前辈,这本书哪一章最有用?前辈沉思许久,说了一个让我意外的答案:附录B。附录B的标题是《机器学习项目清单》,主要内容可以用开篇的第一段话概括:“该清单可以指导你完成机器学习项目。主要有8个步骤”。前辈解释说,很多人喜欢将机器学习当作一种噱头,说“看啊!我的产品用了机器学习所以功能怎样怎样……”。可是,当你真的要迈出使用机器学习的第一步时,你就会发现,你最想知道的不是那些天书一般的公式,也不是各种机器学习框架的使用细节,而是一个看似很简单的问题——我该干什么?而“我该干什么”,正是“蜥蜴书”首先要告诉你,让你第一时间就搞明白的东西。

知道了该干什么,才能真正“上手”。这就是我认为“蜥蜴书”最大的特点。所以,它能被列入“四大名著”,是因为它非常适合入门阅读,是一本真正意义上的必读书。

“蜥蜴书”讲什么?

别急,在介绍书之前,先来说说机器学习。大家都知道,现在很热门的人工智能叫“深度学习”,那这个深度学习和这里的机器学习是一种什么关系呢?是包含关系,机器学习包含了深度学习

光看名字,新手很容易认为机器学习是一种技术,或者说是一种智能算法。其实,机器学习是一堆智能算法,或者按照更常用的术语,是一堆的模型,譬如线性模型、支持向量机模型和决策树模型等等。每种模型都有自己的一套理论体系,其中有一种模型称为“神经网络”模型。“神经网络”不是一种新模型,提出来很早,发展很曲折,已经经历了几起几落。在2006年,著名的Hinton教授发表了一篇论文,说采用层数更多,也就是更深的神经网络,模型就能取得更好的效果。大家一看,果然效果拨群,所以就把这种技术成为“深度学习”。也就是说,深度学习虽然是这几年火起来的,但绝非凭空而生,它的前身就是机器学习下面的神经网络模型。

不过,都知道深度学习是机器学习的小弟,可是架不住“小弟”成了当红炸子鸡,已经有几分“说到AI就是机器学习,说到机器学习就是深度学习”的味道。很多想学机器学习的同学,其实真正想学的只是深度学习的这部分。而我们前面也介绍了,机器学习本身就是一堆自成体系的模型大杂烩,专门盯着深度学习来学也未为不可。

所以,这就导致教材需要面临艰难选择,到底是将所有模型一视同仁,都用差不多的篇幅介绍,写一本货真价实的“机器学习”教材?还是认清现状,干脆就把那些过气的老哥们统统扔掉,写一本“深度学习”教材?市面上也确实有分别以“机器学习”和“深度学习”命名的教程,也体现了各自的选择。不过,从工作的角度,或者说,从解决问题的角度来看,机器学习也好,深度学习也好,根本的作用还是解决问题发挥作用,都是工具,而且机器学习领域有著名的NFL定理,未必深度学习就一定是更好一点的工具。

那么看重工作实践的“蜥蜴书”会怎样选择呢?小孩子才做选择,成年人当然是全都要!这本书的做法是将全书分成两个部分,第一部分介绍机器学习,第二部分介绍神经网络和深度学习。

这个做法还带来了另外的好处。虽然从理论上,深度学习是机器学习下面的子分支,而且最常用的编程语言都是Python,但在实际工作中,开发所使用的的技术框架并不是同一个。目前机器学习开发最常用的是Scikit-Learn,已经成为开发机器学习应用无可争议的带头大哥,基本上业界提到机器学习开发十有八九都会选择用它。而深度学习开发当前则是两套框架双雄对峙,其中一款是Google率先推出来的Tensorflow,另一款则是由Facebook稍后发布的Pytorch。

这几套框架的使用方法并不相同,不过,现在“蜥蜴书”选择将全书一分为二。这样一来,在机器学习部分,就同时重点介绍Scikit-Learn,而到了深度学习部分,则选择了重点介绍Tensorflow,并附上对应的案例。这样划分,不但与理论部分前后呼应,而且更贴近当前业界的实际工作情况。

“蜥蜴书”阅读攻略

阅读这本书,不妨根据自己的喜好需要,采用总-分的顺序阅读。

第一部分是机器学习的内容,不过,第一、二章是对机器学习领域的整个工作的总体介绍,如模型是怎样一回事?怎样使用?以及使用模型之前要做什么等等。在这个部分,机器学习和深度学习任务的大体模式是一致的。无论你对哪方面更感兴趣,都建议阅读前两章,让自己对机器学习和深度学习任务有一个总体印象。

接下来就可以根据爱好选择优先阅读的部分了。对机器学习感兴趣的同学可以顺序阅读,书主要是按机器学习的问题类别组织的,为有监督学习下的分类问题、回归问题,和无监督学习下的聚类问题,以及降维问题。

Scikit-Learn是一款十分好用的机器学习工具,原因就在于工具丰富,有多种手段处理机器学习问题。有监督学习是现在机器学习最为热门的研究和应用领域,所以在模型方面,“蜥蜴书”着重介绍有监督学习最常用的线性模型、支持向量机模型、决策树模型,也介绍了机器学习的“制胜法宝”——集成学习

有一个地方也建议大家格外留意:就是这本书书如其名,极其注重“实战”,始终从工作流程的角度进行介绍。在机器学习任务中,模型当然是唱重头戏的主角,但并非唯一的角色,还有一些周边任务,而实际工作中如何完成这些工作,譬如如何使用Scikit-Learn构造端到端的流水线,都是十分具有实践参考价值的内容。

对于更关心深度学习的同学,再了解了机器学习任务的总体情况之后,可以直接翻到这本书的第二部分。这部分介绍深度学习,而且可以说是当前市面上最好的深度学习介绍材料之一。当年Google率先推出深度学习框架TensorFlow,本来深度学习就是新东西,而TensorFlow配套的官方文档又写得一言难尽,于是大家一筹莫展。这时“蜥蜴书”第一版出版了,大家一看,原来介绍TensorFlow也是可以“讲人话”的嘛!很快,“蜥蜴书”就成了学习TensorFlow的标准教材,一时名声大噪。

可是,问题也随之来了,而且颇为棘手,让“蜥蜴书”一下陷入鸡肋的尴尬境地。

怎么回事呢?这就得从TensorFlow说起。深度学习框架需要计算图,计算图分静态图和动态图两种,前者效率高,后者人缘好。最开始TensorFlow追求效率,选择了静态图,导致API的设计各种别扭,这就是为什么前面说刚开始TensorFlow不太好学。可那时没有别的选择,大家都敢怒不敢言,后来,采用动态图的Pytorch出来了,有了对比就有了伤害,本来就民怨沸腾的TensorFlow立即就被分了一大块市场。Google一看,心里也有点慌了,于是干了两件事:

第一件事就是赶紧吸收了Keras。Keras也是一款深度学习框架,封装了许多底层操作,操作相当友好,官方称为高级深度学习API。但Keras只有一个前端,需要其它深度学习框架作为后端,才能实现完整功能。于是,Keras+TensorFlow理所当然就成了TensorFlow阵营的标准配置,TensorFlow选择将Keras吸收进来而且力推的做法虽然引起不少异议,不过,两家合作一家,也算是众望所归了。

另一件事就是支持动态图,这是意料中的事,大家嘴上说着“早干嘛去了”,心里的怨气也确实平息不少。后来Google干脆推出TensorFlow 2.0,直接就将动态图设为默认模式。

 客观地说,Google对TensorFlow所做出的这两项改变可以说是必然的,也是必要的,不过,这显然也带来了另一个让所有程序员头疼的问题:兼容问题。这一改,相当于改出了三个版本的TensorFlow。而“蜥蜴书”第一版也深受其害,书虽然写得好,但因为采用的还是TensorFlow 1.0的API,很多内容和代码都不合时宜了。

这就很尴尬了。虽然后来说到机器学习必读书,大家还会是推荐“蜥蜴书”,因为这本书对机器学习的介绍实在好,有一点无出其右的意思,但同时也不忘略感遗憾地提醒一句,第二部分的内容有一点过时了。

不过,好事来了。“蜥蜴书”2019年在国外先出版了第二版,全书变化很大,特别是第二部分采用TensorFlow 2.0和Keras重写。当时大家光是看到出版计划,就翘首以盼。新版一经推出,马上好评如潮。

当然,对于国内的读者来说,心情就比较复杂了,毕竟“蜥蜴书”虽然更新了第二版,但是中文还只有第一版。我记得就在今年早些时候,我在推荐第一版的时候,就提出过中文版也能尽快跟进的希望。不过,现在好事成双了,“蜥蜴书”第二版的中文版已由华章出版,机器学习领域再次出现了一本不留死角的必读书。

 

 

作者简介

莫凡,娱乐向机器学习解说选手,《机器学习算法的数学解析与Python实现》作者,前沿技术发展观潮者,擅长高冷技术的“白菜化”解说,微信公众号“睡前机器学习”,个人知乎号“木羊”。

 

 

推荐阅读

01

《机器学习实战:基于Scikit-Learn、Keras和TensorFlow(原书第2版)》

长按识别购买

作者:[法] 奥雷利安•杰龙(Aurélien Géron)

译者:宋能辉、李娴

书号:978-7-111-66597-7

卖点:

1)“美亚”人工智能图书畅销榜首图书,基于TensorFlow 2和新版Scikit-Learn全面升级;

2)Keras之父和TensorFlow移动端负责人鼎力推荐;

3)从实践出发,通过具体的示例、较少的理论和可用于生产环境的Python框架来帮助你直观地理解并掌握构建智能系统所需要的概念和工具;

4)实用性强。没有太多复杂的数学公式推导,每章都附有练习题和代码,可以帮助你应用所学的知识。内容简介

 

推荐语:国外AI“四大名著”之一!AI霸榜书重磅更新!“美亚”AI+神经网络+CV+NLP四大畅销榜首图书,基于TensorFlow 2和新版Scikit-Learn全面升级,内容增加近一倍!前谷歌工程师撰写,Keras之父和TensorFlow移动端负责人鼎力推荐,从实践出发,手把手教你从零开始搭建起一个神经网络。

02

《机器学习算法的数学解析与Python实现》

长按识别购买

作者:莫凡

书号:978-7-111-64260-2

卖点:

生动——语言生动幽默,通过分析大量生活案例,帮助读者理解机器学习的算法。

简单——让很多听起来高大上的名词更实用。

实用——精选了最主要的机器学习算法,如线性回归算法、Logistic回归算法、KNN算法、朴素贝叶斯算法、决策树算法、支持向量机算法、K-means聚类算法、神经网络、集成学习方法等。

系统——从概念、原理、Python实现、应用场景几个方面,详细剖析机器学习中主要的算法。

 

推荐语:“蜥蜴书”最佳拍档!有趣、易懂、不枯燥,看得懂、学得会的机器学习入门书。全书用白话讲解,帮你从生活案例中理解算法,发现算法的乐趣,再把算法应用到机器学习中,让你零基础掌握算法精髓,快速进入AI开发领域。

更多精彩回顾

书讯 | 12月书讯 | 年末上新,好书不断

资讯 | DB-Engines 12月数据库排名:PostgreSQL有望获得「2020年度数据库」荣誉?

书单 | 机器人时代已来!推荐几本机器人学硬核好书

干货 | 基于中台架构的新业务建设原则

收藏 | 为什么Siri总是像个智障?智能助手背后的技术到底有多难?

上新 | 尴尬的游戏用户体验设计师

赠书 | 【第34期】如何成为一个软件架构师?

点击阅读全文了解更多AI好书

相关文章:

  • 互联网消费金融行业从业者的实战指南
  • 中台的本质及中台建设的4点思考
  • 复杂的密码学也可以人人可懂
  • Python循环语句代码逐行详解:while、for、break和continue
  • 基于Vite搭建Electron+Vue3的开发环境
  • 国产首款——飞桨PaddlePaddle深度学习框架介绍
  • “MySQL Analytics Engine”来了
  • 【第35期】数字化转型到底该怎么做?
  • 详解华为12种数据采集技术及应用实践
  • JavaScript 25 岁了!
  • 43种机器学习开源数据集(附地址/调用方法)
  • 中国量子计算原型机“九章”问世,普通人怎样初识量子计算?
  • 中台“不火”了,企业数智转型如何破圈?
  • 一本书读懂“财税RPA”
  • 华为官方出品:首本HMS Core技术解析图书问世
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Otto开发初探——微服务依赖管理新利器
  • 程序员最讨厌的9句话,你可有补充?
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 回顾2016
  • 面试总结JavaScript篇
  • 小李飞刀:SQL题目刷起来!
  • - 转 Ext2.0 form使用实例
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • # MySQL server 层和存储引擎层是怎么交互数据的?
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (太强大了) - Linux 性能监控、测试、优化工具
  • (已解决)什么是vue导航守卫
  • (转)ABI是什么
  • (转)平衡树
  • (转)重识new
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .Net 代码性能 - (1)
  • .Net面试题4
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • @requestBody写与不写的情况
  • @拔赤:Web前端开发十日谈
  • [GYCTF2020]Ez_Express
  • [HDU 3555] Bomb [数位DP]
  • [IE编程] IE 是如何决定Accept-Language 属性的
  • [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装