作者 | Nick-Atom

责编 | 琥珀

【AI科技大本营导读】目前,各行业都在尝试着用机器学习/深度学习来解决自身行业的需求。在这个过程中,最为稀缺的也是高质量人工智能人才。 这一年我们见证了不断有非计算机专业学生转行人工智能的现象,每个想转行人工智能算法岗的同学或多或少都有着类似的原因:人工智能领域的火热需求和高于其他行业的薪资水准。那么,非计算机专业如何转行人工智能,并找到算法 offer?

以下为作者 Nick-Atom 在知乎上的回答,希望对你有所启发:

作为转专业算法党,分享些经验吧。开门见山,转专业和本专业没什么区别,该学的还得学,只有学的好与差的区别。好处是,只要你想学(并且英文好),超一流的学习资料满天飞。

首先说几个非常非常非常重要的原则(我认为这几个原则要比具体的方法论重要):

1、算法工程师也是软件工程师,编程基础要求很高(只是在架构和系统这块不做高要求)

基本上,你要花三分之一的时间处理数据,三分之一的时间修改线下线上代码以适配你的算法,三分之一的时间调试模型。

前两者都需要进行大量的代码阅读和自己 coding。

指望跑跑模型,调调参数不需要码代码是不可能的,除非你面的是科学家岗,但转行的科学家岗基本不现实吧。

2、80% 的算法优化来自与对业务架构的理解

这一点有点反直觉了。

很多人以为算法工程师的工作就是把从论文和公开课里学到的 fancy 的算法用到业务里。这个基本上就是大错特错了。首先,绝大多数的先进算法只是相对于 baseline 算法有了一点点小的提升,这对于做科研是有意义的,毕竟积少成多。但是在工程中,这些算法的性价比是极低的,收益不大,却要大幅度调整系统,增加系统复杂度,得不偿失。

所以除非是非常颠覆性的想法,大幅度提升性能,像是 DNN,ResNet,Word2Vec,Bert,Seq2Seq 这样的模型算法,才会在业界广泛的应用。

那么更多时候,算法工程师的工作是结合业务,用上述提到的这些基本的模型去优化业务流。比如,在广告领域,原来要求完全匹配用户的搜索词,我可不可以用 Seq2Seq 模型改写出几个类似的搜索词?或者,原来都是 Counting Feature,我可不可以用 DNN Embedding 来做一些离散 Feature?

换句话说,模型都是最基本的模型,但是怎么结合业务,选对模型,用对地方,才是真正考验算法工程师能力的地方。而要充分理解业务架构,并且能够在复杂的业务代码中自由的翱翔,你的工程能力一定不能差。

3、优秀的算法工程师都有很好的科研 sense

我个人觉得这一点被很多人忽略了。但其实这个非常重要。算法工程师和后台/架构工程师的一个很大区别在于算法工程师还是有一定的研究性质的。换句话说,无论是上线一个业务还是开发一个中间件,后台工程师要解决的问题比较明确(你不做还有产品狗逼你做~~),结果也比较好度量(能不能用,性能如何)。

但算法工程师需要自己去找可以优化的地方,且结果往往难以预测,有些工作的结果甚至难以可靠度量。这就需要你有好的科研 sense,能够发现值得解决且能够解决问题,设计合适的解决问题的方案及科学的结果度量方法,充分的实验和论证,最后可靠的上线。

简而言之,你要自己找活干,找对活是成功的 80%,活没找对半年一年没成果的时候压力也是很大的。

除此之外,其他能力还包括:

1、英文

这个不用多说了。读论文看视频是少不了的,英文不行的话真的是,很累。

2、数学和机器学习理论

这一点我和一些高票意见不太一致,我觉得如果你理论能力很强,当然是锦上添花的事。但这不是必须的。能讲清楚 LR 和 DNN,会推反向传播和交叉熵,有一些项目经验(对项目中用到的算法有深刻的理解),对于入门级算法工程师来说足够了。对于比较资深的算法工程师,也不要求对每个算法都理解的深刻,项目经验丰富些,基础扎实也够了。

