欧美人与禽2O2O性论交,秋霞免费视频,国产美女视频免费观看网址,国产成人亚洲综合网色欲网

盤點我跳過的科研天坑,進坑就是半年白干(科研四大天坑)

盤點我跳過的科研天坑,進坑就是半年白干(科研四大天坑)

文 | 白鹡鸰 and 小軼 祝大家新年快樂!

去年白鹡鸰花了兩個月,刷了八千篇Arxiv,結果發(fā)現(xiàn)很多論文存在一些比較“基本”的常見問題:

  • 研究問題和問題假設存在嚴重的漏洞,或者缺少充分的相關工作調研,導致所謂的新問題只是新瓶裝舊酒。

  • 模型的選擇與想解決的問題牛頭不對馬嘴

  • 實驗設計錯誤,并沒有針對所聲稱的模型優(yōu)勢來進行實驗設計(還試圖用不合理的實驗分析去強行圓回來)。比如,一篇論文號稱自己可解釋性強,卻拿著精度當指標。

以上本應是研究的基本要求,只有滿足了這些條件才能再去討論一份工作是否有所創(chuàng)新,有所貢獻。但現(xiàn)在不少論文都本末倒置了。很多人在科研的過程中,一些最基本的科研要求往往被忽視,更多關注的反倒是“創(chuàng)新”(novelty)和“貢獻”(contribution)之類更高層次的要求。殊不知,后者必須建立在前者的基礎上。否則,所謂的創(chuàng)新與貢獻恐怕只是水中撈月的假象——

“創(chuàng)新性”被替換為“方法夠不夠花哨復雜”。為了這虛假的 “創(chuàng)新”,模型被強行塞入無效模塊,或是添上意義不大的技巧。

“貢獻度”被替換為“有沒有刷到 SOTA”。但 SOTA 有時候也并不能代表全部:或許模型并沒有掌握任務所必須具備的能力,只是過擬合了特定的數(shù)據集;或許模型的性能提升不是論文提出的核心方法帶來的,而只是某個一筆帶過的技巧、或者是不公平的比較方式導致的。

Severus 曾在往期推文中談過他對“算法崗”的理解。其中一些觀點與我們這里想說的不謀而合。他認為很多畢業(yè)生剛進入工業(yè)界時,最大的短板是缺少扎實地分析問題的能力,導致方法難以落地。并且吐槽了科研界很多 idea 的形成過程只是“靈光一現(xiàn)”,評價方式則“唯指標論”。其實,做科研何嘗不需要扎實的分析能力?不止需要,而且是基本技能之一。只是,忽視這些基本要求,不知從什么時候開始已經成為主流了。

這就像一個歌手,唱歌“是否音準”本應是基本要求,“有沒有流傳度高的音樂作品”是較高層次的要求。而現(xiàn)在卻變成了:基本要求被忽視,高級要求則被“粉絲多少/身價高低”取代。

1 科研誤解的流行從何而來?

那么,為何會存在這么普遍的科研誤解,以致于工業(yè)界的大佬會認為:只經歷過科研訓練的畢業(yè)生,往往連最基本問題分析能力都沒有?大抵可以歸為這樣兩個原因:

其一, “基本”要求≠“簡單”的要求。雖然“扎實的問題分析、相關工作調研充分、解決方法合理、實驗設計有針對性”是一篇工作的基本要求,但并不代表這些要求是容易達成的。就像“音準”等等是一個歌手的基本要求,但好的唱功又談何容易。即使已經具備一定歌唱實力,也難免會有失誤的時候。同理,扎實的科研基本功豈是朝夕可得。

其二, 研究的思維誤區(qū)和思維慣性、知識的局限性息息相關,不能一勞永逸地避免。無論是小軼還是白鹡鸰,在剛入門科研的時候,文章開頭所提到的坑基本全都踩了個遍。只是有幸碰到了好的引導者,而且經驗不斷積累,才逐漸能夠有意識地去規(guī)避這些問題。但是,在某個思維松懈的瞬間,或是出于無法避免的知識局限性,哪怕是已經有一定經驗的研究者,仍然可能再次踏入陷阱。

