1. 程式人生 > >怎樣做研究(六) 劉挺

怎樣做研究(六) 劉挺

怎樣做實驗

技術科學是實驗科學,一項技術提出來,到底好不好使,“實驗是檢驗技術的唯一標準”。怎樣用實驗去驗證一個想法是否正確呢?第一步是收集資料,第二步是根據你提出的演算法編寫程式,執行程式,獲得實驗結果,第三步是對實驗結果進行分析,得出結論。

1、 收集資料

收集到的資料必須真實可信,資料就是“證據”,有的人專門蒐集對自己有利的證據,比如你要做一個問答系統,需要收集一些問題,那麼最好的做法是從某個實際執行的網站獲得真實的使用者提問,而不應該自己提一些問題。自己提問,因為研製者自己知道什麼樣的問題能夠處理,什麼樣的問題處理不了,所以你以及你所在小組的同學們提的問題往往會容易一些,以至於不利於啟用技術難點。

收集到的資料要有足夠的規模,具有統計意義,有的學者用幾十個句子做實驗資料,在提倡大規模真實文字處理的今天,這樣的玩具性實驗是不被業界認可的。從研究到開發,到產品,再到市場,本來是一個漫長的過程,但是由於今天的NLP和IR學術界越來越重視大規模真實網路資料的使用,以及很多產品直接在網際網路上提供服務,從網際網路上來到網際網路上去,從一開始實驗環境就是真實的,就是大規模的,因此從研究到市場的距離被猛然拉近了。這是我們這個行當目前的一個突出優勢,必須堅持。

如果你所從事的研究已經有現成的國際標準評測資料,那麼就應該要用標準資料,以便和國際同行比較交流。如果你的研究領域比較新,沒有標準資料,也沒有關係,只要你自己採集的資料真實充分,同樣可以說明問題。

2、 編寫程式

程式設計是研究人員的基本功,研究人員不應該在程式設計上有什麼障礙,應該能夠做到有了想法就能夠快速實現一套相應的程式程式碼。你寫的程式是否與你設計的演算法完全吻合,是一個需要探討的問題,有時候你覺得你設計了一個天才的演算法,一定能夠獲得10%以上的指標提升,但實驗結果令你大失所望,這是你不要立即心灰意冷,首先要自己檢查你的程式,沒準是某一行程式碼出了問題呢。在程式設計程式碼方面,還應該注意的一個問題是積累工具。由於你可能長期在一個課題上開展工作,因此非常有必要積累一些常用的程式碼,比如對語料進行預處理的程式碼等,這樣可以節約很多時間。

用於研究的程式不一定太追求可靠性和速度,因為它的核心目標是驗證演算法的合理性。但這並不意味著可以亂寫程式,造成頻繁出錯,弄得自己心煩意亂,本來注意力在演算法驗證上,這樣一來不得不把注意力放在除錯程式上面。程式的速度也必須考慮,如果每執行一次都需要一天一宿,每當你有一個新的想法,即使是一個小小的改進,都等到第二天早晨才能看到結果,你的研究一定會被這蝸牛般的程式速度拖累得奄奄一息。

3、 分析結果

經過一番努力,你的程式調通了,實驗結果出來了,你的偉大設計是否真的卓越無比呢?我敢說,10次有9次都會不如人意,怎麼會這樣?沒辦法,因為你在做創新性的工作,“你向前一小步,就是人類的一大步”,這注定是一件艱難的工作。

如果你的實驗結果達到了預期的效果,說明你觸控到了真理,可喜可賀。但不能停留在實驗驗證上,要給出理論分析,為什麼你的方法能夠取得比別人更好的結果,說不出讓人信服的道理來,仍會受到同行的質疑。實驗結果再好,仍然達不到100%,做錯了的都是哪些資料,具有什麼樣的特點,可以對這些資料進行細分類,分別找出解決辦法,在以後的工作中繼續改進。如果實驗結果不佳也不用沮喪,因為你已經知道“研究中不如意事十之八九”,我就常常碰到這種情況,特別是我給研究生們出了新點子,他們按照我的想法作了實驗,結果效果不佳,我多少會覺得有點尷尬。遇到這樣的情況,說明這一仗沒有打好,對敵情估計的不夠充分,有點像“三打祝家莊”,頭兩會不瞭解祝家莊的機關埋伏,只好積累經驗,第三回再打。有時,實驗結果神奇地超出國際最好水平10%以上,遇到這種情況,幾乎可以斷言你的實驗做錯了,或者你的實驗條件跟別人並不完全相同,切勿盲目樂觀。

