机器学习路径完全版

文章目录

  • 1. 数学基础
  • 2. 编程基础
    • 2.1 Python & C++
    • 2.2 Linux & Shell
    • 2.3 深度学习框架
  • 3. 统计学习
    • 3.1 课程(选一)
    • 3.2 书籍
  • 4. 深度学习
    • 4.1 课程(选一)
    • 4.2 书籍(选一)
  • 5. 专业领域
    • 5.1 图像
      • 课程(选一)
      • 书籍
    • 5.2 自然语言处理
    • 5.3 视觉SLAM
    • 5.4 强化学习
      • 课程
      • 书籍
  • 6. 论文
  • 7. 总结

写在前面

  • 重点推荐内容加粗显示

  • 有些课程和书籍区分了难度系数,比如简单、中档等,但是难度系数并不代表阅读对应书籍或者学习相应课程需要的时间长短,所谓“难度系数”,只是根据推荐资料需要的数学基础来界定的。

1. 数学基础

数学基础主要依赖上课就行了,如果忘了,就花一两周稍微复习一下。

  • 高等数学 (关注微分拉格朗日乘子法积分换元法等;本科教材即可)
  • 线性代数(关注矩阵运算;本科教材即可)
  • 概率论与数理统计(关注全概率公式极大似然法参数估计以及常用分布;本科教材即可)
  • 数值分析(关注梯度下降法牛顿法以及常用的插值算法;本科或研究生教材即可)
  • 矩阵论(关注空间映射范数;研究生教材即可)
  • 随机过程(关注泊松过程马尔科夫过程;研究生教材即可)
  • 凸优化(难度较大,简单了解一下就好了)
  • 条件随机场(难度较大,遇到了再看网上教程吧)

2. 编程基础

2.1 Python & C++

  • Python教程
    • 核心库 https://docs.python.org/3/tutorial/index.html
    • 标准库 https://docs.python.org/3/library/index.html
    • 扩展库 https://docs.python.org/3/extending/index.html
  • Python第三方库
    • 矩阵计算库Numpy https://docs.scipy.org/doc/numpy/user/quickstart.html
    • 可视化库Matplotlib https://matplotlib.org/contents.html
    • 符号计算库Scipy https://docs.scipy.org/doc/scipy/reference/tutorial/index.html
    • 高级数据处理库(可不学)Pandas http://pandas.pydata.org/pandas-docs/stable/tutorials.html
    • 统计学习库Sklearn https://scikit-learn.org/stable/tutorial/index.html
    • 图像处理库OpenCV https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html
    • 简易图像处理库PIL https://pillow.readthedocs.io/en/5.3.x/handbook/index.html

另外,最好掌握基础的C++ 或者 Java的一种,熟练掌握常用的数据结构与算法【线性结构(数组,链表,队列等)、树(二叉树,2-3树,B树等)、图与哈希表等】,这部分主要复习本科教材即可。

2.2 Linux & Shell

需要熟悉常用的Linux命令行操作,推荐《Linux命令行与shell脚本编程大全》(看基础部分就可以了)。Linux推荐Ubuntu或者Mint。不推荐初学者使用centos或者red hat。

2.3 深度学习框架

框架不重要,选择自己顺手的就好了。**主推TensorFlow和PyTorch。**当然你也可以尝试chainer, MXNet, DL4J等。

  • Tensorflow
    • 基础教程 https://www.tensorflow.org/tutorials/
    • 编程指导 https://www.tensorflow.org/guide/
  • PyTorch https://pytorch.org/tutorials/

3. 统计学习

如果精力或者时间允许,可以考虑了解一下人工智能的概况,因为人工智能不仅仅局限于统计学习与深度学习,只是这二者现下过于火热,给人造成了这样的错觉。俗话说“疾风知劲草,岁寒见后凋”,人工智能从上个世纪50年代开始,发展起起落落,资本进进出出,这次的火爆又何尝不是资本的推动呢(当然,技术上也确实有进步)?所以我认为,既然要学的话,就不要仅仅局限在目前资本吹捧的内容,毕竟我们是在学校不是在企业,资本逐利,但是人不能只逐利,所以我们有必要看看以前的人到底做了什么。“一门学科的历史就是她的全部”,这里推荐书籍《人工智能:一种现代化方法》,该书不局限于当下火热的统计学习和深度学习,主要讲述了人工智能的发展史,以及搜索问题,逻辑、知识推理与规划以及统计学习与深度学习,最后叙述了人工智能的哲学基础。该书虽然是导论性书籍,但绝不是简简单单介绍概念,而是高屋建瓴,深入浅出地讲述了人工智能的方方面面,并且书中对很多方法都有详细叙述,大部分算法都有伪代码给出,堪称经典中的经典。该书部头较大(1200页左右),有些概念很抽象(尤其是逻辑那一部分),阅读需要的时间比较多,且短期不一定能从此书得到显著提高,但是无论如何,这本手对于理解人工智能这个领域大有裨益。一般这种书的中译本可能阅读体验比较差,建议阅读原版。

