一文讀懂|找一份高薪的AI工作有多難?


一文讀懂|找一份高薪的AI工作有多難?

本文約4000字,建議閱讀10分鐘。

本文介紹了目前秋招市場的應聘現狀並對各類求職者做出了指導意見。

一文讀懂|找一份高薪的AI工作有多難?

“秋招的AI崗位競爭激烈嗎?”

AI崗位這幾年一直大熱,而知乎上這個問題最近同樣很熱,陸續吸引了200多個回答,已經有5000多人關注,接近200萬瀏覽。

這個問題看似是在談招聘,其實更是在談人工智能相關方向的學生,應該如何更好的自我提升,如何為未來做好準備。

我們的小編獲得了微調、Dr.Frankenstein、Beili、陳曉智、Ender等用戶的五篇高質量回答授權。

他們從各自不同的角度,給出了精彩且中肯的觀點。

重點是你有多少必殺技



一文讀懂|找一份高薪的AI工作有多難?

前一陣子心血來潮去某研究機構面試,面的是不限方向的“機器學習研究員”。

前半段聊得很順利,主要介紹我開發過什麼庫寫過什麼論文,想要繼續做什麼。

面試的中段面試官問:“那你的這個方向用深度學習怎麼做?”我很老實,說這個方向暫時無法大規模應用深度學習,某些因素還不成熟。對方顯得很失望,強調他們需要每個人都做深度學習研究,發深度學習相關的會議,因此這個機會自然也就泡湯了。

講這個故事的目的是為了說明:AI領域的崗位正在朝精細化發展,而候選人的競爭力更多的是和崗位的“契合度”,而不是你本身有多好。這要求候選人的技能下沉,能在崗位上解決實際問題。

再早幾年,這個行業的招聘是走粗放模式的,只要你會ABCDE,學歷不錯,那麼歡迎你。但這幾年隨著熱潮迴歸理性,以及企業變得越來越“精明”,它們已經逐漸明白了需要什麼樣的人,明白了AI相關的崗位本身就不是靠員工數量,而是靠質量取勝的。

比如做手機上圖片識別的,它的目標候選人就是明白如何把成熟的識別模型部署到手機上的人,而不需要一個自然語言處理的大牛,也不需要一個對機器學習理論研究很深的專家,更不需要一百個普通程序員。這不是說你不夠好,而是說你不適合。而大部分人的求職是公司導向的,知名公司一個不落下,使用“鳥槍法”。而不是技能導向,尋找和自己相關性高的僱主。

所以在這個回答下你會看到兩種截然相反的看法:

  • AI相關的工作很難找,為什麼我條件這麼好也被拒
  • AI相關的工作遍地都是,我水平一般照樣斬獲很多錄取

拋開所謂的個例不談,我猜測出現相反結論的原因可能是因為大家對於“契合度”的關注程度不同,就是你面試的崗位和你的經歷與經歷有多大的相關性,你是否可以很快為團隊做出貢獻。我猜測不少面試不順利的人可能都屬於有了廣度,缺少深度,也就是“萬金油”。比如某個候選人可能是:TF也會用一些,NLP的項目做過2個,刷過兩個Kaggle,人臉檢測學過教程,Cousera上的證書也拿過幾個。這就屬於缺乏特點,和所面試的崗位之間關聯性不夠強,競爭時自然後力不足。

對於明白自己喜歡和了解的領域是什麼的人來說,只要朝契合度高的方向使勁就好了。而對於只有了知識廣度,卻還沒有確定自己的發力方向的人來說,最重要的是明白:你的特點是什麼,你有什麼優勢,你打算怎麼利用這個特點脫穎而出。換句話說,“你和別人有什麼不同。”

從我自己面試別人的經歷來看,最重要的是你有什麼長處,而不是你的技能有多均衡。越是有經驗的業內人士越是看候選人的長處,而忽視短板,與木桶原理相反。“什麼都會一點”=“什麼都不擅長”。

