這兩天,DeepMind 研究工程師小哥 Aleksa Gordi?的個人經(jīng)驗貼在 Twitter 上火了一把。不到半天時間,點贊達 431。重點是,這位小哥啥機器學習(ML)學科背景都沒有,但在接觸 ML 僅 3 年后,順利入職 DeepMind。
他強調(diào)自己不是一個有“計算天賦”的人,全靠對機器學習的熱情,在不耽誤正職的前提下,瘋狂攝入 ML 知識,同時保持對知識的自我消化和向外輸出,最終成功上岸。
他在評論中表示,這篇博文對許多 DeepMinder 找工作都很有幫助。讓我們一起來看看這位非科班 AI 小哥,具體做了哪些努力和準備。
非科班出身
本科階段,小哥學習的是電子工程專業(yè),和計算機科學方面的課程交集不大。2016 年底,本科快畢業(yè)時,他驚覺自己想轉到軟件行業(yè)。和硬件行業(yè)相比,他認為軟件行業(yè)更加開放,有各種黑客馬拉松和數(shù)據(jù)馬拉松,還擁有更為可觀的薪資待遇。
說干就干。次年初,小哥開始自學 Android,并于暑期在 Telocate (一家德國小型創(chuàng)業(yè)公司)實習,擔任 Android 開發(fā)。也在這時候,小哥和曾在 MSFT、Facebook、Jane Street 等公司實習過的軟件工程師朋友聊天。
對他的一些朋友們來說,算法和結構數(shù)據(jù)已經(jīng)是第二天性般的存在;而對小哥來說,大型科技公司并不太在意他在 EE 方面的技能和知識積累,算法和數(shù)據(jù)結構才是硬通貨。
一番交流下來,小哥意識到自己和“軟件工程師”之間的鴻溝。對于時年 23 歲的他來說,一個 16 歲且缺乏大量基礎工程知識的孩子都遙遙領先。
△ 小哥幽默地告訴朋友自己落后了(實際那時候他非常絕望),朋友鼓勵他慢慢來
這種糟心的滋味,促使小哥下定決心飛速追趕。實習結束,本科畢業(yè)后的他雖然申請了電子工程碩士學位,但依然對大型科技公司的工作機會心向往之。
為此,小哥動手制定了一份軟件工程學習計劃,還旁聽了本科算法課程。小哥一邊開啟他的瘋狂學習之旅,一邊申請大型科技公司崗位。
過程并非一帆風順,經(jīng)歷 2017 年年底的 Facebook 面試、2018 年 3 月和 5 月的兩次微軟面試,小哥都未能成功入職。好在 2018 年 2 月時小哥通過為期 3 天的入學考試,順利申上微軟 ML 暑期培訓班。
△ 微軟 ML 暑期培訓班的錄取通知
微軟 ML 培訓班里,他所在組最終項目被評為內(nèi)部最佳項目。8 月上旬,小哥遠赴巴西實習。三天后,小哥接到了意想不到的電話,微軟告訴他,他被舉辦暑期培訓班的團隊“HoloLens 團隊”錄用了!
沒有猶豫,小哥接下了 offer,離開巴西,在 9 月順利入職微軟,擔任軟件工程師。至此,小哥開始了自己的 SE 以及 ML 職業(yè)生涯。
不得不提的是,自從參加了暑期培訓班,“要去 DeepMind”這個挑戰(zhàn)就在小哥潛意識里扎了根。入職 DeepMind 對當時的他來說仿佛天方夜譚:他在培訓班接觸的 DeepMinder 都畢業(yè)于牛津和劍橋。
但轉念一想,對于曾經(jīng)的他來說,微軟同樣遙不可及,挑戰(zhàn) DeepMind 又何嘗不可呢?2018 年至 2019 年在職微軟期間,小哥盡力學習 SE,閱讀很多 Scott Meyers 撰寫的 C++ 等編程書籍;工作之余,則學習 ML。
2018 年年底之前,小哥學完了 Coursera 上吳恩達的所有課程,還參加了內(nèi)部的 ML 黑客馬拉松、ML 培訓班,并開始閱讀相關研究論文。
隨著學習進程的加深,小哥對 ML 領域越來越得心應手。2019 年初,小哥第一次分享了關于 ML 的博文。
2019 年底,小哥調(diào)崗到機器學習工程師,被派參加 ICCV2019 大會。
△ ICCV2019 大會上,小哥在微軟展臺演示 HoloLens 2
機器學習課程
從 ICCV2019 回來,小哥被要求利用 PyTorch 從零開始實現(xiàn)一篇論文。那時候,他對 PyTorch 一無所知。好在通過完成這個任務,小哥再一次飛速成長。
其它方面的學習進程,小哥制定了一個學習框架。經(jīng)過大致規(guī)劃,一個“一年內(nèi)學習 AI 各個子領域”+“每 3 個月學習一個子領域”的計劃誕生了。
萬事開頭難。所學習的第一個 AI 子領域,神經(jīng)風格遷移(NST),耗費時間超過了 3 個月。借此,小哥對學習計劃進行了優(yōu)化,即在每 3 個月學習一個子領域的學習周期大框架下,穿插微學習周期。
微學習周期有兩種類型:
1、輸入模式:大量攝入信息。這一模式的目標是通過博客、視頻等對子領域的結構有一個深度理解,或是通過研究論文、書籍對某個主題深入了解。
2、輸出模式:分享所學知識。制作 YouTube 視頻、建立 GitHub 項目或撰寫博文、更新 Linkedln、分享相關內(nèi)容到 Twitter 和 Discord。
主業(yè)當然不能落下。在如何平衡工作和學習這個問題上,小哥展現(xiàn)了自己的強大意志力。
他一直保持著一種近乎“瘋狂”的節(jié)奏:起床后,寫 2 小時代碼,然后散會兒步;散步歸來,投入微軟工作;工作結束,小憩 30 分鐘;睡前再工作 2-3 小時。
小哥把這部分的經(jīng)驗總結為 3 點,分別是強大的毅力,正確的心態(tài),以及小憩是金。
授人以漁,小哥詳細介紹了他學習 NST、GAN 等 ML 詳細知識的方法論。
keep learning
閱讀書籍和前沿論文是最直接獲取 ML 相關知識的途徑。
學習神經(jīng)風格遷移(NST)、DeepDream、生成式對抗網(wǎng)絡(GAN)、NLP & Transformers、強化學習(RL)等知識的過程中,小哥都閱讀了大量的前沿和小眾論文,其中,Transformers 相關論文為小哥用 PyTorch 做出一個流行的 GAT 提供了部分靈感。
△Graph ML
因?qū)Τ鯇W者友好,這一 GAT 大受歡迎,并成為劍橋大學 GNN 講座的推薦內(nèi)容。
除了沿著學習“主線”前進,早在 2020 年初,小哥就意識到自己在數(shù)學方面有所欠缺。因此,他花時間閱讀了《Learning How to Learn》《Python Data Science Handbook》《Deep Learning》等,來加速他的學習進度。
與此同時,對相關知識進行學習和鞏固是非常有必要的。補充 CNN 及其優(yōu)化知識,實現(xiàn) vanilla GAN、cGAN(條件 GAN)和 DCGAN 模型…… 舊知識的查漏補缺和新知識的不斷加瓦,不斷夯實小哥的知識庫。這是他學習 GAN 后,所訓練的 DCGAN 模型輸出的圖片:
△ 由男人演變?yōu)榕耍ń嵌群湍w色也會改變)
在這個過程中,根據(jù)知識要點的難易程度,結合實際情況,小哥還會改進和完善學習策劃。比如調(diào)整學習時長。因為倍感有趣,小哥花費在 NST 領域的學習時間,就比原定計劃的 3 個月要長。
或者進行提煉總結。而在學習 GAN 時,他開始在每篇學習大框架下的末尾寫一篇博文,來總結所學到的知識。
抑或選擇先熟悉、后陌生的學習流程。RL 是 DeepMind 取得突破性發(fā)展的領域,它不僅與其它 ML 子領域有所不同,其間亟待了解的論文和項目更是不可計數(shù),如如 AlphaGo、DQN、OpenAI 機械手等。
面對這個難題,小哥從自己最感興趣的部分 —— 計算機視覺(CV)—— 切入,而后再朝不那么熟悉的課題進發(fā)。
在做這些的時候,小哥沒有閉門造車,而是與 Graph ML 領域最優(yōu)秀的研究人員之一、DeepMind 研究員 Petar Veli?kovi?等人定期聊天,或是博文讀者等進行交流,受益匪淺。
消化后的向外輸出
小哥提到,他在微軟 300 多名同事面前做了一次演講,這對他來說是一次跳出舒適圈的操作。
△ 在 300 + 微軟同事面前演講
跳出舒適圈的嘗試還有很多。保持知識輸入之后,他也在消化知識,并向外輸出。他開啟了自己的 YouTube 頻道,做了 NST、GNN 等多個系列的視頻,與網(wǎng)友分享他的 ML 學習之旅,在幫助自己深入思考的同時,也幫助別人。
看這張圖,它是使用小哥編寫的代碼合成的 NST 圖像,你可以使用他的的 GitHub 項目創(chuàng)建它。
關于 BERT 和 GPT 系列模型的知識也在小哥的學習范圍內(nèi),Transformer 可以幫助了解它們。他從零開始閱讀 NLP & transformers 相關論文。因為會英語和德語,他又創(chuàng)建了一個英德機翻系統(tǒng)。小哥主要用 OneNote 記錄著學習旅程。
△ 摘自小哥的 OneNote
工作和學習雙線推進,微軟這邊,小哥從事著各種 SE 和 ML 項目,如開發(fā)了 HoloLens 2 上眼動追蹤子系統(tǒng)的一個眼鏡檢測算法,使用視頻編碼為各種 VR / MR 設備添加注視點渲染功能等。
DeepMind 向他敞開大門
2021 年 4 月,經(jīng)由 Petar 的介紹,小哥結識了一位獵頭。在瀏覽了小哥的 YouTube 視頻、GitHub 代碼庫和 LinkedIn 后,小哥獲得獵頭推薦,順利接到了 DeepMind 的面試通知。
寫到這里,小哥強調(diào)了人際關系對于找工作重要性,應該和志同道合的人建立高質(zhì)量的聯(lián)系。
△ 小哥申請 DeepMind 的簡歷,但他在博文中對這份簡歷提出了優(yōu)化建議
DeepMind 共有兩個團隊:
1、核心研發(fā)團隊。偏向于純粹的研究,項目例子是 AlphaFold、AlphaGo 等。在這個團隊中,研究工程師從事的其它項目可能涉及與研究科學家合作實現(xiàn)某些研究思路。
2、應用團隊。所做的一些項目包括數(shù)據(jù)中心節(jié)能項目、改進 Google 應用商店的推薦系統(tǒng)、WaveNet、Android 節(jié)能。
小哥申請的崗位是研究工程師。能入職 DeepMind 意味著這個人要有扎實過硬的相關知識儲備。
因為沒有發(fā)表過任何論文,如果沒有之前的項目和工作經(jīng)驗,小哥不見得能有這次 DeepMind 的面試機會。他告訴大家,再優(yōu)秀的人也有可能被科技巨頭公司拒絕,所以不用給自己太大壓力。
小哥分享了一些自己準備的面試技巧。
1、認真研究每一位面試官。了解他們的職業(yè)背景,有可能的話看看他們的論文(至少閱讀被援引次數(shù)最多的那一篇),這樣有利于提出相關問題。
2、了解透簡歷中提及的每一個項目。以便于你能和面試官深入探討他們。
3、模擬面試。
圍繞 DeepMind 的調(diào)性,小哥還認真研究了一番 AGI,閱讀了相關前沿論文。
面 DeepMind 研究工程師這個崗,一共有首次溝通、訪談、測驗、編程考核、領導面等步驟。準備這些建議早做打算,因為小哥沒來得及抱完佛腳,面試日就到來了。
第六面中,小哥被遺憾 pass 了。好在技術過硬,他又被安排參加了一次孵化 / 應用部門的面試。又一次充足準備后,offer 到手。
值得欣慰的是,后來的這次面試讓小哥意識到,孵化團隊的工作更適合他。
在 7 月 30 日的 Twitter 評論區(qū)中,小哥將整個分享博文做了精簡的概括,幫助讀者快速抓取有效信息點。
當然,原始博文中,小哥還還附加了很多他積累的 ML 相關課程鏈接,以及當前 ML(如 GNN)的最新研究進展,感興趣的話,不妨進原文深度閱讀一下。
參考鏈接:
[1]https://twitter.com/gordic_aleksa/status/1553644361224683520
[2]https://gordicaleksa.medium.com/how-i-got-a-job-at-deepmind-as-a-research-engineer-without-a-machine-learning-degree-1a45f2a781de
廣告聲明:文內(nèi)含有的對外跳轉鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時間,結果僅供參考,IT之家所有文章均包含本聲明。