豆瓣链接:https://book.douban.com/subject/3307202/(该书第四版即将出版,如果届时第四版已出,建议直接阅读第四版)

3.1 课程(选一)

  • Machine Learning 专项 (中低难度) https://www.coursera.org/specializations/machine-learning
  • 吴恩达机器学习 (简单)https://www.coursera.org/learn/machine-learning
  • 机器学习 林轩田(难度较大) https://www.csie.ntu.edu.tw/~htlin/course/
  • 自动化学院模式识别课程 (中档难度)(研一春季学期)

3.2 书籍

  • 选一即可(建议选第一本)【有些书籍我标明“硕士慎入”,并不是因为硕士数学储备不足或者真的完全无法看懂,而是硕士三年时间有限,有些书实在不适合在短短的硕士三年时间里深挖——研一有课,研三毕设,时间不多,不必强得】
    • 《统计学习方法》李航 (非数学专业人士的救星)
      • 豆瓣链接 https://book.douban.com/subject/10590856/
      • 难度系数(6星): ⭐⭐⭐⭐⭐⭐
    • 《机器学习》周志华(个人认为此书并没有网上吹捧的那么优秀,不是非常适合拿来自学,不过每章后面的参考文献不错)
      • 豆瓣链接 https://book.douban.com/subject/26708119/
      • 难度系数(5星): ⭐⭐⭐⭐⭐
    • Pattern Recognition and Machine Learning(圣经级别,非数学背景或者博士的话慎入,我看了一部分,已放弃;另,此书无中译本)
      • 豆瓣链接 https://book.douban.com/subject/2061116/
      • 难度系数(10星): ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
    • Machine Learning: A Probabilistic Perspective(难度较大,硕士慎入,我没入)
      • 豆瓣链接 https://book.douban.com/subject/10758624/
      • 难度系数(9星): ⭐⭐⭐⭐⭐⭐⭐⭐⭐
    • 机器学习实战(很好的入门书,可以花3-4天浏览一下,此书舍弃细节,提纲挈领,高中数学水平即可;本书旨在实现基础的机器学习库,但是书中代码风格实在不敢恭维,自己甄别吧,别被带偏了)
      • 豆瓣链接:https://book.douban.com/subject/24703171/
      • 难度系数(3星): ⭐⭐⭐
  • 凸优化(了解一下前6章就好了,难度比较大,硕士也可以只看4,5章就好了)
    • 豆瓣链接: https://book.douban.com/subject/21249088/
    • 难度系数(8星): ⭐⭐⭐⭐⭐⭐⭐⭐

4. 深度学习

总体而言,深度学习的相关理论都比较浅显,基本具备求导、矩阵运算以及基本的概率论就可以了,深度学习难度主要体现在训练模型方面。深度学习重在实践喽,理论方面截止本文成文前还没有很好、很系统的成果,所以深度学习相关理论算是比较简单了,有个1个多月就差不多了,剩下的慢慢炼丹吧!

4.1 课程(选一)

  • 吴恩达Deep Learning专项 (中档难度) https://www.coursera.org/specializations/deep-learning
  • 李飞飞CS231n (中档难度) http://cs231n.stanford.edu/
  • 机器学习与人工神经网络设计 (中档难度)(自动化学院课程,研一春季学期)

4.2 书籍(选一)

  • Deep Learning

    • 豆瓣链接:https://book.douban.com/subject/26883982/
    • 难度系数(5星): ⭐⭐⭐⭐⭐
  • Python深度学习

    • 豆瓣链接: https://book.douban.com/subject/30293801/
    • 难度系数(3星): ⭐⭐⭐

