英國AI學者Michael Lones獨家避坑指南,破解機器學習五大陷阱

  • 2021 年 8 月 10 日
  • AI

編譯:Don、維克多、琰琰
近日,Michael A. Lones教授在arXiv提交了一篇論文,全面論述了機器學習在實際應用中的常見陷阱以及對應方法,以幫助機器學習的學術小白們快速入門。
 論文地址://arxiv.org/pdf/2108.02497.pdf
Michael A. Lones是愛丁堡赫瑞瓦特大學數學與計算機科學系副教授,主要研究研究涵蓋優化、數據挖掘、醫學信息學、系統生物學和非標準計算等。
作為一名資深機器學習領域專家,Michael 更關注學術界,而非工業界(工業界水太深,還得教會你怎麼勸酒哈哈)。這篇論文的經驗分享,是他在實際的機器學習教學和研究中積累的知識。不同於其他普遍的機器學習方法,本文僅反映學術界關注的一些重點問題,比如如何嚴謹地評估和比較機器學習模型,如何在論文中更好的論述自己的工作等。
為了使本文更加生動和易讀,Michael 採用了簡單明了的「該做什麼,不該做什麼」的編寫風格來,以免大家還得費勁巴拉的「總結本段大意、總結文章大意」。
總體來看,本文更側重於學術研究背景下的常見問題,比如學術狗們需要在論文里同時對若干種方法進行嚴格的論述和比較,並從現象中挖掘出有效的結論,升華工作的深度和內在。具體而言,它涵蓋了機器學習的五個階段:
  • 在建立模型之前要做什麼準備?
  • 如何可靠地建立模型
  • 如何正確全面而穩健地評估模型
  • 如何客觀地比較模型
  • 如何匯總、分析現象,形成結論並提出觀點


1

構建模型前的準備

很多人在接到一個項目或者研究需求的時候,會火急火燎的寫代碼、訓練模型、評估模型,好像一天就要把所有的事兒都給幹完。但其實我們應該慢下來,首先要花時間思考這個項目的目標,分解它的需求,並且踏下心來細細查看要輸入模型的數據,想想這些數據有沒有什麼規律?潛規則?或者限制?

此外,我們還得花點心思了解一下這個領域的研究進展,其他工作已經做過哪些嘗試,結果如何。如果不做這些前期的準備,直接上來就寫代碼,最終很可能會得到一些重複的結論,訓練出一套無法滿足預期的模型,還會掉進別人已經陷進去的坑裡。這樣浪費時間不說,還無法發表自己的論文。

1.多花時間了解一下手中的數據

我們做研究的目的就是發表論文。如果收集的數據質量很高,噪聲沒有特別明顯;採集的設備和方法也十分可靠,那麼發論文就容易多了。
舉例來說,如果從網上下載的數據集,一定確保其來源的可靠性;如果是一篇論文中開源的,一定要認真去讀這篇論文,確保它不是發表在野雞會議/野雞期刊上的文章,而是一些比較靠譜的來源。
此外,我們要檢查文章中有沒有提到過數據集的局限性。千萬不要以為一個數據集被很多篇論文引用過,它的質量就很好。有時候人們可能僅僅是因為這個數據集的獲取成本低,下載速度快,或者不用給作者發送索取郵件,而去用一些質量稍差的數據。事實上,很多在學術界被廣泛使用的數據集也存在很大局限性。具體的論述可以去看[Paullada等人,2020]的討論。
如果用質量很差的數據集訓練模型,訓練出的模型性能大概率也很差,我們稱其為「Garbage in Garbage out,垃圾進垃圾出」。因此,在項目開始的時候,我們要確保數據的可用性,保證它是有意義的。對此,建議去做一些探索性的數據分析,至於如何發現並處理原始數據集的缺失項和數據點不一致的問題,可以看看[Cox2017]的工作。
千萬別犯懶,在訓練模型之前對數據進行處理的成本,是整個機器學習流程中最低的,也是最容易的。至少,我們不用回頭再跟導師或者論文評委掰扯為什麼使用了質量不好的數據集。