隨著行業進入進一步細分和專業化,靠刷刷題,調調包,做幾個相關項目,上幾門課程,就能進大廠和明星創業公司的機會只會越來越低。我們都需要開始思考發力點,就是你與別人有所區別的地方,爭取成為一個“小領域的專家”。即使無法成為專家,找亮點也比追求全面開花要好,比如:

  • 對A領域感興趣,是否可以在A領域發一些有意義的論文
  • 對A領域感興趣,是否有實現A領域缺失的經典算法,並封裝以供他人使用並獲得關注
  • 編程能力很強,嘗試做偏向底層的設計,比如保證機器學習算法在移動設備上高效運行
  • 明白自己的擅長的技能在什麼公司有用武之地,專注於這些僱主

說到底,任何風口行業都有降落的時候,求職本身就是“小馬過河”,your mileage may vary。同時隨著行業逐漸成熟,中高端崗位的求職重點肯定會朝專業性和契合度上發展。所以重點不是你會多少武功可以表演,而是你有多少必殺技可以一招斃命。

“競爭十分激烈啊”

一文讀懂|找一份高薪的AI工作有多難?


最近又去實習,吃飯的時候聽leader調侃:剛才視頻面了一個小時,我讓他寫個線性目標的sgd優化的偽代碼,我把目標函數寫給他,他在視頻裡寫了個

import tensorflow as tf…loss = …optimizer = …


TM的用tf的優化器我要你寫啊……老子是讓你推啊……


其實面試官就是希望他能就原理做一下簡單推導,我沒有表述完整,面試官後來解釋了要他推一下公式,寫下來,mini batch怎麼更新,更新什麼寫一下偽代碼,可他寫不出來。

leader穩定了下情緒:刷了十幾份簡歷,全是這樣的,除了deep learning、tf/pytorch啥都不會。

我笑抽,道:你得拿學校篩篩啊……

他:笑個屁,都是你們學校的……

由此可見,競爭十分激烈啊……

最全應聘指南


一文讀懂|找一份高薪的AI工作有多難?


感覺是比較激烈,但是也沒有想的那麼慘烈~~

面過騰訊優圖、阿里中臺、騰訊AI lab,其實瞭解下來,大廠還是很缺人的!!!

像騰訊優圖、AI lab, 阿里IDST,AI lab,這幾個熱門部門一直都在瘋狂招人,只是

很多候選的同學背景不match,而不是你實力不行(當然基礎不紮實的同學請好好補課)~~

大廠很多時候招人,有一個很重要的背景就是希望校招的同學能夠快速上手業務,幫助產出。如果你只是發發paper,瞭解些不痛不癢的模型,知道個大概的機器學習原理, 那面試官怎麼可能對你感興趣呢?最後招進來,也沒辦法跟老闆交差的。

據我瞭解,對於一些部門大力投入的業務,有些都不設HC上限的,只是很多時候都招不到一個合適的候選人,因為大家動不動就說我用過各類深度學習或者機器學習的算法庫,但是一問細節,都是浮在表面,這讓面試官如何繼續下去呢?

還有一部分同學,看起來paper很多,但是一問motivation,其實就是修修補補,這種paper對於產品落地沒有太大的意義,面試官反而會去拷問一些基礎知識了,而最後很多發paper的同學往往基礎知識都不夠紮實…..

但是投AI 的同學真的實在太多了(大家可以考慮下轉型)。。。曾聽mentor說投算法實習的有2000個候選人,最後一般錄取3個左右。。。(想想這比例,大家還是好好練好基本功,再投AI比較合適呀)

所謂快速上手業務我覺得從三個角度來說比較合適:

1. 業務需求型

假設你負責的算法是CV / NLP 或者推薦中的一種吧,那麼leader交給你一個project的時候,不可能整套算法的輸入和輸出都是確定的,那麼這個時候你要去明確輸入是哪些? 輸出又是哪些?(這些可能需要跟leader溝通,有些也可能需要跟開發或者PM溝通),明確之後,有哪些可以做baseline的算法?

