深度學習工程師的4個檔次

Candy_GL發表於2018-08-13

轉載:http://www.broadview.com.cn/article/794

 

 

最近不少朋友問我,轉行做深度學習的話,能不能找到工作,能找到什麼樣的工作,能達到什麼樣的收入水平……

這種問題其實不僅僅是存在與深度學習行業的入門和轉型中的思考階段了,在其它的行業和技術領域同樣有這樣的困惑和疑問。那麼對於深度學習這個領域目前階段的發展來說,一個工程師要具備什麼樣的素質才能算是達到要求呢?我想可能可以粗略地分成4個檔次吧。

LEVEL1:能讀懂論文
  這是一個最最基本的層次了,如果沒辦法讀懂論文的話,任何工作幾乎都談不到開展。市面上的任何書籍,不論是中文的還是外文的,都在講原理層面的事情,要想看著這些書籍來直接做專案是非常困難的事情。而對於拿到一個工程需求的時候,不論這是一個分解完的需求還是一個分解前的粗需求,第一步幾乎都是要到網上去找文獻——看看目前為止,世界上其它的人有沒有涉足過這方面的研究,並且有一些理論成果出來。這非常重要,因為這直接會奠定後面研究和開發的大方向。

LEVEL2:能修改程式碼
  如果你能夠讀懂論文,並且能夠在GITHUB上找到一些原生或者野生的程式碼,還能執行和修改,那麼恭喜你,你已經算是一隻腳踏進“工程師”的門檻了。這裡說的原生程式碼說的是論文的書寫方自己實現的程式碼(大多數以python為主,也不乏lua等其它語言);野生程式碼就是一些好事者看了相關的論文寫的一些實現。這兩種不論有哪一種都是非常好的,畢竟模型已經在一定程度上落地並且驗證過了,尤其是那些stars給的比較多的工程專案。能夠讀懂,並且對這些程式碼進行工程層面的改造,已經是實現相關需求的最基礎的內容了。在這個部分請注意,不論是原生程式碼還是野生程式碼,它們在實現的過程中和論文可能多少都有一些出入,有的出入屬於有意或無意的刪改,有的則屬於Trick(技巧)的省略,這些都會導致你在執行這些程式碼的時候與論文所描述的各種技術指標產生差距。不過還好,到這個程度基本已經可以找到一份收入還說得過去的工作了。

LEVEL3:能夠實現論文程式碼
  如果LEVEL2這個級別沒有問題的話,那麼可以嘗試挑戰一下第三個檔次。那就是根據論文中的一大堆公式和實驗描述來自己實現程式碼,不過這個可著實不容易。如果實在沒有這方面的能力或者經驗,可以從LEVEL2做一個過渡,那就是讀懂並理解第三方程式碼的深刻含義和各個部分的門道,然後做一些調整和深度修改。並能夠在自己強大的理論基礎和工程經驗指導下,對原來模型進行有益的優化。使得這個模型能夠順利遷移到當前需求的場景下,並且能夠逐步演進,直到正常工作。如果這個級別基本沒問題的話,恭喜你,在一線城市,要一個年薪50W以上的工作幾乎是唾手可得。

LEVEL4:新的模型建議
  當你對深度學習各方面理論有了足夠透徹的見解,通常都會深入地去研究一個方向而不是再涉獵廣泛地去各種下載程式碼和讓他們跑起來——物體檢測、人臉識別、自動駕駛、聲音轉換等等一系列方向都是可以嘗試的。當研究到一定水平以後,你的研究成果是會可以在業界有脫穎而出的能力的。這個脫穎而出不是指你在理論上明顯碾壓業界標準,而是說你在模型設計上的某些技巧會比同時代的其它相關模型有著更好的表現不論是速度效能、準確率、訓練時間等,任何一個方面得到了明顯的提升那就是非常值得稱道的專家級人物了。到這個級別,在不少公司裡基本都可以被稱為“科學家”,或者“資深專家”了。

  在此之外,應該還有更高的層次,不過我想把它列入工程師的評價範疇顯得不太合適——那就是,可以提出比較新的理論基礎或者方式,在更大層面給後世提供一個研究的基調或者方向。例如CNN的提出,例如GAN的提出等,這些都是有著劃時代意義的。達到這個檔次的資料科學家會成為整個行業座標性人物,也是鳳毛麟角。這是每個深度學習工程師都值得去努力追求的方向。

相關文章