普通程序员如何向人工智能转型?

目前,人工智能已经成为一个越来越热门的方向。普通程序员如何转向人工智能,是知乎的问题。

一.目的

本文旨在给出一种简单、流畅、易于实现的学习方法,帮助“普通”程序员步入AI领域。在这里,我对普通程序员的定义是:具有本科知识;平时工作忙;你能得到的数据是有限的。所以,这篇文章更像是一篇“从头开始”的AI入门教程。

二。人工智能领域导论

AI,也就是人工智能,不仅仅包括机器学习。曾经,符号和逻辑被认为是人工智能实现的关键,但现在基于统计学的机器学习占据了主导地位。最近火热的深度学习是机器学习的一个子项。目前可以说学习AI主要是学习机器学习。

但是,人工智能不等同于机器学习,进入这个领域一定要搞清楚。关于AI领域发展历史的介绍,推荐看周老师写的《机器学习导论》。接下来的问题是:AI的门好跨吗?其实很难跨越。我们以机器学习为例。

在学习的过程中,你会面临大量复杂的公式,实际项目中缺乏数据,参数调整困难。如果你只是觉得这个方向以后会很“热”,那么这些困难很容易让人放弃。考虑到普通程序员的特点,是不是学不到这么难的学科?答案是否定的,只要制定合适的学习方法。

三。学习方法

学习方法的设定简单来说就是回答以下问题:我要学什么?我如何学习?我如何学习?这三个问题可以概括为:学习目标、学习政策、学习计划。学习目标很明确,就是踏入AI领域。这个目标不大,所以比较容易实现。太大的目标是为你将来放弃它找到足够的理由。

学习方针可以概括为“兴趣第一,实践与学习相结合”。简单来说就是先培养兴趣,然后在学习中穿插练习,螺旋式提升。这种学习方式是有效的,不容易放弃。有了学习方针之后,你就可以制定学习计划,也就是所谓的学习路线。下面是学习路线的介绍。

四。学习路线

我推荐的学习路线如下:

这个学习路线是这样设计的:首先了解这个领域,建立全面的视野,培养足够的兴趣,然后开始学习机器学习的基础。这里选择由浅入深的课程,最好有足够的实验进行实战。基础打好之后,对机器学习有了很好的了解,就可以用机器学习解决一个实际问题了。

这个时候,机器学习的方法还是可以当作黑盒来处理的。积累实战经验后,可以考虑继续学习。这时候有两个选择,深度学习或者继续机器学习。深度学习是目前机器学习最热的方向,有些方法和传统的机器学习不太一样,可以单独学习。除了深度学习,机器学习还包括统计学习、集成学习等实用方法。

如果条件充分,可以两者同时学习,有些规律是两者共有的。经过学习,你已经有了很强的知识储备,可以进入更高难度的实战。这个时候,有两个选择。业内人士可以选择查看开源项目并阅读代码,以便更改代码。学术可以看特定领域的论文,想发表论文解决问题。

无论哪种方式,都需要过硬的知识和强大的编码能力,这样才能考察和锻炼自己的水平。过了这个阶段,可以说是进入了AI领域的大门。“师傅领进门,修行在个人。”之后,我得自己走了。

以下是关于每个阶段的详细介绍:

0.领域理解

在学习任何知识之前,首先要知道这个知识是什么。它能做什么?它的价值在哪里?如果你不懂这些东西,那么学习本身就是一艘没有方向的船。如果你不知道向哪里航行,你将有沉没的危险。只有了解了这些问题,你才能培养兴趣,兴趣是最好的向导,学习的动力和耐力才能让你应对接下来的几个阶段。关于机器学习是什么,能做什么,和深度学习、人工智能的关系,可以看我的博客《机器学习》。

1.知识准备

如果你离开学校太久,或者觉得自己基础不扎实,最好提前做一些准备和复习。工欲善其事,必先利其器。下面的准备工作不多,但足以应付后期的学习。

数学:复习以下基础知识。线性代数:矩阵乘法;高数:导数;概率论:条件和后验概率。其他知识可以在后期的学习过程中根据需要补充;

英语:保留一本在线英语词典,比如爱词霸,这样你可以毫无困难地阅读一些英语信息页面;