毕竟学习几个新算法,对于编程和算法基础扎实的同学来讲,实在是最轻松的事了。

理解了上述这几点,准备起来自然也比较简单了。

1、扎实的编程基础 

C++/Java + Python + 算法数据结构。老三样跑不掉的,而且要求只会高不会低。手写算法练起来吧。

2、机器学习基础

不要求多求深,去试图掌握一些很 fancy 的算法和模型。好好去理解最基础的 LR/CNN/DNN, 理解正则化,交叉熵,反向传播,normalization 等等等等这些最基础的概念,一定要理解的透彻。最好就是把这几个模型自己实现一遍,尤其是 BP.3,工程能力和项目经验接触过大型的工程项目,无论是开发还是算法,都是非常重要的经验。工程能力确实会让你空有想法,难以发挥,戴着镣铐跳舞。如果实在没什么项目经验,可以考虑做一些比赛。但比赛用到的环境实在是太理想化了,导致价值实在有限,基本上我们找新人是不看比赛的(除非大赛成绩特别好)。总结来说,大型项目的工程经验(哪怕与算法无关)也要好于比赛经验。

3、论文

一流论文大杀四方,灌水论文没什么价值,发论文是实习生的工作,full-time 是要给公司赚钱的,不要心存侥幸,大清已经亡了。如果没有什么厉害的成果,而你又志在 industry,不要浪费时间灌水了,好好准备面试。

4、聪明 or 优秀的科研 sense

这一点其实非常非常重要,只是大家的考察方法五花八门,实在难以总结。在我司,不聪明是我们拒人的第二理由。仅次于编程基础差。至于什么样的人算聪明的话见仁见智,我个人的话,数学好的人特别是概率,或者是讲项目的时候能够感受到非常好的科研 sense 的人,我会觉得是聪明的人。

最后几句话送给转行的各位,既然认定了要走工程师这条路(不论算法还是工程),就一定要拿自己和专业的人去比较,付出更多的努力去赶超。不要奢望这个行业有什么不需要计算机基础的特别适合转行的同学的神奇岗位,真正好的岗位,你的竞争对手就是计算机专业同学,评价的指标也就是计算机专业指标,你的专业所学基本不做考量,不要心存侥幸,好好加油吧。

以上。

文本经授权转载自知乎:https://www.zhihu.com/question/265041005/answer/540207020

(*本文由AI科技大本营转载,转载请联系作者)