如果身邊能有一位有經驗的前輩在科研進程中定期討論,避免踩坑的概率會大大降低一些,也會更快地對科研形成正確認識。這位前輩倒也不必事事躬親地教,只需幫助識別出一些常見的坑,發(fā)出“別跳”的警告即可。遺憾的是,在近年來全民 AI 的趨勢下,許多入門科研的年輕人并沒有條件得到這樣的指導,只能摸黑前進。投入了大量時間、精力,甚至犧牲健康才完成的工作,卻因為從根本上就存在漏洞,使得一切努力都成了泡影。到最后,可能都還沒對科研形成最基本的正確認識,就帶著誤解畢業(yè)了。

有的工作不能夠達到某些基本科研要求,或許是作者的無心之失。但也不否認有一些工作是在有意識地粗制濫造,將存在問題的工作加以包裝,以次充好。模型上堆疊各式各樣模塊,把各種當下熱點技術都沾了點邊。然后煞費苦心調出實驗結果。最后再胡謅個似是而非的 motivation,補齊相關工作。面對這類工作,也許有經驗的審稿人很容易就能發(fā)現(xiàn)問題。但若是遇到個經驗不足的審稿人,很可能就打出了高分。畢竟這樣的論文經過一番包裝,確實金玉其外。再加上這樣的工作制造成本低廉,大可以多做幾份,搞“海投戰(zhàn)術”——只要分母夠大,總有能中的。這種行為的流行將戕害到整個 AI 行業(yè)。隨著海投的水文越來越多,審稿需求就越來越大。審稿人的平均水準也相應越來越低,于是漏網之魚的錄用水文也越來越多。從此進入惡性循環(huán)。

2 如何避免科研誤區(qū)?

科研誤區(qū)可能是無心之失,或刻意而為。后者牽扯到太多利益糾葛,不多加討論。但對于還對科研帶有熱情,有心做出有價值的工作的同行,我們在此想分享一份 機器學習避坑指南 ,互相提醒,互相勉勵。

盤點我跳過的科研天坑,進坑就是半年白干(科研四大天坑)

Warning:下文一半是搬運,一半是個人理解。感興趣的朋友還請移步原文。

論文題目:

How to Avoid Machine Learning Pitfalls: A Guide for Academic Researchers

論文鏈接:

http://arxiv.org/abs/2108.02497

原作者熱烈歡迎大家一起補充完善這份指南。

3 建模前需要做的準備

1. 花點時間了解你的數(shù)據

當你的數(shù)據來源可靠時,你訓練的模型才可能可信。在使用來自網絡的數(shù)據時,稍微看一眼,數(shù)據是哪里來的?有沒有對應的文章或文檔說明?如果有說明,多看幾眼數(shù)據的采集方法,檢查一下作者有沒有提及數(shù)據的局限性(可能沒有,所以還要自己多想想)。不要因為一個數(shù)據集被很多文章采用了,就假設它是可信的。即使是標桿級別的數(shù)據集,數(shù)據也可能沒經過仔細篩選(請參見《Google掀桌了,GLUE基準的時代終于過去了?》)。而不靠譜的數(shù)據,只會導致 garbage in,garbage out。所以,在開始跑實驗之前,先好好地探索一下你的數(shù)據吧!在工作開始的時候就對數(shù)據有一個整體把控,總比最后再不得不向審稿人解釋你的模型表現(xiàn)是受到了垃圾數(shù)據影響要好。

2. 不要過度地分析數(shù)據

當你對數(shù)據集有一定了解之后,可能會發(fā)現(xiàn)一些肉眼可見的規(guī)律。但是, 千萬不要基于初步的數(shù)據分析作出任何沒經過檢驗的假設! 提出假設本身沒有錯,重點是避免“沒經過檢驗”的假設,一方面是因為數(shù)據集都會帶有偏差,你無法確定你發(fā)現(xiàn)的規(guī)律是不是基于特定的偏差的;另一方面,在沒有區(qū)分訓練和測試數(shù)據前就基于數(shù)據開始大膽猜測(帶入先驗知識),這其實也是測試數(shù)據泄漏到訓練過程的一種形式??傊?,輕率地提出假設對于模型的可靠性百害無一利,如果你發(fā)現(xiàn)之前很多論文都用了相同的假設,也請謹慎確定這個假設適用于你的數(shù)據。假如你發(fā)現(xiàn)這個領域長期公認的假設其實是不合理的——嗨呀,送上門的文章快寫吧。

3. 確保你擁有足夠的數(shù)據

這其實不止是對數(shù)據的要求,也要求你要對自己的模型有一定的了解:到底需要多少數(shù)據,才能保證你的模型的泛化性?此外,數(shù)據的“量”是否充足,和數(shù)據的“質”有一定的關聯(lián)。如果數(shù)據中噪聲太大,那即使量夠大,也不一定能獲得很好的模型訓練效果。而如果數(shù)據類與類不均衡,模型的泛化性也會受到影響。如果數(shù)據因各式各樣的原因不夠充足,你可以考慮交叉驗證、數(shù)據增強、均衡訓練等操作,如果數(shù)據無論怎樣操作都不足以支撐你的模型,那就趁早換個復雜度低一點的模型吧。

4. 和領域內的專家保持交流

領域內專家的意見是很重要的(特別是你的導師)?;谪S富的經驗,他們能更好地估計研究的可行性和研究價值;對于研究結果的預期可能會更準確,因此當你誤入歧途時,更可能及時地指出;而對于你的成果面向的受眾也會更了解,能幫助你選擇論文投稿的正確的期刊。因此,多和前輩們交流。記住,前輩不限于你的導師,院系內類似工作的老師、學長學姐都是可以請教的對象。多交流還能防自閉!

5. 好好做文獻調研!好好做文獻調研!

重復一遍是因為小軼覺得這點簡直是坑中之坑!需要鞭策自己!

當你想到一個研究問題的時候,你很可能不是第一個想到的。如果你沒找到相關的研究,可能只是因為他人描述問題的形式和你不盡相同,更糟糕的是可能是因為你的問題根本不具備研究價值。無論哪種情況,都是由于文獻調研還不夠充分導致的。需要多讀論文,然后通過交流討論,確定這個研究問題能不能做下去。不要擔心那些和你研究同一個問題的論文:創(chuàng)新性可以來自很多方面,新方法,新結論,新應用點,世界這么大,只要你會講故事,沒那么多論文能和你完全一樣(真一樣的話就說明是有緣人,發(fā)郵件交個朋友去吧)。前人的工作將為你提供很多寶貴的結論、經驗、教訓,也必然存在不完善的地方,沿著前人的不足做下去就好了。

盤點我跳過的科研天坑,進坑就是半年白干(科研四大天坑)

6. 考慮好要如何部署模型

你為什么一定要用深度學習模型?傳統(tǒng)方法它不香嗎?”這是每一篇應用機器學習模型的論文必須回答的問題。

目前,有很大一部分的機器學習模型并不具有實用價值,它們只代表了建模和數(shù)據分析的發(fā)展方向。如果只是運用機器學習模型,一定要注意模型的適用范圍(實時性、計算力等),還要對如何魔改模型的輸入輸出心里有數(shù)?!耙驗闆]人把機器學習用在我的領域,所以我把模型套過來跑一跑”的行為早就飽受詬病了(詳見《近期神奇機器學習應用大賞》)。

4 如何建立可靠的模型

1. 不要混淆訓練和測試數(shù)據!

要使用能證明模型泛化性的測試集。訓練集上表現(xiàn)再好也可能只是過擬合,只有在一個盡可能貼近實際場景的測試集中表現(xiàn)過關,才能證明模型的訓練是有效的。你的訓練集中數(shù)據可以是在單一條件下采集的,但測試集中數(shù)據必須包括各式各樣的情況。而且測試集和訓練集絕對不能有重合。

2. 多嘗試幾個模型

根據 No Free Lunch 理論,任何的機器學習方法都不可能在所有領域表現(xiàn)最好。所以,當你將機器學習引入自己的領域的時候,多試幾個模型,確保你用的是最合適的那一個,當然,也可能沒有一個適合你:)

3. 不要使用不合適的模型

由于現(xiàn)在機器學習的庫太多了,生搬硬套的現(xiàn)象也越來越普遍。搞不清模型輸入輸出,只想用新興神經網絡炮轟一切問題的,看到個新模型就想拿來用的,是不是聽起來就要血壓升高?

盤點我跳過的科研天坑,進坑就是半年白干(科研四大天坑)

4. 好好調參!好好調參!

重復一遍是因為白鹡鸰特別懶不喜歡調參需要鞭策自己

很多模型中都有超參數(shù),它們對模型的表現(xiàn)影響重大,而不同的領域/數(shù)據集對超參數(shù)的要求又各有不同。所以,即使是懶,也必須采用一些自動化方法來調參,比如網格搜索,簡單粗暴,我的摯愛。如果模型很大,訓練成本高昂,甚至可以利用一些工具包幫忙調參。

需要指出的是,盡管經常會聽到一些關于調參的詬病(類似于“這篇論文效果好完全是靠調參!”的抱怨),但是調參是有其必要性的。應該避免的是不規(guī)范的調參和不公平的實驗比較方式。比如,不能用測試集數(shù)據調參;以及,不能僅對自己提出的模型瘋狂調參,而應對所有使用中的模型都進行同等程度的調參方式等等。

5. 注意調參和選擇特征的階段

超參數(shù)調整和特征選擇都應當是訓練的一部分,而不是說訓練之前運行一次就以為萬事大吉。特別是特征選擇,如果對整個數(shù)據集統(tǒng)一進行特征選擇,很可能又會把測試數(shù)據和訓練數(shù)據中包含的知識混在一起,導致測試結果不可靠,因此,最好只對你訓練用的那一部分數(shù)據進行調參和特征選擇。一種推薦的方法是嵌套交叉驗證,這種方法在交叉驗證外面再套了一圈驗證,用來測試不同超參數(shù)和特征選擇對模型的影響。

5 如何合理地評估模型

1. 選擇合適的測試集

能夠證明模型泛化性才是好的測試集。訓練集上表現(xiàn)再好也可能只是過擬合,只有在一個盡可能貼近實際場景的測試集中表現(xiàn)過關,才能證明模型的訓練是有效的。你的訓練集中數(shù)據可以是在單一條件下采集的,但測試集中數(shù)據必須包括各式各樣的情況。而且測試集和訓練集絕對不能有重合。

2. 驗證集是有必要的

