网络知识 娱乐 软件工程师如何转行做人工智能?

软件工程师如何转行做人工智能?

谢谢邀请!

软件工程师转行做人工智能是一个不错的选择,但是要根据自身的知识结构进行相应的准备。对于研发级软件工程师(研发级程序员)来说,转行做人工智能是相对比较容易的,因为研发级工程师往往都有扎实的算法基础。对于应用级软件工程师(应用级程序员)来说,转行做人工智能需要一个系统的准备(学习)过程。

人工智能目前的研究方向比较多,比如自然语言处理、机器学习以及计算机视觉都是不错的研究方向,下面就以机器学习为例,说一下作为应用级软件工程师来说,都应该做好哪些准备。

首先,需要系统的学习一下算法知识。机器学习的研发是以算法为核心进行展开的,所以要有一个扎实的算法基础。这个过程需要了解一些比较经典的算法设计过程,逐步培养起解决问题的思路。这部分的学习内容包括随机算法、堆排序算法、快排、计数排序、贪心算法、核算法、势能法、图算法、多线程算法、数论算法和近似算法等,在学习算法的过程中也会连带着把数据结构一并学习一下,因为算法和数据结构本就不分家。

其次,了解机器学习的实现步骤。机器学习的流程包括数据收集、数据整理、算法设计、算法实现、验证算法和应用算法,数据收集是机器学习的第一步,目前可以用于机器学习的公共数据集并不少,对于实验来说已经够用了。接下来就是了解常见的机器学习算法,目前比较常见的机器学习算法包括NB、k-mean、kNN、SVM、Apriori、EM、PageRank、CART等算法,对于有算法基础的人来说,这些算法的学习并不困难。

最后,选择一门编程语言来实现这些算法并对其进行验证。对于软件工程师来说,这个步骤还是相对比较轻松的,目前使用Python做机器学习的算法实现是一个比较常见的做法。

人工智能是我的主要研究方向之一,目前我也在带相关方向的研究生,我会陆续在头条写一些关于人工智能方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有人工智能方面的问题,也可以咨询我,谢谢!

说说我的个人经历

我亲身经历了从非AI软件开发到AI的转变。

我一直对AI感兴趣,也知道这是技术发展的一个大趋势。所以在2016年以前,陆陆续续地关注一些AI博客,断断续续地学习,但一直没有系统学习过。

在2016年,因为工作的变动,就开始系统地学习了AI。买了一些AI的书来读,在coursera在线学习网站上,参加了业界有名的Andrew Ng(吴恩达)的《机器学习》课程。

这是我是在2016年5月份获得的《机器学习》结业证书。

《机器学习》结业,只是入门。而AI分成好几个领域,比如图像识别、NLP等等,每一门的水都挺深。我选择进入NLP,因为其它领域都被大公司吃完了,而NLP相对不太成熟,小公司更有机会。

我学习了NLP的实用技术,并用来做产品。后来还是因为AI更是大公司的菜,加上其它的一些事情,就转向聚焦在区块链上了。

所以,我觉得我有资格来回答这个问题。

对于软件工程师,这种转变,不叫转行,而叫学习新技能。

首先,还是需要有扎实的数学知识

对于很多软件工程师,数学知识平时用得少,软件功能都是调用这个库、那个API来实现的。这在AI之前,在很多公司还算是合格的,毕竟能完成工作。

但到AI领域后,你就会发现没有数学知识,碰到一些问题就懵了,很吃亏,效率会很低。

我的《微积分》是很多年钱学的,早就丢掉了。到了AI领域,发现有很多微积分内容,又得捡回来。

