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