前面講過,創新應該是在世界範圍內取得最佳結果,因此你的實驗結果要在同等條件下和國際上的最好水平進行比較,方能證明你的成功。很多剛開始搞研究的人,往往犯一個致命的錯誤,就是兒童式的直線思維,例如:<問題>有人求我畫一輛汽車;<工具>我找了一支鉛筆和一張列印紙;<結果>我畫了一輛賓士(完)。你為什麼要用鉛筆,而不用毛筆,不用油畫筆,為什麼不用宣紙,不用油畫布?別人用的是什麼工具,有沒有人用過油畫筆和油畫布?如果有,他們的作品是否比你的好?你為什麼畫了一輛賓士,而不畫寶馬?你怎麼知道別人喜歡賓士,不喜歡寶馬?比較和思辨是科學的翅膀,沒有翅膀,就只能在地上爬行。我找到了一支鉛筆,因此我就用鉛筆畫了;我熟悉鉛筆的運用;我看到我的一個同學畫了一幅鉛筆畫很好看,因此我也用了鉛筆,等等,這些都不是理由,你必須在比較中思辨,在思辨中給出令人信服的理由。

最後還要問問自己,根據你的實驗是否具有可重複性,也就是說是否任何一個學者在地球的任何一個角落只要按照你的實驗方法重新做一遍,就能夠得到相同的結果。真理應該是放之四海而皆準的,如果你的實驗不能被重複,它的價值就會被打上一個大大的問號。


怎樣寫論文

要寫好論文,首先要對寫論文的意義有足夠的認識。不少工科大學的研究生對工程開發很有興趣,對做實驗也還可以,就是在寫論文這個環節上打不起精神來,總是草草應付。其實,“立言”與“立功”同樣重要,多年後你開發的軟體早已被淘汰,但是你在論文中表述的思想精華,卻能夠持續地對業內同行產生影響。科學的大廈需要每個研究者添磚加瓦,而科學的磚瓦就是“學術論文”,你再才華橫溢,再巧思獨運,如果不能以學術論文的形式把你的成果展示給整個學術界,你的學術貢獻仍然無從體現。一個工程專案可能殷澤一時一地,一個學術思想卻能夠影響深遠。認為寫論文是“虛”的,幹專案,乾產品是“實”的,這種想法是錯誤的。

認識到了發表論文的價值,就有助於激發撰寫論文的激情。科學論文是嚴謹的,學

理工的人也比學文科的人更顯冷靜,但是寫學術論文和寫小說一樣需要熱情。你做了兩年的工作,面對難題,幾番挫敗,終於找到了一條解決之路,你的喜悅從內心深處湧起,快樂需要與知音分享,此時此刻,你的家人由於不懂你的專業,已經無法在深層次理解你的成功,何不拿起筆來,寫一篇論文,把你的成果告訴全世界的同行。

寫論文很象程式設計序,作者就是程式設計師,每個概念就是一個變數,每行語句都是一條程式碼,變數的定義要清楚,程式碼的可讀性要強。自己寫完了論文,最好請導師和同學幫助挑錯,這是在做測試;根據大家的意見要反覆修改,這就是在調程式,調程式要細工慢火,一點點地熬,不厭其煩。審稿人相當於軟體認證機構,最終的執行是在每個讀者的大腦中進行的。如果論文寫得不好,審稿人和讀者看到一半就無法跟上作者的思維了,這就屬於宕機了。如果我們拿出調程式的態度調文章,用軟體工程的思想管理寫文章的全過程,那論文的錄取率一定會大幅度攀升。

我有一個學生,寫一個摘要,總共四五個句子,他要閉門謝客,整整寫一個下午,反覆斟酌調整,下過這樣的功夫,論文的命中率肯定高。一般人都缺乏耐心,論文寫完了就想投出去,不願意看第二遍。其實“反覆修改”是決定論文質量的最關鍵的一環。我認識一個論文高手,他寫完論文就放在抽屜裡,過幾周拿出來再看再改,如此反覆多次再投出去,命中率很高。寫論文細活,是妙龍繡鳳,是雕樑畫棟,不是挖煤打鐵,不是擔水挑糞,沒有細密的心思,沒有絕佳的耐力,沒有創造藝術品的雅趣是做不好的。

