百科问答小站 logo
百科问答小站 font logo



学习机器学习应该看哪些书籍? 第1页

  

user avatar   liuyubobobo 网友的相关建议: 
      

这篇文章首发自我的公众号【是不是很酷】中:


同时,这篇文章的内容已经放在 github 上做长期的资源更新维护。欢迎大家提 issue 推荐更多相关资源,也欢迎来 star 啊!:)


在这篇文章中,我将结合大量的书籍或者公开课信息(以斯坦福大学的公开课为主),聊一聊:如果系统地学习人工智能,都需要接触什么课程。

为了让内容整体更有体系,我将所有的内容分成四个阶段。每个阶段可以简单理解成对应大学的一个学年。也就是如果大家假想自己现在高中毕业的话,根据这篇文章提供的“学习地图”,使用四年的时间,就可以在人工智能的深度和广度上都有相当地理解和掌握了。

对,你没有看错,是四年的时间。相当于读一个本科的时间。

所以,这不是一份广告。因为所有培训广告只会告诉你四个月就够;但所有人都明白四个月是不够的。如果四个月就可以掌握人工智能,人工智能也太简单了,它也就不值钱了。

对于这份学习路径,大家也可以划分为两部分。前两年是第一部分;后两年是第二部分。

对于计算机科班的同学来说,可以直接学习后两年的内容,切入人工智能领域;

而如果把前两年的内容切实学扎实了,再辅以其他专业课学习,基本可以轻松转向计算机科学的任何方向。

当然,由于每个人基础不同,所以对于这份比较全面的学习路径,有些同学可能已经掌握了相当的内容,那么就可以跳过一些内容,加快速度了。

以下为正文:


第一年:语言基础 + 数学

首先,人工智能作为计算机科学的一个分支,是需要编程的。想要编程,大家必须学习计算机语言基础。


1. Python

对于计算机语言的选择,毋庸置疑,人工智能方向毋庸置疑是需要学习 Python 语言的。关于 Python 语言语法基础的学习,我就不具体推荐资源了。网上收费的免费的各种资源太多了。但如果一定要推荐的话,仅凭个人偏好,入门推荐这本书:

这本书有中文版。但我目测还是第一版:

相较而言,国外最新版已经是第二版了。国外亚马逊链接:amazon.com/Python-Crash


另外,在掌握了 Python 基础语法以后,对于 Python 的应用,有一本经典的书籍,近乎是必看的。我在我的公众号《开源分享第三期中分享过,就是这本:

但是这本书的英文原版也已经有第二版了,国内引进的还是第一版。如果英文好的同学,可以直接看第二版。关键是,第二版的内容,官方现在可以直接在网上免费浏览!


Orelly 的另一本 Python 书也值得推荐:Introducing Python。我的读者在我的公众号下留言:这本书进度更快,并且覆盖decorator(装饰器)、property等python中等水平特性。

这本书已经引入到国内:


关于 Python 语言进阶,最著名的应该就是这本了:Fluent Python

这本书也早就引入到国内了:


当然,Python 深入下去还有很多好的资源推荐。由于这篇文章重点不是 Python,所以点到为止。


2. C++

除了 Python,我还推荐学习一门编译型语言。对于这个语言的选择,于人工智能方向而言,我个人推荐 C++。因为真正的人工智能工程师,深入到底层,是需要大量使用 C/C++ 的。而 Python 更多的是一种“前端”工具,提供接口调用而已。

对于 C++ 的学习,去看 《C++ Primer》就好了。如果有 Python 基础,看这本书应该没有什么难度。当然,C++ 深入进去可以很复杂。但是在这个阶段,一本《C++ Primer》足以。


如果有些同学觉得 C++ Primer 太“古董”,可以看这本 C++ Crash Course。这本书是 2019 年出的,出版社 No Starch 也名声在外。同时兼顾了 C++17 的最新特性。

这本书貌似国内还没有引入。


3. 程序运行底层 & C