非计算机专业如何转行AI,找到算法offer?相关推荐

  1. “非计算机专业如何转行做程序员” - 我的经验

    前两天在微博上看到关于"非计算机专业如何转行做程序员" 的讨论: 讨论中一片学生的来信,勾起我写一篇博客的冲动: 希望我的经验能影响他,影响徘徊在计算机行业外想进来的人. 先做个自 ...

  2. 211非计算机专业如何转行IT?加入超级实习生就行吗?

    导语:互联网行业一直以来都受到大众关注,基于互联网的特性,大厂的一举一动基本都能被看到,也就有很多大学生了解到,互联网IT行业的高薪与福利,除了本专业的人想从事IT之外,很多非计算机专业的学生也想从事 ...

  3. 非计算机专业如何转行成为程序员?我用亲身经历教你用这三种方法

    哈喽大家好啊!我想分享一下,非计算机专业的学生如何转行成为程序员.首先,我先介绍一下我的情况.我是18年毕业的,大学学的专业是土木工程,与计算机一点关系都没有.但是在大学时,我对程序员比较感兴趣.本来 ...

  4. 特别策划:非计算机专业如何转行做程序员?

    随着互联网的飞速发展,云计算.大数据由"热点"到落地,也带动着市场对软件开发者的需求,而目前国内软件开发从业者本已供不应求.互联网的火热不仅给软件开发者带来更为广阔的空间,就业薪资 ...

  5. 非计算机专业自学1年拿到算法offer的总结(附学习路线)

    本文总结自己学习计算机视觉的经历. 我就是非计算机专业的,在18-19年1年时间内自学拿到商汤实习offer,20年毕业加入思谋成为一名算法工程师. 之前写过一个实习面经,感兴趣的可以看一下计算机视觉 ...

  6. 【面试相关】非计算机专业如何1年内自学拿到算法offer

    本文总结自己学习计算机视觉的经历. 我就是非计算机专业的,在18-19年1年时间内自学拿到商汤实习offer,20年毕业加入思谋成为一名算法工程师.我想我应该很适合回答这个问题. 之前写过一个实习面经 ...

  7. 非计算机专业本科毕业如何迅速成长为一名算法工程师

    非计算机专业本科毕业如何迅速成长为一名算法工程师 2018年11月27日 10:11:13 adam-liu 阅读数 4561 首先先offer镇楼 我想介绍一下我的学习经历,希望对一些还处于迷茫时期 ...

  8. 计算机研究生开发岗_在读非计算机专业研究生的困惑:如何转行互联网开发?...

    <案例说> 一个针对准备转行AI算法岗,通过介绍不同背景下的职业选择和成长路径,并结合来自就业指导老师的专业建议,期待能给予同样有发展困惑的小伙伴以启发的栏目. 第八期: 来自一位在读非计 ...

  9. 不是计算机专业学python能找到工作吗-python学习难不难?非计算机专业也能学吗?...

    听很多学习培训Python程序编写的人说Python简易容易新手入门,很多IT培训学校的教师也说各种各样编程语言对比出来,Python是非常简单的,我觉得招来一群非计算机专业的同学们摩拳擦掌,可她们在 ...

最新文章

  1. visual c 语言参考手册pdf,《Microsoft-Visual-C-6-0语言参考手册(三)》.pdf
  2. 一文理清Cookie、Session、Token
  3. 【微信小程序】数组操作
  4. [Leedcode][JAVA][第887题][鸡蛋掉落][谷歌面试][动态规划]
  5. java守护线程和用户线程的区别
  6. 算法总结之求解模线性方程组
  7. ES6-ES11新特性_ECMAScript相关名词介绍_---JavaScript_ECMAScript工作笔记002
  8. django--rtbac权限管理
  9. HDU1280 前m大的数【排序】
  10. 一、安装Windows 2012域控(For SQLServer 2014 AlwaysOn)
  11. python中formatter的用法_python中 logging的使用详解
  12. 巴伦变压器电路图_一文看懂巴伦(功能原理、性能参数、基本类型)
  13. win系统自带校验命令
  14. 世界级软件平台企业,永洪科技要的就是这个范儿
  15. 今天收入 1600 稿费
  16. 360安全卫士防黑加固关闭了Telnet远程连接服务,如何开启?
  17. Java找出游戏的获胜者leetcode_1823
  18. 一加7t人脸识别_一加7T深度测评:它体现了最佳的技术价值吗?
  19. Elasticsearch常用配置及性能参数
  20. Hadoop 大数据概念那些事儿

热门文章

  1. Windows 8.1 Preview(Windows Blue)预览版简体中文官方下载(ISO完整版镜像)
  2. MySql中管理百万级要注意些什么东西(转载)
  3. qinyu.blog.51cto.com里的好文章,比尔盖茨
  4. 欲精一行,必先通十行
  5. 电子学会青少年编程等级考试Python一级题目解析10
  6. 技术图文:Matlab VS. Numpy 常见矩阵
  7. LeetCode实战:2的幂
  8. 【ACM】【STL】stack应用
  9. Meta 开发 AI 语音助手,用于创建虚拟世界和实时翻译
  10. 干货!整理了50个 Pandas 高频使用技巧,强烈建议收藏!