接著,針對你的這個業務場景你想用哪些算法嘗試?作完對比以後,如何做badcase分析?在寫週報時,如何描述你做了什麼,有什麼問題,後續你初步的解決方案又有哪些?這一連串的步驟連起來並且在有限的時間內完成,這就是快速上手業務;

2. 業務探索型

現在leader交給你一個預研性的project,組內沒有人做過,那麼你能否通過github, stackoverflow, reddit, 或者 paper 等各種渠道,嘗試2到3種你認為可行的方案,而不是直接google一下,問下同事,看下論文,直接反饋說,不行,這個太難了;

3. 業務成熟型

組內這快業務比較成熟,比如大廠在做推薦的任務時,都有成套的框架和組件,那麼你能否及時用好(比如說,一個月到兩個月的時間完成從數據接入到數據輸出的整個流程,以及其中的難點,時間耗點和可改進點),在做月度彙報時,不是說我熟悉了什麼,而是我發現了什麼,我覺得有哪些可以改進的地方,你下一步嘗試的時間和預期等等,這樣也是所謂的快速上手業務。

這其中調參的目的是提升效果,但是你還得對數據有較高的敏感性,並要學會從leader的角度去考慮我該如何與其他部門對接,準備哪些材料,更好的用好現有的組件和算法。


關於面試和具體技術的涉及範圍:有不少同學問到面試的範圍和coding的要求,分碩士和博士補充吧 (只針對應屆同學)

碩士

主要看部門、方向、業務和你所瞭解方向的掌握程度。

1. 大廠

基本的coding+leetcode是基礎(c++或java必須掌握一項,python等腳本語言必須掌握一項。

所謂掌握,我的面試體驗是:拿C++舉例,你對其中的多態、容器、垃圾回收等要有清晰的瞭解,讓你舉個例子或者做個描述必須得信手拈來) ,那caffe、tensorflow、pytorch、mxnet,你至少要玩過一項,這一項隨便問個模型你得知道輸入是什麼,參數有哪些,輸出是什麼吧。再加上你的論文、項目、比賽或者實習經驗,這是面試的加分和可談判項。

那後續的面試套路基本就是machine learning(原理+推導)+ deep learning (舉例+理解,例如過擬合的解決方法,dropout的梯度求解,cnn的梯度求解等)+ 你的具體方向中的SOTA(state-of-the-art)模型(CV / NLP/ 語音 等)。

對業務考察也比較關注,就拿推薦系統來說,xgboost / lightGBM這些基本的你都得會,包括怎麼用,怎麼做特徵選擇,怎麼用大數據框架等,默認你都要有一定程度的涉獵(因為面試官在這行摸爬滾打至少3年以上了,

看簡歷看多了要求自然水漲船高,這些讓我們應屆生的確有些頭疼。想想,你在學校怎麼會輕易接觸上千萬甚至上百億的數據呢,所以基本都是懵逼狀態,這裡給大家說個小竅門,核心思想就是我認為可以先怎麼樣怎麼樣,然後再怎麼樣怎麼樣,要有個大致的解決思路,方案不一定要對,但一定要有你自己的想法和嘗試);

2. 創業公司(或者小型獨角獸)

簡單粗暴,兩輪leet code中等難度的面試題,因為公司面臨的是生存問題,沒有時間和空間讓你以摸索的方式搞產品,所以中等的代碼輸出能力是必須的。

我面過上海的一家B輪公司,一個小時6道算法題,這對於我這種半路進入AI的同學,基礎知識又不是足夠紮實的同學來說的確是當頭一棒,所以鍛鍊可持續性的開發能力是非常重要的(基本思路就是搞通一門語言,再對例如貪心、動態規劃、BFS、DFS、搜索、字符串、圖、數組、鏈表、二叉樹等類型的數據結構與算法有深入的瞭解);

3. 巨星獨角獸

重點考察兩個,一個是代碼輸出能力(面向算法和麵向業方向的),一個是學習能力,前者是一面的通過點,後者是二面通過點。這裡代碼會對例如SGD的並行實現、CNN的偽代碼實現、drop out的反向梯度實現、tensorflow的源碼等進行考量(可實現+free bug是coding能力很強的面試官喜歡的,思路和內存消耗以及並行化是博士面試官喜歡的)。學習能力主要考察智商,以及根據你碩士期間做的事情來進行衡量;