5. 专业领域

研究生期间需要选择一个方向。我在图像方面做得比较多,所以下文5.1节参考意义比较大;其它的三个方面不是很了解,只是推荐一点道听途说的资料吧。

5.1 图像

课程(选一)

  • 斯坦福大学 CS231a(中低档) http://web.stanford.edu/class/cs231a/
  • 计算机学院春季学期 图像分析与理解(博士课程,中档)
  • 自动化学院春季学期 图像处理 (中档)

书籍

  • 数字图像处理 冈萨雷斯 (可以当工具书)(必看)
    • 豆瓣链接:https://book.douban.com/subject/27132967/
    • 难度系数(5星):⭐⭐⭐⭐⭐
  • 计算机视觉:模型、学习和推理(4选一)
    • 豆瓣链接:https://book.douban.com/subject/27088947/
    • 难度系数(7星):⭐⭐⭐⭐⭐⭐⭐
  • 计算机视觉:一种现代化方法(4选一)
    • 豆瓣链接:https://book.douban.com/subject/10798475/
    • 难度系数(7星):⭐⭐⭐⭐⭐⭐⭐
  • Multiple View Geometry in Computer Vision(4选一)
    • 豆瓣链接:https://book.douban.com/subject/1841346/
    • 难度系数(8星):⭐⭐⭐⭐⭐⭐⭐⭐
  • 计算机视觉中的数学方法(4选一)
    • 豆瓣链接: https://book.douban.com/subject/3107523/
    • 难度系数(7星):⭐⭐⭐⭐⭐⭐⭐

5.2 自然语言处理

我们实验室没人做自然语言处理,个人也不是很了解,这里只是根据网上的推荐列出一个课程:

斯坦福大学CS224n:http://web.stanford.edu/class/cs224n/

5.3 视觉SLAM

个人对SLAM不是很了解,所以推荐一些其他人认为的好书(课程暂时没有,因为SLAM比较综合,图像处理、数字信号处理、部分统计学习算法、矩阵论、李群与李代数、非线性优化、各种特征提取与匹配算法啊什么的都学了,再开始入手吧):

  • 本文前面所有的章节介绍的都可以算是视觉SLAM的理论基础,并且还远远不够不够,所以前面的都要看完再学SLAM
  • 机器人学导论 https://book.douban.com/subject/1831719/
  • 李代数和表示论导论 https://book.douban.com/subject/1943992/
  • 机器人学中的状态估计 https://book.douban.com/subject/30383554/
  • 视觉SLAM十四讲 https://book.douban.com/subject/27028215/
  • 概率机器人 https://book.douban.com/subject/27046473/
  • 另外ROS机器人软件框架不可不提:http://www.ros.org/

5.4 强化学习

个人不是很了解,推荐一些网传好书和优秀课程。

课程

  • CMU Deep Reinforcement Learning & Control https://www.cmucoursefind.xyz/courses/10-703/s17
  • 伯克利 Deep Reinforcement Learning http://rail.eecs.berkeley.edu/deeprlcourse/
  • 斯坦福 CS234 Reinforcement Learning http://web.stanford.edu/class/cs234/index.html

书籍

  • Reinforcement Learning: An Introduction https://book.douban.com/subject/2866455/
  • Algorithms for Reinforcement Learning https://book.douban.com/subject/10220019/
  • Dynamic Programming and Optimal Control https://book.douban.com/subject/2299336/

6. 论文

