从简单的线性回归(linear regressoin
)到最新的神经网络(neural network
),我们将引导你学习机器学习(ML:machine learning
)的各个方面,不仅学习如何使用它们,而且学习如何从头开始构建它们。
这条学习路径的很大一部分是以计算机视觉(CV: Computer Vision
)为导向的,因为它是获得机器学习领域的知识的最快方法,CV
的经验可以简单地转移到任何ML
领域。
我们将使用TensorFlow作为ML
框架,因为它是目前看来最有前途的机器学习框架,并且可以直接用于生产环境。
如果你在学习理论和实践的同时加以实践,那么学习效果会更好。
此外,如果你想尝试解决现实生活中的实际问题,我建议你在Kaggle注册,因为这种竞赛有助于丰富你的简历。
基本技能要求:Python。
你不需要是一个Python
专家,掌握基本的知识就够了。碰到问题可以查手册。
1. 课程
1.1 约翰霍普金斯大学的实用机器学习
网址: https://www.coursera.org/learn/practical-machine-learning
1.2 斯坦福大学的机器学习
网址: https://www.coursera.org/learn/machine-learning
这两个课程主要是关于数据科学和机器学习方面的基本知识,让你为解决真正的问题做好基础知识的准备。
1.3 Andrew Ng
的深度学习课程
网址:https://www.coursera.org/specializations/deep-learning
1.4 CS231n:用于视觉识别的卷积神经网络2017 ( 2016 )
网址:http://cs231n.stanford.edu/
这是你可以在互联网上找到有关ML&CV
的最好的课程之一。 它不仅会告诉你计算机视觉现在可以达到的高度,而且会帮你打好基础以便进一步深入。
1.5 Google深度学习
网址:https://www.udacity.com/course/deep-learning–ud730
可选课程。 你可以只学习其中的实战部分。
1.6 CS224d:使用深度学习进行自然语言处理
网址:http://cs224d.stanford.edu/
如果要使用自然语言处理(NLP: Natural Language Processing
)技术,可以选择这门课程。 嗯,很棒的课程。
1.7 深度学习书
网址:https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/
很好的手册,涵盖ML
的诸多方面。
2.实用部分
这份清单包括许多教程和项目,你可以尝试、理解它们是如何工作的,并考虑如何进行改进。 这个清单是为了增加你对ML
的专业知识了解和兴趣而整理的,所以如果其中某些任务对你现在来说还很难,那么不妨在你打好基础以后再回头学习。
2.1 Kadenze
的Tensorflow
简明实践课程
网址:https://www.kadenze.com/courses/creative-applications-of-deep-learning-with-tensorflow-iv/info
2.2 Tensorflow
码书
网址:https://github.com/nfmcclure/tensorflow_cookbook
2.3 Tensorflow-101
教程集
网址:https://github.com/sjchoi86/Tensorflow-101
2.4 快速风格迁移网络
网址:https://github.com/lengstrom/fast-style-transfer
讲解如何使用神经网络将绘画风格迁移到任何照片上。
2.5 图像分割
网址:https://github.com/MarvinTeichmann/tensorflow-fcn
2.6 使用SSD
进行对象检测
网址:https://github.com/balancap/SSD-Tensorflow
SSD
是用于对象检测的最快、也更简单的模型之一。
2.7 用于对象检测和分割的快速掩码递归卷积网络
网址:https://github.com/CharlesShang/FastMaskRCNN
2.8 强化学习
网址:https://github.com/dennybritz/reinforcement-learning
强化学习是非常有用的机器学习技术,特别是如果你想打造一个智能机器人或下一个Dota AI :)
2.9 来自Google Brain
团队的Magenta
项目
网址:https://github.com/tensorflow/magenta/tree/master/magenta/models
该项目旨在利用神经网络创作艺术和音乐。 成果相当可观。
2.10 用于实时图像增强的深度双边学习
网址:https://groups.csail.mit.edu/graphics/hdrnet/
来自Google
的新算法,用于图片增强
2.11 自动驾驶项目
网址:https://github.com/udacity/self-driving-car
想让你的车实现全自动驾驶? - 这是一个很好的起点。
3.常见问题
如果卡住了怎么办?
首先,你必须明白,ML
不是100%
精确的 - 大多数情况下只能是一个很好的猜测和大量的调整迭代。 因此,在大多数情况下,因为你花费在模型训练上的时间和资源的限制,靠自己提出一些独特的想法是非常困难的。 所以尽量不要试图自己找出解决方案 - 搜索论文、项目、可以帮助你的人。 越快获得经验越好。
有些网站可以帮助你:
为什么论文中有错误?
很可惜,但并不是所有的技术人员都想公开其工作,但是他们都需要出版物才能获得资助和声誉。 所以有些人只是公布一部分材料,或者是故意在公式中引入错误。 这就是为什么搜索代码要好于论文。 你应该把这些论文看作是某个问题已经得到解决的证据或事实。
在哪里可以找到最新的资料?
我使用这几个网站来跟踪机器学习领域的最新进展:
首先你可以找到的不仅仅是一篇论文,而且其中包含有实验代码,所以更实用。
使用云计算还是笔记本电脑?
云计算是密集型计算的最佳选择。 对于学习和测试而言,使用带有CUDA
图形卡的PC
/笔记本电脑则要便宜得多。 例如,我使用装有GTX GeForce 960M
显卡的笔记本电脑训练所有的模型。
当然,如果你已经有云或可以免费获得的云资源,可以使用它。
如何改进模型超参数的调整?
训练中的主要问题是需要时间。 你不能坐下来一直盯着训练数据看。 出于这个原因,我建议你使用网格搜索(grid search
)。 基本上,只需创建超参数集和模型体系结构,然后一个接一个地运行并保存结果。 因此,你可以在晚上进行训练,并在第二天比较结果,从而找出最好的参数。
你可以看看在sklearn
库中是如何进行网格搜索的,
建议你收藏这篇文章,我相信你会时不时地需要它:-)