下面,我要推荐一门斯坦福大学的基础课,CS107:Computer Organization & Systems。如果翻译过来的话,就是计算机的组织和系统。

这门课程听起来很深奥,但其实是一个不折不扣的基础课程。这门课程使用的语言是 C 语言。但是学习的关键完全不是 C 语言的语法知识。事实上,如果大家已经学习了 C++,掌握 C 语言的语法是很容易的。

这门课程的核心是借助 C 语言,了解计算机程序运行的一些低层级制。比如位运算;比如指针;比如内存管理;比如内存中的栈和堆之间的区别;比如类型机制乃至泛型的底层实现;包括一些底层优化等等内容。另外,这门课程也会包含一些汇编基础。

传送门:


4. 微积分

除了语言基础,另外一个学习人工智能需要打好的基础,就是数学。

整体,人工智能需要学习的数学基础,和一般工科需要学习的数学没有什么太大的区别:微积分,线性代数和概率论。(还有一些高级的数学内容,后续会提及)

对于微积分,最流行的课本应该就是《托马斯微积分》


另外一本经典是普林斯顿微积分读本:


5. 线性代数

对于线性代数,市面上的好教材太多。我在我的公众号文章《学习乘法不能帮助我们理解质能方程和《开源分享第九期两篇文章中,总共分享了三个线性代数课本。


一本叫《Introduction to Linear Algebra》,最新版是第五版。

这本教材的作者是 MIT 大名鼎鼎的 Gilbert Strang。去年被炒得沸沸扬扬的清华大学把线数教材换成了英文版,用得就是这本教材;前一阵子沸沸扬扬的 86 岁老爷子还录网课,说得就是这个作者。如果你对这两条新闻不是特别熟悉,可以搜一下。关键词:“清华把线性代数教材换成英文版”;“86岁还在录网课”。

Gilbert Strang 老爷子在 MIT 的线数公开课很有名,相信很多同学都看过。如果没看过的话,推荐看一下。

MIT 的官方地址在这里:

2020 年更新的视频内容在这里:


另一本叫《Linear Algebra and Its Applications》,最新版是第五版。有中文版,叫《线性代数及其应用》。听名字,这本书似乎更强调应用,但其实 Gilbert 老爷子的书也有专门一章讲应用。


最后一本,是我的一个同学,现在在硅谷 Google 总部工作的大神推荐的。据说非常非常适合入门,叫《Linear Algebra Done Right》。

现在疫情期间,Springer 出版社很多书籍都免费下载,包括这本书。对此感兴趣的同学不要错过:

这本书的中文版如下:


6. 概率论(和数理统计)

对于概率论,我推荐斯坦福的 CS109:Probability for Computer Scientists

这门课程翻译过来就叫《为计算机科学家准备的概率论》,所以对于计算机专业来说,学起来更有针对性。

另外,学习这门课程的过程中,也就会接触一些机器学习方面的基本概念了

传送门:


第二年:计算机基础

如果想成为一名人工智能工程师,计算机领域的基础必须打好。但与此同时,我认为专注于人工智能方向,一些特别低层的内容,比如组成原理,或者数字逻辑,甚至是编译原理等等,并不需要专门学习。所以下面的推荐,并不包含这些内容。

下面是我认为人工智能方向应该重视的计算机基础知识,应该在第二年掌握。


1. 算法和数据结构

算法和数据结构的重要性不想多说了。就算你不理解他们实际上有什么用,只要明白,想当工程师,面试必考算法和数据结构就好了。

当然,如果你认真学习这篇文章推荐的后续课程内容,近乎一定会体会到算法和数据结构的巨大意义。

关于资源,推荐两个,都是书籍。


首先,就是大名鼎鼎的《算法4》。

《算法4》其实也有不少缺点,找时间我专门写文章聊一聊。但是在这篇文章,大家可以注意两点。

第一点,《算法4》的代码是基于 Java 语言的。所以,大家可以再借此接触一下 Java 语言,没坏处的。而且如果大家已经有了 C++ 基础,上手 Java 是很快的。

