Skip to content

Ai Learning Roadmap based on lots of open course sources and book materials. 我总结的 AI 学习路径。

Notifications You must be signed in to change notification settings

liuyubobobo/ai-learning-roadmap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

人工智能学习路线

这个代码仓的内容是我公众号上的文章《如果真的学习人工智能》的整理,我将在这里提供一个人工智能专业的学习路径。

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

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

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

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

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

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

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

这份学习路径中的大部分资料,都使用开源的资源,或者是比较著名的图书推荐。

如果大家有其他好的资源推荐,欢迎随时提 issue:)



相关推荐:

我的另一个代码仓,包含大量开源资源分享: 是不是很酷开源分享

我的公众号是【是不是很酷】。

qr


简略版

第一年:语言基础 + 数学

Python 语言 Python Crash Course, 2nd Edition Amazon 京东 书籍
Automate the Boring Stuff with Python, 2nd Edition
第二版英文原版内容线上版本 Amazon 京东
书籍
Introducing Python Amazon 京东 书籍
Fluent Python Amazon 京东 书籍
C++ C++ Primer Amazon 京东 书籍
C++ Crash Course Amazon 书籍
程序运行底层 & C CS107:Computer Organization & Systems 斯坦福公开课
微积分 托马斯微积分 京东 书籍
普林斯顿微积分读本 京东 书籍
线性代数 Introduction to Linear Algebra Amazon 京东 书籍
Linear Algebra
A 2020 Vision of Linear Algebra
MIT 公开课
Linear Algebra and Its Applications Amazon 京东 书籍
Linear Algebra Done Right
Springer官网 原版PDF下载 京东
书籍
概率论 CS109: Probability for Computer Scientists 斯坦福公开课

第二年:计算机基础

算法与数据结构 算法4 Amazon 京东 书籍
算法设计手册(指南) Springer官网 原版PDF下载 京东 书籍
操作系统基础 Operating Systems: Three Easy Pieces
原版在线阅读 Amazon 京东
书籍
CS140:Operating Systems 斯坦福公开课
CSAPP Amazon 京东 书籍
数据库基础 SQL 必知必会 Amazon 京东 书籍
SQLZoo 在线练习
SQLBolt 在线练习
CS145:Data Management and Data Systems 斯坦福公开课
CS245:Principles of Data-Intensive Systems 斯坦福公开课
CS346:Database System Implementation 斯坦福公开课
数据库系统(上):模型与语言 中国大学MOOC
数据库系统(下):管理与技术 中国大学MOOC
并行计算基础 CS149:PARALLEL COMPUTING 斯坦福公开课
Designing Data-Intensive Applications Amazon 京东 书籍
人工智能基础 Artificial Intelligence: A Modern Approach Amazon 京东 书籍
CS221: Artificial Intelligence: Principles and Techniques 斯坦福公开课
EdX: Artificial Intelligence (AI) EdX 课程

第三年:计算学习 + 深度学习

机器学习 CS229: Machine Learning 斯坦福公开课
Coursera: Machine Learning Coursera 课程
Coursera: Deep Learning Specialization Coursera 课程
TensorFlow in Practice Specialization Coursera 课程
Hands-On Machine Learning Amazon 京东 书籍
机器学习(西瓜书) 京东 书籍
机器学习导引 京东 书籍
数据科学 Python for Data Analysis Amazon 京东 书籍
凸优化 EE364a: Convex Optimization I 斯坦福公开课
概率图模型 CS 228: Probabilistic Graphical Models 斯坦福公开课
Coursera: Probabilistic Graphical Models Specialization Coursera 课程
数据挖掘 CS246: Mining Massive Data Sets 斯坦福公开课

第四年:专有领域学习

计算机视觉 CS231n: Convolutional Neural Networks for Visual Recognition 斯坦福公开课
自然语言处理 CS224n: Natural Language Processing with Deep Learning 斯坦福公开课
Coursera: Natural Language Processing Specialization Coursera 课程
金融领域 Advances in Financial Machine Learning Amazon 书籍
生物医学医药 AI for Medicine Specialization Coursera 课程
Rosalind 在线编程


详细版


第一年:计算机语言基础 + 数学

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


1. Python

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

python

这本书有中文版。但我目测还是第一版。相较而言,国外最新版已经是第二版了。

国外亚马逊链接在这里

中文版京东购买点击这里


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

python2

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

中文版京东购买点击这里


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

python3

亚马逊链接在这里

中文版京东购买点击这里


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

python4

亚马逊链接在这里

中文版京东购买点击这里

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


2. C++

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

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

cpp

亚马逊链接在这里

中文版京东购买点击这里


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

cppcrash

亚马逊链接在这里


3. 程序运行底层 & C

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

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

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

cs107

