这是一个转型AI的励志故事,从非科班到拿下竞赛一等奖

作者:智亮,鲁朗软件联合创始人 
责编:胡永波 
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅《程序员》

在计算机行业,关于从业人员的素质,一直都有一个朴素的认识——科班出身好过非科班,学历高的好过学历低的。大部分时候,这个看法是对的。在学校学习,有老师指点,有同学讨论,有考试压迫,有项目练手。即便不大用心的学生,几年耳濡目染下来,毕业后作为半个专业人士,还是没什么问题的。

不过,量子物理告诉我们,这个世界的本质要看概率。所以,科班出身的同学,在技术上好过非科班出身的同学,这是大概率事件;相反,非机器学习专业,甚至非计算机专业的同学,在这个领域做的比本专业同学更好,则就是小概率事件了。但小概率事件并非“不可能事件”,国内很多做机器学习公司的CTO,都不是机器学习专业的科班出身,却能够抓住这里的“小概率”,让自己华丽地转身并实现弯道超车。

他们是怎么做到的?

如果在上学的时候,我们没能嗅到机器学习领域的机会,而是选择其他领域来学习和工作……如今却打算半路出家、改行机器学习,应该怎么做,才能做到跟这些人一样好?或者,至少是足够好?

我自己痛苦转型的经历,说出来可以供大家参考一下。

我也是非科班出身,但因为工作,一直需要接触计算机视觉的一些传统算法。后来,看到ImageNet竞赛的结果,我意识到了深度学习在视觉领域的巨大优势,遂决定开始转型深度学习和神经网络,走上了这条学习的不归路(笑)。

想要转型,跟上学的时候不同,因为手头正在做的工作意味着,自己需要从没有时间的情况下挤出时间,需要把别人睡觉、打游戏的时间用来学习,而所学的又是一种颇为艰深晦涩的学问。

转型,其实很容易,需要做到的只有一件事:学习。

转型,其实很困难,因为必须做到一件事:坚持学习。

最难的不是下定决心,而是贯彻到底。所以,在开始之前,不妨先问问自己这样几个问题:

“我真的已经想清楚,要踏足这个行业吗?” 
“我能够付出比其他人更多的辛苦汗水,在这条路上坚定地走下去吗?” 
“在遭受了痛苦甚至打击之后,我对机器学习的热爱,仍然能够维持我继续前进吗?”

根据我掌握的数据,100个程序员里大概有30个考虑过转型,而真正付诸行动的不过10个。一个月以后仍然在坚持的仅有5个,最终能完成第一个阶段学习的,最多两三个而已。

真的这么困难吗?是的。特别是你要白天上班,晚上才能学习,独学而无友,有问题又只能自己查。而要系统地入门,又不是咬牙一天两天就能学出来,恐怕得坚持几个月才能get到点。

我个人的经历是这样:一开始接触时,每周一、三、五固定3天时间,每晚花两个小时去学习、看视频、翻书,周六周日则用来完成课程附带的编程作业,大概也是每天两小时左右。在这种强度下坚持了三个月,我才算是完成了入门的第一步。

也许有的人效率更高一些,也许有的人步子更慢一些,但快和慢不是关键,即使学习最慢的人,也要比一开始放弃学习的人走得更远。

所以,其实真正重要的,不是“我该学什么”,或者“我该怎么学”;而是“我是不是真的有足够的决心”,以及“我是不是能坚持到底”。

上手的课程

定好决心后,我们就能看看:在学机器学习的时候,我们到底在学什么?

几乎所有人都知道人工智能这个概念;有一部分人知道“机器学习”这个概念;其中一小部分人能清楚描述“深度学习”、“机器学习”和“神经网络”的关系; 很少一部分人能够正确说明“卷积”、“池化”、“CTC”这些名词的正确含义与计算/实现的方法;非常少的人能清楚地理解损失函数和反向传播的数学表达;极少极少的人能够阐述网络的一个修改(比如把卷积核改小)对precision/recall会产生什么影响;几乎没有人能描述上述影响到底是什么原理。

这就是目前“程序员”这个群体,对于机器学习的了解程度。

我个人的经验,适用于“很少一部分人”之外的那“很大一部分人”,也就是说,他们最多知道深度学习是什么意思,神经网络又是什么概念,却并未真正系统地学习接触过这个领域。

在这之前,你所要用到的数学知识,只有以下这三点:

  1. 懂得矩阵运算的基本计算方法,能够手动计算[3×4]×[4×3]的矩阵,并明白为什么会得到一个[3×3]的矩阵。
  2. 懂得导数的基本含义,明白为什么可以利用导数来计算梯度,并实现迭代优化。
  3. 能够计算基本的先验及后验概率。
  4.  

