原文作者:shiguang shan@ICT,CAS
from http://hi.baidu.com/bittnt/item/e673901556100d403a176e51
不經(jīng)意間,,自己在計算機(jī)應(yīng)用專業(yè)領(lǐng)域從事科研工作已經(jīng)十余年了,!圍繞著人臉識別這一典型的應(yīng)用問題,我和合作者們(開始主要是導(dǎo)師,,后來是師弟師妹們,,現(xiàn)在則包括了自己指導(dǎo)的研究生)在圖像處理、計算機(jī)視覺和模式識別等學(xué)科領(lǐng)域滾打摸爬了十余載,,回過頭來看看走過的這段歷程,,似乎還有點成績。更重要的是,,回首這些年來走過的科研歷程,,在科研觀念和研究方法論、問題發(fā)現(xiàn)與解決技巧,、論文發(fā)表與學(xué)生培養(yǎng)等等諸多方面似乎還是蠻有心得的,。其中最重要的,還是我對于科學(xué)研究,,至少是計算機(jī)應(yīng)用專業(yè)領(lǐng)域的科研工作流程的認(rèn)識越來越清晰,,對不同身份的研究人員(主要是導(dǎo)師和研究生)在其中扮演的角色越來越明確,因而可以相對高效的運轉(zhuǎn)這樣一條“科研流水線”,。下面就重點談?wù)勎覀€人對所謂“科研流水線”及其中師生合作雙贏關(guān)系的認(rèn)識,,不當(dāng)之處請讀者批評指正。
我認(rèn)為科學(xué)研究,,至少是計算機(jī)應(yīng)用專業(yè)領(lǐng)域的科研,,往往遵循一個由12個步驟形成的流水過程(如下圖所示)。該過程乍看起來很像軟件工程中講述的“需求-設(shè)計-實現(xiàn)-測試”這一軟件開發(fā)流程,,實際上,,個人認(rèn)為這種相似性其實很必然,畢竟大多數(shù)的計算機(jī)應(yīng)用研究是要面向特定需求或解決特定問題的,,因此會遵循“問題-思路-算法-實驗”的類似流程,。但二者的根本不同在于,軟件開發(fā)的目標(biāo)是確定的,,因此強(qiáng)調(diào)的是“滿足需求,,實現(xiàn)功能”,甚至允許是“不管白貓黑貓,,抓住老鼠便是好貓”的做法,。而科學(xué)研究的目標(biāo)往往是不確定的(極端情況下甚至可能是無解的),因此更強(qiáng)調(diào)理論上的簡約與完美,,強(qiáng)調(diào)邏輯上的嚴(yán)謹(jǐn)和縝密,,強(qiáng)調(diào)解決方法的優(yōu)雅與推廣性,,強(qiáng)調(diào)算法的最優(yōu)化(最好能做到“后無來者”——別人不用做了),強(qiáng)調(diào)對前人工作的理性質(zhì)疑和批判,,當(dāng)然最最重要的是強(qiáng)調(diào)創(chuàng)新,,最被推崇的就是“前無古人”的開創(chuàng)性工作。這些特征必然要體現(xiàn)在科學(xué)研究流程中的每個環(huán)節(jié)上,,下面我結(jié)合自己的科研實踐,,談?wù)勎覍υ摿鞒讨忻總€環(huán)節(jié)的認(rèn)識,并順帶分析導(dǎo)師和研究生在其中的不同職責(zé),。
圖示:我所理解的“科研流水線”,,其中實線箭頭為前饋過程,虛線箭頭為反饋過程
步驟1:科學(xué)的需求分析:科學(xué)研究的需求來源是非常多樣的,,常見的如國家重大需求,、產(chǎn)業(yè)共性需求、社會發(fā)展需求,、人民生活需求等等,。還有一類需求則來源于更純粹、更抽象的學(xué)科發(fā)展內(nèi)在的前進(jìn)動力,,如學(xué)科理論基礎(chǔ)的完整性和統(tǒng)一性,,也可能來源于技術(shù)本身發(fā)展的慣性趨勢(即所謂技術(shù)引導(dǎo)需求)。此外,,研究人員的好奇心和個人興趣往往也會成為一種內(nèi)在的科研動力。無論哪種需求,,都應(yīng)該得到理性的尊重,。在這一階段,導(dǎo)師乃至研究團(tuán)隊學(xué)科帶頭人的作用往往是決定性的,,研究生大多處于被動接受的位置,。但實際上,導(dǎo)師的研究方向一般都是確定的,,所以,,研究生在選擇導(dǎo)師時一定要審視自己內(nèi)心的“興趣”所在,捫心自問是否與導(dǎo)師的研究方向一致,,避免以后不得不做自己沒興趣的事情,。“興趣是最好的老師”,,沒有興趣就少了一位老師,,這道理很明顯。
步驟2:確定研究課題:需求分析的結(jié)果往往是一個大問題或大任務(wù),,需要首先將其分解為一個個條件更為可控的子任務(wù)或者子問題,,這里我稱之為研究課題(不是指科研項目),。例如我們在進(jìn)行人臉識別這一大問題的研究時,其中有一類“單一樣本人臉識別問題”,,即:每個待識別人在數(shù)據(jù)庫中只注冊了一個圖像的情況,,這就是一個具體的研究課題。從師生合作的角度來說,,研究生往往在入學(xué)后不久就被分配了一個具體的研究課題,,所以這一課題的確定往往都是導(dǎo)師決定的。這當(dāng)然非??简瀸?dǎo)師對于科學(xué)需求和研究趨勢的把握,,過難或過易的研究課題都可能給研究生未來的科研生涯帶來不利的影響。幸運的是,,該環(huán)節(jié)一般與接下來的調(diào)研環(huán)節(jié)是強(qiáng)耦合的,,調(diào)研的結(jié)果可能會進(jìn)一步修正研究課題的具體任務(wù)。
步驟3:調(diào)研state of the art:即針對給定的研究課題,,通過調(diào)查研究,,回答下述問題:在該課題上國內(nèi)外有哪些研究者,已經(jīng)做了哪些工作,,這些工作如何分類,、有何優(yōu)缺點,當(dāng)前最好的方法已經(jīng)做到了什么程度,,還有什么問題沒有解決,,目前的發(fā)展趨勢是什么等。這是科學(xué)研究中至關(guān)重要的一環(huán),,很多研究工作之所以最終成為同行不屑一顧的“垃圾”,,很多是因為調(diào)研上出了問題,導(dǎo)致或者重復(fù)了別人的工作,,或者解決了別人早已解決了的問題,,或者做了遠(yuǎn)不及當(dāng)前最好系統(tǒng)的結(jié)果。在這一環(huán)節(jié)上,,我的基本經(jīng)驗是:一定要盡快找到該方向上的3到5個state of the art的技術(shù)或方法,,并盡早跟蹤實現(xiàn)它們!這里我之所以保留英文,,是因為實在找不到合適的翻譯,,而這個英文詞組本身含義非常清晰(如果一定要翻譯的直白一點的話,可能是“某方向上的最好的東西”之類的意思),。State of the art之所以重要,,是因為科研的目標(biāo)當(dāng)然是要超越現(xiàn)在最好的東西,如果我們連現(xiàn)在最好的東西是什么都不知道,,何談“超越”,?
那么該如何調(diào)研如何發(fā)現(xiàn)state of the art,?個人經(jīng)驗有幾條:1)先看針對該方向的最新綜述(Survey或Review),現(xiàn)在國內(nèi)期刊上也經(jīng)常發(fā)表綜述文章,,可以參考但我建議一定不要只參考中文綜述,;2)找該領(lǐng)域方向最頂級的國際會議和期刊,把其中最近3~5年的相關(guān)文章都泛讀一遍,,看其中最常被引用,、最多被比較的工作有哪些,然后精讀其中至少50篇,;3)找出領(lǐng)域大牛并經(jīng)常關(guān)注領(lǐng)域大牛的研究動向,。這一點請一定不要誤解為迷信權(quán)威,理性的質(zhì)疑權(quán)威往往是突破的契機(jī),,但質(zhì)疑一定要建立在清楚了解的基礎(chǔ)上,,所以,為了打倒權(quán)威們,,先去了解他們吧,!4)找機(jī)會多聽講座或者看該領(lǐng)域大牛的Tutorial,現(xiàn)場聆聽也許不現(xiàn)實,,但網(wǎng)絡(luò)時代資源是足夠豐富的,。
在調(diào)研階段,師生共進(jìn)是非常重要的,。研究生有足夠的時間和精力可以大量的閱讀論文,,從而能夠把握更多的文獻(xiàn)和細(xì)節(jié),但可能因缺少全局觀而判斷力不足,,因而難以形成有效地知識體系,;而導(dǎo)師往往本就在相關(guān)領(lǐng)域具有一定的基礎(chǔ),而且知識體系更全面,,可以形成更好的判斷,。因此,,在這一階段,,研究生與導(dǎo)師應(yīng)該多交流,共同形成對研究方向的準(zhǔn)確把握,,從而提出真正有價值的學(xué)術(shù)問題,。
步驟4:提出[新]問題:如前所述,調(diào)研的結(jié)果應(yīng)該是提出真正有價值的學(xué)術(shù)問題,。讓我們再次重溫愛因斯坦的至理名言吧:“提出(發(fā)現(xiàn))一個問題往往比解決一個問題更為重要,,因為解決一個問題也許只是一個數(shù)學(xué)上或?qū)嶒炆系募记啥选6岢鲂碌膯栴},、新的可能性,,從新的角度看舊問題,,卻需要創(chuàng)造性的想象力,而且標(biāo)志著科學(xué)的真正進(jìn)步”,。那么這樣的好問題從何而來,?我的經(jīng)驗是:問題根源于研究者對相關(guān)領(lǐng)域知識體系的全面把握和對已有方法優(yōu)缺點的準(zhǔn)確認(rèn)識。對知識體系全局的掌握使我們有可能知道現(xiàn)有體系哪里不完善,,不完美,,不優(yōu)雅,哪里有漏洞可以彌補(bǔ),,哪里應(yīng)該有一個新的增長點,。而對已有方法優(yōu)缺點的認(rèn)識,特別是對現(xiàn)有state of the art方法之“不能”和“失敗案例”的認(rèn)識,,使得我們可以直接提出問題:如何克服現(xiàn)有方法的某某缺陷,?
在這個環(huán)節(jié)上,我認(rèn)為導(dǎo)師要起更大的作用,,導(dǎo)師具有的全局觀可以幫助提出更有價值,、更具一般性的學(xué)術(shù)問題。而高年級的研究生也應(yīng)該逐漸擔(dān)負(fù)起更多的責(zé)任,,特別是在深刻掌握了領(lǐng)域典型state of the art方法之后(應(yīng)該仔細(xì)研讀3遍以上),,可以針對這些方法的缺點提出具體的問題。師生的互動討論,,則可以提煉出全局和局部上都具有價值的科學(xué)問題,。
步驟5:獨立思考問題:即通常所說的分析問題。之所以強(qiáng)調(diào)獨立思考,,是因為我感覺在網(wǎng)絡(luò)時代,,很多研究者特別是研究生的獨立思考能力被大大抑制了,容易受到前人工作的影響,,因而陷入已有的窠臼不能自拔,,特別是對熱門方法的推崇,更加重了這些研究人員研究的從屬地位,。所以,,我建議在這個階段應(yīng)該少看文獻(xiàn),而多像胡適先生倡導(dǎo)的“大膽假設(shè)”,,或者像CMU Takeo Kanade教授說的“像外行一樣思考”,。我認(rèn)為無論大膽假設(shè)還是外行思考,都是在強(qiáng)調(diào)“直覺”,,強(qiáng)調(diào)“常識邏輯推理”的重要性,。在這一個階段,我認(rèn)為導(dǎo)師和研究生的職責(zé)應(yīng)該是基本平等的,特別是高年級的研究生,,必須逐漸養(yǎng)成獨立思考的習(xí)慣(我認(rèn)為思考更多的是習(xí)慣,,而不是能力)。
步驟6:提出新解決思路:這一環(huán)節(jié)其實是獨立思考的結(jié)果,,與獨立思考問題是不可分的,。這里需要強(qiáng)調(diào)的是,我感覺在這方面導(dǎo)師應(yīng)該發(fā)揮更大的作用,,特別是在指導(dǎo)低年級研究生時,,提出明確、具體,、可行的研究思路是非常關(guān)鍵的,,因為低年級同學(xué)往往“思而無果”。而在指導(dǎo)高年級研究生時,,則可以從較高的方法論層次上或者從技術(shù)路線層次上給出問題的指導(dǎo)性解決思路,。例如,針對上述的單一樣本人臉識別問題,,我提出了采用回歸方法從單一樣本預(yù)測類內(nèi)散度的思路,,該思路經(jīng)過博士生形式化和具體算法設(shè)計后,取得了較好的實驗效果,,因而被領(lǐng)域頂級國際會議CVPR’10接收,。
步驟7:解決思路的形式化:上述的解決思路往往是文字化的描述,因不夠嚴(yán)格而存在種種不確定性,,因此,,有必要把思路從文字變成符號,從而得到精確的,、形式化的符號式表述,。這一點最近我感觸頗多,我發(fā)現(xiàn)有時候把自己的思路和研究生溝通后,,研究生設(shè)計的算法并沒有遵循我的思路,,也就是出現(xiàn)了理解的偏差。究其原因,,是因為沒有對思路進(jìn)行必要的形式化,。在這一點上,導(dǎo)師可以有意識的鍛煉研究生的形式化能力,,把思路通過語言描述后,,可以安排研究生進(jìn)行形式化,,然后再對形式化后的思路進(jìn)行審查和進(jìn)一步討論,。同樣的,對問題和思路進(jìn)行形式化可能也是一種習(xí)慣,是嚴(yán)謹(jǐn)和縝密科學(xué)精神的具體體現(xiàn),。
步驟8:求解算法設(shè)計:即根據(jù)形式化后的研究思路進(jìn)行具體算法設(shè)計的過程,。我認(rèn)為這個工作更多應(yīng)該是研究生的職責(zé),導(dǎo)師的作用更多的應(yīng)該是對設(shè)計出來的算法進(jìn)行評價或糾偏,。當(dāng)然,,如果是低年級研究生,導(dǎo)師需要更多的參與到算法設(shè)計中,。需要注意的是,,一個研究思路可能存在很多種可能的實現(xiàn)算法,研究生的算法設(shè)計能力在這里會有很明顯的體現(xiàn):兩個不同的研究生去實現(xiàn)同樣一個思路,,可能會有完全不同的結(jié)果甚至得出相反的結(jié)論,。原因就在于其設(shè)計的算法是否真的忠實反映了所提出的問題解決思路。坦率的說,,在這一點上,,好學(xué)生和差學(xué)生的差別很明顯:一個好學(xué)生可以把一個平凡的思路做的有聲有色,而一個差學(xué)生可能會把一個很好的思路做死,。
步驟9:算法實現(xiàn):這一步驟更多涉及的是編碼實現(xiàn),,一般來說主要是研究生的職責(zé)。導(dǎo)師一般認(rèn)為這應(yīng)該是研究生的基本功,,所以往往不夠關(guān)注,,但其實事關(guān)科研效率。試想,,一個編程實現(xiàn)能力強(qiáng)的研究生2天可以完成的算法實現(xiàn)和調(diào)試,,在一個缺少編程經(jīng)驗的同學(xué)那里,可能需要2個星期才能實現(xiàn),,科研效率的差別是顯而易見的,。所以,研究生應(yīng)該重視自己的編程實現(xiàn)和調(diào)試能力的提高,,盡量不要在這個問題上拖自己科研的后腿,。
步驟10:量化評估實驗設(shè)計:計算機(jī)應(yīng)用專業(yè)本質(zhì)上屬于工程性學(xué)科,因此,,除了必要的理論分析,,評估實驗通常是驗證解決思路可行性、算法設(shè)計合理性和算法實現(xiàn)正確性的必需手段,。我的經(jīng)驗是評估實驗要注意三點:1)度量算法好壞的標(biāo)準(zhǔn)應(yīng)該是領(lǐng)域同行公認(rèn)的指標(biāo),,除非你證明這些指標(biāo)存在問題;2)評估實驗一定要有量化的結(jié)果,,即使是主觀評測,,也應(yīng)該有足夠的被試進(jìn)行評價,,從而給出量化的評價結(jié)果;3)實驗數(shù)據(jù)應(yīng)該是國際同行公認(rèn)的,、中等以上難度的數(shù)據(jù)庫,,最好是state of the art方法所采用的那些測試數(shù)據(jù)集;4)實驗評估必須是無偏向性的,,絕對不能挑選數(shù)據(jù)或者只測試對自己的算法有利的指標(biāo),,掩耳盜鈴的故事大家都知道,后果很嚴(yán)重,。在這個步驟中,,研究生當(dāng)然是主力,但導(dǎo)師必須要對實驗設(shè)計進(jìn)行必要的審核,,以確定評估實驗是無偏的,、量化的、能夠匹配所提出問題的,。
步驟11:實驗觀察&對比分析:得到評估實驗結(jié)果并進(jìn)行對比分析顯然是科學(xué)研究過程中最值得期待和令人興奮的步驟,,但同時也是最考驗研究人員洞察力和邏輯推理能力的過程。因為實驗結(jié)果是解決思路,、算法設(shè)計,、算法實現(xiàn)和實驗評估等前述多種因素共同作用的結(jié)果,特別是實驗結(jié)果不好或者有異常的時候,,我們必須反向推理,,去尋求結(jié)果異常的根源何在:是思路本身有問題?算法設(shè)計不合理,?實現(xiàn)有錯誤,?還是實驗設(shè)計不合適?這是最需要導(dǎo)師和研究生密切配合的時候,,豐富的研究經(jīng)驗使得導(dǎo)師有可能根據(jù)實驗結(jié)果直接指導(dǎo)研究生可能的問題在哪里,,甚至觀察出實驗結(jié)果中異常點,從而發(fā)現(xiàn)有價值的改進(jìn)線索,。為此,,研究生應(yīng)該盡可能多的提供給導(dǎo)師除了最終結(jié)果之外的中間結(jié)果,以便導(dǎo)師做出更準(zhǔn)確的判斷,,進(jìn)而反饋改進(jìn)解決思路及形式化,、優(yōu)化算法設(shè)計、調(diào)優(yōu)算法參數(shù)或者改進(jìn)實驗評估策略,。太多的例子已經(jīng)表明:國內(nèi)外研究人員在很多問題的解決思路上往往是趨同的,,最終取得成功的往往是那些通過上述反饋調(diào)整把這些思路做到了“極致”的那些研究者!
值得特別關(guān)注的是該與什么方法進(jìn)行對比分析,。我的經(jīng)驗是:一定要跟stateof the art的3~5種方法進(jìn)行全面,、系統(tǒng)的對比,。否則是不宜得出任何確定性的結(jié)論的,而如果作為論文投稿,,沒有這種對比也一般不會被審稿人接受。其原因還是基于前述的道理:計算機(jī)應(yīng)用科學(xué)研究的價值更多體現(xiàn)在state of the art結(jié)果的不斷超越和更迭上,。
步驟12:得出結(jié)論&提出新問題:上述實驗結(jié)果如果足夠充分而且對比豐富,,則提供了寶貴的第一手資料,足以支撐一些基本的結(jié)論,。更重要的是,,所謂“實踐出真知”,這些結(jié)果和對比分析為我們提供了更為寶貴的經(jīng)驗,,可以使我們更深刻的認(rèn)識相關(guān)課題領(lǐng)域存在的真實問題是什么,,什么樣的思路可能是有效的,從而使我們可以進(jìn)一步提出新問題或者新的解決思路,,從而再次回到科研流程的第4個步驟上,。在這樣一個節(jié)點上,導(dǎo)師和研究生的深入討論是發(fā)現(xiàn)新問題,、誕生新思路的法寶,。
需要說明的是,盡管上述自上而下的流程中的每個步驟都是很重要的,,但我個人認(rèn)為這恰如河流,,還是有上下游之分的??傮w而言,,越是上游的步驟,就越重要一些,。比如問題比思路重要,,思路則比算法重要,而算法則比實現(xiàn)重要,,等等,。因此,不難發(fā)現(xiàn),,研究人員的成長過程一般都像逆流而上的魚兒一樣“力爭上游”,。總體而言,,這沒有錯,。我也主張研究生培養(yǎng)可以遵循這樣的一個過程:在低年級的時候側(cè)重在“實現(xiàn)”層面(由導(dǎo)師等完成其他主要步驟),而隨著年級的增高,,工作重點必須逐漸往上游提升,,最終應(yīng)具備獨立完成從提出問題到得出結(jié)論這一全過程的能力——即所謂獨立從事科研工作的能力,。但是,這里必須強(qiáng)調(diào)兩點:1)上游重要并不等于下游不重要,,如前所述,,同樣的好問題或好思路,可能因為后續(xù)實現(xiàn)過程的種種問題而被扼殺,;反過來,,一個看似平凡的思路,被做到極致也可能產(chǎn)出非常好的成果,。特別是根據(jù)評估實驗結(jié)果和對比進(jìn)行反饋修正上游步驟的能力,,更是至關(guān)重要的。2)導(dǎo)師應(yīng)該加強(qiáng)對研究生研究流程全過程的“監(jiān)控”,,并在每個環(huán)節(jié)上給出全局性的建議和幫助,,必要時要及時糾偏,以免研究生走過多的彎路,。這一點是非常必要的,,因為研究生很多時候處在科研流程的局部,容易陷入“局部最優(yōu)”,,而不是“全局最優(yōu)”,。
本來想寫一篇短文,沒想到羅里啰嗦寫了這么多,,不過也算是對過去的一些總結(jié)吧,,希望能夠?qū)ψx者有點啟發(fā)。特別聲明:本文內(nèi)容純屬個人觀點,,如有不當(dāng),,歡迎拍磚。