你至少需要准备这些数学知识:

  • 线性代数。将会碰到有很多向量和矩阵,所有计算的基础,重要性不言而喻

  • 概率与统计

  • 微积分

  • 其次,系统地参加人工智能的通用课程

    刚开始入门,要推荐吴恩达的《机器学习》,这是一堂有名的课,评分高达4.9分。

    这门课程难度为中等偏低,每期都有习题练习,习题需要一般的编程能力,全部通过才能获得结业证书。

    https://www.coursera.org/learn/machine-learning

    然后再深入一点,就是目前业界广泛使用的神经网络中的深度学习。

    深度学习在Coursera上,是有一个专项课程。专项课程是几个相关课程的集合。深度学习专项内部包含了4个课程。如果有条件,最好把所有的课程学一遍:

    https://www.coursera.org/specializations/deep-learning

    如果没时间学完专项,那么其中的《神经网络和深度学习》是必学的:

    https://www.coursera.org/learn/neural-networks-deep-learning?specialization=deep-learning

    再次,根据具体的业务领域,选择适合的框架和语言,边学边做

    到了这一步,你就要开始实战了。

    这里要看你从事的领域的需求,学习更具体的算法。比如公司搞图像识别,那CNN必须要精通;如果是NLP,要学word2vec、RNN等。

    然后选择编程语言和AI框架。

    如果公司没有硬性要求语言和框架。在语言方面,而你是新手,或者编程经验不多,最好就直接用Python;对于老手,存在存量绑架,也因为对某语言用得熟练,那要选择支持你的编程语言的框架。

    一般来说,选择谷歌的TensorFlow更好,公司有技术实力保障,对语言支持能力强,连JavaScript都支持。

    给码农的话

    最后,对于软件工程师,再过几年,AI将是所有公司所必备一项能力,那么的AI技能,也就是码农必备的技能,那就快点学起来,用起来。

    和其它行业一样,码农要保持自己的职业竞争力,需要活到老,学到老。在软件技术这块,迭代周期别其它行业要快很多,就更需要坚持不断学习。

    需要很深的数学功底,其它都不重要

    有些答案实在看不下去了,来点干货

    人工智能相关职位(各种叫法: 算法工程、NLP工程师, CV算法研发工程师,数据科学家,推荐算法工程师,机器学习工程师、人工智能工程师等)的要求基本如下:

  • 职位关键词:算法层面为机器学习,深度学习,NLP, CV, 强化学习等,大数据层面: Hadoop, Hive, Spark等

  • 实践:有实践经验 (转行的话,建议打比赛)

  • 理论:在NIPS, CVPR, ICML等顶会上发表过论文 (这个对于转行的人,短期内基本不可能,除非你是天才)
  • 围绕着上面的职位要求,下面是可操作的建议:

  • 夯实理论基础: 机器学习、深度学习先入门(坑)吧。coursera上很多课,Andrew Ng的课算是基础的, fast.ai上的课也可以看看。硬着头皮看吧,很多人从入门到放弃,能过这道坎,才有可能转行。

  • 积累实践经验: 有一定的理论之后, 上Kaggle(或国内一些公司组织的比赛)练手,积累经验教训。很多比赛都是业界公司项目的真正需要,和真正项目算法层面没什么区别。最好能拿个奖,既能拿奖金,后续面试也是亮点。(话说这个奖金不是那么好拿的,打比赛是很累的,和工程不太一样,工程是体力活,加班加点基本是能做出来的,算法加班不一定能出成绩,心累)。
  • 没事多和身边的搞算法的同事聊聊天、喝喝酒。过来人比你一个人摸索要快很多。
  • 不建议参加培训机构,除非你钱多。人工智能是个很笼统、宽泛的概念,被吵得很热,很多机构打着大数据、人工智能的噱头来培训,什么人才缺口百万,什么年薪百万。参加这种培训的人,面试的时候,肯定会心虚,没有真正的项目实践。与其参加培训,不如省下钱来加块GPU。MIT, Stanford名校各种公开课程,没必要参加国内这些课程。

    注意: 本文中的算法,指的是Machine Learning领域的算法(比如决策数, xgb, svm, rnn, cnn),非Computer Science领域里的算法(比如quick sort),不要搞混

    PS: 转的话,需要花些精力的。现在很多学校都开设了相关的学院、课程。再过两年,搞不好会是下一个“本科遍地走,大专多如狗”,这个风险和机遇是并存的。确定要转的话,撸起袖子,加油干吧,相信自己!

    欢迎交流

    谢谢邀请!

    首先人工智能肯定是未来的一个方向,无论是否想转行,都有必要去了解人工智能技术。

    其次我认为学习人工智能主要有四种境界,你需要确定自己需要达到哪种境界,才好确定你的努力方向和策略。

    1.科学家境界
    2.工程师境界
    3.应用者境界
    4.知其然境界

    科学家境界

    科学家境界是很少很少一部分人能达到的境界,主要是那些从事人工智能研究的科学家,他们能原创出很多的算法和理论,解决一些最前沿的难题。比如深度学习的鼻祖Hinton,生成对抗网络发明人 Ian goodfellow,Xgboost发明人陈天奇等等。

    工程师境界

    工程师境界也是很难的一种境界,需要用很强的理论背景和工程实现能力,能独立复现最新的论文,深刻理解论文的实现原理,并能在上面做一些小创新。

    应用者境界

    应用者境界是大部分人工智能算法工程师所在的境界,主要就是明白算法原理,知道如何实现,核心在于知道如何把他应用在一个实际的业务场景之中。

    知其然境界

    最后一个是知其然,也知其所以然境界,知道当下的人工智能到底是什么,知道机器学习和深度学习大概是个什么东西,不会过分的去神话AI,知道目前AI的优势,更知道目前AI的局限。

    不同的境界对应不同的要求,简单点概括就是:

    工程能力决定你的下界,理论能力与业务理解决定你的天花板。

    PS:本号作者目前是某大厂机器学习算法工程师,致力于全栈AI算法和业务场景落地,非常乐于在网上分享最新的AI知识,也经常开直播教同学AI算法和编程。感兴趣的同学可以关注本头条号,获得最新的干货!

    软件开发工程师,如何转行到人工智能领域?首先你需要明白自己为什么要转行到人工智能,是觉得人工智能发展前景不错,还是觉得人工智能岗位工资高才转行过来?如果仅仅是因为这两点,那我劝你还是不要转行到人工智能。

    人工智能领域说实话入门门槛很高,你不仅仅要和国内的名牌大学研究生、博士生竞争,同时你也要和国外那些厉害大学(比如常青藤)的海归同学竞争。你确定自己在和他们的竞争过程中,能脱颖而出吗?当然,转行到低级算法工程师很容易,但是每个同学都想往高处走,成为高级算法工程师会很难。个人如果没有几把刷子,真不建议你转到人工智能。

    不过你如果真的非常喜欢算法,想要转行到人工智能,我相信你通过自己的努力,肯定能够实现你的目标,下面是我个人关于转行到人工智能的几点建议:

  • 从基础的机器学习算法入手
  • 从事人工智能领域,肯定要对机器学习算法要有一定基础。软件工程师平时更多的是从事工程类项目开发,所以在机器学习算法基础方面有一定的薄弱。你可以先从基础的机器学习算法概念入手,比如K-means、决策树、线性回归、随机梯度下降、支持向量机等算法。你可以从网上找相关算法的博客,或者直接看相关的书籍、教学视频。

    机器学习算法入门书籍,我推荐李航的《统计学习》。这本书里面讲解的算法概念、公式一般都可以看懂,对于新手而言会比较友好。

    机器学习教学视频方面,我推荐吴恩达的机器学习公开课。你可以去网易公开课上进行观看,观看的同时,你可以做好笔记,记录自己的感想以及不懂的地方,然后在听完课程后,可以去Google上找到自己不懂的问题,查看别人的观点,解法。

    多参加机器学习算法比赛

    算法最终需要应用到业务上,你在对机器学习算法有一定了解后,下一步我们需要通过实践来提高算法项目能力。由于你平时主要从事工程类项目开发,很少能够接触到算法相关的项目,此时你可以去参加一些机器学习算法比赛。

    国内比较著名的有天池大数据竞赛、DataCasle,国外比较著名的有Kaggle。你可以选择自己感兴趣的比赛项目,最好能够找到一起参加算法比赛的小伙伴,这样在做比赛时,能够一起讨论,交流。这样更能提高你对算法方面的理解。最好,你如果能够拿到算法比赛得不错的名次,这将会帮助你更好地进入互联网大厂。

    提升自己的阅读Paper的能力

    多观看大牛的算法Paper,能够加深自己的算法理论理解。你可以去百度学术或者Google论文上面查找自己想要看的论文,然后下载下来仔细的观看。在看论文的同时,要去思考他们为什么要这样做,这样的做目的是什么,解决了什么问题。带着问题去看论文,这样你看完才能更好地理解大牛们的思想。

    最后一点,做好自己的简历

    既然要转行到人工智能,最后一步肯定要做好自己的简历。在做简历的时候,既要突出自己的算法能力,同时也要突出自己的工程能力,公司肯定希望招聘到的人什么都会,你的工程能力会在你面试算法岗位的时候是一个加分项。

    在简历上写项目的时候,尽可能要描述的详细一点,要让面试官能够看懂你在做什么,而不是你在吹牛。要把自己做的,思考的,带来的业务结果都描述上去,同时要强调自己的算法方面的技能。这样,你拿到算法Offer的概率才会更大。

    总结

    总体来说,软件工程师在转行到人工智能领域之前,一定要想好自己为什么要转行到人工智能,如果只是为了钱景或者岗位的发展情景,那真的不建议你转行过来。

    转行到人工智能的过程会很辛苦,没有坚定的目标肯定很难坚持。当然,如果你真的对算法很感兴趣,希望你能一直保持自己最初的目标,最后,祝你好运。

    如果我的文章对你有帮助的话,希望你能够点赞转发或者关注我,你的一个小小的鼓励,就是我持续分享的动力,非常感谢。

    软件工程师如何转行做人工智能?

    首先你需要明白自己为什么要转行到人工智能,是觉得人工智能发展前景不错,还是觉得人工智能岗位工资高才转行过来?如果仅仅是因为这两点,那我劝你还是不要转行到人工智能。

    人工智能领域说实话入门门槛很高,你不仅仅要和国内的名牌大学研究生、博士生竞争,同时你也要和国外那些厉害大学(比如常青藤)的海归同学竞争。你确定自己在和他们的竞争过程中,能脱颖而出吗?当然,转行到低级算法工程师很容易,但是每个同学都想往高处走,成为高级算法工程师会很难。个人如果没有几把刷子,真不建议你转到人工智能。

    不过你如果真的非常喜欢算法,想要转行到人工智能,我相信你通过自己的努力,肯定能够实现你的目标,下面是我个人关于转行到人工智能的几点建议:

    从基础的机器学习算法入手

    从事人工智能领域,肯定要对机器学习算法要有一定基础。软件工程师平时更多的是从事工程类项目开发,所以在机器学习算法基础方面有一定的薄弱。你可以先从基础的机器学习算法概念入手,比如K-means、决策树、线性回归、随机梯度下降、支持向量机等算法。你可以从网上找相关算法的博客,或者直接看相关的书籍、教学视频。

    机器学习算法入门书籍,我推荐李航的《统计学习》,这本书里面讲解的算法概念、公式一般都可以看懂,对于新手而言会比较友好。

    机器学习教学视频方面,我推荐吴恩达的机器学习公开课,你可以去网易公开课上进行观看,观看的同时,你可以做好笔记,记录自己的感想以及不懂的地方,然后在听完课程后,可以去Google上找到自己不懂的问题,查看别人的观点,解法。

    多参加机器学习算法比赛

    算法最终需要应用到业务上,你在对机器学习算法有一定了解后,下一步我们需要通过实践来提高算法项目能力。由于你平时主要从事工程类项目开发,很少能够接触到算法相关的项目,此时你可以去参加一些机器学习算法比赛。

    国内比较著名的有天池大数据竞赛、DataCasle,国外比较著名的有Kaggle。你可以选择自己感兴趣的比赛项目,最好能够找到一起参加算法比赛的小伙伴,这样在做比赛时,能够一起讨论,交流。这样更能提高你对算法方面的理解。最好,你如果能够拿到算法比赛的不错的名次,这将会帮助你更好的进入互联网大厂。

    提升自己的阅读Paper的能力

    多观看大牛的算法Paper,能够加深自己的算法理论理解。你可以去百度学术或者Google论文上面查找自己想要看的论文,然后下载下来仔细的观看。在看论文的同时,要去思考他们为什么要这样做,这样的做目的是什么,解决了什么问题。带着问题去看论文,这样你看完才能更好的理解大牛们的思想。

    最后一点,做好自己的简历

    既然要转行到人工智能,最后一步肯定要做好自己的简历。在做简历的时候,既要突出自己的算法能力,同时也要突出自己的工程能力,公司肯定希望招聘到的人什么都会,你的工程能力会在你面试算法岗位的时候是一个加分项。

    在简历上写项目的时候,尽可能要描述的详细一点,要让面试官能够看懂你在做什么,而不是你在吹牛。要把自己做的,思考的,带来的业务结果都描述上去,同时要强调自己的算法方面的技能。这样,你拿到算法Offer的概率才会更大。

    总结

    总体来说,软件工程师在转行到人工智能领域之前,一定要想好自己为什么要转行到人工智能,如果只是为了钱景或者岗位的发展情景,那真的不建议你转行过来。转行到人工智能的过程会很辛苦,没有坚定的目标肯定很难坚持。当然,如果你真的对算法很感兴趣,希望你能一致保持自己最初的目标,最后,祝你好运。

    我是Lake,专注大数据技术、互联网科技见解、程序员经验分享,如果我的问答对你有帮助的话,希望你能够点赞转发或者关注我,你的一个小小的鼓励,就是我持续分享的动力,非常感谢。

    转人工智能,首先需要了解人工智能是什么,它涉及哪些知识领域?

    人工智能,顾名思义,它是研究如何用机器模拟人类思维方式,从事类人活动的一门的科学,也是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新兴技术。它涉及计算机科学、机器人、语言识别、图像识别、自然语言处理、决策系统和专家系统等知识领域。除了涵盖自然科学,甚至还涵盖了哲学和心理学等社会科学,是真正的知识大融合,所以要从事该领域的研究和生产是一项极富挑战性的工作。

    个人见解,转行需要注意以下几个方面:

    1、计算机科学领域

    (1)编程语言:需要深入学习Python、Go等适用于复杂科学计算的、提供更多成熟算法处理模块的编程语言。

    (2)矩阵运算和算法模拟:深入学习MATLAB。

    (3)根据自己的研究或工作方向学习业界成熟的开发框架或开源库:例如图像识别(OpenCV等)、语言识别(Python语音识别库,百度、科大讯飞、捷通华声等语音识别库)、神经网络(DistBelief等)、机器学习(Google开发的TensorFlow等)。

    (4)大数据处理、分布式计算、云计算:因为人工智能无法逾越的一个过程,就是对海量数据进行短时间的处理和决策,所以先得从现有比较成熟的技术入手学习和研究。

    (5)其它。

    2、算法

    (1)提升自己的数学基础和计算能力,多看国内外顶级学术刊物上关于人工智能技术研究的学术文章。

    (2)最好自己在理解算法的基础上,将其编程实现再加以验证。

    3、数据统计、分析和整理

    获得算法结果后,要善于分析这些数据的规律,从中获得有效信息。同时要善用一些统计分析工具。

    4、关注该领域顶级研发机构或公司的最新产品或成果

    虽然我们只能看到成果,而无法了解实现,但是从中学习到的东西也会使你避免走很多弯路。

    5、心态

    目前,人工智能的研究和实践如火如荼,但是应该摆正心态,做好打持久战的准备,短时期内很难将该领域的技术研究透彻,并完全推广应用。一句话,此路任重而道远,但却是人类社会科技发展的必经阶段。

    感谢阅读!

    我是一名C++软件工程师,而且也在学习人工智能。分享一下我是怎样学习的。不一定适合你,仅供参考,不对的地方还望批评指正!

    我研究生是研究模式识别方向,图像处理领域。学过《模式识别》《机器挖掘》等类似的课程,对我学习AI有一定的帮助,但是对于学习AI也有一定的难度。我的学习过程是这样的:

    01 学习Python

    Python的学习是转行人工智能的基础,这个是一定要学的。如果你是C++或者Java工程师,学python会非常快,因为都是面向对象的语言。基本一周就可以看机器学习的开源代码。学习编程语言对于程序员来说很easy了,这里不再多说。

    可以简单的学习一些机器学习基本Python库,比如numpy,scikit-learn,Theano,Tensorflow,Caffe2等等。选择就是,用到再学!



    02 从项目出发

    机器学习分为:图像识别,语音识别,自然语言处理等方向,选择一个自己感兴趣的方向,然后找对应的项目。从项目出发并不是说从做项目开始,对于没有领域知识的程序员,写代码是很痛苦的。从项目出发的本意是:

    不要从学习概率论,高等数学等基本理论开始。我第一阶段就是从这些基本理论开始,效果很不好。这些理论枯燥,没有针对性,没法理解这些理论跟AI到底是什么关系。因此,很容易放弃。

    从项目开始:找个开源项目,比如GitHub上的开源项目OpenFace,去读源码,看人脸识别是如何做到的。读源码的时候一定会碰到各种机器学习的Python库,一些机器学习算法。以此为出发点,熟悉Python库的使用方法。碰到的机器学习算法这就是开始学习AI的切入点。

    从项目开始的好处是,能将理论和实践相结合,比单纯学习理论更能理解理论的妙处!



    03 学习碰到的理论

    在项目中碰到的机器学习算法,要想清楚明白是怎么来的,就要去论文中追本溯原,学习算法的使用环境,算法实施过程,算法的数学推导。这个时候就是学习数学基础的时机,只学习对应的章节,用不到的暂时不用学。

    学习算法,还借助一些介绍机器学习算法的基础,把算法彻底弄懂。系统学习基本算法基础,比如卷积人工神经网络,反向传导,线性回归,贝叶斯网络,支持向量机SVM,决策树等等。这也很有帮助!

    04 一定要动手!

    算法动手:

    在学习理论知识,机器学习的算法时,都会碰到算法的实现过程。一般现在很多Python库已经提供了算法的实现,直接调用即可。但是如果自己有时间还是要实现一下算法,能加深理解。作为程序员都知道,只有在亲自动手的时候,才发现问题。

    应用动手:

    学习机器学习,一定要自己动手,真正用机器学习解决一个问题。但是现在机器学习对硬件要球较高,训练时间也很高。因此,我建议,无需用巨大的数据集,用非常小的即可,只要能解释过程即可。



    05 坚持坚持再坚持!

    对于上班族来说,时间很宝贵,所以要从996的时间之外挤出时间学习十分不容易,因此就要十分有毅力,有恒心。既然开始,就不能轻易放弃,要养成固定一个在一个固定时间点学习,比如每晚10点学习两小时,那就每晚都学,即使没状态哪怕看看以前的也要学。这样,固定的时间做固定的事,坚持下来概率较大!

    做一名程序员不易,要转行的程序员更不易!任何时候,身体健康第一!且行且珍重!如果有需要的资料,可以私信我,希望能给你提供帮助!

    作为技术出身的数据产品经理,我接触过很多泛AI岗位的朋友,比如 大数据工程师,算法工程师,建模工程师等,也有一些针对AI细分领域的岗位,比如NLP工程师,图像识别工程师,语音识别科学家等。其中不乏一些从软件工程师转岗过来的,和大家分享一下我的看法。



    哪类岗位相对更容易上手和转岗

    就AI相关研发岗来看,大数据工程师相对其他岗位是软件工程师更容易转的岗位,只是大数据工程师对技能要求更综合。其他岗位(比如算法工程师,建模工程师,分析师,深度学习工程师等)对统计学背景和算法能力要求很高,转岗时间比较长。

    以大数据工程师为例,看看软件工程师们应该如何做准备。

    先看看大数据工程师的岗位要求,最核心的几点



    1. 熟练使用多种开发语言

    包括Java,Python,SQL,Scale,Shell等

    2. 熟练使用Hadoop生态体系的技术

    包括但不限于离线数据处理的hive,hbase 实时数据计算得Spark,Stome等,以及大数据生态链上的其他技术,包括分布式通道kafka,分布式搜索缓存es,内存缓存redis,nosql数据库mongo,图数据库neo4j等等。

    3. 有过大数据开发经验



    对于以上几点,如何有针对性准备

    第一点是传统软件工程师的优势,或多或少都接触过,也做过相关项目。

    第二点,需要不断的去学习,注意类似项目的机会,多多参与,积累对技术的理解和实战经验

    第三点,就是实战经验,这个要自己给自己创造类似机会。当然自己也要在自己笔记本上装几个,模拟跑跑,慢慢的理解技术底层的原理,做到一通百通,能举一反三吧。

    其他岗位,比如建模,算法,需要统计学知识体系。软件工程师一般是计算机背景出身,这块相对较弱,需要靠自学,推荐的入门教材《深入浅出统计学》,《机器学习》等



    若你有类似问题,可以关注并私信我,我会尽量回复。欢迎留言交流!