博士

主要看重點會議論文 + 對業務的理解 + 一定的代碼輸出能力(MATLAB 、R這種也算)(我自己不是博士,只能看些身邊工作的博士經歷來說幾句吧)

  • 基本3-4篇頂會是進入大廠一線AI算法團隊的門檻;
  • 剩下的就是考察你後面三年之內出頂會paper和對業務幫助的能力了(我也不知道怎麼考察,大概會讓你談談思路和想法吧,或者直接跟你說我們有個場景,你打算怎麼做之類的);
  • 沒有頂會的博士一般進入大廠二線的算法團隊,在已有的公司業務上進行算法迭代和優化(至於大廠算法部門哪些是一線團隊哪些是二線團隊,大家上脈脈上一問便知);
  • 代碼這部分博士好像都不怎麼問leetcode 了,至少概率比較小,這個要看面試你的總監或者高管是什麼風格的,如果對方是ACM背景的大神,那可能還是會給你出道算法題。。。
  • 總而言之,博士大部分都是圈子裡的人,套路大概都很清楚,最後就是在做一個最優match的匹配問題,所以會有取捨吧;


Ps,你的老闆和實驗室大致決定了你最後能去的團隊水平。。。(大廠基本對國內牛逼的一線老師和團隊都是實時跟蹤的,所以有個好老闆對於博士太重要了,這有連帶作用呀)。

招聘者說


一文讀懂|找一份高薪的AI工作有多難?

在我看來,我期望招到的候選人大致分兩類:

  • 第一類候選人是某個方向的專家。他們在某個方向(比如detection/parsing/3D)有很深的理解和實踐經驗,掌握該領域最好的幾種方法,從算法原理(為什麼work)到代碼實踐(如何work)都瞭然於胸,且能針對實際問題獨立設計相應的算法方案。
  • 這類人,非常緊缺。今年一個比較明顯的體會就是有頂會paper的人比往年更多了。如果是往年,我們會期望他們有獨擋一面的能力,然而今年感覺有點差距。具體體現在,有的候選人雖然有一兩篇paper,但對自己做的事情卻也理解不深,或實際動手能力比較欠缺。這點比較遺憾。


  • 第二類候選人有非常強的動手能力。他們不一定要有獨立設計算法方案的能力,但一定要有過硬的實踐能力。比如能較好的復現一些paper;在嵌入式平臺上優化過模型而不僅限於跑GPU;或者在自己做過的項目中做過一些比較紮實的改進(真知灼見)而不僅限於跑開源代碼。
  • 這類人,相對沒那麼緊缺。即使這樣,由於太多人往AI領域轉了,至少90%的候選人都達不到第二類要求,導致招聘篩人工作量劇增。

關於AI科學家的幻覺


一文讀懂|找一份高薪的AI工作有多難?


對於這個問題,Ender更推薦他之前寫的這篇文章。

其實這是一篇吐槽,本來的標題是“不要用民科的心態對待AI”

因為AI概念如此之火。

從各種BP和公司宣傳看,老闆們紛紛轉型AI公司,從只缺一個程序員變成了只缺一個AI專家;從不同職位收的簡歷來看,對於廣大的同學們,最熱門的職業理想從前幾年的產品經理變成了AI專家,

那麼關鍵的問題就來了,到底什麼是AI專家?

從前我在大公司招聘的時候,最怕的是沒有任何工作經驗和相關背景的同學,上門就說做科學家,反問對方做了什麼準備,小朋友理直氣壯的說,我就是等著進來你們培養我的。覺得自己只差進入牛的AI公司(或者牛AI學校,研究院)有AI牛人給個機會手把手的教,是第一大幻覺。

有些小朋友心氣很高,就算讓他進了谷歌FB,他也會覺得怎麼谷歌的科學家都在做數據測試啊,去阿里騰訊解決業務問題一定更好;