2.別偷看測試集的數據
觀察原始數據的質量和模式是機器學習過程的好習慣,畢竟知道根基才知道如何搭建上層建築嘛。當我們觀察數據時,很可能從中「悟到一些什麼」,並且將它們變成先驗知識固化在我們的腦海中。這些模式和知識會指導我們進行正確的建模和數據處理。

但是,在這個過程中,要注意千萬不要作出一些「不可檢驗的假設」,這些不可檢驗的假設如何被放進模型中,可能會將僅出現在測試集中的信息偷偷泄露給模型。在這裡,「不可側視」這一點很重要。我們可以根據數據做出一些假設,但是這些假設應該都是從訓練集中得到的,絕對不能從測試集中偷窺。
為了保證這一點,在最初的探索性分析階段,我們應該避免對測試集進行觀察和分析,否則很可能會自覺或不自覺的做出一些假設,以一種無法測試的方法限制模型的通用性。關於這一點我在下文中也多次提到的問題,因為一旦測試集的信息泄漏到訓練過程,機器學習模型的泛化能力將會遭遇災難性的打擊。 

3.確保數據量是足夠的
如果沒有足夠的數據,就不可能訓練出一個泛化能力強的模型。從複雜且摻有噪聲的數據中抽絲剝繭總結規律可不是一件容易事兒,這項任務極具挑戰,這種關係在建立模型之前可能隱藏的極深。這種關聯的深淺完全取決於數據集中的有效信息和噪聲的比例,也就是所謂的信噪比。

如果信噪比較高,也就是有效信息的比例較高的話,模型只需要較少的數據就能學到這種關聯性;但如果數據集的信噪比很低,噪聲太大,就需要用特別多的數據才能教會模型。但實際情況是,數據獲取的成本太昂貴了,我們通常無法得到更多的數據,這個問題普遍存在於機器學習的各個領域。此時便可以使用交叉驗證來更高效地利用有限的數據。
當然,我們還可以使用數據增強技術(可見[Wong et al., 2016, Shorten and Khoshgoftaar, 2019])來增加數據量,這種技術對於提升小數據集上的機器學習性能是相當有效的,尤其是在數據集類別不平衡時,也就是某些子類的數據量有限的情況下。類別不平衡通常是指某些類別的樣本量會比其他類別少,相關研究可見Haixiang等人[2017]的處理方法。
如果數據量也十分有限,還要控制好機器學習模型的複雜度,別引入太多的參數。比如像深度學習網絡,很多大模型的參數量可能會輕輕鬆鬆超過小數據集中的樣本量。總之,無論是通過哪種解決方法,最重要的是儘早發現數據量的問題,並提出一個合適的方案緩解它。  

4.和領域專家好好聊聊

領域專家的經驗都是十分寶貴,他們可以幫我們了解這個領域中需要解決的問題,幫助我們選擇合適的特徵集以及機器學習模型,幫助我們把模型介紹給最需要和最適合的人等等。

如果在建立模型的時,沒有徵求過領域專家的意見,很可能會導致項目無法聚焦到痛點問題上,或者不能以最合適最精鍊的姿勢解決問題。一個常見的例子就是,在智慧健康領域或者智能財務系統領域,我們需要用黑盒算法來幫助醫生進行診斷或者財務決策,由於領域的特殊性,我們必須要了解這些算法是如何得出結論的,因為這關係到人命和金錢。
在這兩個場景中,領域專家就是十分重要。他們會幫我們在項目開始之初就理解數據,指出可能具有相關性和預測性的特徵。在項目結束時,還能幫我們在相關的領域期刊上發表論文,讓我們有機會接觸到研究中的最可能的用戶們。

5.認真看看領域的發展現狀

