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