去了BAT會覺得怎麼只會糙快猛,部門互相撕逼,重複造輪子,技術水平上不去啊,還是再讀個博士吧;

到了學校裡發現怎麼缺數據缺資源,都在研究茴字的24種寫法……直到被不同地方虐一圈,才有個理性的認識。當然也有像王垠同學這樣的,每個地方吐槽一遍,舉世皆濁我獨清的做了網紅。

作為各種牛棚裡看著大牛們長大的人,我沒有見到哪個計算機科學的牛人不是首先靠著自己極其的努力成長起來的。

清華張鈸院士的得意弟子朱軍從本科開始發KDD和ICML,每天早上一早從清華騎車到MSRA坐到晚上12點回清華,除了去打兩局檯球,幾乎不停歇的寫代碼,他的系統工程能力非常強,是微軟學術搜索系統的核心成員,理論上也做了很深的研究,後來去CMU跟著Eric Xing做的也非常好,回清華做教授。

我們這級的達哥,林達華教授(他寫的MIT牛人說數學體系,隔幾年都會被人翻出來轉幾次,對了,現在是商湯的聯合創始人,剛剛幫湯老師出了人工智能的中學教材),大學幾乎不上課,研究生和博士生的導師都非常牛,他們都感嘆林達華這樣的學生特別省心,是自己做系統,自己推著自己做研究,只需要大方向上點撥一下就可以了。

師傅領進門,學藝靠個人,指望學校或者公司幫你成為專家不現實,谷歌10萬人,BAT都好幾萬人,你能找來解決AI問題的有幾個人?

還有些同學的幻覺是覺得AI專家做的事情,應該是研究算法,機器學習嘛,應該是跑模型調算法,只要負責研究優化目標就好了嘛。那這樣算的話,只有去大學和研究院了。

計算機科學的特點是,數據量和業務複雜程度會決定你問題的複雜程度,很多同學在學校裡的project,大多是理想化狀態下小數據集上的原型,離工業級別的應用,有著巨大的鴻溝,這需要真實世界裡一路踩坑的血淚經驗磨礪,哪個現在成功的大公司不是當初一路拉網線拼服務器,一點一點優化出來的。

當世赫赫有名的計算機科學家谷歌的Jeff Dean,不就是負責system和infrastructure的麼,現在他講的Google Brain, Knowledge Graph也都是在強大的系統上來的。以前MSRA徐谷做了一個關於大規模圖像去重的報告,我印象非常深刻的是always get your hands dirty。在互聯網級別的數據上面,所謂的各種算法,都變成花拳繡腿,重要的是系統,系統,系統!

對底層數據理解,對商業目標清楚。無論是MSR還是Google X, Yahoo Labs,裡面厲害科學家的動手能力非常的強。Facebook招了很多牛PhD寫PHP,外面有些尊貴的同學頗受不了。計算機首先是一門engineering的學科,這裡的開發不分貴賤,重要的是你能夠解決問題,革命成功靠的不是28個半布爾什維克。

第三個幻覺是,從頭造錘子才是有挑戰性的人工智能。這是我深惡痛絕的,公司不是研究院,AI不是空中樓閣,你修煉的也不是屠龍術。現在各種開源項目和系統都非常成熟了,你在一個燒著投資人錢的商業公司裡從頭寫一套OpenCV,重新發明一遍SVM,覺得這樣才有意思,對不起,請回到30年前的學校裡去。你必須有產品sense,而產品的本質是解決問題。

以前沈向洋老師經常說的三好學生招人標準,數學好,編程好,態度好。

對現在有志於投身AI時代的同學們來說,最重要的是看待人工智能的態度,紙上得來終覺淺,找到一個可以解決問題的地方,和專家們一起,靠自己挽起袖子去躬行。要麼系統能力特別強,要麼能理解商業,最終AI專家的價值,取決於他能夠解決問題的大小。

對於想找AI專家的老闆們,先想清楚你的業務問題,AI並不是解決戰略無能的靈丹妙藥,找幾個紙上談兵的專家來解決問題,彼此過高的期望只怕會互相傷害。


分享到:


相關文章: