(二)Machine Learning 机器学习/Artificial Intelligence人工智能学习路径
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
0 | (optional) MIT 线性代数 Gilbert Strang | 【先修】 如果一直以来学的都是文科、没有任何高等数学基础的人可以先看一下这个数学课程 | https://open.163.com/newview/movie/courseintro?newurl=%2Fspecial%2Fopencourse%2Fdaishu.html |
1 | Coursera 机器学习入门课程 by Andrew Ng | 【基础101】 | coursera:https://www.coursera.org/specializations/machine-learning-introduction 作业:https://github.com/zlotus/Coursera_Machine_Learning_Exercises 参考答案:https://github.com/loveunk/machine-learning-excercise-notebook-python 听课笔记:https://zhuanlan.zhihu.com/mlearn Coursera在2022年已经下线了老版课程,上线了出了新版课程,由一门课变成了一个specialization,多了更多新的算法。这门课是在Stanford 229的基础上设计的,比229更简单一点(更加推荐coursera这门课的原因是,内容更新比如神经网络讲得很透、教学质量更高、有配套的作业和练习、字母更完善)。 李杰克的建议是,大家可以通过《Machine Learning》去学习机器学习中的基础知识,我拎些重要的出来:损失函数、梯度下降、线性回归、逻辑回归、SVM、反向传播法、正则化、KNN、K-Means、PCA,大家可以优先重点搞懂这些东西,你进入到深度的知识储备算是基本够了。 没有用到什么超出线性代数,高数,概率论课本的数学。如果有概念看不懂,比如梯度,后验概率,Jacobian。那就把视频暂停,去查一下维基百科,或者翻一下自己的课本,搞懂了,然后再继续看视频。有些知识点,比如支持向量机的对偶问题,实在实在看不懂,那就算了,你就相信他跟原问题同解,接着看怎么加kernel。如果有地方实在搞不懂,也千万不要放弃,接着往下看。 上Coursera在线教学网站学习,优点是每个章节学习之后可以在线答题,可以提交答案检验是否正确,而且还可以做编程练习,编程练习提交到系统后,系统可以自动测试程序是否运行正确。缺点是需要科学上网,而且有些视频并没有中文字幕。 上网易云课堂学习,优点是速度快,全部视频都有中文字幕。缺点是没有在线习题,也没有编程练习。 |
1‘ | (optional)李宏毅的机器学习课程 | 【基础101】 1的平替 适合英语非常非常差的,如果英语好一点,一定要看Andrew Ng的课。学有余力的同学可以看完Andrew Ng的再看这门。 | https://www.bilibili.com/video/BV1Wv411h7kN/ 笔记:https://datawhalechina.github.io/leedl-tutorial/#/ 实践代码:https://github.com/Mryangkaitong/python-Machine-learning 中文教程有一个叫李宏毅的教授,台湾大学讲机器学习、深度学习、GAN等,中文课程入门非常推荐,视角和吴恩达相比更加独特一些,例子也比较贴近年轻人。比如动漫、宝可梦、Minecraft、帝国时代,都是他用过的例子。 李宏毅的一个视频太长了[捂脸]我听了五个视频就放弃了,吴恩达的我觉得更通俗精炼,很好理解,视频时长大多数十分钟左右,一个下午就可以听完二三十结课,很有成就感,更易于坚持听下去。这个两个人谁比较好,对于入门的人来讲可能不同的人有不同的看法。 作为补充(Andrew Ng的课程的补充),时间充裕的同学可以看看台大李宏毅的机器学习公开课,特点是中文授课,比较轻松愉快。 |
3 | 周志华的《机器学习》(西瓜书) | 【算法】 建立大局观, 通读不要精读 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1vqMuwYomO_5rwQ.pdf 在学习网课遇到疑惑时可以参考西瓜书的相关章节,但入门阶段没有必要一章一章的阅读,建议在这个阶段只阅读前十章即可。没基础的读者从头囫囵读,建议最好不超过两月,读不懂的跳过去。(之后还会再读这本) |
看完前面的内容之后,可以根据下面的自我检测一下: 教程和书再好都没有用,还是需要你花时间,慢慢慢慢地,去一点点理解透每个算法背后的原理,以及各种各样的优化方法是怎么发生的。 举例线性回归可以这样进阶地去学习: 纯线性回归。什么是最小二乘法,损失函数怎么求。 核函数。什么叫多项线性回归,什么叫高斯核线性回归。 正则化。什么叫正则化,正则化的目的是什么?LASSO,岭回归,ElasticNet都是什么。L0、L1、L2正则各代表什么东西。 广义线性模型。广义线性模型把什么东西涵盖起来了,是怎么抽象怎么推导的? 大概就这样,一点一点去深入,不用一次性把所有的模型都学完。但是个人建议,线性回归,Logistic回归,决策树这三个必须必须完完整整先看完。毕竟很好理解又很好用。 === 在学机器学习时一定要将逻辑回归彻彻底底学明白,因为高阶阶段要学的深度学习的基础是神经网络,可以说是由众多个逻辑回归函数组成。 === 很多东西先不要深究,不要在某些地方卡太久(比如数学部分,比如编程基础),先学下去,学完。了解大的框架之后,以后用到哪里,再回过来补也不迟。 === 机器学习的各种算法没必要样样精通,常用的比如LR、树模型、RF、XGBoost等等掌握好就不错了。 === 我身边一些优秀的程序员、分析师、工程师都非常推崇“做中学,学中做”,无论是书本还是视频,看到一些好的方法和技巧,要立即自己实现一遍。看起来非常简单的东西,真真动手的时候才会发现自己的不足。快速学完上述内容就尽快开始实践吧,可以先复现天池或kaggle上优秀的notebook,然后就参与一些入门竞赛。 | |||
4 | 《Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems》 机器学习实战:基于Scikit-Learn和TensorFlow | 【实战】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1-qMuwYo-LWn0Ac.pdf 这本书分为两大部分,第一部分介绍机器学习基础算法,每章都配备 Scikit-Learn 实操项目;第二部分介绍神经网络与深度学习,每章配备 TensorFlow 实操项目。如果只是机器学习,可先看第一部分的内容。 |
4‘ | (Optional) Harrington的《机器学习实战》 | 【实战】 4的平替 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1-qMuwYohbeqtQY.pdf 可以看下这本《机器学习实战》书。这本书最大的特点就是从零开始,使用python实现主流的机器学习算法。可以借鉴和参考。但是这本书的缺点也很明显,比如代码基于python2,代码比较晦涩难懂,可读性不高。但整体了解下还是很不错的。 这本书没有从理论角度来揭示机器学习算法背后的数学原理,而是通过“原理简述+问题实例+实际代码+运行效果”来介绍每个算法。 === 用人话把复杂难懂的机器学习算法解释清楚了,其中有零星的数学公式,但是是以解释清楚为目的的。而且有Python代码,大赞!目前中科院的王斌老师已经翻译这本书了 === 这本书用尽量少的公式把机器学习的基本算法都过了一遍,而且还讲得很清楚,更为重要的是他将公式和代码结合了起来。因此,你的机器学习并没有那么的抽象了,你知道算法里的公式如何的转化为代码。 所以,第一步,你可以耐着性子将这本书看完。反正我当时,把书中的代码自己敲了一次,虽然代码有的下载,你也可以选择只是把代码看懂完事。但我还是建议,自己敲一次,运行运行,这样你会得到不一样的体会。 |
4’ | (Optional) Introduction to Statistical Learning with R(ISL) | 【实战】【R】 Only if you wanna learn R | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg2vqMuwYooN2khAE.pdf ISL是ESL的入门版,不仅大量的去除了繁复的数学推导,还加入了R编程的部分,方便大家可以尽快上手。这本书是我推荐书单第一名 === 尽管需要一些线性回归的先验知识,但这本书还是理解统计学习概念的绝佳工具。通过提供有关如何利用大型和复杂数据集的平衡见解,其目的是教育广泛的统计学家和非统计学家,并使他们能够理解手中的数据。 它涵盖了统计学习的几个重要概念,例如线性回归,分类,基于树的模型,支持向量机,重采样方法等。各种示例和教程使学习过程更加愉快,并且其中包括多个R labs,以演示这些统计方法的实现。 == ISL是统计学系用的全书讲的是机器学习经典算法没有神经网络用的软件是R语言 |
5 | stanford 的 CS231n: Deep Learning for Computer Vision | 【深度学习】【CV】 深度学习主要就是分为NLP和CV,这门课是CV | 课程主页:http://cs231n.stanford.edu 课程笔记:https://zhuanlan.zhihu.com/p/21930884 作业:https://github.com/zlotus/cs231n 课后作业配套答案:https://blog.csdn.net/bigdatadigest/article/category/7425092 看完一部分之后,去完成对应作业;它的作业有三个,你去做前两个,实现图像分类任务,实现卷积神经网络:bn,dropout,cnn 都要看一下; 第三个作业比较复杂,大家不用去看,只需要做前两个; 注意,不需要自己从零去做这个作业,直接看给的代码仓库,去看人家怎么实现的,当然你如果有自信而且想要锻炼自己,没问题,可以从零去实现。但是对于大部分人,你去对照着代码一行行的看,去理解为什么这儿写,输出输入是什么; 在这个过程,就会涉及到一点,就是框架的学习,我推荐大家使用Pytorch; 大家在在看计算机视觉视频之后,完成代码的部分,如果有不懂的地方,穿插着去看这个刘二大人的视频;因为刘二大人这个视频会涉及到CNN和RNN,所以如果你一开始就看,可能会有点费劲; 我举个例子吧,比如说你看完CNN网络,然后你去完成第二个作业,突然你发现里面有些不懂,不知道为什么这么弄,然后你去看刘二大人对应的视频讲CNN代码的;是这么个顺序啊; 整个计算机市局视频和代码学习完之后,你必须要掌握到什么程度呢?必须要把下面这些完全掌握:反向传播梯度回传,损失函数,优化算法,多层感知机,卷积神经网络,普通的循环神经网络,以及一些dropout和BN掌握住; |
6 | stanford 的 CS224n: Natural Language Processing with Deep Learning | 【深度学习】【NLP】 深度学习主要就是分为NLP和CV,这门课是NLP | https://www.bilibili.com/video/BV18Y411p79k/ 在入门阶段,你只需要看P1-P5和P8,P9,P11;通过看这个视频你要能够达到什么地步呢?其实这个视频和cs231n在基础部分是重叠的,对于基础部分,大家可以都看,两者兼学会更好必须熟悉的掌握:反向传播,词向量,RNN,GRU,Lstm,Seq2Seq以及attention机制;初步了解卷积神经网络; 有作业,一定要认真做,自己写不出来,仿照着别人的写:见思维导图备注作业也不是都写:重点看a1,a2,a4,a5;其实a5这个不做的话,也没问题,把前面给的这个三个一定自己走一遍;作业涉及到词向量和机器翻译;有的朋友常常会和我反应,不知道att这种细节是如何实现的,其实这些都是最基础的东西,一定要从零看代码,有余力的话,可以自己实现一遍,非常有帮助; |
7 | Kaggle 实战项目练习 | 【实战】 做至少一个经典练习项目 | 这里为大家推荐几篇非常好的文章,里面手把手的教了大家入门级的三个经典练习项目(其实是已经结束了的赛题),供大家学习。 1. Titanic(泰坦尼克之灾) 中文教程: 逻辑回归应用之Kaggle泰坦尼克之灾 https://blog.csdn.net/han_xiaoyang/article/details/49797143 英文教程:An Interactive Data Science Tutorial https://www.kaggle.com/code/helgejo/an-interactive-data-science-tutorial 2. House Prices: Advanced Regression Techniques(房价预测) 中文教程:Kaggle竞赛 — 2017年房价预测 英文教程:How to get to TOP 25% with Simple Model using sklearn https://www.kaggle.com/code/neviadomski/how-to-get-to-top-25-with-simple-model-sklearn 3. Digital Recognition(数字识别) 中文教程:大数据竞赛平台—Kaggle 入门 https://blog.csdn.net/u012162613/article/details/41929171 英文教程:Interactive Intro to Dimensionality Reduction https://www.kaggle.com/code/arthurtok/interactive-intro-to-dimensionality-reduction |
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
1 | 《统计学习方法》 by 李航 + 《机器学习》by 周志华 (西瓜书) | 【数学】【算法】 这两本书相互配合看,以一本书主,另一本为参考 | 《统计学习方法》 https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg2PqMuwYopqPEpwE.pdf 代码:https://github.com/WenDesi/lihang_book_algorithm https://github.com/aialgorithm/AiPy/tree/master/机器学习/统计学习方法-第2版课件 https://github.com/aialgorithm/AiPy/tree/master/机器学习/统计学习方法--代码 带读: 《西瓜书》 https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1-qMuwYo5JzXuAc.pdf《南瓜书》(西瓜书中的公式推导可以参考南瓜书) https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1vqMuwYo7qrh_wY.pdfhttps://www.bilibili.com/video/BV1Mh411e7VU/?spm_id_from=333.788.videocard.0 《机器学习》更偏重于算法原理,让你知道每个算法怎么实现的,步骤是什么。《统计学习方法》会深扒原理背后的理论支撑,这样有助于更加深入的理解机器学习算法,对后续深入研究会有很多好处。 |
4 | 深度学习 Deep Learning - by IanGoodFellow,Bengio(花书) | 【深度学习】 看完上面两个视频后,这本书用来查缺补漏 | https://github.com/exacity/deeplearningbook-chinese https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1vqMuwYokIShjQE.pdf 课件:https://www.deeplearningbook.org/lecture_slides.html exercise:https://github.com/goodfeli/dlbook_exercises 全书的内容包括3个部分:第1部分介绍基本的数学工具和机器学习的概念,它们是深度学习的预备知识;第2部分系统深入地讲解现今已成熟的深度学习方法和技术;第3部分讨论某些具有前瞻性的方向和想法,它们被公认为是深度学习未来的研究重点。 为了补充基础可以阅读第1-5章其中也包含了一些数学知识 只关注主流神经网络知识可以阅读6-10章,介绍了DNN/CNN/RNN 需要进一步了解一些调参和应用技巧,推荐阅读11和12章 第13-20章为进阶章节,在入门阶段没有必要阅读。其实比较实际的做法是吴恩达的课程讲到什么概念,你到这本书里面可以阅读一些深入的理论进行概念加深,按章节阅读还是比较耗时耗力的。 不论往哪个方向发展,都先看神经网络部分 如果你之后想学图像方向,就接着看计算机视觉部分,然后对序列模型进行了解。如果准备往自然语言或推荐方向发展,则推荐先看计算机视觉部分,掌握CNN的基本常识后,再去学习序列模型全部内容。 |
5 | 台大林轩田《机器学习基石》 | 【算法】 | https://www.coursera.org/learn/ntumlone-algorithmicfoundations 讲义:https://work.caltech.edu/telecourse.html 台湾大学林轩田老师的《机器学习基石》课程由浅入深、内容全面,基本涵盖了机器学习领域的很多方面。其作为机器学习的入门和进阶资料非常适合。而且林老师的教学风格也很幽默风趣,总让读者在轻松愉快的氛围中掌握知识。这门课比 Ng 的《Machine Learning》稍难一些,侧重于机器学习理论知识。 林轩田机器学习基石这门课有一个配套教材:《Learning From Data》,林轩田也是编者之一。 这门课和Caltech两个大学的课程是由《Learning from Data》一书的两个不同的作者讲的,这门课推荐的人要多很多,所以完成了这个就不用看Caltech的课程了, |
6 | Kaggle 实战项目练习 | 【实战】 做至少一个 | 比赛技巧: https://zhuanlan.zhihu.com/p/71609765 https://zhuanlan.zhihu.com/p/106766826 |
7 | (Optional) 《Pattern Recognition and Machine Learning》(PRML) | 【算法】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1vqMuwYo6P3cswQ.pdf 习题解法:https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg1fqMuwYovPqouAY.pdf PRML是以贝叶斯的观点看待很多机器学习方法,这也是它的一大特色。但对于初学者来说,这种观点其实并无必要。而且此书没有中文翻译,当前阶段硬啃很容易放弃; == 至于PRML和ESL没有Murphy的全和新 |
顺序 | 资源 | 知识分类/使用方法 | 链接和介绍 |
1 | (ESL)The Elements of Statistical Learning : Data Mining, Inference, and Prediction《统计学习基础:数据挖掘、推理与预测》by Trevor Hastie & Robert Tibshirani | 【数学】【算法】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg5ISNuwYomL69ngQ.pdf 侧重于统计知识。此外,它涵盖了许多数据挖掘技术。如神经网络,关联规则挖掘,SVM,回归,聚类等主题。这本书的有趣之处在于它是许多大学课程中使用的顶级书籍。作者涵盖了许多主题,如图像模型,集合方法,最小角度回归,随机森林,以及关于套索的路径算法,非负矩阵因子分解。 === 大名鼎鼎的ESL,读起来比较累(我太渣),我觉得适合翻查和摘抄。 === 比较偏Frequentist |
2 | deeplearning.ai上面的deep learning课程 | 【深度学习】 | https://www.deeplearning.ai/courses/deep-learning-specialization/ https://mooc.study.163.com/smartSpec/detail/1001319001.htm 中文笔记:https://github.com/fengdu78/deeplearning_ai_books 参考论文:https://github.com/fengdu78/deeplearning_ai_books/tree/master/参考论文 和Coursera上的DL同步,现在云课堂也上线了五门中的前三门课程,而卷积网络(CNN)和循环网络(RNN)还未开放。 整个专题共包括五门课程:01.神经网络和深度学习;02.改善深层神经网络-超参数调试、正则化以及优化;03.结构化机器学习项目;04.卷积神经网络;05.序列模型。 === 都是专业领域中比较新的,所以可以通过这门课来了解专业比较近期的发展状态。除此之外,这门课的作业都是用Python以及基于它的深度学习框架如TensorFlow来完成的,所以在对于技术的了解以及后续的实用性上都是非常不错的。 |
3 | 台大林轩田《机器学习技法》 | 【算法】 | https://www.coursera.org/learn/machine-learning-techniques https://github.com/ExtremeMart/NTU-HsuanTienLin-MachineLearning 《机器学习技法》课程是《机器学习基石》的进阶课程。主要介绍了机器学习领域经典的一些算法,包括支持向量机、决策树、随机森林、神经网络等等。难度要略高于《机器学习基石》,具有很强的实用性。 |
4 | 了解Tensorflow、Pytorch、Caffe这几种框架 | 【实战】 | 【Tensorflow(下面的资源选一个学习)】 《Tensorflow教程》莫烦:http://t.cn/RTuDxFT 《TensorFlow实战》,黄文坚:https://github.com/instillai/TensorFlow-Course Tensorflow背靠Google大树,是目前最火的框架,如果你想做一名AI工程师,那学Tensorflow一定是最好的选择,类似于一招鲜吃天下的意思。 如果你是产品经理,并不想花太多时间在框架上,但又想自己去实现一个神经网络模型的话,那李杰克建议去学习Keras。Keras基于Tensorflow又进行一层封装,当然也有基于Theano版本的,因为高度封装,使用起来异常简单。可以尝试里面最简单的例子MNIST 获得激励。 【Pytorch(下面的资源选一个学习)】 B站的刘二大人:《PyTorch深度学习实践》https://www.bilibili.com/video/BV1Y7411d7Ys/?from=search&seid=1631997590037031874&spm_id_from=333.337.0.0 浙江大学教授【深度学习框架PyTorch】课程https://www.bilibili.com/video/BV1wL4y1t7ah/?spm_id_from=333.999.0.0 |
5 | 实战项目 | 【实战】 | 【NLP】 Bert文本分类[13]:在官网下载源码后进行Debug,不仅可以锻炼调试阅读代码的能力,而且可以掌握Bert的细节。 https://github.com/google-research/bert 实体识别[14]:此项目使用了多种不同的模型(HMM、CRF、Bi-LSTM、Bi-LSTM+CRF)来解决中文命名实体识别问题。 https://github.com/luopeixiang/named_entity_recognition 对话机器人[15]:此项目为医疗对话问答机器人,主要基于知识图谱实现。 https://github.com/liuhuanyong/QASystemOnMedicalKG 在对NLP进行初步了解后,大家可以根据自身情况在Github上多找一些感兴趣的相关项目进行研究,不仅仅要知道代码实现细节,更要思考它能实际解决的业务问题。 【CV】 识狗君:https://github.com/mogoweb/aidog OpenCV:https://juejin.cn/post/6844904153202819080 【Others】 基于RNN的文本生成器 https://github.com/karpathy/char-rnn 基于char-rnn的汪峰歌词生成器 https://github.com/phunterlau/wangfeng-rnn 用RNN生成手写数字 https://github.com/skaae/lasagne-draw === 如果你已有工作,最好的还是在业务中寻找机器学习应用场景,然后尝试去开发一个适用的模型。不懂就搜索,学习。 |
6 | BAT 机器学习面试 1000 题系列(第 1~325 题) | 【面试】 | https://32931414.s21i.faiusr.com/61/ABUIABA9GAAg5ISNuwYorovxjgE.pdf |
4. 一些辅助资料
1 | 数据集 | UCI(http://archive.ics.uci.edu/ml/datasets.html):加州大学欧文分校开放的经典数据集,被很多机器学习实验室采用。 Awesome Public Datasets (https://github.com/awesomedata/awesome-public-datasets):这是github一大神整理的一个丰富的数据集资源获取渠道合集。 国家数据(http://data.stats.gov.cn/index.htm):数据来源于中国国家统计局,包含了我国经济民生等多个方面的数据。 CEIC(https://www.ceicdata.com/zh-hans):超过128个国家的经济数据,能够精确查找GDP, CPI, 进口,出口,外资直接投资,零售,销售,以及国际利率等深度数据。 中国统计信息网(http://www.tjcn.org/):国家统计局的官方网站,汇集了海量的全国各级政府各年度的国民经济和社会发展统计信息。 手写数字库MNIST:http://yann.lecun.com/exdb/mnist 图像处理数据COCO:http://mscoco.org 机器学习经典开源数据集:https://www.jianshu.com/p/83ebd261862a MovieLen https://grouplens.org/datasets/movielens/ MovieLens数据集中,用户对自己看过的电影进行评分,分值为1~5。MovieLens包括两个不同大小的库,适用于不同规模的算法。小规模的库是943个独立用户对1 682部电影作的10 000次评分的数据;大规模的库是6 040个独立用户对3 900部电影作的大约100万次评分。适用于传统的推荐任务 Douban https://www.cse.cuhk.edu.hk/irwin.king.new/pub/data/douban Douban是豆瓣的匿名数据集,它包含了12万用户和5万条电影数据,是用户对电影的评分信息和用户间的社交信息,适用于社会化推荐任务。 BookCrossing http://www2.informatik.uni-freiburg.de/~cziegler/BX/ 这个数据集是网上的Book-Crossing图书社区的278858个用户对271379本书进行的评分,包括显式和隐式的评分。这些用户的年龄等人口统计学属性(demographic feature)都以匿名的形式保存并供分析。这个数据集是由Cai-Nicolas Ziegler使用爬虫程序在2004年从Book-Crossing图书社区上采集的。 |