开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2021.01.14
谢谢邀请!
软件工程师转行做人工智能是一个不错的选择,但是要根据自身的知识结构进行相应的准备。对于研发级软件工程师(研发级程序员)来说,转行做人工智能是相对比较容易的,因为研发级工程师往往都有扎实的算法基础。对于应用级软件工程师(应用级程序员)来说,转行做人工智能需要一个系统的准备(学习)过程。
人工智能目前的研究方向比较多,比如自然语言处理、机器学习以及计算机视觉都是不错的研究方向,下面就以机器学习为例,说一下作为应用级软件工程师来说,都应该做好哪些准备。
首先,需要系统的学习一下算法知识。机器学习的研发是以算法为核心进行展开的,所以要有一个扎实的算法基础。这个过程需要了解一些比较经典的算法设计过程,逐步培养起解决问题的思路。这部分的学习内容包括随机算法、堆排序算法、快排、计数排序、贪心算法、核算法、势能法、图算法、多线程算法、数论算法和近似算法等,在学习算法的过程中也会连带着把数据结构一并学习一下,因为算法和数据结构本就不分家。
其次,了解机器学习的实现步骤。机器学习的流程包括数据收集、数据整理、算法设计、算法实现、验证算法和应用算法,数据收集是机器学习的第一步,目前可以用于机器学习的公共数据集并不少,对于实验来说已经够用了。接下来就是了解常见的机器学习算法,目前比较常见的机器学习算法包括NB、k-mean、kNN、SVM、Apriori、EM、PageRank、CART等算法,对于有算法基础的人来说,这些算法的学习并不困难。
最后,选择一门编程语言来实现这些算法并对其进行验证。对于软件工程师来说,这个步骤还是相对比较轻松的,目前使用Python做机器学习的算法实现是一个比较常见的做法。
如果有人工智能方面的问题,也可以咨询我,谢谢!
说点实在的
学得不错后,参加个比赛kaggle或国内的京东、阿里云的比赛。检验一下自己的水平。
如果不是非常感兴趣,没必要转行人工智能。人工智能的泡沫快破了,吹得太厉害了。
我亲身经历了从非AI软件开发到AI的转变。
在2016年,因为工作的变动,就开始系统地学习了AI。买了一些AI的书来读,在coursera在线学习网站上,参加了业界有名的AndrewNg(吴恩达)的《机器学习》课程。
这是我是在2016年5月份获得的《机器学习》结业证书。
《机器学习》结业,只是入门。而AI分成好几个领域,比如图像识别、NLP等等,每一门的水都挺深。我选择进入NLP,因为其它领域都被大公司吃完了,而NLP相对不太成熟,小公司更有机会。
我学习了NLP的实用技术,并用来做产品。后来还是因为AI更是大公司的菜,加上其它的一些事情,就转向聚焦在区块链上了。
所以,我觉得我有资格来回答这个问题。
对于软件工程师,这种转变,不叫转行,而叫学习新技能。
对于很多软件工程师,数学知识平时用得少,软件功能都是调用这个库、那个API来实现的。这在AI之前,在很多公司还算是合格的,毕竟能完成工作。
但到AI领域后,你就会发现没有数学知识,碰到一些问题就懵了,很吃亏,效率会很低。
我的《微积分》是很多年钱学的,早就丢掉了。到了AI领域,发现有很多微积分内容,又得捡回来。
你至少需要准备这些数学知识:
刚开始入门,要推荐吴恩达的《机器学习》,这是一堂有名的课,评分高达4.9分。
这门课程难度为中等偏低,每期都有习题练习,习题需要一般的编程能力,全部通过才能获得结业证书。
然后再深入一点,就是目前业界广泛使用的神经网络中的深度学习。
到了这一步,你就要开始实战了。
这里要看你从事的领域的需求,学习更具体的算法。比如公司搞图像识别,那CNN必须要精通;如果是NLP,要学word2vec、RNN等。
然后选择编程语言和AI框架。
如果公司没有硬性要求语言和框架。在语言方面,而你是新手,或者编程经验不多,最好就直接用Python;对于老手,存在存量绑架,也因为对某语言用得熟练,那要选择支持你的编程语言的框架。
一般来说,选择谷歌的TensorFlow更好,公司有技术实力保障,对语言支持能力强,连JavaScript都支持。
最后,对于软件工程师,再过几年,AI将是所有公司所必备一项能力,那么的AI技能,也就是码农必备的技能,那就快点学起来,用起来。
和其它行业一样,码农要保持自己的职业竞争力,需要活到老,学到老。在软件技术这块,迭代周期别其它行业要快很多,就更需要坚持不断学习。
有些答案实在看不下去了,来点干货
围绕着上面的职位要求,下面是可操作的建议:
不建议参加培训机构,除非你钱多。人工智能是个很笼统、宽泛的概念,被吵得很热,很多机构打着大数据、人工智能的噱头来培训,什么人才缺口百万,什么年薪百万。参加这种培训的人,面试的时候,肯定会心虚,没有真正的项目实践。与其参加培训,不如省下钱来加块GPU。MIT,Stanford名校各种公开课程,没必要参加国内这些课程。
注意:本文中的算法,指的是MachineLearning领域的算法(比如决策数,xgb,svm,rnn,cnn),非ComputerScience领域里的算法(比如quicksort),不要搞混
欢迎交流
普通程序员,或者说是软件工程师,一般用Java语言的开发者比较多,这群人工作一两年的还在努力把增删改查的业务代码写好,工作三四年的,或许在优化和架构上努力。
最致命的一点就是,在数学和英语方面,都需要提升,尤其是数学,已经不仅仅是本科里的高数,线性代数之类的,还要学习研究生阶段的数学理论。英语至少也得达到六级水平,才能比较轻松的翻阅国外资料,毕竟人工智能这一块国外确实比较发达一些。
因此,软件工程师转人工智能,比想象中难,但是我相信有方向并为之坚持付出的,一定会有成就。
我是“极客宇文氏”,一个热心的程序员。
软件开发工程师,如何转行到人工智能领域?首先你需要明白自己为什么要转行到人工智能,是觉得人工智能发展前景不错,还是觉得人工智能岗位工资高才转行过来?如果仅仅是因为这两点,那我劝你还是不要转行到人工智能。
人工智能领域说实话入门门槛很高,你不仅仅要和国内的名牌大学研究生、博士生竞争,同时你也要和国外那些厉害大学(比如常青藤)的海归同学竞争。你确定自己在和他们的竞争过程中,能脱颖而出吗?当然,转行到低级算法工程师很容易,但是每个同学都想往高处走,成为高级算法工程师会很难。个人如果没有几把刷子,真不建议你转到人工智能。
不过你如果真的非常喜欢算法,想要转行到人工智能,我相信你通过自己的努力,肯定能够实现你的目标,下面是我个人关于转行到人工智能的几点建议:
机器学习算法入门书籍,我推荐李航的《统计学习》。这本书里面讲解的算法概念、公式一般都可以看懂,对于新手而言会比较友好。
机器学习教学视频方面,我推荐吴恩达的机器学习公开课。你可以去网易公开课上进行观看,观看的同时,你可以做好笔记,记录自己的感想以及不懂的地方,然后在听完课程后,可以去Google上找到自己不懂的问题,查看别人的观点,解法。
多参加机器学习算法比赛
国内比较著名的有天池大数据竞赛、DataCasle,国外比较著名的有Kaggle。你可以选择自己感兴趣的比赛项目,最好能够找到一起参加算法比赛的小伙伴,这样在做比赛时,能够一起讨论,交流。这样更能提高你对算法方面的理解。最好,你如果能够拿到算法比赛得不错的名次,这将会帮助你更好地进入互联网大厂。
提升自己的阅读Paper的能力
多观看大牛的算法Paper,能够加深自己的算法理论理解。你可以去百度学术或者Google论文上面查找自己想要看的论文,然后下载下来仔细的观看。在看论文的同时,要去思考他们为什么要这样做,这样的做目的是什么,解决了什么问题。带着问题去看论文,这样你看完才能更好地理解大牛们的思想。
最后一点,做好自己的简历
既然要转行到人工智能,最后一步肯定要做好自己的简历。在做简历的时候,既要突出自己的算法能力,同时也要突出自己的工程能力,公司肯定希望招聘到的人什么都会,你的工程能力会在你面试算法岗位的时候是一个加分项。
在简历上写项目的时候,尽可能要描述的详细一点,要让面试官能够看懂你在做什么,而不是你在吹牛。要把自己做的,思考的,带来的业务结果都描述上去,同时要强调自己的算法方面的技能。这样,你拿到算法Offer的概率才会更大。
总结
总体来说,软件工程师在转行到人工智能领域之前,一定要想好自己为什么要转行到人工智能,如果只是为了钱景或者岗位的发展情景,那真的不建议你转行过来。
转行到人工智能的过程会很辛苦,没有坚定的目标肯定很难坚持。当然,如果你真的对算法很感兴趣,希望你能一直保持自己最初的目标,最后,祝你好运。
首先你需要明白自己为什么要转行到人工智能,是觉得人工智能发展前景不错,还是觉得人工智能岗位工资高才转行过来?如果仅仅是因为这两点,那我劝你还是不要转行到人工智能。
机器学习算法入门书籍,我推荐李航的《统计学习》,这本书里面讲解的算法概念、公式一般都可以看懂,对于新手而言会比较友好。
机器学习教学视频方面,我推荐吴恩达的机器学习公开课,你可以去网易公开课上进行观看,观看的同时,你可以做好笔记,记录自己的感想以及不懂的地方,然后在听完课程后,可以去Google上找到自己不懂的问题,查看别人的观点,解法。
国内比较著名的有天池大数据竞赛、DataCasle,国外比较著名的有Kaggle。你可以选择自己感兴趣的比赛项目,最好能够找到一起参加算法比赛的小伙伴,这样在做比赛时,能够一起讨论,交流。这样更能提高你对算法方面的理解。最好,你如果能够拿到算法比赛的不错的名次,这将会帮助你更好的进入互联网大厂。
多观看大牛的算法Paper,能够加深自己的算法理论理解。你可以去百度学术或者Google论文上面查找自己想要看的论文,然后下载下来仔细的观看。在看论文的同时,要去思考他们为什么要这样做,这样的做目的是什么,解决了什么问题。带着问题去看论文,这样你看完才能更好的理解大牛们的思想。
总体来说,软件工程师在转行到人工智能领域之前,一定要想好自己为什么要转行到人工智能,如果只是为了钱景或者岗位的发展情景,那真的不建议你转行过来。转行到人工智能的过程会很辛苦,没有坚定的目标肯定很难坚持。当然,如果你真的对算法很感兴趣,希望你能一致保持自己最初的目标,最后,祝你好运。
转人工智能,首先需要了解人工智能是什么,它涉及哪些知识领域?
人工智能,顾名思义,它是研究如何用机器模拟人类思维方式,从事类人活动的一门的科学,也是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新兴技术。它涉及计算机科学、机器人、语言识别、图像识别、自然语言处理、决策系统和专家系统等知识领域。除了涵盖自然科学,甚至还涵盖了哲学和心理学等社会科学,是真正的知识大融合,所以要从事该领域的研究和生产是一项极富挑战性的工作。
1、计算机科学领域
(1)编程语言:需要深入学习Python、Go等适用于复杂科学计算的、提供更多成熟算法处理模块的编程语言。
(2)矩阵运算和算法模拟:深入学习MATLAB。
(3)根据自己的研究或工作方向学习业界成熟的开发框架或开源库:例如图像识别(OpenCV等)、语言识别(Python语音识别库,百度、科大讯飞、捷通华声等语音识别库)、神经网络(DistBelief等)、机器学习(Google开发的TensorFlow等)。
(5)其它。
2、算法
(2)最好自己在理解算法的基础上,将其编程实现再加以验证。
3、数据统计、分析和整理
获得算法结果后,要善于分析这些数据的规律,从中获得有效信息。同时要善用一些统计分析工具。
虽然我们只能看到成果,而无法了解实现,但是从中学习到的东西也会使你避免走很多弯路。
5、心态
目前,人工智能的研究和实践如火如荼,但是应该摆正心态,做好打持久战的准备,短时期内很难将该领域的技术研究透彻,并完全推广应用。一句话,此路任重而道远,但却是人类社会科技发展的必经阶段。
感谢阅读!
我研究生是研究模式识别方向,图像处理领域。学过《模式识别》《机器挖掘》等类似的课程,对我学习AI有一定的帮助,但是对于学习AI也有一定的难度。我的学习过程是这样的:
Python的学习是转行人工智能的基础,这个是一定要学的。如果你是C或者Java工程师,学python会非常快,因为都是面向对象的语言。基本一周就可以看机器学习的开源代码。学习编程语言对于程序员来说很easy了,这里不再多说。
可以简单的学习一些机器学习基本Python库,比如numpy,scikit-learn,Theano,Tensorflow,Caffe2等等。选择就是,用到再学!
机器学习分为:图像识别,语音识别,自然语言处理等方向,选择一个自己感兴趣的方向,然后找对应的项目。从项目出发并不是说从做项目开始,对于没有领域知识的程序员,写代码是很痛苦的。从项目出发的本意是:
不要从学习概率论,高等数学等基本理论开始。我第一阶段就是从这些基本理论开始,效果很不好。这些理论枯燥,没有针对性,没法理解这些理论跟AI到底是什么关系。因此,很容易放弃。
从项目开始:找个开源项目,比如GitHub上的开源项目OpenFace,去读源码,看人脸识别是如何做到的。读源码的时候一定会碰到各种机器学习的Python库,一些机器学习算法。以此为出发点,熟悉Python库的使用方法。碰到的机器学习算法这就是开始学习AI的切入点。
从项目开始的好处是,能将理论和实践相结合,比单纯学习理论更能理解理论的妙处!
在项目中碰到的机器学习算法,要想清楚明白是怎么来的,就要去论文中追本溯原,学习算法的使用环境,算法实施过程,算法的数学推导。这个时候就是学习数学基础的时机,只学习对应的章节,用不到的暂时不用学。
学习算法,还借助一些介绍机器学习算法的基础,把算法彻底弄懂。系统学习基本算法基础,比如卷积人工神经网络,反向传导,线性回归,贝叶斯网络,支持向量机SVM,决策树等等。这也很有帮助!
算法动手:
应用动手:
做一名程序员不易,要转行的程序员更不易!任何时候,身体健康第一!且行且珍重!如果有需要的资料,可以私信我,希望能给你提供帮助!
坚实的统计学基础是为了更好的理解机器学习。
机器学习理论可以深入理解构建函数模型并且与团队其他人员对机器有效沟通。
调试/调节模型对一些不收敛或者包含与调试代码非常不同的过程但是给出合理结果的机器学习算法进行调试非常重要。
软件工程技巧可以在许多应用型机器的学习中使用。
但是应用人工智能领域变化的特别快,最好的学习方式是动手实践并且真正尝试构建一个完整方案解决实际的问题。