每个人需要根据自己选择的方向找论文,这里推荐一些图像分类、目标检测和语义分割方面的论文:

  • 图像分类
    • Handwritten Digit Recognition with a Back-Propagation Network(LeNet) [paper]
    • ImageNet Classification with Deep Convolutional Neural Networks(AlexNet) [paper]
    • Deep Sparse Rectifier Neural Networks(ReLU) paper
    • Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift(Batch-Norm) [paper]
    • Dropout: A Simple Way to Prevent Neural Networks from Overfitting(Dropout) [paper]
    • Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPP) [paper]
    • Very Deep Convolutional Networks For Large-Scale Image Recognition(VGG) [paper]
    • Network In Network
    • Highway Networks
    • Going Deeper with Convolutions(GoogleNet)
    • Rethinking the Inception Architecture for Computer Vision(Inception v3) [paper]
    • PolyNet: A Pursuit of Structural Diversity in Very Deep Networks(PolyNet) [paper]
    • PVANET: Deep but Lightweight Neural Networks for Real-time Object Detection(PVANet) [paper]
    • Deep Residual Learning for Image Recognition(ResNet)
    • Identity Mappings in Deep Residual Networks
    • Wide Residual Networks(Wide-ResNet)
    • Aggregated Residual Transformations for Deep Neural Networks
    • Xception: Deep Learning with Depthwise Separable Convolutions(Xception) [paper]
    • Densely Connected Convolutional Networks(DenseNet)
    • Squeeze-and-Excitation Networks(SENet) [paper]
    • MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(MobileNet) [paper]
    • ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices(ShuffleNet) [paper]
  • 目标检测
    • Rich feature hierarchies for accurate object detection and semantic segmentation(RCNN)
    • Fast R-CNN
    • Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
    • DenseBox: Unifying Landmark Localization with End to End Object Detection(DenseBox) [paper]
    • You Only Look Once: Unified, Real-Time Object Detection(YOLO) [paper]
    • SSD: Single Shot MultiBox Detector(SSD) [paper]
    • DSSD : Deconvolutional Single Shot Detector(DSSD) [paper]
    • R-FCN: Object Detection via Region-based Fully Convolutional Networks(RFCN) [paper]
    • Feature Pyramid Networks for Object Detection(FPN) [paper]
    • Mask R-CNN [paper]
    • Focal Loss for Dense Object Detection(RetinaNet) [paper]
    • RON: Reverse Connection with Objectness Prior Networks for Object Detection(RON) [paper]
    • Deformable Convolutional Networks [paper]
    • Single-Shot Refinement Neural Network for Object Detection [paper]
    • Light-Head R-CNN: In Defense of Two-Stage Object Detector [paper]
  • 语义分割
    • Fully Convolutional Networks for Semantic Segmentation(FCN)
    • Learning Deconvolution Network for Semantic Segmentation(Deconv)
    • Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials
    • Conditional Random Fields as Recurrent Neural Networks(CRFasRNN)
    • Semantic Image Segmentation via Deep Parsing Network(DPN)
    • Efficient Piecewise Training of Deep Structured Models for Semantic Segmentation
    • Exploring Context with Deep Structured models for Semantic Segmentation
    • Semantic Image Segmentation with Deep Convolutional Nets and Fully Connected CRFs(Deeplab v1)
    • DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution,and Fully Connected CRFs(Deeplab v2)
    • RefineNet: Multi-Path Refinement Networks for High-Resolution Semantic Segmentation(RefineNet)
    • Understanding Convolution for Semantic Segmentation(DUC)
    • Wider or Deeper: Revisiting the ResNet Model for Visual Recognition
    • Not All Pixels Are Equal: Difficulty-aware Semantic Segmentation via Deep Layer Cascade
    • Loss Max-Pooling for Semantic Image Segmentation
    • Pyramid Scene Parsing Network(PSPNet)
    • Large Kernel Matters – Improve Semantic Segmentation by Global Convolutional Network(GCN)
    • Rethinking Atrous Convolution for Semantic Image Segmentation(Deeplab v3)
    • Global-residual and Local-boundary Refinement Networks for Rectifying Scene Parsing Predictions
    • Stacked Deconvolutional Network for Semantic Segmentation(SDN)
    • Learning a Discriminative Feature Network for Semantic Segmentation(DFN)[paper]
    • DenseASPP for Semantic Segmentation in Street Scenes
    • Context Encoding for Semantic Segmentation
    • Dynamic-structured Semantic Propagation Network
    • The Lovasz-Softmax loss: A tractable surrogate for the optimization of the intersection-over-union measure in neural networks
    • Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation

7. 总结

总体而言,如果不是需要做很深入的基础研究的话,无论是统计学习还是深度学习,难度都不是很大,只要具备理工科硕、博士研究生水平的数学基础就可以无障碍学习。博士的话可以在数学基础方面深入学习,硕士时间有限,视自身能力决定是否去深入那些晦涩、基础的大部头书籍。(本文推荐的课程难度都不会很大,硕博士都可以学的)

最后,祝大家学习快乐!

你可能感兴趣的:(机器学习,机器视觉)