编程语言与深度学习框架的选择

当然,作为开发者,想要去实现一个模型,绕不开的问题便是:

应该选择什么语言?应该选择什么框架?

对于开发人员而言,语言的选择其实不是问题。但作为入门,最为理所当然的建议则是Python,原因也非常简单:Python最好学。

对于机器学习的学习,使用Python就意味着你不必分心去学习那些复杂的数据类型约束以及转化、指针、内存管理或垃圾收集之类的“高级”(一般同时也代表着复杂)的特性,将精力集中在自己的目标上。当然,一些Python特有的方法(如lambda、yield或reduce)以及工具(如NumPy、pandas),还是需要多多使用,尽快熟练。

而框架方面,从使用者的维度去划分,当前数量非常之多的机器学习框架,则可大体上分为两大阵营。

学术友好型: Theano、Torch与Caffe

Caffe已算是最简单的了,但仍要经历漫长而痛苦的摸索历程。

工业友好型: Tensorflow、MXNet与Caffe

对于大多数有志于投身于机器学习开发(而非研究)的同学们来说,我推荐首选Tensorflow作为你的第一个开发框架。除了上述的优点之外,最主要的因素是它人气高。遇到任何问题,你都可以找到一群志同道合的伙伴们去咨询,或是一起研究。对于初学者而言,其重要程度不言而喻。

实战阶段的学习用机配置

接下来,我们就需要一台机器来把框架搭建起来,以编写和运行我们的helloAI。然而,我在很多地方都看到小伙伴们在问:

我需要什么样的配置能学机器学习? 
我需要买块GTX1080/TITAN/Tesla吗? 
我应该装几块显卡?一块?两块?还是四块?

而答案也往往倾向于:

“必须得有GPU啊,至少1080,没有四路Titan你都不好意思跟人打招呼!”

其实,并不完全是这样。

如果仅仅是入门和学习,CPU或GPU完全不影响你对代码和框架的学习。运行MNIST或CIFAR之类的玩具数据集,它们的差距并不大。以我的机器为例,运行自带的CIFAR demo,i7 CPU和GTX 1080 Ti的速度分别是770 pics/s和2200 pics/s。GPU大概有不到三倍的性能优势。所以,差距其实也没多大。

打好基础之后,跟踪论文并复现、学习和思考,这样的任务将成为你现阶段的一项日常作业,如果你已经进入或是决定进入这个行业的话。因为稍有懈怠,便要面临着被时代抛弃、跟不上节奏的情况。所以,到这一步,对于有些人来说是一个结束,而对另一些人来说,则才刚刚是开始。

这个时候,我们可以回过头来重新问问自己前面那几个问题:

“我真的已经想清楚,要踏足这个行业吗?” 
“我能够付出比其他人更多的辛苦汗水,在这条路上坚定地走下去吗?” 
“在遭受了痛苦甚至打击之后,我对机器学习的热爱,仍然能够维持我继续前进吗?”

这条路,我在走,很多人在走,那么,你来吗?


最后,再说一点题外话。

看到这里的各位,一定很希望自己的深度学习路上,能有这样一位具备成功转型经验的先行者来帮助自己趟坑。

智亮老师的想法也是一样的,为了让自身的实践经验能够转化成对大家真正有帮助的东西,他特地在CSDN学院开设了《人工智能工程师》实训班课程。

这是一项为期个月的趟坑实践,目的是通过全程的实战案例学习,能直接让你从AI小白晋级为具备一年实践经验的人工智能工程师。

仅需30秒,测试自己是否适合学习AI + 智亮老师的AI实训营地址:

https://edu.csdn.net/topic/ai20?utm_source=blog08

 

  • 课程内容包括机器学习和深度学习需要掌握的知识和系统图谱,每节课都配有实战案例,并提供GPU云实验平台进行案例实操,将理论知识与实际案例应用相结合,反复巩固,力助你成为一名合格的AI工程师。
  • 在这三个阶段的学习中,你将掌握机器学习原理和推荐系统的实现、深度学习入门与图像语义分割及写诗机器人的部署,还有专属GPU云平台上的四大工业级实战项目,全程实操大量工业级真实数据。
  • 同时,会有专人来跟踪你的学习进度,并根据你的数学和编程基础来制定专属学习计划,保证不掉队。两位大咖讲师在计算机视觉的产业界和学术界分别都有着深厚的经验,产、学、研结合紧密。

 

学成之日,还会有来自AI产业界的专业讲师来做就业指导,就业推荐。

欢迎踏上这趟人工智能工程师的直通车,成功转型的经验正在向你招手。

人工智能实训营地址

https://edu.csdn.net/topic/ai20?utm_source=blog08

 

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页