在剛開始做機器學習的時候,我對于驗證集的概念不甚清楚,也不明白為什么要掐出來那么多數(shù)據當驗證集(甚至有人告訴過我驗證集可有可無,謝謝您嘞?。r炞C集主要是用在訓練過程中,用來對比多個模型的表現(xiàn)的。當你需要同時訓練好幾個超參數(shù)設置不一樣的模型時,幫助挑選這些模型的就是驗證集。雖然測試集沒有直接參與模型的訓練,但它指導了訓練的方向。驗證集就是訓練和測試之間的緩沖地帶,保證了模型的訓練集和測試集沒有任何重疊。驗證集的另一個好處就是,你可以用它來檢查你的模型是否真的學到了數(shù)據的規(guī)律,見勢不妙時可以趁早停下;如果模型在驗證集中表現(xiàn)先升后降,很可能是模型過擬合的標志。

3. 一個模型多驗證幾次

機器學習的模型能有多不穩(wěn)定,我相信所有用過GAN和RL的人都有話要說,隨機采樣訓練樣本的情況下,模型能往各種神奇的方向發(fā)展,收斂到各式各樣的局部最優(yōu)。這就是為什么我們需要交叉驗證法,它能盡可能地保證模型訓練效果,一定程度上防止過擬合。需要注意的是,如果數(shù)據集中存在類別不均衡的問題,最好保證每個驗證組中都能包含所有類別。在交叉驗證的過程中,強烈推薦大家記錄每輪中測試的均值和方差,在比較模型表現(xiàn)時這些數(shù)據會起到重要作用。

4. 留點數(shù)據用于最終驗證

在訓練過程中,交叉驗證可以很大程度上保證一類模型的訓練效果的穩(wěn)定性,但是,對于訓練中的每個模型個體,這樣的驗證還不夠充分,因為每組交叉驗證的子集中數(shù)據量往往都不大,不一定具有泛化性,說不定,表現(xiàn)最好的模型只是恰好遇到了最簡單的驗證子集。因此,如果你的數(shù)據還算充裕,最好能留一部分數(shù)據,在訓練結束之后再無偏驗證一下模型們的表現(xiàn)。

5. 數(shù)據不均衡的時候,精度是沒有意義的

數(shù)據采集不均衡的情況很常見。例如,很多的自動駕駛的數(shù)據集中,行人、自行車、卡車的數(shù)量加起來還沒有小轎車多。這種情況下,用模型對交通參與物分類的精度作為衡量模型表現(xiàn)的標準,恐怕意義不大。這種情況下,應當先對不同類別樣本的分類精度進行一致性檢驗,或者采用一些適用于不均衡數(shù)據的評估指標,例如Kappa系數(shù),Matthews相關系數(shù)等。

盤點我跳過的科研天坑,進坑就是半年白干(科研四大天坑)

6 如何公平地比較模型

1. 不要以為分高了模型就好

這真是非常常見的問題:“XX模型精度94%,我們的模型精度95%,所以我們nb”。然而,可能存在幾種可能性:兩個模型是在不同的數(shù)據集上測試的(直接斃了吧);兩個模型用的同一個數(shù)據集,但是訓練和測試集劃分并不一樣,特別有些論文,直接引用他人模型訓練出來的精度,連復現(xiàn)都不帶的(危);復現(xiàn)的模型超參數(shù)可能和原論文存在出入,或者沒有費心去調參??傊?,比較模型表現(xiàn)的時候,可能出現(xiàn)各種各樣的事故,一定要記得將模型放在同樣的起跑線上,進行同樣的優(yōu)化步驟,最后,多測試幾次來證明模型的表現(xiàn)確實有顯著的進步。

2. 比較模型時,用點統(tǒng)計學

看到這一條的時候,實在忍不住想到,現(xiàn)在比較模型的方法,有時甚至不如寶可夢對戰(zhàn)。寶可夢好歹還可能因為屬性和技能導致的勝負反轉。模型之間就列一兩個指標,拿著1%的差異說事。還是多用用壓箱底的統(tǒng)計學知識吧,例如,比較分類器的時候可以上McNemar檢驗,檢查模型對數(shù)據擬合的分布時,可以試試Student’s T檢驗。關于模型到底有沒有顯著的改進這個問題,這些方法能夠提供更有力的理論支撐。

3. 如何正確地比較多個模型

如果用了統(tǒng)計學的知識來好好驗證模型效果,你需要注意到,比較多個模型的操作有點復雜。進行統(tǒng)計檢驗時,置信度往往設為95%,那么從統(tǒng)計學上來說,每20次檢測就會有1次的結論可能不可信。而模型越多,比較次數(shù)越多,出現(xiàn)失誤的概率也就越大。為了避免這一風險,比對模型后,應當進行矯正,Bonferroni校正便是一種常用的方法,能夠簡單地根據測試的數(shù)量修正顯著性閾值(這一操作目前仍然存在爭議)。

Bonferroni 校正:如果在同一數(shù)據集上同時檢驗n個獨立的假設,那么用于每一假設的統(tǒng)計顯著水平,應為僅檢驗一個假設時的顯著水平的1/n。

4. 不要盲信benchmark的結果

基準測試之所以存在,是希望大家使用統(tǒng)一的數(shù)據訓練和測試模型,使模型之間更容易比較。但是,即使你自己的模型訓練完全符合規(guī)范,也不能保證他人是否將測試集用于訓練了。實際上,很多表現(xiàn)最好的模型可能只是恰好過擬合了測試集,泛化性未必有保障。總之,一定要謹慎地對待基準測試的結果,不要以為在基準數(shù)據集上有一點點性能提升就能證明模型的顯著性。

5. 記得考慮集成模型

雖然有些人可能很嫌棄,但應用到子領域的的時候,能抓老鼠的就是好貓??p合怪沒有錯。有時候,把不同的模型集成成為一個大一統(tǒng)模型,確實能夠利用它們各自的特點補齊短板,提升模型在面對多樣化場景時的泛化性。比如最近幾年興起的全景分割,目前最流行的操作就是把語義分割和像素分割的模型拼在一起,從而得到對前景中獨立個體和背景內容的全面信息。集成模型的難點就是集成,如何結合每個子模型提取的數(shù)據特征,如何選擇合理的輸入和輸出格式。我有一位朋友,似乎每天在因為這些問題愁得掉頭發(fā)。

7 如何描述你的結果

1. 盡可能透明公開

機器學習領域的透明公開,一方面是指論文當中對實驗關鍵步驟的詳細描述,另一方面則是指公開代碼。公開代碼能夠節(jié)約其他研究者復現(xiàn)論文的時間,也是督促你自己謹慎實驗的動力。

2. 多角度評估表現(xiàn)

用多個數(shù)據集、多個指標顯然能更好地評估模型的性能,比如實時性、泛用性、魯棒性

需要注意的是,如果你采用的指標非常常見,如AP,MSE,就別在論文里列公式了,占地方。但是如果你采用的指標是近年新出的,甚至是你自己新提出的,花上幾行好好解釋一下這個指標的意義吧!你論文的貢獻說不定也包括這幾行!

3. 不要輕易推廣結論

“因為我的模型在XX數(shù)據集表現(xiàn)良好,它在XX任務上必然是未來之星“。這類說法不是很嚴謹,因為數(shù)據集永遠是真實世界的子集,無論你是否看得見,偏差必然存在。雖然這個說法一般不會直接導致論文被拒,但可能成為需要大修的理由之一。

4. 謹慎地討論顯著性

統(tǒng)計檢驗不是萬能的,不同的指標可能高估或低估模型之間的差異。在描述模型差異前,請先想清楚,這個差異重要嗎?只要數(shù)據集足夠大,哪怕模型性能相差無幾,實際測試結果也必然存在差異?;蛟S,效應量 (effect size)也是不錯的選擇,效應量可以量化模型之間差異的大小,例如Cohen’s d,或者更為魯棒的Kolmogorov-Smirnov。

5. 模型:請再多懂我一點

這一點我非常痛苦地贊同。看別人的論文時,我最關心的就是討論部分,分析 一個模型為什么會表現(xiàn)好,機理上有什么改變。但這也是論文、尤其是使用機器學習的論文最難寫的部分,因為很多作者自己都解釋不清為什么模型性能表現(xiàn)好。想要提供模型的可解釋性,目前最常見的做法就是可視化(我對你的愛,是為你而留的神經元~?),XAI現(xiàn)在也在不斷發(fā)展,可以參考的方法越來越多。好好寫討論,論文的可信度會上升不少,被接收/引用的概率也會顯著提升。

8 尾聲

這其實不僅僅是對跑實驗過程的指南。如果按照這個規(guī)范來做實驗,你會發(fā)現(xiàn)論文會變得很好寫,而不是等要投稿了,再絞盡腦汁去想自己的工作到底有什么意義。因為你將有充分的理由去研究一個問題,有充分的理由把機器學習方法應用到這個問題上,你的實驗過程是經得起推敲的,你的結果分析是面面俱到的。最終,你會發(fā)自內心地覺得自己沒有浪費生命,而是真的做出了一份有價值的工作,并獲得相當?shù)某删透?/strong>。

引用原作者的話作為結尾:

這份指南并不完善,未必告訴了你所有你應當知道的內容,提到的一些方法和技巧也是經驗性的,它們可能在未來被證明有誤,或者存在爭議——但這恐怕是由研究的本性決定的。如何跑機器學習的方法論總是會落后于實踐,學者們總會在最佳的做事方法上爭論不休,而我們今日所信奉的正確可能在明天就會被證偽。因此,研究機器學習,其實與做其他研究無異:永遠保持開放的思維,愿意跟進最新的研究進展,并保持謙遜,承認你并非無所不知。

GAIR 2021大會首日:18位Fellow的40年AI歲月,一場技術前沿的傳承與激辯

2021-12-10

致敬傳奇:中國并行處理四十年,他們從無人區(qū)探索走到計算的黃金時代 | GAIR 2021

2021-12-09

時間的力量——1991 人工智能大辯論 30 周年紀念:主義不再,共融互生|GAIR 2021

2021-12-12

論智三易,串聯(lián)通訊,貫通邊緣,演進認知,匯于機器:聽五位IEEE Fellow暢談AI未來 | GAIR 2021

2021-12-25

新一代AI人才從哪里來,該往哪里去?| GAIR 2021院長論壇

2021-12-29

相關新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部