Categories
程式開發

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


引言

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

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

1、知識體系的重要性

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

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

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

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

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

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

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

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

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

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

還以推薦系統為例,我們應該建立的是類似圖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

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

5、共勉

當然,還有很多想跟大家去溝通,比如理論和工程的權衡問題,對優化目標的理解,對算法團隊與其他團隊的溝通問題,以及算法工程師面試跳槽的建議。我們不可能在這一篇文章中傾訴所有,還是回到我們賣書的“正事”上來:),大家可以在《深度學習推薦系統》這本書中找到我的一些想法,希望繼續在書中與大家探討這些略“形而上”的經驗。它不是本書的重點,但絲毫不影響這些內容是重要的。

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

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

最後,希望《深度學習推薦系統》這本書能夠成為你職業生涯中的一個小小的知識節點,在這深度學習的浪潮之中,幫助你成為一個更好的算法工程師,與君共勉。

作者介紹:

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

書籍介紹:

深度學習在推薦系統領域掀起了一場技術革命,本書從深度學習推薦模型、Embedding 技術、推薦系統工程實現、模型評估體系、業界前沿實踐等幾個方面介紹了這場技術革命中的主流技術要點。

《深度學習推薦系統》既適合推薦系統、計算廣告和搜索領域的從業者閱讀,也適合人工智能相關專業的本科生、研究生、博士生閱讀,幫助他們建立深度學習推薦系統的技術框架,通過學習前沿案例加強深度學習理論與推薦系統工程實踐的融合能力。

購買地址:https://item.m.jd.com/product/12630209.html