本人有幸參與了自己部門的AI預研小組,從最開始半投入(一邊兼顧專案,一邊預研學習),到後面的全力投入(只負責預研學習),差不多快半年了,下面總結下一個普通的程式設計師轉行AI方向會面臨的哪些挑戰。
首先介紹下本人背景,非985,211渣本,這學歷可以說低得不行了,2017屆專業軟體工程,非學霸,專業知識一般,主要做JAVA開發,然後轉行做的是計算機視覺方向。
然後開始說說我轉行AI方向所遇到的挑戰。
-
英語能力
由於boss要求比較高,要求我們只能看英文論文,對於我一個只過了英語四級,在大學幾乎沒看過英文文獻,在剛開始的時候真的是很煎熬的。但是這真的就是入門級的門檻,因為AI行業最近幾年的高速發展,一年的水平差距在普通IT行業至少能算三四年,所以必須得追新,英文閱讀能力就必須具備,而且不僅僅追最新的,之前的老論文依然得看,因為新論文裡引用老知識都是直接引用老論文,所以你會閱讀大量的英文論文。 -
演算法基礎
機器學習,深度學習演算法的基礎真的非常重要,我只是簡單看過一些線上的教學視訊,吳恩達的機器學習,CS231n的計算機視覺等等,在後面實現模型,調整引數的時候就會發現自己的基本功太差,幾乎只能跟著論文調參,自己除了瞎蒙,不能做出任何決策性的調整。所以如果要轉行,演算法基礎真的非常非常重要,切勿心急。。 -
數學基礎
這也是非常讓我頭疼的一塊,如果只是做一些機器學習和深度學習相關的工作,我感覺數學的需求並不是特別多,但是如果想繼續深入,學習強化學習或者遷移學習,教程裡面就會有大把大把的數學推導,真是讓人頭疼。在一個團隊裡,大家還可以督促學習,如果一個人自學,面對幾頁的數學公式,數學基礎又不是很好的話。。 -
程式設計能力
程式設計能力對於一個演算法工程師來說依然很重要,因為你除了寫模型和調參,往往還需要你工程化,除非你是非常優秀的演算法工程師,不需要你實現工程。對於轉行演算法方向的程式設計師,千萬不能丟掉你的程式設計能力,有空還是可以多寫寫程式碼,然後在網上經常看到很多非IT專業的轉行演算法,例如數學專業,強烈建議多紮實下程式設計能力,因為所有的大廠幾乎都會有演算法筆試題。 -
實戰經驗
其實演算法這個行業對實戰經驗的要求也是非常大的,舉個例子,最近我想要實現一篇論文的模型,論文的理論知識看上去是非常簡單的,所以就自信滿滿的去擼模型,然後發現怎麼擼都不不太對。最後對比別人的原始碼,其實我漏掉了很多小細節,比如一些資料的預處理啥的,這些在論文裡都不會告訴你,你需要的是經驗,業內人士共有的經驗,但是我沒有,所以作為演算法工程師,理論固然重要,但是不能脫離實戰。 -
學歷要求
這是我最近了解到的問題,這個行業真的是很吃學歷的,我嘗試性地給很多計算機視覺公司投遞過簡歷,都沒有收到過任何響應,因為別人的要求幾乎都是3年以上碩士以上,我有個碩士同事也去嘗試過,雖然會有面試機會,但是面試官還會詢問你的本科學歷,總體來說對學歷要求是比較嚴格的。然後經過我個人的分析,我覺得這一項要求並不算過分,因為在我看來演算法方向和其他IT方向不太一樣,三個臭皮匠頂個諸葛亮在這個行業是沒有用的,一個優秀的演算法工程師強過一百個中庸的演算法工程師,所以如果我是企業老闆,我也會在學歷上進行篩選。 -
榮譽獲獎
這也是這個行業比較看重的東西,就是各種大賽獲得的名次,為開源社群做過哪些貢獻,然後發表了多少論文,但是現在論文滿天飛,優質的論文卻越來越少。如果你想在這個行業有所成就,你就必須得關注各種大賽,爭取取得一些名次,國內的大廠都這麼幹。然後要是能夠發一些優質的論文,那你在這個行業就可以混得如魚得水。
最後說兩句
當前AI行業確實是泡沫現象嚴重,很多人都想進入這個賽道跑跑,泡沫是會破的,特別是最近正好遇上經濟寒冬,轉行需謹慎!!
從面向工資程式設計的角度,演算法工程師的待遇的確非常好,但是在我看來那隻針對於優秀的演算法工程師,一般的演算法工程師可能會淪落到做演算法開發(也就是將別人寫好的演算法工程化),對於這種工作,待遇也就沒那麼好了,而且往往還面臨模型優化不好,績效比較差。
以上僅個人觀點,雖然比較露骨,可能會打擊自信心,但是正因為如此,看清事實,然後依然向前奔跑,不後悔,越努力越幸運。