算法工程師的思維修煉指南
當(dāng)你初入江湖,迷茫不知道該干什么的時候,不妨去模仿前人是如何進(jìn)行科研的,并從中歸納出最適合自己的道路。為此,我們推出“學(xué)術(shù)人生”專欄,介紹科研的方法與經(jīng)驗,為你的科研學(xué)習(xí)提供幫助,敬請關(guān)注。
01、反饋的閉環(huán)
在一個研究任務(wù)中,我首先嘗試了方法A,沒搞定,于是改用方法B。組里大哥問:為什么改方法B。我說A沒效果,或許B能work。大哥繼續(xù)問:為什么A不work。我說或許A不適合這個問題?
大哥說:「當(dāng)你有一個嘗試,你一定要知道它為什么work以及為什么不work。每次不work了你就換另一個方法,那另一個方法就能work嗎?這不是科研,是賭博,是瞎試。你只有知道為什么一個方法有效或不有效,何時有效何時無效,你才能增進(jìn)對這個問題的理解,然后基于此提出有價值的策略?!?/p>
我的思考是,既然做了一件事,就一定要得到反饋,要搞清楚哪里做得好哪里不好,這樣這個嘗試所投入的時間才是有效的。不然就是在碰運(yùn)氣,如同做題不對答案,如同訓(xùn)練模型不算loss不做backprop。
02、把煉丹技術(shù)推廣到生活中
機(jī)器學(xué)習(xí)的很多技術(shù)都與現(xiàn)實世界的概念相互呼應(yīng)。在深度學(xué)習(xí)里,模型掉入局部最優(yōu),就是生活中的內(nèi)卷,就是在狹窄的賽道上追求極致。擺脫內(nèi)卷就是跳出局部尋求全局最優(yōu)的過程。破局之道是嘗試新事物,或增加訓(xùn)練數(shù)據(jù)。

與人交流、觀察和學(xué)習(xí)他人可以避免閉門造車。與他人交流就是深度學(xué)習(xí)里的增加訓(xùn)練數(shù)據(jù)。進(jìn)入好的學(xué)校好的公司就是提高訓(xùn)練樣本的質(zhì)量:在label準(zhǔn)確時,學(xué)得輕松。
前面講的“構(gòu)建閉環(huán)”,就是關(guān)注backprop時的梯度。你不能攢了特別多事情后再去反思或?qū)で蠓答?,這個反饋鏈太長,要么梯度消失,要么梯度爆炸,無法有效學(xué)習(xí)。類似對loss的求導(dǎo)過程:「你必須清晰地看到因果鏈條,才能做到從結(jié)果倒推原因,進(jìn)而優(yōu)化自己?!?/p>
已經(jīng)做得很好的事情沒必要重復(fù)。此時應(yīng)該挑戰(zhàn)新的項目,保持自己在學(xué)習(xí)的狀態(tài)。這就是hard data mining. 遇到壞人后就認(rèn)為全人類沒救了,是overfitting。對應(yīng)在機(jī)器學(xué)習(xí)里,在unbalanced dataset上學(xué)習(xí),要想到用weighted loss。
挫折易使人變得復(fù)雜、內(nèi)心沖突多。如果能用簡單的形態(tài)存在,我們或許應(yīng)警惕過分復(fù)雜。機(jī)器學(xué)習(xí)里,解決小問題硬上大模型是一種粗暴且沒技術(shù)含量的辦法。用不必要大的模型是對探求事物本質(zhì)的逃避,科研如此,生活亦然。你以為模型練成了,其實它學(xué)的是shortcut,因此有泛化能力差的問題:variance大,不robust(內(nèi)心不穩(wěn))。同時,模型太復(fù)雜就不容易理解,遇到bug不容易診斷病因(內(nèi)心不易平穩(wěn)和愉悅)。
但避免復(fù)雜不是要當(dāng)巨嬰,不是抗拒成長。當(dāng)任務(wù)復(fù)雜、訓(xùn)練數(shù)據(jù)也大的時候,就必須要上大模型。核心是模型復(fù)雜度(心智復(fù)雜度)要與任務(wù)復(fù)雜度和數(shù)據(jù)量(閱歷)匹配,才是健康的。
03、交流,交流,再交流
組里的女神姐姐教導(dǎo)我:“做research要多和人交流,多去聽別人的paper reading,也把你讀到的論文和想法講給別人聽。因為在討論的過程里你會意識到未曾發(fā)現(xiàn)的問題。嘗試給人講明白的過程里,你的思路也會越發(fā)清晰?!?道理我都懂,每次我頭點(diǎn)得像敲鼓一樣,但也沒堅持做到。
為什么做不到?大概是心理包袱,總想著搞出一個牛X閃閃的東西后再展示給別人,不然覺得丟臉?;蛘呖傆幸环N再試一下就能搞定的錯覺。這種錯覺和我炒股票的風(fēng)格如出一轍。
直到后來我看到越來越多平淡無奇的項目都逆襲了,我理解到,事物的發(fā)展都有必然的過程,要尊重其發(fā)展規(guī)律,不要總想直接搞個大新聞。高效的科研要主動的尋求身邊的資源,爭取讓良師益友把時間花在自己身上,如果自己不主動爭取,再照顧你的人也不能像親媽一樣耳提面命,他們畢竟不好逼迫你。具體的,「應(yīng)該多把自己讀懂的論文講給別人,在你給他人創(chuàng)造價值的同時,你也使他們幫助你這件事更容易了:他們只有懂了你懂的,才能給你最有效的建議,你才能借用他們的頭腦思考?!?/p>
我發(fā)現(xiàn)當(dāng)我積極主動之后,身邊的人都默默支持起我來。稻盛和夫說:“心不喚物,物不至”。
04、「焦慮動力」模型
勤奮上進(jìn)、自我驅(qū)動、有行動力,本質(zhì)是內(nèi)心動力充沛的精神狀態(tài)。動力不足時,我們懶惰、拖延、自控力差。用向量分解的思維模型,我們可以看清「動力」的本質(zhì)。

