AI前線(2020年4月)

卷首語:在深度學習的浪潮中,如何做好一名算法工程師?

作者:王喆

2020 年 4 月 1 日,AlphaGo 研發團隊領導者 David Silver 獲得了 ACM 計算獎,作爲深度強化學習領域的領軍人物,他領導開發的 AlphaGo 集深度學習、強化學習、傳統樹搜索算法和大規模計算的思想爲一身,其橫掃人類所有圍棋高手的表現一次又一次向這個世界宣告了深度學習在各領域的應用進入了高潮。需要清楚的是,David Silver 不僅是 DeepMind 的首席科學家,而且在 AI 系統工程化、密集計算領域都有諸多貢獻,在深度學習的浪潮之中,將理論落地於實踐,讓學術創新驅動產業升級成爲了所有公司,以及相關的算法工程師、研究員們的首要目標,作爲應用屬性更強的計算廣告、推薦系統、個性化搜索領域,深度學習也已經成爲了驅動公司業務發展的引擎。

作爲一名在計算廣告、推薦系統領域工作了八年的算法工程師,在此與大家一同探討“在深度學習的浪潮中,做好一名算法工程師”的經驗,以及我對這個行業,對算法工程師職業前景的看法。

1、知識體系的重要性

可能有的同學讀過我之前在 AI 前線寫的一系列深度學習 CTR 預估模型的文章,或者關注過我的知乎專欄“王喆的機器學習筆記”。持續與業界同行分享這些知識的好處就是可以快速梳理自己的知識體系,期間有無數同行在文章的留言中反饋過自己的經驗、指出過我的錯誤,記得我在知乎寫的一篇文章《YouTube 深度學習推薦系統的十大工程問題》獲得了 232 條留言,要知道技術文章是有一定的閱讀門檻的,在這篇文章下留言的全都是業界和同行或者在校相關方向的博士生、研究生,他們給我自己帶來的信息量也是巨大的。

但要清楚的是,所有外界的反饋都是零散的,片段似的,只有讓這些零散的知識生長到你自己的知識體系上,才能夠對自己的技術選擇,甚至之後的職業生涯產生積極的影響。

拿我熟悉的推薦系統領域來說,推薦模型的發展日新月異,只有把模型的發展串聯起來,才能夠在業界知識爆炸式增長的浪潮之中,讓自己的這棵知識樹也能開枝散葉。正如《深度學習推薦系統》這本書中的模型演化圖(如圖 1),當把模型的知識壓縮成這樣的知識體系之後,零散的知識點才能夠壓縮成緊湊的知識面,而你對各個模型的理解,對他們應用的場景也會更加深刻。

圖 1 深度學習推薦模型的演化趨勢

這樣類似推薦模型演化圖的形式已經被越來越多的同學採用,也有很多熱心的同行在此基礎之上進行了進一步的補充和更新。這是秉着開放精神分享知識的另一好處,就是能爲這個行業提供一點自己的貢獻,同時獲得越來越多的正向反饋,這是一個雙贏的過程。

這樣的思路也可以延續到所有的知識點的梳理過程中,比如推薦系統的評估方法也應形成一個多層的篩選體系;從 Word2vec,到 Item2Vec,再到各種 Graph Embedding 方法也遵循從經典到前沿的演化過程。在建立了這樣一個深度學習技術框架之後,以此爲基點,或者說起點,每個人都可以生髮出屬於自己職業生涯的知識體系。

2、“不謀全局者,不足謀一域”的工程能力

如果說理論知識體系是驅動一個人作出正確技術抉擇的“內功”,那麼工程能力就是決定着能否把技術抉擇成功落地的“招式”。

一個資深的工程師跟一個一般的工程師的差距不僅在於工具用的熟不熟練,代碼寫的快不快,而更多是在於技術的格局和知識體系化上的差距。有一句話我是非常推崇的——“不謀萬世者,不足謀一時;不謀全局者,不足謀一域。”技術也是這樣,它同樣遵循事物發展的一般規律。要作出最合理的技術改進,必須要有一個全局的技術框架在心中,只有這樣,才能夠提出全局最優的技術決策,和充分考慮各方利弊的技術權衡。