我們很難發現一些新研究課題或方向,更多的時候都是在前人挖的坑中灌水(跟隨研究)。所以得花時間了解一下前人做過的研究,學習他們的研究計劃和思路,以及使用的方法論是非常必要的。
學術就是一個圈,和別人在一個坑裡灌水再正常不過,這不是一件壞事兒,因為學術的進步通常是一個個迭代的過程,每一個研究的進步都能為後人帶來很多啟發和指導。當然,有時候我們想到一個新的idea,欣喜若狂,開始要大幹一場的時候,突然發現已經有人做過了類似的研究,不免沮喪失望,但是也有可能他們的研究沒有盡善盡美,還留下一些其他方向的漏洞。此時,這些已經有的研究就能成為我們研究的理由和動機。
而如果我們忽略前人的研究,有可能會過錯很多有價值的信息。比如,有人可能已經嘗試過你的想法,並且驗證了這個idea不靠譜,還給出了特別詳實的論述和討論,那其實這篇論文是為你節省了好幾年的時間,不用在此浪費時間和精力。又或者有些工作已經將你的想法的一部分或者全部做過了,也別灰心,你完全可以在他們的基礎上繼續努力。
因此,在開始工作之前,一定要去做一個文獻的調研和匯總,最好能輸出一篇綜述並形成觀點。如果做綜述太晚,可能意味着在寫論文時,要爭先恐後、不厭其煩地解釋為什麼要用跟前人一樣的方法來搭建現在這套系統,分明人家已經做過了,還要自己重新做的原因是什麼。

6.想想你的模型要怎麼實際跑起來

我們為什麼要建立一個機器學習模型?這是一個靈魂追問,它的答案會直接影響到模型開發的過程。許多學術工作僅僅是做研究,而不是真的要將它用於工業界實際部署運行。這無可厚非,因為建立和分析模型的過程本身就可以對問題提供非常有用的洞察力。
然而,對於很多學術研究來說,他們的最終目標是產生一個可以在現實世界中部署和運行的機器學習模型。如果是這種情況,我們就需要儘早去考慮部署的問題。例如,如果我們想要將模型部署在一個計算和存儲資源都十分有限的環境中(傳感器節點或者機械人硬件),受制於運行的平台資源,模型的複雜度可能不能太大。又比如,當我們的應用場景對運行時間有着嚴格的限制,需要在幾毫秒內完成數據計算的話,選擇模型和驗證的過程時要重點考慮這一點。
另一個考慮因素是,如何將模型和所部署的底層軟件系統有機而高效地組織起來。這個過程通常沒有想像中的那麼簡單(見[Sculley等人,2015])。但一些新型的方法已經在嘗試解決這些困難,比如ML Ops[Tamburri, 2020]。


2

如何可靠地建立模型

寫代碼構建機器學習模型是機器學習開發過程中最讓人開心的一部分。當我們安裝完簡單易用的文檔和功能齊全的機器學習包(或者叫框架)後,會很容易搭建出一個模型,然後輕輕鬆鬆的將數據喂進去,看看出來的是個什麼妖魔鬼怪。有時候訓練出來的效果不好,從而導致模型一片糟糕。這種問題通常還很難定位和反推,找不到問題出現在哪個環節。
因此,我們需要用一種有組織、有規律、可溯源的方式來建立模型,這既能幫我們確定如何正確使用原始數據,也能幫我們理清模型構建時候的各種選擇。 

1.千萬別讓測試集數據泄漏訓練過程中去

在機器學習開發的生命周期中,衡量模型性能是一項十分重要的任務。對模型而言,客觀準確的評估模型的泛化程度事關重大。但是在實際的研究和開發中,一個常見的問題是測試集會泄漏到模型的配置、訓練或者選擇過程中。當這種情況發生的時候,測試數據集就不能用於客觀地衡量模型的能力。這也是很多工作中的模型看似強悍,但一旦用在真實世界中就趴窩的常見原因。有很多方法會導致測試集數據泄漏,其中有一些披着一張人畜無害的面具,極具迷惑性。 

