谢谢邀请!
软件工程师转行做人工智能是一个不错的选择,但是要根据自身的知识结构进行相应的准备。对于研发级软件工程师(研发级程序员)来说,转行做人工智能是相对比较容易的,因为
我亲身经历了从非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技能,也就是码农必备的技能,那就快点学起来,用起来。
和其它行业一样,码农要保持自己的职业竞争力,需要活到老,学到老。在软件技术这块,迭代周期别其它行业要快很多,就更需要坚持不断学习。