眼下,人工智能已经成为愈来愈火的一个方向。普通程序员,如何转向人工智能方向,是知乎上的一个问题。本文是我对此问题的一个回答的归档版。相比原回答有所内容增长。php
一. 目的html
本文的目的是给出一个简单的,平滑的,易于实现的学习方法,帮助 “普通” 程序员踏入AI领域这个门。这里,我对普通程序员的定义是:拥有大学本科知识;平时工做较忙;本身能获取的数据有限。所以,本文更像是一篇 “from the scratch” 的AI入门教程。git
二. AI领域简介程序员
AI,也就是人工智能,并不只仅包括机器学习。曾经,符号与逻辑被认为是人工智能实现的关键,而现在则是基于统计的机器学习占据了主导地位。最近火热的深度学习正是机器学习中的一个子项。目前能够说,学习AI主要的是学习机器学习。可是,人工智能并不等同于机器学习,这点在进入这个领域时必定要认识清楚。关于AI领域的发展历史介绍推荐看周老师写的《机器学习简介》。下面一个问题是:AI的门好跨么?其实很很差跨。咱们以机器学习为例。在学习过程当中,你会面对大量复杂的公式,在实际项目中会面对数据的缺少,以及艰辛的调参等。若是仅仅是由于以为这个方向将来会“火”的话,那么这些困难会容易让人放弃。考虑到普通程序员的特色,而要学习如此困难的学科,是否就是没有门路的?答案是否认的。只要制定合适的学习方法便可。github
三. 学习方法算法
学习方法的设定简单说就是回答如下几个问题:我要学的是什么?我怎样学习?我如何去学习?这三个问题归纳说就是:学习目标,学习方针与学习计划。学习目标比较清楚,就是踏入AI领域这个门。这个目标不大,所以实现起来也较为容易。“过大的目标时就是为了你往后放弃它时找到了足够的理由”。学习方针能够总结为 “兴趣为先,践学结合”。简单说就是先培养兴趣,而后学习中把实践穿插进来,螺旋式提升。这种方式学习效果好,并且不容易让人放弃。有了学习方针之后,就能够制定学习计划,也称为学习路线。下面就是学习路线的介绍。网络
四. 学习路线机器学习
我推荐的学习路线是这样的,以下图:jsp
图1 AI领域学习路线图工具
这个学习路线是这样设计的:首先了解这个领域,创建起全面的视野,培养起充足的兴趣,而后开始学习机器学习的基础,这里选择一门由浅入深的课程来学习,课程最好有足够的实验可以进行实战。基础打下后,对机器学习已经有了充足的了解,能够用机器学习来解决一个实际的问题。这时仍是能够把机器学习方法看成一个黑盒子来处理的。实战经验积累之后,能够考虑继续进行学习。这时候有两个选择,深度学习或者继续机器学习。深度学习是目前最火热的机器学习方向,其中一些方法已经跟传统的机器学习不太同样,所以能够单独学习。除了深度学习之外,机器学习还包括统计学习,集成学习等实用方法。若是条件足够,能够同时学习二者,一些规律对二者是共通的。学习完后,你已经具有了较强的知识储备,能够进入较难的实战。这时候有两个选择,工业界的能够选择看开源项目,以改代码为目的来读代码;学术界的能够看特定领域的论文,为解决问题而想发论文。不管哪者,都须要知识过硬,以及较强的编码能力,所以很能考察和锻炼水平。通过这个阶段之后,能够说是踏入AI领域的门了。“师傅领进门,修行在我的”。以后的路就要本身走了。
下面是关于每一个阶段的具体介绍:
0.领域了解
在学习任何一门知识以前,首先第一步就是了解这个知识是什么?它能作什么事?它的价值在什么地方?若是不理解这些的话,那么学习自己就是一个没有方向的舟,不知道驶向何处,也极易有沉船的风险。了解这些问题后,你才能培养出兴趣,兴趣是最好的引路人,学习的动力与持久力才能让你应付接下来的若干个阶段。关于机器学习是什么,能作什么,它与深度学习以及人工智能的关系,能够看我写的博客 从机器学习谈起:
1.知识准备
若是你离校太久,或者以为基础不牢,最好事先作一下准备复习工做。“工欲善其事,必先利其器”。如下的准备工做很少,但足以应付后面阶段的学习。
2.机器学习
机器学习的第一门课程首推Andrew Ng的机器学习。这门课程有如下特色:难度适中,同时有足够的实战例子,很是适合第一次学习的人。cs229 这门课程我这里不推荐,为何,缘由有如下:
3.实践作项目
学习完了基础课程,你对机器学习就有了初步了解。如今使用它们是没有问题的,你能够把机器学习算法看成黑盒子,放进去数据,就会有结果。在实战中你更须要去关心如何获取数据,以及怎么调参等。若是有时间,本身动手作一个简单的实践项目是最好的。这里须要选择一个应用方向,是图像(计算机视觉),音频(语音识别),仍是文本(天然语言处理)。这里推荐选择图像领域,这里面的开源项目较多,入门也较简单,可使用OpenCV作开发,里面已经实现好了神经网络,SVM等机器学习算法。项目作好后,能够开源到到 Github 上面,而后不断完善它。实战项目作完后,你能够继续进一步深刻学习,这时候有两个选择,深度学习和继续机器学习;
4.深度学习
深度学习:深度学习是目前最火热的研究方向。有如下特色:知识更新快,较为零碎,没有系统讲解的书。所以学习的资源也相对零散,下面是一些资源介绍。其中不推荐的部分并不表明很差,而是在这个初学阶段不合适:
5.继续机器学习
深度学习未必就是将来的必定主流,至少一些大牛是这么认为的。传统的机器学习有以下特色,知识系统化,有相对经典的书。其中统计学习(表明SVM)与集成学习(表明adaboost)是在实践中使用很是多的技术。下面是相关资源:
6.开源项目
当知识储备较为充足时,学习能够再次转入实践阶段。这时候的实践仍然能够分两步走,学习经典的开源项目或者发表高质量的论文。开源项目的学习应该以尽可能以优化为目的,单纯为读代码而学习效果每每不太好。好的开源项目均可以在Github 里搜索。这里以深度学习为例。深度学习的开源优秀库有不少,例如torch,theano等等,这里列举其中的两个:
7.会议论文
较好的课程都会推荐你一些论文。一些著名的技术与方法每每诞生于一些重要的会议。所以,看往年的会议论文是深刻学习的方法。在这时,一些论文中的内容会驱使你学习数学中你不擅长的部分。有时候你会以为数学知识储备不够,所以每每须要学习一些辅助课程。当你看完足够的论文之后,在这个阶段,若是是在校学生,能够选择某个课题,以发论文为目的来学习研究。通常来讲,论文是工做的产物。有时候一篇基于实验的论文每每须要你写代码或者基于开源项目。所以开源项目的学习与会议论文的工做二者之间是有相关的。二者能够同时进行学习。关于在哪里看论文,能够看一下CCF推荐排名,了解一下这个领域里有哪些优秀的会议。下面介绍两个图像与机器学习领域的著名顶级会议:
原文地址:http://www.cnblogs.com/subconscious/p/6240151.html
8.自由学习
自由学习:到这里了,能够说是进入这个门了。下面能够依据兴趣来自由学习。前阶段不推荐的学习资源也可随意学习,下面是点评:
五. 总结
本文的目的是帮助对AI领域了解不深,但又想进入的同窗踏入这个门。这里只说踏入,是由于这个领域的专精实在很是困难,须要数年的积累与努力。在进行领域学习前,充分认识本身的特色,制定合适的学习方法是十分重要的。首先得对这个领域进行充分了解,培养兴趣。在学习时,保持着按部就班的学习方针,不要猛进的学习过难资源;结合着学习与实践相辅的策略,不要只读只看,实际动手才有成就感。学习某个资源时要有充分的目的,不是为了学开源项目而看代码,而是为了写开源项目而看;不是为了发论文而写论文,而是为了作事情而写论文。若是一个学习资源对你过难,并不表明必定是你的问题,多是学习资源的演讲或撰写人的问题。能把难的问题讲简单的人才是真正有水平的人。因此,必定要学习优质资源,而不是不分青红皂白的学习。最后,牢记以兴趣来学习。学习的时间很长,过程也很艰难,而只有兴趣才是让你锲而不舍,攻克难关的最佳助力。