逆襲 | 從民辦三本到知名企業(yè)感知算法工程師
本文轉(zhuǎn)載于 深藍(lán)學(xué)院(https://www.shenlanxueyuan.com/)?助教?管郡智?的文章,全文敘述了其自身的成長(zhǎng)路徑及學(xué)習(xí)方法。如果你也困惑于不知在算法工程師的道路上如何提升自己、苦于尋找突破學(xué)習(xí)瓶頸的方法、甚至在求職的道路上屢戰(zhàn)屢敗,那么這篇文章會(huì)對(duì)你有很大幫助。對(duì)于堅(jiān)持在每個(gè)行業(yè)辛勤奮斗的人兒,只要具有堅(jiān)毅的信念并不斷調(diào)整的進(jìn)階方法,終將所得皆所期。原文鏈接見文末。
寫在前面
從2020年8月底到11月中旬,歷時(shí)3個(gè)月秋招終于結(jié)束了,拿到了3個(gè)機(jī)器人與無人駕駛知名企業(yè)的offer,最終決定加入高仙機(jī)器人擔(dān)任感知算法工程師。
我是管郡智,網(wǎng)名無為,本碩均就讀于雙非高校,其中本科是民辦三本傳統(tǒng)車輛工程專業(yè),與人工智能的交集只有數(shù)學(xué)和C語言。于2019年10月(研二論文開題前一個(gè)月)開始接觸三維點(diǎn)云目標(biāo)檢測(cè)算法,在今年的秋招中拿到了心儀的offer,這個(gè)過程發(fā)生的一切,足以影響我的一生。
寫這篇文章的目的有兩個(gè):一是為了激勵(lì)正迷茫的碩士研究生,二是說明韌性和學(xué)習(xí)方法也可以爭(zhēng)取到機(jī)會(huì)。
目錄?
1. 求職篇?
2. 學(xué)習(xí)方法篇?
3. 關(guān)于機(jī)會(huì)?
4. 結(jié)語?
5. 學(xué)習(xí)資料推薦
求職篇
2019年10月,我的課題正式定為基于三維點(diǎn)云的目標(biāo)檢測(cè)算法研究,開心而又焦慮,開心是因?yàn)槲以缇吐犝f了三維點(diǎn)云,但遲遲沒有機(jī)會(huì)學(xué)習(xí)研究,這次終于有機(jī)會(huì)了,同樣也是令人焦慮的事,我怎么在一個(gè)月之內(nèi)才能研究明白三維點(diǎn)云并且準(zhǔn)備開題答辯。
當(dāng)時(shí),我身邊沒有懂點(diǎn)云的師兄師姐,只能靠自己摸索,方法是搜各種關(guān)于三維點(diǎn)云目標(biāo)檢測(cè)的博客以及論文,硬著頭皮讀了大半個(gè)月,對(duì)這個(gè)領(lǐng)域有了初步的了解,又花了一周左右的時(shí)間將所有的知識(shí)點(diǎn)整理成十幾頁word,之后也順利通過了畢業(yè)論文開題答辯。但這個(gè)時(shí)候我心里很清楚,自己對(duì)三維點(diǎn)云的理解依然是混亂無序,依舊沒有對(duì)這個(gè)領(lǐng)域有一個(gè)系統(tǒng)性的認(rèn)識(shí),大概在12月份底,深藍(lán)學(xué)院上線了三維點(diǎn)云處理課程,我第一時(shí)間報(bào)名了。
在12月份初到元旦后幾天,我一直在讀基于深度學(xué)習(xí)的三維物體檢測(cè)論文,研究了Faster-RCNN系列、YOLO系列、SSD、PixorNet、VoxelNet、PointPillars以及PointRCNN等等。論文一通閱讀之后,對(duì)這一領(lǐng)域的前沿算法的發(fā)展脈絡(luò)也慢慢清晰了,打算復(fù)現(xiàn)這些論文, PointPillars寫了一半焦頭爛額,查閱資料發(fā)現(xiàn)這些論文的代碼都開源了,又開始配環(huán)境,打算調(diào)試代碼學(xué)習(xí)?!昂檬隆倍稼s一起了,由于實(shí)驗(yàn)室的服務(wù)器壞了,暫時(shí)用不了,只能買票回老家了,我記得那天是1月14號(hào),完美躲過了疫情,老天有眼。
回到家之后,因?yàn)闆]有GPU,并沒有繼續(xù)學(xué)習(xí),就給家里干一些活,遠(yuǎn)離書本來給自己減壓,沒幾天,疫情爆發(fā)了。春節(jié)之后,響應(yīng)號(hào)召,呆在家里一心看書學(xué)習(xí)。在二月份到四月份這兩個(gè)月的時(shí)間里面,我表現(xiàn)的非常煩躁,想學(xué)習(xí)很多,但回頭發(fā)現(xiàn)什么也沒有學(xué)習(xí)進(jìn)去。
當(dāng)時(shí)想好好學(xué)習(xí)一遍數(shù)學(xué),但又非常討厭應(yīng)試形式的數(shù)學(xué)資料,經(jīng)過調(diào)研查資料,最終確定在學(xué)習(xí)MIT的線性代數(shù),學(xué)習(xí)哈佛大學(xué)的概率論,學(xué)習(xí)斯坦福大學(xué)的C++。結(jié)果因?yàn)檎n后習(xí)題(我特別討厭根據(jù)課后習(xí)題獲取學(xué)習(xí)反饋)而放棄了線性代數(shù)和概率論的學(xué)習(xí),也有一部分原因是遇到不會(huì)的習(xí)題沒有人一起討論,那時(shí)候是沒有人會(huì)花時(shí)間學(xué)習(xí)基礎(chǔ)知識(shí)的,不過C++還算堅(jiān)持到了最后,但學(xué)習(xí)效果并沒有達(dá)到預(yù)期,畢竟母語不是英語。
本打算在家沒有人打擾的情況下,重拾基礎(chǔ),沒想到還是失敗了(現(xiàn)在回頭想一想主要是心急和學(xué)習(xí)方法不對(duì),因?yàn)閷戇@篇文章的時(shí)候我正在再一次重新學(xué)習(xí)數(shù)學(xué),不急不躁,正確的學(xué)習(xí)方法,對(duì)于數(shù)學(xué)的理解上了一層樓)。
接著就是深藍(lán)學(xué)院的三維點(diǎn)云課程開課了,一開始不抱有多大的幻想,只想著這門課程能幫助我一點(diǎn)就行了(因?yàn)橐恢睂?duì)網(wǎng)課印象不好,忽悠圈錢),事實(shí)上我的觀點(diǎn)是錯(cuò)的。
當(dāng)我聽課程第一章節(jié)之后,我就覺得我應(yīng)該放下任何事情,好好學(xué)習(xí)這門課程,這之后我一直認(rèn)為講師嘉信博士才華橫溢,對(duì)數(shù)學(xué)和感知算法的理解超乎我的想象。其實(shí),開始在答疑群里我是很自卑的,因?yàn)槲野l(fā)現(xiàn)大家?guī)缀跞司?85,留學(xué)碩博,在群里的提問很小心,討論很小心。
慢慢的,到了課程第三章的時(shí)候,一個(gè)契機(jī),當(dāng)時(shí)在群里討論如何才能手寫出譜聚類算法,發(fā)現(xiàn)建立圖譜不容易,利用eigengap推斷聚類類別數(shù)量也很困難,我嘗試了很多辦法,最后選擇用0和1來建立圖譜,指定類別數(shù)量范圍,這兩個(gè)改進(jìn),成功實(shí)現(xiàn)譜聚類。
應(yīng)其他小伙伴要求,在群里展示之后,得到了一致的贊同。也是那一天,我添加了講師嘉信博士的微信,聊了很多很多,著實(shí)相見恨晚,嘉信老師對(duì)我的幫助,也改變了我秋招的局勢(shì)。到了課程后期,我?guī)缀蹩梢灾苯涌粗鴓pt上的算法編寫代碼,我記得北京科技大學(xué)的左師弟還問我是怎么做到的,當(dāng)時(shí)我回憶了一下說,我都是“硬”敲代碼,慢慢就熟練了。
在這里我還得好好謝謝北京航空航天大學(xué)的孫師弟,雖然比我小一屆,但是水平絕對(duì)在我之上,課程里面的算法沒少和他討論,一起研究怎么敲代碼實(shí)現(xiàn),最后我們都拿到了優(yōu)秀學(xué)員證書。
經(jīng)歷了三個(gè)月的學(xué)習(xí)之后,我對(duì)三維點(diǎn)云處理有了很深很廣很全面的認(rèn)識(shí),同時(shí)也受邀成為第二期三維點(diǎn)云處理課程的助教,當(dāng)助教期間,我深深體會(huì)到,不能隨便說話,得對(duì)自己的觀點(diǎn)(算法理解)負(fù)責(zé)。
當(dāng)助教期間也是另一個(gè)層次的學(xué)習(xí)機(jī)會(huì),這時(shí)候的我更關(guān)心怎么用最直白的語言幫助學(xué)員理解算法,怎么幫助學(xué)員優(yōu)化代碼。這期間,一邊給學(xué)員補(bǔ)充一些數(shù)學(xué)知識(shí),一邊教他們?nèi)绾卫镁仃噹烨么a使程序運(yùn)行更快,一邊開始利用搜索引擎回答學(xué)員的工程問題,慢慢地對(duì)感知算法的落地有了一個(gè)全面的認(rèn)識(shí)。
深藍(lán)學(xué)院是一個(gè)很大的平臺(tái),學(xué)員中也有很多代碼能力很強(qiáng)的大佬,我根據(jù)批改作業(yè)的情況,開始囤優(yōu)秀代碼,并偷偷學(xué)習(xí)。
那時(shí)正值暑假,我從五月份就開始找實(shí)習(xí),因?yàn)橐咔楹蛯W(xué)歷,我遇到了各種各樣的困難。前前后后應(yīng)聘了十幾家公司,全部以失敗告終,奧迪中國(guó)因?yàn)橛⒄Z口語有障礙,一些小創(chuàng)業(yè)公司更是因?yàn)橐咔?,現(xiàn)金流不健壯,導(dǎo)致不敢收實(shí)習(xí)生。這期間,深藍(lán)學(xué)院的班主任佳欣幫了我很多忙,一直通過各種消息渠道給我內(nèi)推簡(jiǎn)歷,奈何實(shí)在帶不動(dòng)我。
找不到實(shí)習(xí)很崩潰,沒少跟長(zhǎng)春理工大學(xué)的秦師兄抱怨,他是盡最大的努力幫我出謀劃策,最終決定,將三維點(diǎn)云課程的兩個(gè)大作業(yè)好好研究作為項(xiàng)目(事實(shí)上,這兩個(gè)作業(yè)非常非常好,有很多值得讓人深思的地方,而且全部涉及到行業(yè)難點(diǎn),再加上嘉信老師的指導(dǎo),我?guī)缀跬瓿闪艘粋€(gè)大項(xiàng)目),并且同時(shí)繼續(xù)學(xué)習(xí)理論基礎(chǔ)和源代碼,但是一個(gè)一直沒有解決的問題再一次出現(xiàn)了,我依然沒有一塊屬于自己的GPU,很多時(shí)候?qū)W習(xí)不方便且有時(shí)候?qū)W習(xí)直接終止。
經(jīng)過再三思考之后,用花唄透支未來買了一臺(tái)聯(lián)想拯救者Y7000游戲本,別人買游戲本打游戲,我是買來學(xué)習(xí)的,現(xiàn)在回頭想想真的很值,因?yàn)槲乙粋€(gè)月薪水就可以買幾臺(tái)了。
但是因?yàn)橹皫缀鯖]有接觸過Linux系統(tǒng),安裝系統(tǒng)和配置系統(tǒng)也是非常費(fèi)勁,自己搗鼓,上網(wǎng)查資料,向別人請(qǐng)教,能用到的辦法都用上了,因?yàn)?020款的Y7000硬件比較新,ubuntu安裝了四遍才成功,直到遇到了廣東工業(yè)大學(xué)的黃師弟,配置環(huán)境才步入正軌。工具準(zhǔn)備好了,但代碼能力依然欠佳,很幸運(yùn)遇到某無人駕駛獨(dú)角獸公司的吳偉老哥,我作業(yè)代碼里的高級(jí)寫法都是參考他的作業(yè),一般都是學(xué)習(xí)他的敲法,并直接用在下一章作業(yè)代碼里面,有了模仿對(duì)象,代碼能力就提升很快了。同時(shí)最后的大作業(yè)寫的磕磕絆絆,沒少參考大神GeYao的代碼,他真的很強(qiáng),教科書般的代碼風(fēng)格。這些直接加速提升了我的代碼能力。暑假我的重心基本就是在研究傳統(tǒng)三維點(diǎn)云感知算法及代碼實(shí)現(xiàn),以及前沿算法的開源代碼調(diào)試學(xué)習(xí),并當(dāng)好一名課程助教。
八月份是最難熬的,沒有實(shí)習(xí),算法越研究越覺得自己學(xué)的非常皮毛,感覺自己掌握的還不夠深入,炎熱的夏天也加劇了負(fù)面情緒的積累,到了八月下旬,認(rèn)識(shí)的好多名校的同學(xué)都相繼進(jìn)入面試環(huán)節(jié),甚至拿到心儀的offer。
到了八月底九月初,覺得自己應(yīng)該可以參加秋招了,開始重新寫自己的簡(jiǎn)歷,并有幸得到中科院王師兄的簡(jiǎn)歷指點(diǎn)與修改,這時(shí)候的簡(jiǎn)歷已經(jīng)干貨滿滿,看起來非常高大上(雖然沒有一篇頂會(huì)論文,沒有一塊競(jìng)賽金牌)。
開始投遞第一波簡(jiǎn)歷,然而令我沒有想到的是,一個(gè)面試機(jī)會(huì)都沒有,是我自己想多了,腦海里也浮現(xiàn)一句老話,學(xué)歷是塊敲門磚,我這個(gè)行業(yè)的標(biāo)配幾乎就是985碩士科班出身。
遇到這事,誰都是崩潰,幾乎想放棄算法崗,轉(zhuǎn)頭C++開發(fā)崗,身邊也有不少名校同學(xué)轉(zhuǎn)開發(fā)成功了,并且薪水也不低,特別是聽到上交大王同學(xué)他們實(shí)驗(yàn)室轉(zhuǎn)開發(fā)崗的都拿到了30w+的offer,我就更想轉(zhuǎn)了,隨即就找一直幫助我的好朋友東北大學(xué)的小月同學(xué)了解轉(zhuǎn)C++開發(fā)崗的細(xì)節(jié),并開始惡補(bǔ)C++知識(shí)、計(jì)算機(jī)網(wǎng)絡(luò)以及操作系統(tǒng)(雖然小月最后依舊拿到了心儀的算法崗offer)。
我記得那天晚上還在朋友圈發(fā)了一個(gè)找不到工作的負(fù)面情緒,結(jié)果非常意外的事發(fā)生了,好多好多人開始私信我?guī)臀覂?nèi)推簡(jiǎn)歷,一大半都是做助教期間積累的人脈,深藍(lán)學(xué)院也幫我內(nèi)推了好幾家公司,嘉信老師甚至為我寫了一封推薦信,助我找工作一臂之力。此后我就靠著朋友內(nèi)推的方式開始找工作過了。
內(nèi)推的崗位主要是三種:感知、建圖、C++開發(fā)。C++是我研究生同學(xué)托人幫我內(nèi)推的,但連筆試都沒能過掉,計(jì)算機(jī)網(wǎng)絡(luò)和操作系統(tǒng)的知識(shí)在三天之內(nèi)著實(shí)很難掌握透徹,不過C++倒是學(xué)習(xí)的很好,為后面的算法崗面試打下了基礎(chǔ)。
有一半的工作都是建圖和定位,通過面試也發(fā)現(xiàn),主要集中在初創(chuàng)公司(公司業(yè)務(wù)還沒有到感知這一步),面試了好幾家,有兩家公司令我印象深刻,第一個(gè)是深藍(lán)為我內(nèi)推的蘇州的一家初創(chuàng)公司,全程面試大概20分鐘,就說錄用我,對(duì)于當(dāng)時(shí)的我來講簡(jiǎn)直是不敢想象,但是因?yàn)閸徫徊皇俏倚膬x的,業(yè)務(wù)里面用不到感知算法,并且薪水偏低一些,還是選擇繼續(xù)面其他公司。
還有一家是北京的初創(chuàng)公司,是我的學(xué)員為我內(nèi)推的,因?yàn)槲覍?duì)這位學(xué)員印象非常好,兩個(gè)人經(jīng)常交流算法,決定面試試一試,但面試我的不是學(xué)員本人,并且面試官不懂裝懂,想到以后可能和這樣的同事一起工作,我就感到很反感,后來我也和學(xué)員說明白了這件事,感到很抱歉,占用了公司的招聘成本。
感知算法崗的面試還是比較少的,真的做到這一塊業(yè)務(wù)的公司已經(jīng)是獨(dú)角獸和大廠了,我也收到了好幾家的面試通知,有兩家面試讓我印象深刻。第一家是北京某無人駕駛獨(dú)角獸公司,很早就關(guān)注了,沒想到真的收到了面試通知,面試的過程很舒服,算法總監(jiān)提問很細(xì)很深,能體現(xiàn)出這位leader有很強(qiáng)的算法功底,并且很快收到HR面試,但之后一直沒有等到消息,在我兩次詢問下,才知道hc太少了,我被刷掉了。
剛開始是很氣憤的,耽誤了我很長(zhǎng)時(shí)間(大概有十天),還拒掉了一家公司的offer,不過我還是很快的處理好情緒,通過各種辦法找到了算法總監(jiān)的微信,詢問應(yīng)聘失敗的原因。
令我意外的是,算法總監(jiān)非??蜌獾馗抑v述了整個(gè)決策過程以及一些公司的考慮,并且不停強(qiáng)調(diào)我不是能力上的問題,只是hc太少,以及我缺乏實(shí)習(xí)經(jīng)歷,還為我提出一些提升的建議,非常周全。后來我也厚臉皮要了實(shí)習(xí)經(jīng)歷,不過還沒來得及實(shí)習(xí),我又收到了高仙機(jī)器人的面試通知。
高仙的面試機(jī)會(huì)是東北大學(xué)的大佬王鵬同學(xué)(在發(fā)頂會(huì)論文數(shù)篇)的師兄幫我內(nèi)推的。
面試過程真的是一波三折,面試過程中問了很多很多知識(shí),范圍比較廣,不但面試了傳統(tǒng)感知算法和基于深度學(xué)習(xí)的感知算法,還詢問了算法的改進(jìn)、部署等等,面試內(nèi)容還包括Linux操作系統(tǒng)的基礎(chǔ)知識(shí),Ros機(jī)器人操作系統(tǒng)的基礎(chǔ)知識(shí)和部署算法以及C++三大領(lǐng)域知識(shí):標(biāo)準(zhǔn)模板庫、智能指針、多線程,還好那段日子好好學(xué)習(xí)了C++,基本都是從內(nèi)存的角度回答出來了。線上C++筆試也很有意思,考察了棧和快排,也在規(guī)定時(shí)間敲出來并且運(yùn)行成功。
高仙機(jī)器人連著HR面試一共四輪面試,我差點(diǎn)掛在最后一輪技術(shù)面試,能感覺出來面試官是很懂三維點(diǎn)云的目標(biāo)檢測(cè)算法及部署,根據(jù)簡(jiǎn)歷問了很多很細(xì)很深的問題,其實(shí)我那時(shí)離簡(jiǎn)歷里面的項(xiàng)目實(shí)現(xiàn)也有兩個(gè)多月了,里面好多實(shí)現(xiàn)的細(xì)節(jié)都有些模糊了,回答的時(shí)候有些踉蹌,不過我覺得在回答C++實(shí)現(xiàn)多線程的時(shí)候把前面的不足給蓋過去了。
加上之前就收到了兩家知名的創(chuàng)業(yè)公司(100-300人)的正式offer,權(quán)衡之后(評(píng)估加入公司后自己leader的專業(yè)能力),最終決定加入高仙機(jī)器人。
以上就是我秋招的面試經(jīng)歷,一般的面試都是三輪,兩輪技術(shù)面試,一輪線上編程面試。充分準(zhǔn)備項(xiàng)目和算法的同時(shí),還要多刷題。
其中的技術(shù)面試是最重要的,算法學(xué)習(xí)一定要了然于心,達(dá)到知其在不同場(chǎng)景應(yīng)用的優(yōu)缺點(diǎn)的程度才算入門,并且一定要用代碼去驗(yàn)證自己的想法是否達(dá)到預(yù)期,不然很多細(xì)節(jié)面試官一聽一問,面試者就露餡了。
學(xué)習(xí)算法的過程中一定要找懂算法的同學(xué)多交流討論,自己學(xué)習(xí)很容易鉆牛角尖,如果和不懂算法的同學(xué)討論,一是浪費(fèi)了時(shí)間,二是很可能同學(xué)還會(huì)不懂裝懂,讓你哭笑不得,環(huán)境對(duì)于一個(gè)人的學(xué)習(xí)也是至關(guān)重要的。
其實(shí)面試的過程就是學(xué)習(xí)的過程,我在高仙機(jī)器人第一輪技術(shù)面試中Ros回答得不好,我知道最后一輪技術(shù)面試肯定會(huì)再次問我,我就找到了哈工大的崔同學(xué)學(xué)習(xí)Ros算法部署,并且在Ros系統(tǒng)里面成功運(yùn)行,在最后一輪面試中,很淡定地回答出來,并且還獲得了面試官的寶貴建議。
總體來看,我的面試通過率還是很高的,基本上給面試機(jī)會(huì)我大概率都能面試通過,我自己也總結(jié)了一下,主要是三個(gè)原因:
第一,離不開深藍(lán)學(xué)院這個(gè)平臺(tái),通過深藍(lán)學(xué)院我認(rèn)識(shí)了很多很多名校的算法大佬,平時(shí)一起討論算法,對(duì)我的幫助很大,并且學(xué)院一直幫助我創(chuàng)造面試機(jī)會(huì),對(duì)我的幫助是非常非常多的,一些面試之外可能出現(xiàn)的意外全部幫我提前想好,并提供一些建議,這無疑在無形之中提高了面試的成功率;
第二,非常非常感謝嘉信老師,整個(gè)求職期間一直指導(dǎo)我的項(xiàng)目,給我講解非常前沿的算法及解決方案,這在面試中對(duì)我的幫助是直截了當(dāng)?shù)?,并且嘉信老師為了幫我增加獲得面試的機(jī)會(huì),還特意為我寫了一份推薦信,雖然他說自己是小人物,不一定起作用,但我能明顯感覺得到,推薦信的威力很大;
第三,自己的極致努力,不可否認(rèn),沒有自己的努力、上進(jìn)和韌性,嘉信老師就算腳踏重型獵鷹9號(hào)也帶不動(dòng)我的,一切的一切都是自己先努力,別人才會(huì)主動(dòng)熱心地提供幫助,別人如果不愿意提供幫助,或者幫助的時(shí)候很不耐煩,要不先思考一下,自己有沒有認(rèn)真對(duì)待,有沒有花200%的精力去面對(duì)、克服困難。
最后我得感謝自己的父母、繆心心、發(fā)小和實(shí)驗(yàn)室同學(xué)及舍友,他們?cè)谖胰松蠲悦5臅r(shí)候,一直陪著我。家里雖然很忙,爸媽依然堅(jiān)持我把時(shí)間花在學(xué)習(xí)上,而不是干活上,父母是我堅(jiān)強(qiáng)的后盾,是我堅(jiān)持走下去的勇氣,在他們眼里,我永遠(yuǎn)是長(zhǎng)不大的孩子??娦男挠糜懭藚挼姆绞綖槲医鈮海瑸槲掖驓?,讓生活變得有聲有色。大丙和陳偉一直陪著我打球吃夜宵,聽我嘮叨,緩解了我很多壓力。實(shí)驗(yàn)室同學(xué)和舍友知道我找心儀offer不順,一直幫助我穩(wěn)定情緒,分散注意力。他們都陪著我走過低谷時(shí)期,打心底感謝他們。
學(xué)習(xí)方法篇
我一直覺得以前的種種不順和自己錯(cuò)誤的學(xué)習(xí)方法也是有很大關(guān)系的,在吾將上下而求索的過程中,我慢慢悟到了一套屬于自己的學(xué)習(xí)方法。
首先,我覺得很必要來重新認(rèn)識(shí)一下學(xué)習(xí),什么是學(xué)習(xí)?屯資料?買書?報(bào)班?大學(xué)課堂?還是向大牛請(qǐng)教?我覺得都不是,這些都是獲取學(xué)習(xí)資源的階段,去看視頻資料、上課、讀書、請(qǐng)教也依然處于記憶零碎知識(shí)的階段,并沒有進(jìn)入真正的學(xué)習(xí)階段。那什么時(shí)候才是真正開始學(xué)習(xí)?答案:輸出。只有將自己記憶的零散知識(shí)點(diǎn)通過某一種方式從腦袋里面再次輸出之后,才是學(xué)習(xí)的開始階段。
我自己做過一個(gè)試驗(yàn),一本權(quán)威的資料,只看不寫,一本普通的資料,看完之后,在word里面寫下自己的理解,隨心所欲的寫,正文寫完之后再寫一個(gè)Summary。一周之后,神奇的事情發(fā)生了,即使資料不是很好,我對(duì)其的理解依舊深刻,幾乎可以脫口而出。
從此以后,我的學(xué)習(xí)方法都是以寫下自己的理解和Summary為主,學(xué)習(xí)速度和效率大大提升,這樣的學(xué)習(xí)方法讓我很有成就感,就跟打游戲一樣,一關(guān)一關(guān)通過。當(dāng)然,這是我自己找的一套感覺很棒的學(xué)習(xí)方法,不是萬能的,并非人人適用,主要的意思是及時(shí)輸出,以自己喜歡的方式輸出,所以老師講課越來越厲害的原因找到了,當(dāng)助教學(xué)習(xí)效果更好的原因找到了,動(dòng)手實(shí)踐發(fā)現(xiàn)自己啥也不懂的原因也找到了,本質(zhì)上這些都是及時(shí)輸出,找反饋。
不過學(xué)習(xí)也沒有這么簡(jiǎn)單啦,學(xué)習(xí)資源也是前人留下來的,以文字、視頻的方式記載下來的,那不免會(huì)有表達(dá)不當(dāng)造成的理解錯(cuò)誤,這是我在把自己的所學(xué)用到現(xiàn)實(shí)生活中發(fā)現(xiàn)的,根據(jù)這個(gè)問題我又找到一個(gè)方法克服,就是我們的一句老話,實(shí)踐出真知,當(dāng)把自己的所學(xué)有所運(yùn)用,就會(huì)發(fā)現(xiàn),由于各種原因,我們學(xué)到的知識(shí)其實(shí)理解還是有一些瑕疵和錯(cuò)誤的,當(dāng)我們把所學(xué)知識(shí)與現(xiàn)實(shí)世界交互的時(shí)候,就會(huì)得到很多正反饋和負(fù)反饋,正反饋幫助我們強(qiáng)化已經(jīng)掌握的知識(shí),負(fù)反饋來糾正錯(cuò)誤的認(rèn)識(shí),達(dá)到完善知識(shí)體系的效果,這和目標(biāo)檢測(cè)網(wǎng)絡(luò)的難負(fù)樣本挖掘好像異曲同工之妙。
這時(shí)候經(jīng)常聽到別人會(huì)說,那看書有啥用?這里犯了一個(gè)邏輯上的錯(cuò)誤,沒有書本幫助我們?cè)诖竽X里建立完整的知識(shí)體系,我們?cè)趺粗缿?yīng)該如何和現(xiàn)實(shí)世界交互呢(成本很低的情況下,可以跳過書本和世界交互,如果風(fēng)險(xiǎn)大,直接擼起袖子干,一旦失敗代價(jià)可能很慘重)。我的觀點(diǎn)是,看書(記憶零散知識(shí)的統(tǒng)稱)很重要,但是不會(huì)學(xué)習(xí),那就變成書呆子了,看書+輸出=成本最低的學(xué)習(xí)方法。
還有一點(diǎn)非常重要,就是一定要休息好,休息好是一切高效學(xué)習(xí)的前提。晚上一定要睡好,睡舒服,平時(shí)要多鍛煉提高代謝率。如果打算學(xué)習(xí)了,就盡量避免去消耗精力的場(chǎng)景,比如超市,商品琳瑯滿目,大腦會(huì)將看到的商品一個(gè)一個(gè)自動(dòng)識(shí)別。
再比如我從宿舍走到實(shí)驗(yàn)室有兩條路,小路和大路,小路很快,大路反而繞路,但我每天都會(huì)選擇都大路,因?yàn)樾÷芬⒁饽_下,注意臺(tái)階,在用腦,而大路就是寬敞的大陸,沒有任何障礙,我走路的同時(shí)可以發(fā)呆可以想一想計(jì)劃,思考別的,然后到了實(shí)驗(yàn)室之后打開電腦,直接進(jìn)入學(xué)習(xí)狀態(tài)。
這么做的原因很簡(jiǎn)單,人的精力是很有限的,一天24小時(shí),注意力集中高生產(chǎn)力的時(shí)間可能也就四個(gè)小時(shí),所以不要讓任何消耗精力的事情在做正經(jīng)事之前發(fā)生,要把充沛的精力花在刀刃上。
下面介紹我自己的學(xué)習(xí)方法:
1、查找最權(quán)威最完整的學(xué)習(xí)資源;
2、以最快的速度把學(xué)習(xí)資源閱讀(看、聽、寫)一遍;
3、花最大的努力將知識(shí)點(diǎn)及時(shí)輸出并寫Summary;
4、尋找最低的成本實(shí)踐所學(xué);
5、等待一個(gè)機(jī)會(huì),將自己的所學(xué)發(fā)揮出來,創(chuàng)造價(jià)值。
1、?尋找學(xué)習(xí)資源的質(zhì)量可以決定我們發(fā)展的天花板。這個(gè)動(dòng)作其實(shí)不是一步到位的,當(dāng)自己的水平提升之后,自己的視野就會(huì)更加廣闊,這時(shí)候?qū)ふ业膶W(xué)習(xí)資料就會(huì)更加經(jīng)典權(quán)威。剛開始步入一個(gè)行業(yè)尋找學(xué)習(xí)資源是最難受的,很難找到真實(shí)的全面的,我深深體會(huì)過,學(xué)習(xí)感受很糟糕,全靠自己的毅力,大部分人是在這一步就放棄的。
其實(shí)這里就涉及信息差這個(gè)概念,好的環(huán)境有靠譜的信息,那第一步就會(huì)非常容易。自己的建議是,去這一個(gè)領(lǐng)域的名校想辦法找到那個(gè)專業(yè)的學(xué)生或者老師詢問入門資源,或者通過高考和考研進(jìn)入這個(gè)學(xué)校。
如果大家對(duì)人工智能或者機(jī)器人領(lǐng)域感興趣,那就直接推薦深藍(lán)學(xué)院了,全部是硬核課程,學(xué)完絕對(duì)是建立了完整的知識(shí)體系。對(duì)感知算法感興趣當(dāng)然是選擇嘉信老師的三維點(diǎn)云處理課程了。
2、?快速的學(xué)習(xí)是非常有必要的。但我猜很多人會(huì)認(rèn)為是快速看書看視頻,快速動(dòng)手做完一件事。這其實(shí)是錯(cuò)誤的,真的快速去做的時(shí)候,就會(huì)發(fā)現(xiàn),剛開始沒多久就會(huì)放棄了。
我說的快速過一遍,其實(shí)是包含及時(shí)反饋的,一邊學(xué)習(xí)資料,一邊用word記錄自己純粹的理解,完全用自己的大白話講出來的輸出,一個(gè)知識(shí)點(diǎn)看完就及時(shí)輸出。這個(gè)過程其實(shí)很慢的,所以要注意力集中,排除一切誘惑一切瑣碎的事情,拿出整塊時(shí)間做這件事,必須成模塊的學(xué)習(xí)結(jié)束之后,才能停止,不然我會(huì)感覺很難受。
一個(gè)模塊(一個(gè)章節(jié)、一個(gè)視頻)學(xué)習(xí)結(jié)束之后,將自己的及時(shí)輸出閱讀一遍,趁熱打鐵寫一個(gè)Summary,這個(gè)時(shí)候?qū)W習(xí)才算結(jié)束。
這里的及時(shí)輸出很多方式,比如直接動(dòng)手試一下是最好的,可以想辦法為自己創(chuàng)造條件,現(xiàn)在人手一部電腦,可以用仿真軟件尋找反饋,程序員可以敲代碼試一下,算法工程師可以敲代碼或者在機(jī)器人系統(tǒng)里面仿真一下。
方式各種各樣,自己喜歡就行,不過目的是一樣的,那就是及時(shí)的輸出,因?yàn)檫@一步才是真正意義上的學(xué)習(xí)。
3、?在第2步里面已經(jīng)說了很多,但不全面。學(xué)習(xí)不是簡(jiǎn)單的事情,我們得尊重自己大腦會(huì)遺忘的這個(gè)事實(shí),第一遍學(xué)習(xí)不可避免會(huì)出現(xiàn)知識(shí)點(diǎn)遺漏和知識(shí)點(diǎn)太難學(xué)不會(huì)的問題,第2遍學(xué)習(xí)的作用就直接凸顯出來了。
用相同的方法以更快的速度將之前的筆記和原資料學(xué)習(xí)一遍,主要的操作:其實(shí)這時(shí)候?qū)χR(shí)已經(jīng)很熟悉了,所以閱讀資料的速度也是飛起來了,閱讀之后,就對(duì)自己的筆記重新修改刪減,以達(dá)到全面、言簡(jiǎn)意駭?shù)男Ч?。這一遍梳理之后,就會(huì)有一種恍然大明白的感覺,仿佛見到了光明。
4、?理論知識(shí)扎實(shí)之后,就得用實(shí)踐來檢驗(yàn)一下是不是有效果,一般而言理論知識(shí)和現(xiàn)實(shí)世界交互都是有負(fù)反饋的,畢竟不是每一個(gè)人都是作家,不能用精準(zhǔn)的語言記錄自己的所聞所見。
這時(shí)候的實(shí)踐就可以幫助我們調(diào)整或者重整自己對(duì)這個(gè)領(lǐng)域建立的知識(shí)體系。但有一個(gè)原則,那就是花最低的成本去實(shí)踐,如果為了驗(yàn)證某一個(gè)idea,把自己年輕的生命搭進(jìn)去了,那就太不值得了,不排除一些偉大的科學(xué)家。
比如算法工程師可以創(chuàng)建仿真環(huán)境,只需要一臺(tái)帶GPU的電腦就可以,程序員就更簡(jiǎn)單了,只要有電腦能敲代碼就行,其他工科也有相應(yīng)的仿真軟件。像哲學(xué)、文學(xué)、教育這些行業(yè),就真的需要時(shí)間慢慢沉淀了,與世界的互動(dòng)非但不能快,還需要慢慢體悟。創(chuàng)新就是在這個(gè)階段產(chǎn)生的。
5、?我們學(xué)習(xí)知識(shí)是為了什么?找工作?賺錢?炫耀?找存在感?我覺得都不是,我覺得會(huì)學(xué)習(xí)的人一定不會(huì)為了這些目的,會(huì)學(xué)習(xí)的人會(huì)有很強(qiáng)的思考能力,看到的遠(yuǎn)遠(yuǎn)不止這些。只有自己覺得這些知識(shí)很厲害的時(shí)候才會(huì)向別人炫耀,而自己對(duì)知識(shí)的掌握又有幾成呢。
我從不敢跟別人說自己很懂算法,更不會(huì)去炫耀自己的學(xué)習(xí)方法,因?yàn)槲矣幸粋€(gè)很強(qiáng)烈的感覺,懂得越多,明白的越多,越會(huì)發(fā)覺自己只是滄海一粟,時(shí)刻提醒自己多學(xué)習(xí),充實(shí)自己。
對(duì)待學(xué)習(xí),我覺得有兩個(gè)目的:一是認(rèn)識(shí)自己,二是參與到社會(huì)分工中,創(chuàng)造價(jià)值。不可否認(rèn),很多人都是從炫耀、找工作、賺錢這些目的開始的,我就是為了找到工作,哈哈。但找到工作之后,解決了溫飽之后,人自然而然就會(huì)產(chǎn)生其他想法,也就是更高的追求。
所以,在柴米油鹽的同時(shí),抽出時(shí)間想一想,我是為什么學(xué)習(xí)?活著是為了什么?
當(dāng)然,學(xué)習(xí)方法這一塊只是我這兩年根據(jù)自己的經(jīng)歷感受寫的一些總結(jié),說不定明年我就自己推翻這一套理論了,所以,我建議每一個(gè)人尋找適合自己的學(xué)習(xí)方法。但我還是想再強(qiáng)調(diào)一點(diǎn),學(xué)習(xí)=輸出,而不是自我感動(dòng)、堅(jiān)持等等。
關(guān)于機(jī)會(huì)
不要放過每一個(gè)機(jī)會(huì)。把自己裝備好之后,依然拿不到心儀的offer,依然一事無成也是很正常的,因?yàn)椴皇敲總€(gè)人都有機(jī)會(huì)的。
清華北大的學(xué)生之所以厲害并不是所有人都是天才,很大一部分人是小時(shí)候就掌握了正確的學(xué)習(xí)方法以及吃苦耐勞的品質(zhì),他們的厲害之處來源于他們有足夠多的機(jī)會(huì),且獲得這些機(jī)會(huì)的成本很低,幾乎觸手可及。
借助得天獨(dú)厚的學(xué)校資源,清北學(xué)生可以從各個(gè)方面提升自己,他們就像坐著電梯直接厲害到上天,而普通學(xué)校的學(xué)生真的是沒有機(jī)會(huì),我覺得自己就屬于自己開山造路型的學(xué)生,什么也沒有,什么都要自己去爭(zhēng)取,有一點(diǎn)機(jī)會(huì)都會(huì)當(dāng)作寶貝一樣珍惜。
所以,對(duì)于普通孩子來講,高考考研絕對(duì)是最好的機(jī)會(huì),如果錯(cuò)失了,那就要好好珍惜每一次小小的機(jī)會(huì),來鍛煉自己成長(zhǎng)起來。越努力越幸運(yùn),總會(huì)有一個(gè)天大的好機(jī)會(huì),落到自己頭上,然后利用自己早就準(zhǔn)備好的才華,好好利用機(jī)會(huì),成就一番事業(yè)。
結(jié)語
學(xué)習(xí)算法一定一定要踏實(shí),不管時(shí)間多么緊急,都要從基礎(chǔ)理論學(xué)起,看似很慢,其實(shí)是最快的學(xué)習(xí)速度,不尊重基礎(chǔ),輕則學(xué)習(xí)速度慢,重則從入門到放棄。基礎(chǔ)也是一個(gè)人對(duì)算法理解的天花板,想要在拿到算法崗的offer,請(qǐng)遠(yuǎn)離調(diào)包調(diào)參,深入算法的內(nèi)部數(shù)學(xué)原理。
把我逼急了什么事都能做出來,除了數(shù)學(xué)。算法功底練深厚之后,那做啥都會(huì)很快,也能快速上手其他領(lǐng)域的知識(shí)。天才真的很少,甚至這輩子都遇不到一個(gè),厚積薄發(fā)而已。
多和優(yōu)秀的人交朋友,優(yōu)秀的人,很謙虛禮貌,時(shí)刻關(guān)注自己的前方和腳下的路,和他們交流,會(huì)非常的充實(shí)、幸福。成長(zhǎng)的路上,注定進(jìn)入一個(gè)圈子后又很快離開一個(gè)圈子,這也是成長(zhǎng)的代價(jià),但并不是放棄自己的故友,有機(jī)會(huì)見面了,一定要不醉不歸,回憶過去。
“遇貴人先立業(yè),遇良人先成家,無貴人而先自立,無良人而先修身”?。所謂成長(zhǎng),挺過一個(gè)又一個(gè)困難,抓住一個(gè)又一個(gè)機(jī)會(huì), Anything is Possible!
學(xué)習(xí)資料推薦
以下推薦一些自己正在看、反復(fù)看的學(xué)習(xí)資料:
l?三維點(diǎn)云處理算法:首推嘉信老師在深藍(lán)學(xué)院開設(shè)的《三維點(diǎn)云算法處理課程》;
l?目標(biāo)檢測(cè)網(wǎng)絡(luò)源碼學(xué)習(xí):推薦張士峰博士在深藍(lán)學(xué)院開設(shè)的《基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法》和香港中文大學(xué)開源的OpenPCDet源碼庫;
l?C++資料:王建偉老師寫的《C++新經(jīng)典》系列,看完就能懂;
l?深度學(xué)習(xí)基礎(chǔ):推薦斯坦福的cs231n或者吳恩達(dá)的課程,花書;
l?數(shù)據(jù)結(jié)構(gòu)與算法:左程云的書《程序員代碼面試指南IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解》及《劍指offer》 ;
l?數(shù)學(xué)基礎(chǔ):Probabilistic Graphical Models: Principles and Techniques,或者中文譯本《概率圖模型-原理與技術(shù)》 。
l?ROS機(jī)器人操作系統(tǒng):古月的書《ROS機(jī)器人開發(fā)實(shí)踐》 ,同時(shí)也在深藍(lán)開設(shè)了課程。
原文鏈接(https://zhuanlan.zhihu.com/p/315637650)

你在算法工程師進(jìn)階打怪的道路上,又有哪些有趣、感人的故事呢?
無數(shù)個(gè)挑燈夜讀的深夜、無數(shù)次難以言表的靜默...
都可以在評(píng)論區(qū)分享,我們會(huì)回復(fù)每一個(gè)評(píng)論~