還以推薦系統爲例,我們應該建立的是類似圖 2 一樣的整個深度學習推薦系統的業界主流的技術架構圖,並熟悉自己公司當前採用的技術方案,在此基礎上才能夠作出更合理的、技術投資回報比最大的技術改進。

圖 2 深度學習推薦系統的技術架構

如果所有人都一頭扎進模型結構改進的“紅海”之中,而忽視一些投資回報比更高的技術點,是難以取得效果上較大的提升的。就像我在書中提到的技術迭代中的“木桶理論”,一名嗅覺敏銳的算法工程師應該做的事情是找到整體技術框架中那個“最短的木板”,而不是盯着一塊已經很長的木板“執着”地繼續補強,這塊最長的木板不會對蓄更多的水起到太大的作用。

在所有人都盯着“模型結構”這塊木板的時候,也許你在“數據實時性”,“模型在線學習”,“邊緣計算”這些本來不長的木板上的投入,會取得事半功倍的效果。而毫無疑問,這些都需要建立在你自己的業界“知識體系”,以及對公司整體的技術框架有了充分認知的基礎上實現的。這也是我自己實踐中一貫倡導的技術思路。

3、對於算法工程師職業生涯的看法

這裏爲什麼一再強調“知識體系”,“技術框架”的重要性,這涉及到我對算法工程師這個職業方向的理解,或者說對機器學習相關行業的認識。

首先在我看來,這個行業是值得你去投資一生的職業方向。一個算法工程師最大的魅力在於 TA 憑一己之力影響了千萬人的興趣、愛好、以及生活的方方面面,無論從發展、薪資還是知識總量上來說,這個行業的天花板都足夠高,足夠你用整個職業生涯去觸摸新的高度。

要知道,互聯網在帶給人們看似平等自由的交流空間的同時,它的核心卻越來越中心化、集約化,頭部公司的影響力在日益擴大,但頭部公司的技術核心是什麼?不正是由諸位算法工程師驅動的各種推薦、廣告、圖像、翻譯等等不同的 AI 引擎嗎?在電商、搜索、新聞、視頻等真正實現機器學習落地的領域,根本不存在所謂的 AI 泡沫,你要看到,在整個互聯網行業的 AI 泡沫之中,總有那些真正在用機器學習驅動產品並以此構建成功的商業模式的公司在引領互聯網的發展方向。

但是,越來越中心化的互聯網也給算法工程師帶來了另外一個挑戰,那就是所有的公司都緊缺資深的算法工程師,而卻在不斷裁員邊緣的、初級的算法從業者。因爲在這樣一箇中心化極端嚴重的行業,(10 個初級算法工程師 +1 個資深算法工程師)帶來的收益無限接近於(1 個資深算法工程師)。一個不太合格的算法工程師爲公司和團隊作出的貢獻甚至是負的,因爲他們產生出的東西經常需要被重構甚至重寫,他們提出的模型也經常會成爲 AB Test 中的失敗者而無法產出。這也就是爲什麼在這樣一個互聯網寒冬,某些一線的機器學習團隊用 200 萬的年薪招不到滿足要求的算法工程師,而另一邊,校招的同學們又叫苦連天說今年是史上算法工程師招聘最差的一年。

也還記得我 07 年剛進入清華的 KEG 實驗室的時候,那時正是上一輪互聯網泡沫破裂到這一輪 AI 浪潮間的低谷時期,即使在那個階段,當時如日中天的百度、騰訊、搜狗這些公司也毫不吝嗇對學界的優秀人才和業界的資深工程師的追求。在這個金字塔式的人才結構之上,與其怨天尤人大環境的不堪,不如好好修煉自己的“內功”,跨越金字塔那個大大的基座。

4、深度學習的發展及算法人員的“技術護城河”

話題自然而然的過渡到了對整個深度學習相關行業發展的理解。剛剛說到技術的整體性,而推薦系統,廣告搜索這些行業在深度學習時代的發展也從最初的“深度學習模型”快速迭代的單峯模式,發展到了“深度學習模型”+“深度學習工程架構”並舉的雙峯模式。甚至可以說,在深度學習模型已經成爲顯學的今天,各大公司在“深度學習工程架構”上的投入日益劇增,幾乎成爲了一線公司和二線公司拉開差距的主要領域。