第二点,就是《算法4》偏经典的算法和数据结构的底层实现,而在算法设计方面介绍得很少。所以,就有了我推荐的第二个资源:《算法设计手册》。

这本书更偏向算法设计,我认为和《算法4》能形成一个很好的互补。

依然是,由于疫情原因,这本书的英文原版正版现在在国外是免费下载的。传送门:

中文版购买链接如下:


2. 操作系统基础

操作系统也属于计算机专业的必修课程。这不仅仅是因为我们需要了解操作系统的很多底层机制,更重要的是,我们可以借此学习很多系统设计(System Design)方面的理念。

要知道,一个人工智能应用,也是一个系统。在系统设计开发层面,很多东西是共通的。

操作系统方面也有很多经典教材。如果推荐书的话,我推荐这本《Operating Systems: Three Easy Pieces

这本书的英文版是可以免费在线浏览的。传送门:

中文版叫《操作系统导论》:


关于视频课程,我推荐斯坦福的课程 CS140:Operating Systems

传送门:


关于操作系统,进一步引申至计算机原理层面,比如组成原理等相关内容,虽然上面我说,个人认为专门学习人工智能并不需要专门掌握,但是如果感兴趣的同学,还是有一门很经典的书推荐一读的,就是大名鼎鼎的 CSAPP:Computer Systems: A Programmer's Perspective。

这本书国内已经引进:


3. 数据库基础

做人工智能需要处理大量的数据,这就需要使用数据库,了解数据库的基础。同时,这本质也是在学习“数据模型”这个概念,了解数据存储的设计方案。

数据库方面的经典教材也很多。如果只是简单学习 SQL 语言的话,我认为《SQL必知必会》最实用。我曾经推荐这本书给某个同学,这名同学两周的时间,不但刷完了这本书,还把 Leetcode 上所有数据库相关的问题都给做了。


另外,有一个在线学习 SQL 的网站,挺有名的。有兴趣的同学可以尝试,叫 SQLZoo:


当然了,关于数据库,如果追求的并不仅仅是使用 SQL 的话,我推荐学习斯坦福大学的课程 CS145:Data Management and Data Systems

传送门:


这门课程有一个后续课程,即斯坦福大学的课程 CS245:Principles of Data-Intensive Systems

传送门:


如果想接触数据库的实践,强烈推荐斯坦福大学的 CS346: Database System Implementation。翻译过来就是数据库系统实现。这门课程带你从底层实现一个数据库!

传送门:


同时,中国大学MOOC平台的两门课程,也值得推荐。分别是 数据库系统(上):模型与语言 数据库系统(下):管理与技术

传送门:


4. 并行计算基础

我上学的年代,并行计算还不是计算机专业必学的内容。但现在,并行计算已经无处不在了。时代发展太快了,计算机专业的同学已经必学并行计算了。

关于在线课程,我推荐斯坦福大学的课程 CS149:PARALLEL COMPUTING

传送门:


分布式系统相关的书籍,有一本非常著名。也有中文版,叫《数据密集型应用系统设计


5. 人工智能基础

作为一个人工智能专业的学习路径,终于出现人工智能啦!

在这里,我首先推荐大家整体性地了解人工智能这个领域。

什么叫整体地了解?因为现在说到人工智能,很多同学就会直接想到机器学习或者深度学习。但其实,机器学习和深度学习只是人工智能的一个子领域而已。

与此同时,有很多同学都问过我,想了解诸如 A* 算法,遗传算法,模拟退火,蚁群算法等等这类的算法,应该看什么?其实,这类算法都是人工智能算法,只不过在现阶段,相比机器学习的算法,这些算法的成绩不够“耀眼”。

但是,如果深入了解人工智能,我认为这些算法也是需要学习的。要知道,神经网络其实在十几年前,也是人工智能领域不够“耀眼”的思想之一,静静地躺在角落里,直到最近有了巨大的突破,风靡于世。谁知道再过十年,哪种思想会突然有所突破,爆发起来呢?

