从线性回归到神经网络,机器学习工程师的进阶之路

2017-09-29 07:52AndreyNikishaev编译陈晓李冉冉
机器人产业 2017年5期
关键词:冉冉陈晓教程

□文/Andrey Nikishaev □编译/陈晓、李冉冉

从线性回归到神经网络,机器学习工程师的进阶之路

□文/Andrey Nikishaev □编译/陈晓、李冉冉

在开始之前,我想告诉大家,我们将从最简单的线性回归开始,一直到最新的神经网络,从而让你能够了解机器学习的所有方面,相信你学习之后,不仅懂得该如何使用它们,还知道该如何从头开始构建它们。

其实,这条学习之路中大部分知识是基于计算机视觉(CV)的,因为它是一条获得一般知识的最佳捷径,而从CV中获得的经验知识可以简单地转移到任何机器学习(ML)领域。

我们将使用TensorFlow作为ML框架,因为它是最有前途且早已准备充足的学习材料。

还有一点需要声明的是,如果你现在正在学习相关理论和材料,且同时不断地从已学材料中获得经验的话,学习效果将会更好。

此外,如果你想与那些能够解决现实生活问题的人竞争,我建议你在Kaggle上注册成为会员,以学习更多知识,因为它可能会成为你的简历中一个很好的加分项。

你需要掌握什么

你需要会Python,当然,你不必成为一位导师,只要将基础的知识掌握牢靠就很好了。关于其他任何相关知识,这里有补充手册。

课程

1.约翰霍普金斯大学的实用机器学习

(https://www.coursera.org/learn/practical-machine-learning)

2.斯坦福大学的机器学习

(https://www.coursera.org/learn/machine-learning)

前两个课程主要讲的是数据科学和机器学习的基本知识,从而使你为开始一个真正的机器学习的艰难旅程准备充分。

3.CS231n:用于视觉识别的卷积神经网络 2017(http://cs231n.stanford.edu/)

(2016的版本在此处

http://academictorrents.com/details/46c5af 9e2075d9af06f280b55b65cf9b44eb9fe7)

这就是你开始要好好学习的东西,这是你能够在互联网上找到关于ML和CV的最好的课程。它不仅会告诉你这个领域的知识有多么深,而且还会为你提供进一步调查的良好基础。

4.Google深度学习(https://www.udacity.com/course/deep-learning--ud730)

这是可选课程,你可以只选择其中的实用部分。

5.CS224d:用于自然语言处理的深度学习(http://cs224d.stanford.edu/)

对于那些想要掌握自然语言处理的人来说这是一个可选课程。不过,它确实很棒。

6.深度学习教材(https://leonardoaraujosantos.gitbooks.io/artificial-inteligence/content/)

这是涵盖了ML许多方面的实用手册。

实践教程

下面包括许多教程和项目,你可以试着去运行相关程序,了解它们的工作原理,并考虑该如何改进它们。创建这个列表的目的就是增加你在ML领域的专业知识和兴趣,所以即使有些任务对你来说很难,也不要害怕,你可以在准备就绪时再回头开始尝试。

1.来自Kadenze的Tensorflow的简单实践 课 程(https://www.kadenze.com/courses/creative-applications-of-deep-learning-withtensorflow-iv/info)

2.Tensorflow教学集(https://github.com/nfmcclure/tensorflow_cookbook)

3.Tensorflow-101教程集

(https://github.com/sjchoi86/Tensorflow-101)

4.快速风格迁移网络

(https://github.com/lengstrom/faststyle-transfer)

这将显示如何使用神经网络将名画中的风格迁移到任何照片中。

5.图像分割

(https://github.com/MarvinTeichmann/tensorflow-fcn)

6.使用SSD进行目标检测

(https://github.com/balancap/SSDTensorflow)

用于目标检测的最快(也更为简单)的模型之一。

7.用于目标检测和分割的快速掩码RCNN(https://github.com/CharlesShang/FastMaskRCNN)

8.强化学习

(https://github.com/dennybritz/reinforcement-learning)

非常有用的知识,特别是如果你想“制造”一个机器人或下一个Dota AI。

9.来自Google Brain团队的Magenta项目

(https://github.com/tensorflow/magenta/tree/master/magenta/models)

旨在通过神经网络创造令人信服的艺术和音乐项目,结果非常显著。

10.用于实时图像增强的深度双边学习(https://groups.csail.mit.edu/graphics/hdrnet/)

来自Google最新的用于照片增强的神奇算法。

11.自动驾驶项目

(https://github.com/udacity/selfdriving-car)

想让你的汽车实现全自动?——这是一个很好的起点。

常见问题解答

如果你被难住了怎么办?

首先,你必须明白,机器学习不是100%精确的——大多数情况只是一个很好的猜测和大量的优化迭代。所以在大多数情况下想出一些独特的想法是非常困难的,因为你将花大量的时间和资源来训练模型。所以不要试图自己找出解决方案——你应该搜索论文、项目以及寻找可以帮助你的人。这样,你会更快更好地获得经验。

一些可以帮助你的网站:http://www.gitxiv.com/,http://www.arxiv-sanity.com/,https://arxiv.org/,https://stackoverflow.com。

为什么论文不能完全解决问题,甚至有些地方是错的?

很可惜,但并不是所有的科技人员都想公开他们的研究成果,但他们都需要通过发表出版物才能获得资助和成功。所以其中有些只是发布资料的一部分,或者故意在公式中出错。这就是为什么总是能更好地搜索到代码而不是论文。你应该把这些论文当成一个论据或者某个问题解决的事实。

在哪里可以找到最新的资料?

你使用这几个网站http://www.gitxiv.com/,http://www.arxiv-sanity.com/,https://arxiv.org/。第一个网站不仅仅是一篇论文,还包含代码资源,所以更实用。

我应该使用云端还是PC /笔记本电脑进行计算?

云是最适合计算生产模型的。对于学习和测试,使用CUDA显卡的PC /笔记本电脑要经济得多。例如,我用GTX GeForce 960M和690 CUDA内核在笔记本上训练所有模型。

当然,如果你有云或免费资助的设备,可以使用它。

如何改进模型超参数的优化?

在训练中遇到的主要问题是时间,你不能只是坐着观看训练统计数据,因此,我建议你使用GridSearch。基本上,只需创建一组超参数和模型体系结构,然后一个接一个地运行它们,保存结果就可以了。因此,你可以在晚上进行训练,在第二天比较结果,找到最为合适的那一个。

你可以在sklearn库中查看这个过程是如何完成的:http://scikit-learn.org/stable/modules/grid_search.html。

陈晓本刊特约撰稿人

李冉冉本刊特约撰稿人

猜你喜欢
冉冉陈晓教程
Integration of Communicative Language Teaching and Speech Acts
挽碧制作教程
编读往来
《那年花开月正圆》东方开播 孙俪:和陈晓一言不合就开打
A Pragmatic Study of Gender Differences in Verbal Communication
难考的驾照
O/O型未定式极限的求法总结
嘟嘟学成语
How to Improve the English Learner’s Listening Drills