程式設計序,腦子裡要想著使用者的需求,寫文章,也不是內心獨白,要始終在心裡有一個讀者模型。很多初學者喜歡自說自話,概念A不定義清楚,就開始用A描述別的事情,或者把在A的基礎上才能夠理解的概念B早早地拋了出來。你自己知道A是怎麼回事,不能就認為讀者們也會理解,作者要找到“導遊”的感覺,始終想著讀者走到了哪一步,如果覺得某個環節很重要,讀者不一定能夠完全明白,還有換一種說法再作解釋,絕對不能自己連蹦帶跳地往前跑,把讀者扔在半路不管了。顧客是上帝,讀者是我們的上帝。

不要認為自己以前沒有寫過學術論文就打怵,其實學術論文也是一種議論文,我們在中學裡都學過議論文的寫作,議論文要有“論點、論據、論證”三個要素。一篇學術論文的論點通常是:“我提出的方法M比現有的其它方法在問題Q上更有效”。為了證明你的論點,需要“擺事實,講道理”,事實就是實驗,光有事實沒有理論分析也不行,難以讓人信服,二者缺一不可。很多人說自己的英語不行,影響了論文的發表,其實英語不是最重要的問題,最重要的是論證行文的內在邏輯,論證要絲絲入扣,清澈見底,不能枝杈橫生,雲山霧罩。好的論文還能起承轉合,層層深入,帶領讀者一起走過九曲迴腸,直至柳暗花明,讓同行們讀罷拍案叫絕。

論文怎麼才能越寫越好呢,關鍵還是要多實踐,在實踐中不斷總結經驗。美國的孩子從小就自己去圖書館查資料,針對一個題目寫長篇大論,長大了,他們寫出的學術論文冗長,但的確邏輯清楚,文字乾淨。我們的同學有的語文沒有學好,不但佈局謀篇不擅長,語法也常有錯誤,特別是有的還把網路上的語言習慣搬了上來,別字很多,排版凌亂,讓人一看就不舒服。耐著性子看看其中的內容吧,看了半天也發現不了論文的要點,論文沒有經過精心的組織,簡單把一些實驗堆砌在一起,囉裡囉唆,如同夢囈,這樣的論文在審稿人那裡,極可能在30秒之內被槍斃。審稿人往往都是業內專家,專家都非常忙,抽空審閱一下論文,如果你不能再論文的開頭用最簡潔清楚的話語描述清楚你的問題以及你的創新性的解法,就剩下在收到退稿信後大聲疾呼:“(審稿人)根本就沒讀懂”。行有不中,反求諸己,抱怨沒有用,還是在投稿前下足功夫吧。

相關推薦

怎樣研究

怎樣做實驗 技術科學是實驗科學,一項技術提出來,到底好不好使,“實驗是檢驗技術的唯一標準”。怎樣用實驗去驗證一個想法是否正確呢?第一步是收集資料,第二步是根據你提出的演算法編寫程式,執行程式,獲得實驗結果,第三步是對實驗結果進行分析,得出結論。 1、 收集資料 收集到的資料

怎樣研究

怎樣思考 1、把問題定義清楚 有的同學做了很長時間的課題,還沒有把問題定義清楚。以自動文摘問題,好像就是把一篇文章中的核心內容提取出來嗎,還怎麼定義,其實不然。文章是什麼樣的文章?議論文、記敘文、還是說明文,還是包括小說之類的文學作品?文章的來源是哪裡?是《人民日報》等用語非

怎樣研究

在事業上每10年就是一代人,我們這一代(70年前後出生)是承前啟後的一代。我們讀書的年代沒有網際網路,與國際的交往也非常少,聽說過ACL/Coling就不錯了,都沒想過去參加。在這種相對封閉的條件下成長起來的人,要想在一個點上做出國際領先的成果,是非常困難的。博士畢業後,多數

怎樣研究

怎樣選題 前文曾提到科學研究的層次,並分了6個層級。此處所說的選題指的是從C到E三個層次上的選擇問題,即:C. 研究方向、D. 子方向、E. 課題。選擇研究方向是實驗室(Lab)主任們需要重點思考的事情,選擇子方向是研究小組(Group)的組長們需要重點思考的事情,選擇課題

ICTCLAS分詞系統研究--得到初分結果

仍然以“他說的確實在理”為例,經過NshortPath的處理後,我們可以得到N條最短二叉分詞路徑,如下: 初次生成的分詞圖表: 1 2 3 4 5

用WPF報表控制元件

報表列印 前面的幾項功能,我做的控制元件都比DevExpress的報表控制元件效能要好,唯獨這個列印要差一些。但這也能用,畢竟列印的功能使用不多,四十頁紙之內速度還是可以的。 報表控制元件使用FlowDocument來列印。我們需要把資料重新填充到FlowDocument裡面。如下面的程式碼