例如,在數據準備期間,使用整個數據集的均均值和方差對原始數據進行縮放或者歸一化。但實際上我們應該只能用訓練集的均值和方差對數據進行預處理,測試集中的數據是不能參與均值方差的計算的。其他常見的信息泄漏情況是在劃分數據之前就進行了特徵選擇,以及使用相同的測試數據集來評估多個模型的通用型。
為了避免發生這些問題,我們應該在項目伊始就劃分出一個獨立的數據子集,並在項目結束的時候只用這個獨立的數據子集來評估一個單一模型的通用型。更詳細的討論可以參考[Cawley and Talbot, 2010]和[Kaufman et al., 2012]的論述。

2. 嘗試用一系列不同的模型

一般來說,沒有任何的模型是「萬金油」,也就是沒有哪個模型能同時在速度、模型大小、精度、精確率、召回率等方面都做到最好。一定還有個模型能在某一方面或某幾個方面超過它。這一點在「沒有免費的午餐」定律中能夠得到很好的體現。這個定理表明,在考慮所有可能的指標和優缺點時,沒有任何一種機器學習方法能夠全面優於其他方法[Wolpert, 2002]。 
因此,我們在設計和訓練機器學習模型的時候,主要目標是去找到那個對當前特定問題最有效最可用的機器學習模型。這個過程中可能會有一些先驗的知識能夠提供指導,但是大多數情況下都只能在黑暗中摸索。幸運的是,我們現在已經有了很多高級語言的工具包。

比如Python(Scikit-learn[Varoquaux等人,2015])、R語言(如caret[Kuhn,2015])、Julia(如MLJ[Blaom等人,2020])等,它們能夠很輕鬆的對模型進行參數的搜索、超參的調整和比較,從而低成本地生成多個模型。
所以何樂而不為呢?多嘗試一些模型,找出哪個最有效。在「沒有免費的午餐」定律中,重要的是如何避免「NIH綜合症(not invented here syndrome)」,它是指人們不願意使用、購買或者接受某種產品、研究成果或者知識,不是出於技術或者法律等因素,而只是因為它源自其他地方,可以理解成一種傲慢和偏見。放在自己的系統中,就是避免由於自大和狂妄,導致忽略那些不是自己所提的改進點上帶來的改進。這可能會導致我們忽略對某個特定問題的最佳模型。

3.別用不合適的模型

由於獲取一些機器學習工具過於方便了,我們在做一些實驗或者構建模型的成本特別的低,而忽略了模型背後的計算機制和應用背景是否合適。因此,我們很可能會將一些不合適的模型應用到數據集上。比如將本具有類別性質的標籤(比如1代表男,2代表女)當作具有數值含義的標籤(比如1代表1米,2代表2米)給到模型中,或者錯將時間序列數據輸入到不同時刻輸入上沒有依賴關係的模型當中。這一點在寫論文的時候應該尤其注意,因為選擇了不恰當的模型會讓評委感覺很不專業,在理論上也很難講通。 
此外,我們應該避免使用一些不必要的複雜模型。如果數據有限,同時業務也沒有特別的麻煩,其相關關係也很好理解和表達,可以選擇不使用深度學習。最後,別用「這個模型結構是新的」作為選擇的理由,因為老的、成熟的模型歷久彌堅,它們經歷了風雨洗禮,其魯棒性和可用性通常要比新模型更靠譜。 

4. 一定要優化模型的超參數

超參數指影響的是模型配置的預設參數。許多模型都有超參數,比如支持向量機中的核函數、隨機森林中的樹,以及神經網絡的架構。大部分超參數都會顯著影響模型性能,並且沒有「一刀切」的解決方法。也就是說,它們需要適合的特定數據集,以最大限度地利用模型。 
隨機搜索和網格搜索是目前常用的超參數優化策略,這兩種策略雖然編寫簡單,但很難擴展到大量超參數或訓練成本很高的模型中。因此,我們還需要探索更智能的搜索最佳配置的工具,相關研究可參考[Yang and Shami,2020]。此外,除了數據挖掘管道的其他部分外,我們還可以使用AutoML技術優化模型及其超參數的選擇,相關綜述可參見[He,2021]等人的工作。