「動力的分量是 1.焦慮/壓力 和 2.熱情。動力是二者的合力」
帶著上面這句話,我們可以舉出奮斗者的兩種極端狀況。一種由焦慮主導(dǎo),被績效和deadline催促,常處于不安和壓力之中。希望獲得他人的認(rèn)可,如果有了過失,會感到煎熬;另一種是熱情主導(dǎo)的。專注、投入,不易為外界干擾和誘惑所動。在做事的過程中,能收獲成就感和喜悅,認(rèn)為工作與個人追求比較重合。
警惕“動力”過分依賴“焦慮和壓力”的狀況。這個動力來源并不持久和可靠。隨著年齡增加,體力和心力會下降,且隨著閱歷增加,閾值變高,很多事會不再覺得重要。那時就會失去動力。
分量之間存在代償。 盲人的耳朵往往很敏銳。如果動力過多依賴焦慮和壓力,則留意到熱情和樂趣就更難。可能并不是你不熱愛,你只是太緊張了而已。
05、獨(dú)立思考
我對獨(dú)立思考這件事體會最深的就是決定要不要讀PhD時。拿到UW的錄取后,因為微軟組里就很多博士、教授,我自然就去請教他們問要不要讀博,畢竟五年是一筆不小的投入。當(dāng)時有一部分人說值得一讀,另一些人說專心做事業(yè)可能有更大回報。
有趣的是,當(dāng)我簽下offer后,所有的人,不論之前給了什么建議,都由衷恭喜和認(rèn)可我的決定,并和我暢想畢業(yè)后Dr. Jin走向人生(996)巔峰的畫面。
那之前他們的建議是真心的嗎?當(dāng)然是真心的。簽offer后的認(rèn)可也是真心的。于是我理解到,很多事情,做與不做都能找出道理。他人給建議時,也會考慮到我們的情緒,讓我們不論怎樣選擇都有臺階下。因此,我們要保持獨(dú)立思考,要對自己的決定負(fù)全責(zé)。
「建議的推導(dǎo)邏輯比結(jié)論重要。他人建議的正確用法是讓自己看問題多個角度,減少信息差,而不是直接取其結(jié)論,讓他人代為做選擇。」
06、把工作當(dāng)做一個二階優(yōu)化過程
不管title是算法工程師還是應(yīng)用科學(xué)家,產(chǎn)出都是代碼及其體現(xiàn)的知識產(chǎn)權(quán)。我們工作的過程就是優(yōu)化這個代碼及知識產(chǎn)權(quán)的過程。但這太basic。
我們不僅要優(yōu)化產(chǎn)品,也要優(yōu)化產(chǎn)出產(chǎn)品的過程:一階優(yōu)化,是優(yōu)化代碼質(zhì)量。二階的優(yōu)化,是優(yōu)化工作過程,這個工作過程是代碼質(zhì)量更上一層的原因,是原因的原因,是二階導(dǎo)數(shù)。
類比一下:為了走得遠(yuǎn),你可以優(yōu)化速度(路程的原因是速度),更進(jìn)一步你可以優(yōu)化加速度(速度的原因是加速度)。不斷向上溯源,能解決根本問題、通用問題。
回到優(yōu)化工作流程上,我們不斷問自己:在我工作的過程中,有哪些是重復(fù)工作?有哪些可以更高效的完成?有哪些可以被拎出來整理出可以復(fù)用的,于是后面就不再需要花心思重做或者檢查其bug?經(jīng)過一兩年我攢出了一套自己的代碼庫,很多被重復(fù)使用的部分(如用matplotlib畫各種圖,各種數(shù)據(jù)預(yù)處理)就都可以直接copy paste。這就形成了復(fù)利效應(yīng)——時間越長,這些整理出來的代碼片段就創(chuàng)造越高的價值。
07、學(xué)習(xí)些銷售意識
銷售是一門大學(xué)問,值得廣大猿類學(xué)習(xí)。
像設(shè)計產(chǎn)品外包裝一樣設(shè)計履歷
一個暢銷的產(chǎn)品必須有個特色,這個特色與其他競品形成了差異化競爭,才能有自己的市場,賣上個好價格。比如始祖鳥這個牌子的衣服顏值很一般,但它的防水面料好,就拿下了戶外市場。一個中庸的什么都不差也什么都不突出的產(chǎn)品就很難被你記住。同時,產(chǎn)品的優(yōu)秀比不上品牌的優(yōu)秀,如果產(chǎn)品的價值凝練成了品牌,那這個品牌本身就值高價。比如我們會為了logo付費(fèi)。
我們的職業(yè)發(fā)展,說得現(xiàn)實些,也是希望自己在市場上有個好價格。為此,我們不需樣樣精通,但必須有一個具有代表性的,能拿得出手的技能。比如,我就是要和所有人不同,去學(xué)遠(yuǎn)古技術(shù)匯編語言。那只要市場出現(xiàn)了對這個技能的需求,你就能有極大的定價權(quán)。當(dāng)我們深耕一個領(lǐng)域很久,又寫了很多優(yōu)質(zhì)的博客,那你的名字就成為了品牌,可以幫助公司招賢納士,等等。
我的老板兼導(dǎo)師也曾說:你做paper要想怎樣把你的paper賣出去。你要站在消費(fèi)者角度想,他們?yōu)槭裁匆〞r間去讀你的文章?你的論文有沒有創(chuàng)意,能給他們帶來什么價值?寫作語言,圖表美觀程度,就是賣相。這和銷售很像。
我們的簡歷就是商品的成分表——在決定選擇什么項目時,不妨想想這會在簡歷里留下一行什么樣的記錄,會不會幫你抬高自己的職業(yè)價值。
用產(chǎn)品思維規(guī)劃項目
科研項目的立項過程和產(chǎn)品策劃非常像。第一步都是要做survey,了解清楚目前技術(shù)有哪些分支,是什么歷史契機(jī)促成了某個技術(shù)的出現(xiàn)(比如有了新的數(shù)據(jù)集),不同的技術(shù)優(yōu)點(diǎn)缺點(diǎn)在哪(A更準(zhǔn)確,B速度更快,C不需要很多訓(xùn)練數(shù)據(jù),等等)。然后了解這個任務(wù)的定義,metric(關(guān)鍵指標(biāo))是什么,也就是搞清楚游戲規(guī)則,知道大家在比些什么,頭部的玩家都是誰等等。不了解清楚,后面的一切都是錯的。
導(dǎo)師們經(jīng)常問我的一個問題就是“這個task的upper bound是什么”。我說我知道state-of-the-art是什么,還要知道upper bound嗎?導(dǎo)師說你在開始一個嘗試前,要知道還有多少空間留給你去做。如果SOTA(目前最好的)已經(jīng)比較接近upper bound了,你就很難再往上去攻了,你可能找個別的任務(wù)更有成就感?!改闾M(jìn)一個賽道前,要對其發(fā)展到了什么階段有些概念」。
08、關(guān)于忙碌
在上面各種催人上進(jìn)的內(nèi)容之后,我再來分享一個故事來結(jié)尾。
一次公司的一位高層前輩見面,臨走前我問他能不能給我個過來人的建議。
我以為他會給我講一些勤奮工作的態(tài)度、人生規(guī)劃的經(jīng)驗、或者給我打打雞血這種內(nèi)容。
而前輩只是指了指辦公室書架上的一排沒拆封的樂高跟我說,我給你一個建議,就是年輕時多花點(diǎn)時間在自己的嗜好上。我年輕時喜歡樂高,但因為一直忙于工作,并沒有花很多時間在我這個小小的嗜好上?,F(xiàn)在我時間多了,但對樂高也不再有那種熱情了,現(xiàn)在只把他們擺起來,包裝都沒拆。所以年輕的時候,你可以花點(diǎn)時間在自己的愛好上。不能只有忙碌的工作。
來源:知乎—金瀛若愚 https://www.zhihu.com/question/436874654/answer/1808192248
