我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 智能计算机 >

非计算机专业如何转行人工智能并找到算法offer?

归档日期:06-11       文本归类:智能计算机      文章编辑:爱尚语录

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

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

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

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

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

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

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

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

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

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

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

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

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

  这个不用多说了。读论文看视频是少不了的,英文不行的话线、数学和机器学习理论

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

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

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

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

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

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

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

本文链接:http://nomi-farm.com/zhinenjisuanji/105.html