5. 優化超參數和特徵選擇時要小心 

2018年Cai等人的調查已經發現,特徵選擇是模型訓練的一個常見階段。一般而言,執行超參數優化和特徵選擇的關鍵,在於要將其視為模型訓練的一部分,而不是在模型訓練之前對其進行操作。但事實上,我們經常就是在模型訓練開始之前對整個數據集進行特徵選擇,而這將會導致測試集的信息提前泄漏給訓練過程。
理想情況下,如果要優化模型使用的超參數或特徵,應使用與訓練模型完全相同的數據。實現這一點的常用技術是嵌套交叉驗證(也稱為雙交叉驗證),它涉及到在主交叉驗證循環內作為額外循環進行超參數優化和特徵選擇。相關研究可參見[Cawley and Talbot,2010]。


3

如何合理地評估模型

為了推動研究領域的進步,或者推導出可靠的結論,很多研究員可能會對ML模型做出不公平的評估,這樣做無疑會使學術進步變得「渾濁」。因此,我們應該仔細考慮如何在實驗中使用數據,如何測量模型的真實性能,以及如何以有意義且信息豐富的方式報告模型的真實性能。

1. 務必使用適當的測試集

我們通常使用測試集來測量ML模型的泛化性。因為即便一個複雜的模型能夠完全學習訓練數據,也不一定能捕獲任何可泛化的知識。因此,測試模型在訓練集上的表現如何幾乎毫無意義。確保測試數據集的合理性非常重要,這要求它應該覆蓋更廣泛的目標人群,且不能與訓練數據集重合。

舉個例子,如果訓練集和測試集中同時有一張天氣晴朗的圖片,這種相同天氣條件的數據,意味着測試集不是獨立的,並且因沒有捕獲更廣泛的天氣條件,而不具有代表性。當我們使用單個設備收集訓練和測試數據時,經常會出現類似的情況。即使模型過度學習了一個設備的特性,很可能也不會泛化到其他設備上,並且在測試集上進行評估時也無法檢測到。
2. 務必使用驗證集
連續訓練多個模型並不罕見,研究人員經常使用獲得的模型性能知識來指導下一個模型的配置。在執行這項操作時,注意一定不要使用測試數據集,而要使用單獨的驗證數據集。驗證集包含的樣本,並不直接用於訓練,而是用於指導訓練。如果採用測試集來衡量模型性能,它將成為訓練過程的一個隱式部分,並且不能作為模型通用性的獨立度量——模型將逐漸過度擬合測試集(見[Cawley and Talbot,2010])。
此外,創建一個獨立驗證集的好處是可以隨時停止訓練。在訓練單個模型的時,使用驗證集測量模型的每次迭代過程,如果驗證分數開始下降,表明模型開始過度擬合訓練數據,我們可以及時停止訓練。
3. 反覆評估模型
許多ML模型是不穩定的。如果對模型進行多次訓練,或者對訓練數據進行微小更改,很可能導致模型性能的顯著變化。因此,對模型的單一評估是不可靠的,可能會低估或高估模型的真實性能。常見的解決思路是,使用不同訓練數據集的子集對模型進行多次訓練。 
交叉驗證法(CV)使用最為廣泛,並且推出了很多變種(見[Arlot等人,2010])。標準CV訓練要重複十次以上,如果在此基礎上,將整個CV過程按不同的類別進行數據劃分進行可以顯著增加訓練的嚴謹性,尤其是在數據類別很少的情況下,它可以確保每個類在每次摺疊中都有充分的表示。 
另外,除了評估的多個平均值和標準偏差外,也建議保留單個分數的記錄,以便之後使用統計測試來比較模型。

4.保留一些數據,用於評估模型的實例

評估一般模型的性能(如神經網絡解決問題的能力)和特定模型實例的性能(如通過一次反向傳播產生的特定神經網絡)之間有一個重要的區別。常用的交叉驗證的方法,通常更適用於前者,而不適用於後者。比如,十次交叉驗證會產生10個模型實例,假設選擇測試摺疊分數最高的實例作為實踐中使用的模型。在這種情況下,要如何報告模型的性能?
有人可能認為測試分數是衡量模型性能的可靠指標,但事實上並非如此。首先,單次摺疊中的數據量相對較小。其次,得分最高的實例很可能是測試次數最簡單的實例,也就是說,它包含的評估數據並不具有代表性。因此,估計模型實例的通用性的可靠且唯一的方法是使用另一個測試集。因此,最好單獨創建一個數據集,專門為最終選定的模型實例進行無偏估計。

5.不平衡的數據集不要使用「準確率」

研究人員應該注意使用哪些度量來評估ML模型。對於分類模型,最常用的度量是準確率(accuracy),即模型正確分類的數據集中樣本的比例。如果分類是平衡的,即每個類在數據集中有相似數量的樣本,那麼這種方法是可行的。但如果數據集是不平衡的,那麼準確率可能會成為一個誤導指標。
例如一個數據集中,90%的樣本代表同一個類,10%代表另一個類。一個總是輸出第一個類的二元分類器,無論輸入的是什麼,它的準確率都將達到90%,這樣的數據是沒有意義的。在這種情況下,最好使用Cohen的kappa係數(κ)或Matthews相關係數(MCC)等指標,這兩種指標對樣本規模的不平衡相對不敏感。關於更多處理不平衡數據的方法請參見Haixiang等人[2017]。



4

公平比較模型

比較模型是學術研究的基礎。如果進行了不公平的比較,那麼其他研究人員可能隨後就會被誤導。因此,一定要確保在相同的環境中評估不同的模型,探索多個角度,並正確使用統計檢驗。

1.數字越大,效果越好?

在某些學術論文中,通常會這樣寫:以前的研究準確率是94%,我們論文中的模型準確率達到了95%,因此我們是SOTA。但是,有很多證據都能證明,「堆數字」的模型並不是好模型。例如,如果模型的訓練集和測試集來自同一數據的不同部分,那麼模型的「數字表現好」的原因不言而喻。
另一個不妥之處在於:論文在比較模型的時候,對所比較的模型,往往沒有設置相同的超參數優化。例如,一個使用默認設置,一個使用優化參數。
因此,為了公平起見,作為研究者的你,至少應該將「對比模型」的參數進行相同的優化,然後進行多次評估,從而確定模型之間性能差異是否顯著。

2. 比較模型的時候,如何使用統計檢驗

一般而言,統計測試(statistical test)是比較模型差異的絕好工具。有兩類,一類用於比較簡單的機器學習模型,例如配對卡方檢驗(McNemar』s test)可以比較兩個分類器;另一類適用於大多數情況,例如評估某種數據類型是用神經網絡還是決策樹進行處理的時候,交叉驗證、重複採樣等等是比較適合的方法。
另外,比較模型產生的結果符合何種概率分佈,T分佈檢驗是常用的方式,實際上Mann-Whitney’s U檢驗更加適用,因為它放鬆了數據分佈的假設。
更多方法參見:
[Raschka, 2020]
//arxiv.org/abs/1811.12808
[Carrasco et al., 2020].
//linkinghub.elsevier.com/retrieve/pii/S2210650219302639
 

3. 如何看待多重比較?

當採用統計方法比較兩個以上的模型時候,事情有點複雜。因為,採用多次配比檢驗(multiple pairwise tests)會產生和多次使用測試集類似的缺點:導致對顯著性過度樂觀。因為,在對兩個模型進行統計檢驗的時候,置信度通常設定為95%,這意味着每20次檢驗,會有一次出現「迷惑」結果。
如果是單一的比較,這種不確定性或許可以接受。但如果是多個模型,多次比較,那麼統計檢驗的不確定性會累積。 
上述現象也被稱為:多重效應(multiplicity effect)會導致導致所謂的『p-hacking』(通常增加樣本容量)和『data dredging』做法,強調搜索小的p值而不是統計科學推理。
為了解決這個問題,可以採用多重檢驗的校正。最常見的方法是Bonferroni校正,可以根據正在進行的測試的數量來降低顯著性閾值。
此外,還有更多的校正方法,見:
[Streiner,2015]
//doi.org/10.3945/ajcn.115.113548.

4. 謹慎對待基準測試

在某些領域,用基準數據集評價機器學習模型是非常普遍的做法。其背後的思考是:如果每個人都用相同的數據進行訓練和測試模型,那麼模型性能的比較就會更加透明。 
但是,如果測試集的獲取不受限制,那麼就會有人把它作為訓練集,從而導致高估模型。如果限制每個人只能使用一次測試集,但總體算下來機器學習社區使用了多次測試集,這樣某些問題仍然沒辦法避免。
實際上,在同一測試集上評估多個模型,表現最好的模型可能剛好是過擬合的,因此無法得出SOTA的結論。 
在做研究的時候,應該小心解讀基準數據集上的測試結果,不要認為性能的小幅度提高是顯著的。
統計檢驗更多討論參見:
[Paullada et al., 2020]
//www.sciencedirect.com/science/article/abs/pii/S2210650219302639?via%3Dihub
 

5.請考慮組合模型 

機器學習有時候並不是選擇題,更多的是組合題。不同的模型相互結合往往能產生巨大的性能提升。通過組合,可以用一個模型彌補另一個模型的弱點。這種組合在學術上有個名詞叫做:集成學習(ensemble learning)。 
集成學習(ensemble learning)既可以從現有的訓練過的模型中形成,也可以將基礎模型作為一部分進行訓練,其目的是為了創建一個多樣化的模型選擇。
集成學習在考慮如何結合不同的基礎模型時,可以採用簡單方法,如投票;也可以採用複雜方法,用機器學習模型聚合集成模型的輸出。這種複雜方法通常被稱為堆疊(stacking)。 
集合學習的方法參見:
[Dong et al., 2020]
//doi.org/10.1007/s11704-019-8208-z




5

如何描述工作結論

學術研究的目的不是自我炫耀,而是為知識做邊際貢獻。因此需要對工作做完整的描述,包括哪些工作有效,哪些工作無效。機器學習通常是關於權衡,在某些方面優秀,往往意味着其他方面不達標,十全十美的模型十分罕見。 

1.透明、透明、還是透明! 

首先,工作要儘可能的透明,給別人「站在你肩膀上」的機會。用通俗易懂的方式分享模型是非常好的方式,例如你能用一個腳本實現論文中所有實驗,那麼在發表論文時候,請分享這個腳本,這可以讓其他人輕鬆復現,同時也能增加你的信心。 
這也會促使你更加小心的做研究,寫出更加乾淨的代碼,仔細的記錄實驗。值得一提的是,可重複性在機器學習社區被提到的次數越來越多,所以不透明的工作可能在未來無法發表。
如何提高機器學習研究的可重複性:
[Pineau et al., 2020]
//arxiv.org/abs/2003.12206
 

2. 用多種方式體現結論

在評估和比較模型的時候,使用多個數據集進行測試是一種嚴謹的方法。這有助於克服單個數據集的缺陷,並有助於模型的完整性描述。
另外,採用多個指標報告模型在數據集上表現,也能從不同的角度說明模型的性能。例如,如果決定用準確率衡量模型,那麼如果加上對「類別失衡不太敏感」的指標則是極好的。如果使用部分指標,如精度、召回率、敏感度或特異度,也要包括一個能更全面地反映模型錯誤率的指標。
此外,清晰、明確的指標也對解釋模型有好處,例如如果報告AUC,請指明這是ROC曲線還是PR曲線下的區域。
指標討論請見[Blagec et al., 2020]
//arxiv.org/abs/2008.02577