关于整体性地了解人工智能,最经典的教材,就是这本了:

但是,这本书是一个大部头,细细啃一遍太花时间了。我建议配合一个视频课程看。比如,斯坦福大学的 CS221: Artificial Intelligence: Principles and Techniques

传送门:


或者,EdX 上有一门课程,我学过,是以这本书为纲的,我觉得挺不错的。可以免费试听。

传送门:


第三年:机器学习

现在,是时候深入学习当下人工智能领域最主流的方法:机器学习和深度学习了。


1. 机器学习 + 深度学习

机器学习领域最著名的课程,就是斯坦福大学的 CS229 了。Andrew Ng 在 Coursera 上大名鼎鼎的《机器学习》课程,就是这门 CS 229 的简化。

斯坦福大学的 CS 229,比 Coursera 上的课程更加深入,内容也更丰富。不过现在,已经不是 Andrew Ng 讲了。

传送门:


当然,说到了 Andrew Ng,就要说说他在 Coursera 上的一系列课程,在这个阶段都可以看一看。

最著名的当属 Machine Learning。这名课程的 logo 使用的这个小机器人,都快成机器学习领域的吉祥物了。

传送门:


Andrew Ng 后来创办了 deeplearning.ai 后,在 Coursera 上开设了一个深度学习的系列课程,也值得学习。 (虽然使用的 tf 版本有点儿老。)

传送门:


对于书籍,我推荐《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems

这本书国内有引进,但是国内引进的是第一版,现在国外最新版本已经是第二版了。


不过这本书偏实战。如果对偏理论感兴趣的同学,当然就推荐西瓜书啦。

最近,周志华老师还出了一本书,叫《机器学习理论导引》,豆瓣评分也颇高,相信也不错。


2. 数据科学基础

其实,数据科学和基础的机器学习算法的应用有很多重合的地方。在这里,想强调一点,对于使用 Python 做机器学习,有一些基础的库需要大家熟练了解,主要就是 numpy,pandas,包括大家如果做可视化的话,需要使用 matplotlib。对于这些内容的学习,推荐一本书:Python for Data Analysis

这本书国内有引进:


3. 凸优化

学习了机器学习,大家就会知道,大多数机器学习方法都是要求解一个最优函数。其中就需要的一个相对比较专门的数学基础:凸优化。

关于凸优化,斯坦福大学的 CS364a 是这方面的入门课程。另外,课程中也推荐了一本教材。

传送门:


4. 概率图模型

概率图模型也是深入理解很多人工智能方法的利器,在图像识别,自然语言处理领域都有非常多的应用。我研究生时期的毕业课题,是做虚拟动作识别,也需要使用概率图模型。

关于概率图模型,斯坦福大学有一门非常经典的课程 CS 228: Probabilistic Graphical Models

传送门:


在 Coursera 上也有一个概率图模型的系列课程,是斯坦福的这门课程的简化版本。

传送门:


5. 数据挖掘

数据挖掘主要是对大规模数据进行处理的。在数据的聚类分析,大规模的监督学习,包括推荐系统等领域,都有广泛应用。

对于数据挖掘,推荐斯坦福大学的 CS246: Mining Massive Data Sets

传送门:


第四年:专有领域学习

机器学习方法是领域相关的。在不同的领域,有很多专有的方法,包括专门的研究对象,需要进一步学习。

学到这里,相信大家已经有了相当的基础,可以挑选自己喜欢的方向,去做专门的学习了。


1. 卷积神经网络和计算机视觉

计算机视觉近乎是现在人工智能被应用最广泛的领域了,从人脸识别到 OCR,从无人驾驶到各种工业机器人的智能系统。

对于人工智能在视觉领域的应用,最著名的课程,应该就是华人科学家李飞飞在斯坦福大学的课程了。CS231n Convolutional Neural Networks for Visual Recognition

传送门:


2. 自然语言处理

当下人工智能另外一个应用非常广泛的应用领域,就是自然语言处理了。

这方面的经典课程,我推荐斯坦福大学的 CS224n: Natural Language Processing with Deep Learning

传送门:web.stanford.edu/class/


3. 机器学习在金融领域的应用

人工智能在金融领域的应用也是一个重要的趋势。但是通常,在计算机专业中,不是被特别强调。毕竟大多数计算机专业的学生还是要去 IT 大厂,而不是华尔街。

但是因为有很多同学对人工智能在金融领域的应用感兴趣,在这里也提一句。我在我的《开源分享第一期,就分享了一本书,是公认的机器学习在金融领域应用的宝典。感兴趣的同学可以参考:

据我所知,这本书暂时还没有中文版。


4. 机器学习在生物医学医药领域的应用

同样,机器学习在医学医药领域也有了越来越多的应用。只不过通常计算机专业的同学不很了解这方面。而是相反的,很多医学医药领域的人,会来学习人工智能的知识,进而应用在自己的领域,这种情况更多一些。

关于生物医学医药领域,整体我还是很看好的。虽然不知道爆炸的时间是什么时候,但我相信有着光明的未来。

而且,这个领域和计算机专业有着越来越多的交集,我之前在公众号还写过一篇文章:《算法不好的工程师不是优秀的生物学家

在这方面,Andrew Ng 的 deeplearning.ai 在 Coursera 上也开设了一个系列课程,叫 Ai for Medicine,感兴趣的同学可以去了解一下。

传送门:


5. Kaggle

当然了,学习到这里,大家已经可以(其实早就可以了)去参加 Kaggle 的竞赛了。在 Kaggle 上,会有大量真实的数据供大家实验,让大家尝试解决“真实的问题”。虽然在这类平台上竞技,其实和解决真实的问题还是有差距,但也比使用虚拟的数据,或者仅仅是学习原理,强太多。

同时,Kaggle 也绝不仅仅只是一个竞赛平台,更是一个非常好的学习平台,或者说是机器学习相关的垂直交流平台。Kaggle 上大部分任务都有相当多的公开的 notebook,供大家交流学习。仔细研究的话,相信每个人都能从中受到很多启发。

当然了,如果此时,大家有机会,能到真正的业界去参与真实的项目,那就更赞了。


好啦。如果你真的想认真学习人工智能,相信这篇文章,为你提供了一个很好的路线。

所有的资源都在这里了,就差投入时间精力好好学习了:)

大家加油!


P.S.

这篇文章的内容已经放在 github 上做长期的资源更新维护。欢迎大家提 issue 推荐更多相关资源,也欢迎来点赞啊!:)


更多有意思的技术文章,大家可以关注我的公众号:【是不是很酷】:)


user avatar   michaeltan 网友的相关建议: 
      

1.《统计学习方法》李航

《统计学习方法》,作者李航,这本书全面系统地介绍了统计学习的主要方法,特别是监督学习方法,包括感知机、k 近邻法、朴素贝叶斯法、决策树、逻辑斯谛回归与支持向量机、提升方法、EM 算法、隐马尔可夫模型和条件随机场等。除第 1 章概论和最后一章总结外,每章介绍一种方法。叙述从具体问题或实例入手,由浅入深,阐明思路,给出必要的数学推导,便于读者掌握统计学习方法的实质,学会运用。

李航 日本京都大学电气工程系毕业,日本东京大学计算机科学博士。曾任职于日本NEC公司中央研究所,微软亚洲研究院高级研究员及主任研究员,现任华为诺亚方舟实验室首席科学家。北京大学、南开大学、西安交通大学客座教授。研究方向包括信息检索、自然语言处理、统计机器学习及数据挖掘。

《统计学习方法》可以说是机器学习的入门宝典,许多机器学习培训班、互联网企业的面试、笔试题目,很多都参考这本书。

《统计学习方法》官方没有提供代码实现,github上有个项目,将《统计学习方法》中每一章的算法用python实现一遍,得到了李航老师的认可。