传送门:https://web.stanford.edu/class/archive/cs/cs107/cs107.1206/index.html


4. 微积分

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

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

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

calculus

中文版京东购买点击这里


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

calculus

中文版京东购买点击这里


5. 线性代数

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


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

linear

这本教材的作者是 MIT 大名鼎鼎的 Gilbert Strang。去年被炒得沸沸扬扬的清华大学把线数教材换成了英文版,用得就是这本教材;前一阵子沸沸扬扬的 86 岁老爷子还录网课,说得就是这个作者。

如果你对这两条新闻不是特别熟悉,可以搜一下。关键词:“清华把线性代数教材换成英文版”;“86岁还在录网课”。

这本书的亚马逊链接在这里

京东购买点击这里


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

MIT 的官方地址在这里

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


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

linear2

这本书的亚马逊链接在这里

京东购买点击这里


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

linear3

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

因为可以免费下载,所以我直接把这本书的 PDF 放在这个代码仓下了。大家可以在这里直接下载

京东购买点击这里


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

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

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

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

probability

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


第二年:计算机基础

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

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


1. 算法和数据结构

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

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

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

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

algo

亚马逊链接在这里

中文版京东购买点击这里


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

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

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

algoman

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

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

algoman2

传送门:https://link.springer.com/book/10.1007/978-1-84800-070-4

因为可以免费下载,所以我直接把这本书的 PDF 放在这个代码仓下了。大家可以在这里直接下载

感谢 @kunlk 的提醒。这本书引进了中文版,中文版叫《算法设计指南》。京东购买点击这里


2. 操作系统基础

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

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

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

osbook

这本书的英文版是可以免费在线浏览的。传送门:http://pages.cs.wisc.edu/~remzi/OSTEP/

感谢 @zozospider 的提醒。这本书引进了中文版,中文版叫《操作系统导论》。京东购买点击这里


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

os

传送门:http://web.stanford.edu/~ouster/cgi-bin/cs140-spring20/index.php


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

csapp

亚马逊链接在这里

中文版京东购买点击这里


3. 数据库基础

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

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

sql

亚马逊链接在这里

中文版京东购买点击这里


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

一个叫 SQLZoo

sqlzoo

另一个叫 SQLBolt:

sqlbolt


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

cs145

传送门:https://cs145-fa19.github.io/


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

cs245

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


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

cs346

传送门:https://web.stanford.edu/class/cs346/2015/


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

传送门:

https://www.icourse163.org/course/HIT-1001516002

https://www.icourse163.org/course/HIT-1001578001


4. 并行计算基础

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

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

传送门:http://cs149.stanford.edu/fall19/


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

diaa

亚马逊链接在这里

中文版京东购买点击这里


5. 人工智能基础

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

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

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

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

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

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

ai

亚马逊链接在这里

中文版京东购买点击这里


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

cs221

传送门:https://stanford-cs221.github.io/spring2020/


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

aiedx

传送门:https://www.edx.org/course/artificial-intelligence-ai


第三年:机器学习

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


1. 机器学习 + 深度学习

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

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

cs229

传送门:http://cs229.stanford.edu/


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

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

courseraml

传送门:https://www.coursera.org/learn/machine-learning?


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

courseradl

传送门:https://www.coursera.org/specializations/deep-learning


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

handson_ml

亚马逊链接在这里

中文版京东购买点击这里

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

handson_ml2


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

watermelon

京东购买链接点击这里

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

watermelon2

京东购买链接点击这里


2. 数据科学基础

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

ds

亚马逊链接在这里

中文版京东购买点击这里


3. 凸优化

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

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

cs364a

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


4. 概率图模型

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

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

cs228

传送门:https://cs.stanford.edu/~ermon/cs228/index.html

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

courserapgm

传送门:https://www.coursera.org/specializations/probabilistic-graphical-models


5. 数据挖掘

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

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

cs246

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


第四年:专有领域学习

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

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


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

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

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

cs231n

传送门:http://cs231n.stanford.edu/


2. 自然语言处理

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

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

cs224n

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


最近,Andrew Ng 的 deeplearning.ai 在 Coursera 上新开设了一个系列课程,叫 Natural Language Processing Specialization,有兴趣的同学也可以参考。

coursera_nlp

传送门:https://www.coursera.org/specializations/natural-language-processing


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

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

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

finml

亚马逊链接在这里


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

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

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

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

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

courseraaim

传送门:https://www.coursera.org/specializations/ai-for-medicine


5. Kaggle

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

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

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


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

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

大家加油!



如果大家还有好的资源补充,欢迎大家来给我提 issue 哇!:)

About

Ai Learning Roadmap based on lots of open course sources and book materials. 我总结的 AI 学习路径。

Resources

Stars

Watchers

Forks