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