建议配套《统计学习方法》书籍,边看书边手推公式然后对着GitHub一边敲代码,受益会很大。


2.《机器学习》西瓜书 周志华

周志华老师的《机器学习》,自2016年1月底出版以来,首印5000册一周售罄,并在8个月内重印9次,累计72000册。先后登上了亚马逊,京东,当当网等的计算机类畅销书榜首。

西瓜书身边学习机器学习的小伙伴可谓是人手一本。

针对西瓜书部分公式推倒太难的问题,GitHub上有个开源项目,由开源组织Datawhale发起,得到了周志华老师的认同,叫做pumpkin-book《南瓜书》

周志华老师的《机器学习》(西瓜书)是机器学习领域的经典入门教材之一,周老师为了使尽可能多的读者通过西瓜书对机器学习有所了解, 所以在书中对部分公式的推导细节没有详述,但是这对那些想深究公式推导细节的读者来说可能“不太友好”,本书旨在对西瓜书里比较难理解的公式加以解析,以及对部分公式补充具体的推导细节

《南瓜书》



3.《机器学习实战》Peter Harrington

本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法、朴素贝叶斯算法、Logistic回归算法、支持向量机、AdaBoost集成方法、基于树的回归算法和分类回归树(CART)算法等。第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法、Apriori算法、FP-Growth算法。第四部分介绍了机器学习算法的一些附属工具。

Peter Harrington
拥有电气工程学士和硕士学位,他曾经在美国加州和中国的英特尔公司工作7年。Peter拥有5项美国专利,在三种学术期刊上发表过文章。他现在是Zillabyte公司的首席科学家,在加入该公司之前,他曾担任2年的机器学习软件顾问。

数据以及参考code可在官网下载

每一章都用代码实现了一部分机器学习的算法,对理解算法的原理很有帮助。

4.《深度学习》


AI圣经!深度学习领域奠基性的经典畅销书!


深度学习是机器学习的一个分支,它能够使计算机通过层次概念来学习经验和理解世界。因为计算机能够从经验中获取知识,所以不需要人类来形式化地定义计算机需要的所有知识。层次概念允许计算机通过构造简单的概念来学习复杂的概念,而这些分层的图结构将具有很深的层次。本书会介绍深度学习领域的许多主题。

本书囊括了数学及相关概念的背景知识,包括线性代数、概率论、信息论、数值优化以及机器学习中的相关内容。同时,它还介绍了工业界中实践者用到的深度学习技术,包括深度前馈网络、正则化、优化算法、卷积网络、序列建模和实践方法等,并且调研了诸如自然语言处理、语音识别、计算机视觉、在线推荐系统、生物信息学以及视频游戏方面的应用。最后,本书还提供了一些研究方向,涵盖的理论主题包括线性因子模型、自编码器、表示学习、结构化概率模型、蒙特卡罗方法、配分函数、近似推断以及深度生成模型。



相关书籍链接集合,马上开始学习吧~!时光易逝,加油吧少年~




  

相关话题

  如何评价DeepMind新推出的用于训练通用智能体的XLand? 
  如果人类自身的智慧水平最后被人工智能(AI)超过,算是进化么? 
  2021亚马逊云科技中国峰会有什么值得期待的亮点? 
  联邦学习/联盟学习 (Federated Learning) 的发展现状及前景如何? 
  机器学习里面的流形都是怎么用的? 
  当初的生物热,和如今的全民CS全民AI,让你想到了什么? 
  最难调试修复的 bug 是怎样的? 
  为什么中国出了这么多厉害的互联网公司,但没有自己设计过编程语言? 
  语音识别的技术原理是什么? 
  如何看待《装在口袋里的爸爸》这一系列书? 

前一个讨论
打工人该如何健身?
下一个讨论
从应用的角度来看,深度学习怎样快速入门?





© 2024-12-22 - tinynew.org. All Rights Reserved.
© 2024-12-22 - tinynew.org. 保留所有权利