3. 數據支撐論據

為了避免其他研究員誤入歧途,所以請不要提出無效的結論。一個常見的錯誤是:論文陳述背後沒有訓練和測試數據支撐。一個模型在某個數據集上表現優秀,並不意味着在其他數據集上也表現良好。
所以,能從實驗研究中推斷出的東西總是有限的。一個重要原因是抽樣偏差,即數據對真實世界並沒有足夠的代表性。另外,數據與數據之間可能存在重疊,非獨立性的數據也有可能讓模型產生偏差。 
因此,不要過分渲染你的發現,並意識到其局限性。
機器學習社區數據集調查:
[Paullada et al., 2020]
//arxiv.org/abs/2012.05345

4.謹慎使用統計檢驗

統計檢驗並不完美,保守的方法傾向於低估;自由(liberal)的方法傾向於高估。所以一個現實積極結果的測試並不總代表有意義,消極的測試結果也並不代表無意義。
除了統計學意義之外,另一個需要考慮的問題是兩個模型之間的差異是否真正重要。如果你有足夠的樣本,即使實際的性能差異微不足道,也可以找到顯著的差異。所以,為了更好地說明某件事情是否重要,可以測量效應大小。常見的方法例如Cohen’s d統計、Kolmogorov-Smirnov等等。 
p值的討論參見[Betensky, 2019]:
//www.tandfonline.com/doi/full/10.1080/00031305.2018.1529624

5.洞察模型
 
訓練過的模型包含很多有用的信息。但許多研究者只說模型的性能指標,並沒有對模型實際學到的東西給出見解。請記住,研究的目的不是為了獲得比別人高一點的準確率,而是為了產生知識和理解。如果你能做到這一點,你就能在更好的刊物上發表論文。 
因此,請仔細觀察模型,並嘗試了解模型的輸出。對於相對簡單的模型,如決策樹,提供模型的可視化也是有益的,並且大多數庫都支持這一功能。對於複雜的模型,如深度神經網絡,考慮使用可解釋的人工智能(XAI)技術來提取知識,雖然不太可能弄清楚模型到底在做什麼,但總有些有用的見解。 
數據驅動、知識感知的可解釋人工智能研究綜述見[Li et al. [2020]]
//ieeexplore.ieee.org/document/9050829




6

總結:開放心態

這份文檔並沒有囊括所有方面,有些建議還有未確定的結論。但文章中列舉的一些錯誤事例,至少我們可以探討,這也是研究的本質。
機器學習的理論總是滯後於實踐,我們今天認為正確的事情,在明天看來或許是錯誤的。所以,請你以開放的心態對待機器學習:善於Fellow最新發展,謙虛接受你不懂的知識。 
 
原文鏈接://arxiv.org/pdf/2108.02497v1.pdf



贈書福利 

AI科技評論本次聯合【圖靈教育】為大家帶來10本《算法(第四版)》正版新書。

AI科技評論將一共選出 10名讀者,每人送出《算法(第四版)》一本。

在2021年8月8日二條文章贈書 | 看不懂《算法導論》?先讀完豆瓣評分 9.4 的算法入門巨著》留言區留言,歡迎大家暢所欲言,談一談你對本書的看法和期待。在綜合留言質量(留言是敷衍還是走心)和留言點贊最高(註:點贊最高的前10不意味着一定會中獎)的讀者中選出10位讀者獲得贈書。獲得贈書的讀者請聯繫 AI 科技評論客服(aitechreview)。

  • 留言內容會有篩選,例如「選我上去」、「這書寫的很棒(僅僅幾個字)」等內容將不會被篩選,亦不會中獎。

  • 留言送書活動時間為2021年8月8日 – 2021年8月12日(23:00),活動推送時間內僅允許贈書福利中獎一次。

 雷鋒網雷鋒網雷鋒網