創業公司資料分析資料倉庫的建設

  作為系列文章的第六篇,本文將重點探討資料處理層中資料倉庫的建設。在第二篇運營資料系統一文,有提到早期的資料服務中存在不少問題,雖然在做運營Dashboard系統時,對後臺資料服務進行了梳理,構建了資料處理的底層公共庫等,但是仍然存在一些問題: 中間資料流

利用python資料分析-reindex

DataFrame.reindex(index=None, columns=None, **kwargs) reindex 函式的引數 引數 說明 method 插值填充方法 fill_value 引入的缺失資料值

Intel Galileo筆記Linux Yocto的研究

一,前言 如果之前編譯成功也就不會有這篇文章,正是因為失敗了,所以我不得不研究yocto安裝的原理。 當然在準備之前 你得下載幾個包和必要的軟體,這裡不多說,給個地址: 這個是網上大多數資料所沒有的,因為這個是最新版本 1.0.1的。 二,編譯過程 編譯過程是非常的

Scrapy研究探索——自動爬取網頁之IICrawlSpider

一.目的。 在pipelines.py中實現獲得資料的過濾以及儲存。 但是以上述方法只能爬取start_url列表中的網頁,而網路爬蟲如google等搜尋引擎爬蟲實現的就是對整個網際網路的爬取,所以在本教程中研究使用scrapy自動實現多網頁爬取功能。 二.熱身。

Unity3D C#學習小結[使用TrailRender漂亮的特效]

      大家都知道在遊戲中很多很炫的技能,人物發出技能後,一道光過去了,是不是很有型?那怎麼做這個特效呢?   1、首先建立一個Sphere,然後選中這個Sphere,然後為它新增Componen

Redis 面試知識點筆記Redis如何持久化

問:Redis如何做持久化 AOF (Append-Only-File) 持久化:保持寫狀態 記錄下除了查詢以外的所有變

MySQL學習筆記—— MySQL自連接

概念 cor 子查詢 ron 表操作 例子 質量 _id order by 有的時候我們需要對同一表中的數據進行多次檢索,這個時候我們可以使用之前學習過的子查詢,先查詢出需要的數據,再進行一次檢索。 例如:一張products表,有產品id,供應商id(vend_

學習筆記

tde 監聽 文本 ren 頁面 define www 顯示 back BUG集錦:1. storage on 事件監聽必須兩個頁面同時打開,且處於服務器訪問狀態2. submit 和 button 不能套在 a 裏面,否則 submit 事件將消失3. 新建 Object

構建Docker私有倉庫、Gitlab倉庫和持續集成環境

持續集成 gitlab 私有倉庫 docker registry 環境說明IP功能eth0:192.168.124.139eth1:172.16.100.10Docker私有倉庫、Gitlab、持續集成eth0:192.168.124.138eth1:172.16.100.20Docker服務

物聯網平臺構架系列 :Amazon, Microsoft, IBM IoT 解決方案導論 之 結語

物聯網; iot; aws; 亞馬遜; greengrass;microsoft; azure;ibm; watson; bluemix最近研究了一些物聯網平臺技術資料,以做選型參考。腦子裏積累大量信息,便想寫出來做一些普及。作為科普文章,力爭通俗易懂,不確保概念嚴謹性。我會給考據癖者提供相關英文鏈接,以便深

機器學習筆記邏輯回歸

邏輯回歸 alt 表示 結果 不變 改變 最小值 nbsp 可能性 一、邏輯回歸問題 二分類的問題為是否的問題,由算出的分數值,經過sign函數輸出的是(+1,-1),想要輸出的結果為一個幾率值,則需要改變函數模型 ,其中,, 則邏輯回歸的函數為 二、邏輯回歸錯誤評價 線性

團隊沖刺進度

技術 log app images img logs -1 ges bsp 站立會議: 任務進度: 網頁模板已初步完成,app開始編程。 任務面板: 燃盡圖: 團隊沖刺進度(六)

Hibernate的增刪改查操作2

rac result jlist static 面向 原生 comm public set 一、在Hibernate中使用原生SQL語句 sql語句面向的是數據庫,所以sql語句中對應的不再是bean了,比如sql="select * from user" 在hql中

Unity5.0新特性------新動畫功能

節點 拖動 eve 定義 -a ret del trees nts ??unity 5.0 中的新動畫功能這裏是你能夠期待的新動畫功能高速概述 !State Machine Behaviours狀態機行為在Unity 5 中,你會能夠將StateMachineBehavi