如果你决心成为一名机器学习工程师的话,在这篇文章中,我们将从简单的线性回归到最新的神经网络,让你了解机器学习的所有方面,你不仅可以学习如何使用它们,还将学习如何从头开始构建它们。
本文的学习路径大部分基于计算机视觉(CV),因为它是获得各方面知识的最快途径,而从CV中获得的经验可以简单地转移到机器学习的任何一个领域。
我们将使用TensorFlow作为一个机器学习框架,因为它非常好用。TesnorFlow官方地址:https://www.tensorflow.org/
如果你同时学习了理论和实践材料,那么将会得到更好的学习结果和实用的学习材料。
前提要求:Python,你不需要在这方面是专家级别,只要懂得基本知识就好。
1.课程
1.1 约翰霍普金斯大学的实用机器学习;地址:https://www.coursera.org/learn/practical-machine-learning
1.2 斯坦福大学的机器学习;地址:https://www.coursera.org/learn/machine-learning
这两个课程将教给你关于数据科学和机器学习的基本知识。
1.3 CS231n:2017年用于视觉识别的卷积神经网络(2016);地址:http://cs231n.stanford.edu/
这是你在网上找到的关于机器学习和CV相关的最好课程之一。它能为你进一步的学习调查打下良好的基础。
1.4* 谷歌的深度学习;地址:https://www.udacity.com/course/deep-learning–ud730
可选择的课程。
1.5* CS224d:自然语言处理的深度学习;地址:http://cs224d.stanford.edu/
对于想要使用自然语言处理的人来说,也是可选择的课程。
1.6 * 深度学习的书籍;地址:https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/
涵盖许多机器学习的相关知识的手册,可选。
2.实践部分
这个列表包含许多教程和项目,你可以理解它们是如何工作的,并思考如何改进它们。创建这个列表是为了增加你对机器学习的专业知识和兴趣,所以不要害怕,如果有些任务对你来说很困难,你可以在你准备好的时候再开始实践。
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
对象检测的最快(也是最简单的)模型之一。
2.7 用于对象检测和分割的快速蒙版RCNN;地址:https://github.com/CharlesShang/FastMaskRCNN
2.8 强化学习;地址:https://github.com/dennybritz/reinforcement-learning
非常有用的东西,特别是在你想要创建一个机器人或下一个Dota AI上的时候。
2.9 谷歌大脑团队的Magenta项目;地址:https://github.com/tensorflow/magenta/tree/master/magenta/models
这个项目的目的是在神经网络的帮助下创造出引人注目的艺术和音乐作品,它的结果通常都是非常惊人的。
2.10 深度双边学习实时图像增强;地址:https://groups.csail.mit.edu/graphics/hdrnet/
这里包含了谷歌图片增强的新算法。
2.11 自驾车项目;地址:https://github.com/udacity/self-driving-car
想让你的车完全自动吗? -这是一个很好的学习起点。
3.常见问题解答
如果你在问题上卡住了怎么办?
首先,你必须知道机器学习并不是100%准确的——大多数情况只是一个很好的猜测和大量的调优迭代。因此,在大多数情况下,想出一些独特的见解是非常困难的,因为你将花费大量的时间和资源在训练模型上。所以,不要试图自己找到解决办法。
这有一些网站可以帮助你解决一些问题:
我在哪里可以找到新的学习材料?
我使用http://www.gitxiv.com/,http://www.arxiv-sanity.com/还有 https://arxiv.org/这三个网站。gitxiv这个网站不仅可以找到论文,而且还能找到相关代码,因此它对学习者来说更加实用。
我应该使用云或PC/笔记本电脑来计算吗?
云是最适合用于生产模型的密集计算。对于学习和测试,使用CUDA显卡的PC/笔记本电脑要便宜得多。例如,我在我的GTX GeForce 960M和690CUDA内核的笔记本电脑上训练所有模型的。当然,如果你有云的话,你可以使用它。
如何提高模型的超参数的调优?
训练的主要问题是时间。你不能只是坐在那里看训练数据。出于这个原因,我建议你使用网格搜索(Grid Search)。基本上,只需创建超参数和模型架构的集合,然后在流中运行它们,从而保存结果。因此,你可以在晚上进行训练,并在第二天比较结果,然后找到最良好的那个。
你可以在sklearn库看到这个过程是如何完成的。sklearn库地址:http://scikit-learn.org/stable/modules/grid_search.html
本文为编译作品,转载请注明出处,更多内容关注微信公众号:atyun_com