FQ:你可以随时随地访问谷歌,这是一个非常重要的工具。不是说百度看不到,但是很多时候,谷歌搜索到的信息比百度搜索到的几十页更有用,尤其是搜索英文关键词的时候。节省时间可以是学习效率的重要提高;

2.机器学习

机器学习的第一门课是吴恩达的机器学习。这门课有以下几个特点:难度适中,有足够多的实际例子,非常适合初学的人。这里不推荐cs229。为什么?有以下几个原因:

时间:cs229太早,有些知识跟不上今天的发展。目前最火的神经网络已经被刷到一边。但是Cousera花了两个小时来讲神经网络!而且非常详细;教学:ng在cs229的教学有点青涩,可能是面对网络教学的原因。有很多问题他没有说清楚,下面人的问题其实很烦。你往往不关心那些人的问题。这一点在Coursera上有了明显的改善。你会发现Ng的教学水平有了很大的提高。他会给你一个有说服力的,推心置腹的教导,会告诉你遇到不懂的单词和术语不要着急。更重要的是,推演和图表不要太完美,要非常详细清晰。这个真的非常推荐。字幕:cs229的字幕质量比Coursera差。Coursera上的中文字幕翻译是经过很多人把关的,质量有保证。作业:cs229没有作业。虽然可以做一些,但是没人看。这远远少于Coursera每周的作业,每份作业都是有分数提交的。更重要的是,每一个作业都有实际的例子,让你可以动手练习,可以看到自己的成果,有满满的成就感!

3.练习做项目

学完基础课,你会对机器学习有一个初步的了解。现在用它们没问题。你可以把机器学习算法当成黑匣子,把数据放进去,就会有结果。在实战中,你需要更加关注如何获取数据,如何调整参数。如果有时间,最好自己做一个简单实用的项目。

这里我们需要选择一个应用方向,是图像(计算机视觉)、音频(语音识别)还是文本(自然语言处理)。这里建议选择图像领域,这里开源项目比较多,入门也比较简单。OpenCV可用于开发,神经网络、SVM等机器学习算法已经实现。项目完成后,可以开源到Github,然后不断完善。实战项目完成后,可以继续深造。这时候有两个选择,深度学习和继续机器学习;

4.深度学习

深度学习:深度学习是目前最热门的研究方向。它有以下特点:知识更新快,碎片化,没有系统的书来讲解。所以学习的资源比较分散。下面是一些资源介绍。不推荐的部分不代表不好,只是在这个初学者阶段不适合:

推荐,UFLDL:非常好的DL基础教程,也是吴恩达写的。有非常详细的推导和翻译,翻译质量非常高;推荐,深度学习(论文):深度学习领域三大牛写的《自然》2015的论文,给人的感觉是高屋建瓴,其他的山都显得相形见绌。,强烈推荐。如果你只能看一篇论文来理解深度学习,我推荐这一篇。这篇论文有一个同名的中文译本;推荐,神经网络与深度学习:这本书的作者非常擅长用简单的语言表达深刻的道理。虽然没有翻译,但读起来并不难;推荐,递归神经网络:我会用一个实际案例告诉你什么是RNN。整个教程讲完,你会对RNN是如何工作的有一个清晰的认识,这种效果甚至是看几篇相关论文都没有的;不推荐,用于机器学习的神经网络多伦多大学Coursera:深度学习创始人教的课程最大的问题就是太难了,老先生的吐字有时候不是很标准;不推荐,深度学习(书):也是深度学习大牛写的书,但是感觉像是第二作者写的,也就是他的学生。说了很多内容,但是感觉什么都没说。我只是告诉你是从那篇论文来的,所以直接看论文可能更合适。不推荐,cs231n:李菲菲著名课程,专注CNN。不过这门课最大的问题是没有字幕。虽然有youtube自动翻译的字幕,但有总比没有好。

5.继续机器学习

深度学习可能不是未来的主流,至少有些大牛是这么认为的。传统机器学习有以下特点:知识系统,书籍相对经典。其中,统计学习(以SVM为代表)和集成学习(以adaboost为代表)是实践中使用较多的技术。以下是相关资源:

推荐,机器学习():以前PRML是第一本关于机器学习的经典教材,但周老师的书出来后就不是这样了。首先推荐看周老师的书。这本书的一个特点是,即使是最难的道理,也能用简单简洁的语言表达出来。正如周老师的名言:“体现你水平的,是把难的事情变得容易,而不是把容易的事情变得困难。把一件事情变得困难,这太简单了”;

不推荐,模式识别和机器学习:现阶段不推荐。PRML从贝叶斯的角度看待很多机器学习方法,这也是它的一大特色。但对于初学者来说,这种观点其实是不必要的。而且这本书没有中文译本,所以现阶段很容易放弃;

6.开源项目

当知识储备充足时,学习可以再次转入实践阶段。这时候的做法还是可以分两步走,学习经典开源项目或者发表高质量论文。开源项目的学习要尽可能以优化为目的,单纯为了看代码的学习效果往往不太好。好的开源项目可以在Github中搜索。这里以深度学习为例。深度学习有很多优秀的开源库,比如torch,theano等。这是其中的两个:

推荐,DeepLearnToolbox:一个早期的深度学习库,用matlab语言写的,比较适合从新学过的课程转入学习。不幸的是,作者不再维护它;

推荐,tensorflow:Google的开源库,今天有4万多star,很神奇,支持移动设备;

7.会议论文

比较好的课程会给你推荐一些论文。一些著名的技术和方法往往诞生在一些重要的会议中。所以,阅读往年的会议论文是一种深入学习的方法。这时候有些论文的内容会驱使你去学习数学中你不擅长的部分。有时候觉得自己数学知识不够,经常需要学习一些辅助课程。

当你看够了论文,在这个阶段,如果你是在校学生,你可以选择一个课题,以发表论文为目的进行研究。一般来说,论文是工作的产物。有时候一篇基于实验的论文往往需要你写代码或者基于开源项目。所以开源项目的学习和会议论文的工作是有关联的。

两者可以同时学习。关于在哪里看论文,可以看看CCF推荐排名,了解一下这个领域有哪些优秀的会议。

这里有两个著名的图像和机器学习领域的顶级会议:

CVPR:它和另外两个会议,ICCV和ECCV,被称为计算机视觉领域的三大会议。注意大会主页每年都有变化,所以搜索需要添加年份;神经信息处理系统会议(conference on neural information processing systems):简称NIPS,上面发表了很多重要的著作,比如CNN的一篇重要论文就发表在上面;

8.自由学习

我们到了,可以说进入了这扇门。可以根据兴趣自由学习。前一阶段不推荐的学习资源也可以随意学习。以下是评论:

CS 229: NG写的讲义很好,其中SVM的推导很清楚,想学习SVM推荐。机器学习的神经网络:丹尼尔的视角只是与人的视角不同。看看Hinton对神经网络的看法,往往会给你一种原创的感觉。其实读这门课就相当于读一篇论文,因为几乎每门课的参考资料里都有论文让你读;视觉识别的对流神经网络:最新知识和详细作业。国内应该有团队翻译过字幕,你可以找找看。PRML:作为一本经典的机器学习书籍,很有必要读一读,会让你对机器学习有不一样的看法。

动词 (verb的缩写)摘要

本文旨在帮助对AI领域了解不多,但想入此门的同学。我在这里只说介入,是因为这个领域的专业化很难,需要多年的积累和努力。在进行领域学习之前,充分了解自己的特点,制定合适的学习方法是非常重要的。

首先要充分了解这个领域,培养兴趣。学习时,保持循序渐进的学习方针,不要急于学习难的资源;把学习和实践的策略结合起来,相辅相成,不要只是看着看着,真正去做的时候才会有成就感。学习一个资源,要有一个完整的目的,不是为了学习开源项目而读代码,而是为了写开源项目而读;写论文不是为了发表论文,而是为了做事。

本文来自微信官方账号:《大技术的集合》。冠珠了解大数据行业对大数据技术的学习和学习路线,有免费的学习资料。

如果一个学习资源对你来说太难,并不意味着一定是你的问题,而可能是学习资源的演讲者或作者的问题。只有能把难题变得简单的人,才是真正有能力的人。所以一定要学习优质资源,而不是乱学。最后,记得带着兴趣去学习。学习需要很长的时间,过程也很艰难,而只有兴趣才是对你持之以恒、克服困难的最好帮助。