在 github 上发现了一套关于机器学习的学习路径,主要包含 Scikit-learn 和 基于TensorFlow的深度学习 两部分学习内容。博主最近正在尝试学习深度学习,所以想按照深度学习的路径走一遍并将各路径节点翻译出来,一方面给自己坚持下去的动力,另一方面可以提供给其他人作参考。
再次,以下部分为翻译,原文见 https://github.com/clone95/Virgilio/tree/master/LearningPaths/Machine%20Learning%20Engineer%20Career%20Path
在这一部分,我们将从零基础向神经网络全面理解进发,感谢斯坦福大学深度学习课程和一些我在网上搜索到的教程。学习的材料部分来自于谷歌,部分来自于斯坦福和剑桥大学。通过学习这些内容,你可以做到将神经网络(ANN, CNN, RNN)应用于一些机器学习任务中。这些是TensorFlow应用案例。
学习神经网络的理论和应用并不是一件容易的事情。你可能需要重复地学习这些教程才能真正地理解。
在学习完我们提供的 TensorFlow 教程,循环地进行以下三个步骤:
1. 通过学习斯坦福的课程获得对深度学习的整体印象,不要太纠结与数学表达式,重点关注 what and why。
2. 通过理论+教程+例子(比如:RNN 理论 + RNN 教程 + RNN 应用实战)就一种类型的神经网络持续探索一
段时间,你所需要的资源都会在后续文章中列出来。
3. 在对每种类型的神经网络都使用步骤2中的过程迭代学习了一遍后,再学习一遍斯坦福的课程。这次你就可以
真正地理解所有的共识,并将它们关联起来,捕捉到贯穿在整套课程中的“数学流”
迭代过程(1-2-2-2-2.....-3)可以根据你个人的情况重复很多次,在每次迭代过程中你可以略过一个或几个话题,并专注于一个或多个你更感兴趣的或者你还不太清楚的话题上。
在本文的每个部分中,我都会放一些你初次接触时学习的内容,同时也会放一些在之后的重复学习过程中,你需要进一步学习的内容(在你经过了步骤3之后)。
斯坦福的课程视频以及ppt可以在这里找到。中文版的在这里。MIT的课程也可以作为替代,两门课内容是差不多的。两门课程可以都学习一下,然后做个对比,对于学习的东西会有更多的理解。
这是我在每部分中提到的书。
为什么选择 TensorFlow?
TensorFlow 由 Google Brain 创建,是一个用于数学计算和大规模机器学习的开源库。TensorFlow 集合了一系列的机器学习和深度学习(神经网络)模型和算法。它使用 Python 作为前端 API 语言以在框架中构建应用程序,使用C++语言高性能地执行这些应用。TensorFlow 是大多数行业规模公司实现机器学习算法的标准,它是为大规模数据而构建的,具有很多非常酷的特性,可以在多个GPU或硬件设施上并行训练模型。
安装并使用 TensorFlow
如果你已经安装了Python环境,那么要安装TensorFlow只需要在Python安装路径下打开 Ternimal 并运行如下命令:
python pip install tensorflow
第一个推荐给你阅读的是这个,第二件要做的事情是从 Google Education 网站上直接读 Introduction to TensorFlow,再次,一些理论概念可能不太清楚,但是只要集中于理解 TensorFlow 库及其处理流程是如何构建的即可。这是后者的一份很好的简要说明。另外一个来自于谷歌的初学者指南。这个是关于 TensorFlow 2.0 更新的。这些 1 和 2 很好地解释了掌握 TensorFlow 过程中最难的部分。强烈推荐。
现在你对 TensorFlow 这一工具应该已经熟悉的差不多了,是时候知道如何使用它来构建大规模神经网络了。
编者按:Keras 提供了 TensorFlow 更上层的接口,如果读者不想了解TensorFlow 的细节,只需要模块化,那么Keras 是初学者不错的选择。Keras 中文参考教程。
ANN - Artificial Neural Networks (人工神经网络)
第一遍学习(有序的):
- 这个视频
- 这个是你的“圣经”,完全理解它
- 这个是一颗宝石,从作者那里直接阅读它
- 这个是一个语速非常快的人从零开始实现人工神经网络,非常有助于理解怎样使用Python实现神经网络核心。你可想象为,每个现有的框架只是这个概念库的一个巨大扩展
- 这是一个逐步的基于微积分的 backpropagation 反向传播的例子。
第二遍学习:
Tips 和 最佳实践:1, 2, 3, 4, 5, 6, 7, 8
CNN - Convolutional Neural Networks
第一遍学习(有序的):
第二遍学习:
Tips 和 最佳实践:1, 2, 3, 4, 5, 6, 7, 8
RNN - Recurrent Neural Networks
第一遍学习(有序的):
第二遍学习:
Tips 和 最佳实践:1, 2, 3, 4, 5, 6, 7
训练神经网络:最佳实践
第一遍学习(有序的):强烈推荐这个来自于斯坦福的网页作为参考,并且浏览模块 1 和 2。同时也列举了在实际训练神经网络过程中会碰到的常见话题如下。
- 过拟合 VS 欠拟合:1, 2, 3, 4, 5
- 梯度消失/爆炸:1, 2, 3, 4, 5
- 迁移学习(Transfer Learning):1, 2, 3, 4, 5
- 更快的优化器:1, 2, 3, 4
- 通过引入正则化避免过拟合:1, 2, 3, 4
第二遍学习:
自编码 AutoEncoders
第一遍学习(有序的):
第二遍学习:
强化学习 Reinforcement Learning
第一遍学习(有序的):
第二遍学习:
实用推荐
在过去的两年中,我收集了大量的文章、web apps、reddit 订阅、最佳实践、项目和代码仓库,我想和你分享这些知识,所以按照类型将这些资源整理如下:
机器学习项目
工具
Youtube 频道
博客
- How to build a data science portfolio
- Distill blog
- Keras
- Paolo Galeone blog
- TensorFlow official blog
- KD Nuggets
- Incredible Graphic explanations
- Towards Data Science
- Machine Learning Mastery
- Mathspp blog
值得一看的网站
- A super curated list of Data Science resources
- The best machine learning short book I've ever read
- A monster collection of Data related free course
- Machine Learning Map
- Data modeling for Business Intelligence
- Statistics explained
- Visualizing data - Tutorials
- Fast.ai
- Open.ai
- Explained.ai
- Machine Learning Glossary
- Python ML Tutorials
- For Italian Learners!
- Immersive math
- DeepLizard
- Common Statistical Fallacies
- Scikit-Learn practical recipes
值得订阅的 Subreddits