在這樣的行業大趨勢下,身爲算法工程師的我們也要深入的思考什麼纔是在這個行業安身立命的根本。是用 TensorFlow 訓練一個模型嗎?是看一看最新的 paper,嘗試幾個新的模型架構嗎?在剛走出高校、實驗室的應屆生都能完成這些任務的時候,我想這不能成爲一位資深算法工程師“資深”的理由。

誠然,模型相關的一切是我們之所以被稱爲“算法”工程師的原因,這是我們應該掌握的基本技能,但是在一線企業動輒上萬 QPS,動輒千萬維特徵,TB 級數據量,億級用戶量的前提下,只有在這些高強度的、苛刻的壓力下建立高效、高可靠且高效果的模型及模型服務基礎設施纔是一位“工程師”堅不可摧的技術護城河。比如深度學習工程上的熱點 model serving,數據實時性,模型壓縮與數據蒸餾,對這些技術點的理解和實現是在實驗室環境下很難進行的,也是你永遠也無法替代的工程經驗。

另一方面,擁有深刻的洞察能力也成爲了一個敏銳的算法工程師的“稀缺超能力”。我在之前的專欄文章不止一次的提到,對用戶行爲以及背後動機的感知,並將這些動機融合進模型結構之中才是構建推薦模型的“銀彈”。沒有任何一個模型結構是萬能的,只有最適合你的應用場景的,符合你的用戶使用習慣的模型纔是解決問題的“靈丹妙藥”。能夠站在產品經理的角度去思考推薦問題,甚至是站在一個普通用戶的角度去換位思考我們要應對的場景,將是你永遠也無法被替代的行業洞察。

就像圖 3 中直觀展示的,資深的算法工程師一定是擁有“領域知識”,“算法基礎邏輯”,“業務理解”和“深度學習工具”全面技能的業界專家,而不是在一個能力方向偏科,抑或是歧視產品思考、不願去做更多業務理解的“學生思維”型工程師。

圖 3 深度學習相關各職位的技能雷達圖

5、共勉

當然,還有很多想跟大家去溝通,比如理論和工程的權衡問題,對優化目標的理解,對算法團隊與其他團隊的溝通問題,以及算法工程師面試跳槽的建議。我們不可能在這一篇文章中傾訴所有,大家可以在《深度學習推薦系統》這本書中找到我的一些想法。

同行們常說這是一個時刻處在被淘汰邊緣的職業,當你在談一個流行的技術點時,它已經進入了過時的倒計時。當你 coding 一天回家,還是勉爲其難再多看一篇 paper 的時候,也許你也曾和我一樣覺得不如就隨波逐流算了。當你苦心作出一個模型的嘗試卻沒有效果的時候,感覺自己的工作幾乎是要從零開始。

但是我還要說,這是一個充滿魅力和激情的方向,它不是簡單的完成一個機械式的任務,而是用你的觀察,你的思考,你的智力,你的經驗去實現一個個目標,當你真正突破這些目標的時候,我相信你會體會到比一道編程題 AC 大 100 倍的成就感,毫無疑問,它值得你爲之付出一個長長的職業生涯。

作者介紹:

王喆,畢業於清華大學計算機科學與技術系,美國流媒體公司 Roku 資深機器學習工程師,推薦系統架構負責人。曾任 Hulu 高級研究工程師,品友互動廣告效果算法組負責人。清華大學 KEG 實驗室學術與搜索引擎 Aminer 早期發起人之一。主要研究方向爲推薦系統、計算廣告、個性化搜索,發表相關領域學術論文 7 篇,擁有專利 3 項,是《百面機器學習:算法工程師帶你去面試》等技術書的聯合作者。曾擔任 KDD、CIKM 等國際會議審稿人。

目錄

生態評論

中臺崛起的本質是“去ERP化”

重磅訪談

大數據架構變革進行時:爲什麼騰訊看好開源 Apache Iceberg?

落地實踐

Stack Overflow 自研 AI 系統標記不友好評論

企業機器學習平臺

解密阿里雲大規模深度學習性能優化實踐

推薦閱讀

從軟件開發到 AI 領域工程師:模型訓練篇

精選論文導讀

CVPR 2020 Oral | 曠視研究院提出 Circle Loss,革新深度特徵學習範式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章