目前,各行業(yè)都在嘗試著用機器學習/深度學習來解決自身行業(yè)的需求。在這個過程中,最為稀缺的也是高質(zhì)量人工智能人才。 這一年我們見證了不斷有非計算機專業(yè)學生轉(zhuǎn)行人工智能的現(xiàn)象,每個想轉(zhuǎn)行人工智能算法崗的同學或多或少都有著類似的原因:人工智能領(lǐng)域的火熱需求和高于其他行業(yè)的薪資水準。那么,非計算機專業(yè)如何轉(zhuǎn)行人工智能,并找到算法 offer?
以下為作者 Nick-Atom 在知乎上的回答,希望對你有所啟發(fā):
作為轉(zhuǎn)專業(yè)算法黨,分享些經(jīng)驗吧。開門見山,轉(zhuǎn)專業(yè)和本專業(yè)沒什么區(qū)別,該學的還得學,只有學的好與差的區(qū)別。好處是,只要你想學(并且英文好),超一流的學習資料滿天飛。
首先說幾個非常非常非常重要的原則(我認為這幾個原則要比具體的方法論重要):
1、算法工程師也是軟件工程師,編程基礎(chǔ)要求很高(只是在架構(gòu)和系統(tǒng)這塊不做高要求)
基本上,你要花三分之一的時間處理數(shù)據(jù),三分之一的時間修改線下線上代碼以適配你的算法,三分之一的時間調(diào)試模型。
前兩者都需要進行大量的代碼閱讀和自己 coding。
指望跑跑模型,調(diào)調(diào)參數(shù)不需要碼代碼是不可能的,除非你面的是科學家崗,但轉(zhuǎn)行的科學家崗基本不現(xiàn)實吧。
2、80% 的算法優(yōu)化來自與對業(yè)務(wù)架構(gòu)的理解
這一點有點反直覺了。
很多人以為算法工程師的工作就是把從論文和公開課里學到的 fancy 的算法用到業(yè)務(wù)里。這個基本上就是大錯特錯了。首先,絕大多數(shù)的先進算法只是相對于 baseline 算法有了一點點小的提升,這對于做科研是有意義的,畢竟積少成多。但是在工程中,這些算法的性價比是極低的,收益不大,卻要大幅度調(diào)整系統(tǒng),增加系統(tǒng)復雜度,得不償失。
所以除非是非常顛覆性的想法,大幅度提升性能,像是 DNN,ResNet,Word2Vec,Bert,Seq2Seq 這樣的模型算法,才會在業(yè)界廣泛的應(yīng)用。
那么更多時候,算法工程師的工作是結(jié)合業(yè)務(wù),用上述提到的這些基本的模型去優(yōu)化業(yè)務(wù)流。比如,在廣告領(lǐng)域,原來要求完全匹配用戶的搜索詞,我可不可以用 Seq2Seq 模型改寫出幾個類似的搜索詞?或者,原來都是 Counting Feature,我可不可以用 DNN Embedding 來做一些離散 Feature?
換句話說,模型都是最基本的模型,但是怎么結(jié)合業(yè)務(wù),選對模型,用對地方,才是真正考驗算法工程師能力的地方。而要充分理解業(yè)務(wù)架構(gòu),并且能夠在復雜的業(yè)務(wù)代碼中自由的翱翔,你的工程能力一定不能差。
3、優(yōu)秀的算法工程師都有很好的科研 sense
我個人覺得這一點被很多人忽略了。但其實這個非常重要。算法工程師和后臺/架構(gòu)工程師的一個很大區(qū)別在于算法工程師還是有一定的研究性質(zhì)的。換句話說,無論是上線一個業(yè)務(wù)還是開發(fā)一個中間件,后臺工程師要解決的問題比較明確(你不做還有產(chǎn)品***你做~~),結(jié)果也比較好度量(能不能用,性能如何)。
但算法工程師需要自己去找可以優(yōu)化的地方,且結(jié)果往往難以預測,有些工作的結(jié)果甚至難以可靠度量。這就需要你有好的科研 sense,能夠發(fā)現(xiàn)值得解決且能夠解決問題,設(shè)計合適的解決問題的方案及科學的結(jié)果度量方法,充分的實驗和論證,最后可靠的上線。
簡而言之,你要自己找活干,找對活是成功的 80%,活沒找對半年一年沒成果的時候壓力也是很大的。
除此之外,其他能力還包括:
1、英文
這個不用多說了。讀論文看視頻是少不了的,英文不行的話真的是,很累。
2、數(shù)學和機器學習理論
這一點我和一些高票意見不太一致,我覺得如果你理論能力很強,當然是錦上添花的事。但這不是必須的。能講清楚 LR 和 DNN,會推反向傳播和交叉熵,有一些項目經(jīng)驗(對項目中用到的算法有深刻的理解),對于入門級算法工程師來說足夠了。對于比較資深的算法工程師,也不要求對每個算法都理解的深刻,項目經(jīng)驗豐富些,基礎(chǔ)扎實也夠了。
畢竟學習幾個新算法,對于編程和算法基礎(chǔ)扎實的同學來講,實在是最輕松的事了。
理解了上述這幾點,準備起來自然也比較簡單了。
1、扎實的編程基礎(chǔ)
C++/Java + Python + 算法數(shù)據(jù)結(jié)構(gòu)。老三樣跑不掉的,而且要求只會高不會低。手寫算法練起來吧。
2、機器學習基礎(chǔ)
不要求多求深,去試圖掌握一些很 fancy 的算法和模型。好好去理解最基礎(chǔ)的 LR/CNN/DNN, 理解正則化,交叉熵,反向傳播,normalization 等等等等這些最基礎(chǔ)的概念,一定要理解的透徹。最好就是把這幾個模型自己實現(xiàn)一遍,尤其是 BP.3,工程能力和項目經(jīng)驗接觸過大型的工程項目,無論是開發(fā)還是算法,都是非常重要的經(jīng)驗。工程能力確實會讓你空有想法,難以發(fā)揮,戴著鐐銬跳舞。如果實在沒什么項目經(jīng)驗,可以考慮做一些比賽。但比賽用到的環(huán)境實在是太理想化了,導致價值實在有限,基本上我們找新人是不看比賽的(除非大賽成績特別好)。總結(jié)來說,大型項目的工程經(jīng)驗(哪怕與算法無關(guān))也要好于比賽經(jīng)驗。
3、論文
一流論文大殺四方,灌水論文沒什么價值,發(fā)論文是實習生的工作,full-time 是要給公司賺錢的,不要心存僥幸,大清已經(jīng)亡了。如果沒有什么厲害的成果,而你又志在 industry,不要浪費時間灌水了,好好準備面試。
4、聰明 or 優(yōu)秀的科研 sense
這一點其實非常非常重要,只是大家的考察方法五花八門,實在難以總結(jié)。在我司,不聰明是我們拒人的第二理由。僅次于編程基礎(chǔ)差。至于什么樣的人算聰明的話見仁見智,我個人的話,數(shù)學好的人特別是概率,或者是講項目的時候能夠感受到非常好的科研 sense 的人,我會覺得是聰明的人。
最后幾句話送給轉(zhuǎn)行的各位,既然認定了要走工程師這條路(不論算法還是工程),就一定要拿自己和專業(yè)的人去比較,付出更多的努力去趕超。不要奢望這個行業(yè)有什么不需要計算機基礎(chǔ)的特別適合轉(zhuǎn)行的同學的神奇崗位,真正好的崗位,你的競爭對手就是計算機專業(yè)同學,評價的指標也就是計算機專業(yè)指標,你的專業(yè)所學基本不做考量,不要心存僥幸,好好加油吧。
-
算法
+關(guān)注
關(guān)注
23文章
4617瀏覽量
93030 -
人工智能
+關(guān)注
關(guān)注
1792文章
47377瀏覽量
238880 -
機器學習
+關(guān)注
關(guān)注
66文章
8423瀏覽量
132752
原文標題:非計算機專業(yè)如何轉(zhuǎn)行AI,找到算法offer?
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論