機器學習預測工具正在幫助各個領域的研究人員,比如發現分子的新方法、在分析中發現細微信號,提高醫學診斷質量、揭示基本粒子的性質等。
然而,機器學習工具也可能成為問題的根源,產生誤報,導致盲目試驗和錯誤。現在的許多算法都非常復雜,復雜到可能已經無法一一檢查所有參數,無法確切了解輸入的運行方式。隨著這些算法的應用越來越廣泛,出現誤解、錯誤結論和“做無用功”的風險變得越來越大。這些問題其實并不新鮮。現在不少機器學習論文未能完成足夠的實驗,審查標準也多有不一致。由于競爭激烈,一些研究人員會為了得到想要的結果而偷工減料,跳過必要的檢查環節。雖然我們無法預測所有問題的出現,但至少,研究人員在自己的領域應用機器學習時,應該熟悉并掌握發現和避免這些常見問題的方法和實踐。下面以筆者的親身經歷為例,提出在Google Accelerated Science團隊中運用機器學習分析時遇到的三個主要問題。
不恰當地拆分數據。在構建模型時,研究人員通常會將數據分為訓練集和測試集。訓練集負責“教授”模型,并通過模型對測試集的描述準確程度來評估模型性能。研究人員一般會隨機分割數據。但現實生活中的數據很少是隨機的。數據可能存在隨時間變化的趨勢——比如收集數據的方式不同導致的變化,或者對收集哪些信息的不同選擇而導致的變化等。
比如,在利用機器學習算法篩選新藥的過程中,這些模式就隱藏在分子的數據集中,于是挑戰就在于,預測某一分子是否能有效吸收到體內,減輕炎癥。這個預測由篩選分子數據開始,但是收集數據的背景可能與機器學習模型的使用方式不同。比如,可以先在公開可用的一組分子上建模,然后將模型用于不同的專有分子集上。化學家的注意力經常從某些分子群轉向其他分子,經常高估模型的實際表現。這可能導致過高的預期,并且在錯誤的分子上浪費時間和金錢。許多人(包括我自己)都陷入了這個陷阱。換句話說,你想要解決的問題會影響對數據的拆分方式。為了考察模型預測添加幾個原子對分子的影響,測試集中的每個分子應該在訓練集中加入一個不同的原子。如果你想對不同分子做出很好的預測,那么測試集中的每個分子應該與訓練集中的所有分子全部不同。分割數據的“正確”方式可能并不明顯,但仔細考慮并嘗試多種方法可以提供更高的可靠性。
隱藏變量。在理想的實驗中,研究人員可以只更改自己感興趣的變量,固定所有其他變量。在現實世界中,這種控制通常是不可能實現的。隨著時間的推移,設備的精度會發生變化,不同批次的試劑,不同的實驗順序,甚至是不同的天氣,都會對結果造成改變。這種“不受控制”的變量在機器學習模型中可能是有害的。
例如,我在Google的團隊一直在加州一家核聚變初創公司TAE Technologies工作,優化生產高能等離子體的實驗流程。我們建立了模型,試圖了解等離子機的最佳設置。我們在幾個月的時間里獲得了等離子機數千次的運行數據。建模完畢時,我們很高興,根據給定的設置預測,等離子體的能量是否會很高。但很快,我們發現的預測結果和我們的設想不符。

在印度馬杜賴的Aravind醫院進行眼科檢查,醫生和谷歌的研究人員正嘗試自動診斷由糖尿病引起的失明
當我們再次訓練模型時,將實驗時間作為唯一輸入,也獲得了類似的預測能力。為什么?我們認為我們的第一個模型鎖定了時間趨勢,而不是物理現象。隨著實驗的進行,有一段時間機械運行良好,有些時間則沒有。因此,實驗的時間可以為您提供有關產生的等離子體是否為高能量的信息。這里的實驗時間就是“隱藏變量”。隱藏變量也可以由于實驗的設計而產生。比如我們的團隊正在進行的一個合作項目是對顯微鏡圖像進行“解釋”。這些圖像包括在實驗板上的生物實驗陣列,通常是包含細胞和液體的孔的網格。我們的目標是找到具有某些特定特征的孔,比如經化學處理后細胞外觀的一些變化。但生物的多樣性本身就讓每個實驗板都略有區別。在一塊板上也可能存在差異。位于板邊緣的液滴與中心部分的不同,比如邊緣部分的液體蒸發更強烈,或者板本身可能出現傾斜,這些都會導致結果的差異。機器學習算法可以輕松掌握這些人們未意識到的變化。比如模型可能只是負責確定哪些液滴位于板的邊緣。檢查是否出現這種“隱藏變量”的一種簡單方法是讓模型預測其他目標,比如液滴在板上的位置,位于哪塊板上,顯微鏡圖像來自哪個批次。如果模型成功預測到了,可能就需要對原來的實驗結果持一份懷疑。要解決這個問題,可以使用多個機器學習模型來檢測意外變量和隱藏變量。其中一個模型預測主問題——比如等離子是高能還是低能狀態、細胞是健康還是生病,而用其他模型排除混雜因素。如果后者的預測結果很強,可能就需要對數據進行標準化處理、進行進一步實驗,或準備修正之前的實驗結論。
認不清目標。機器學習算法要求研究人員指定一個“損失函數”,由它決定各種錯誤的嚴重程度。目前人們傾向于使用更小的函數集,這些函數往往無法捕捉研究人員真正關心的內容。
比如我們一直在使用機器學習來輔助求解偏微分方程。這些方程在流體力學、電磁學、材料科學、天體物理學和經濟建模中都很常見。我們從一個方程開始描述水波如何在一個維度上傳播。該算法的任務是重復預測當前步驟的下一個時間步長。我們使用兩種稍微不同的訓練模型。從損失函數來看,這兩個模型同樣好。然而實際上,一個完全不能用,而另一個產生了接近期望的結果。為什么?因為控制學習的損失函數只考慮下一步的錯誤,而不能量度多步的解決方案的有效性,而我們真正想要的恰恰是后者。在利用機器學習對糖尿病視網膜病變的機器篩查任務中,也出現了不同的目標。對于這種病,如果從眼睛后部的圖像中提早檢測到,就可以有效治療。當我們收集數據,并讓眼科醫生根據圖像提供診斷時,會讓機器學習工具預測眼科醫生會說些什么。結果出現了兩個問題。首先,眼科醫生們經常在診斷意見上無法達成一致。因此我們意識到,不能將模型建立在單一預測上。同樣也不能使用“少數服從多數”那一套,因為在醫療準確性方面,有時少數意見是正確的。第二,其實對這種單一疾病的診斷并不是我們真正的目標。我們本來應該問的是:“這位患者應該去看醫生嗎?”因此,需要將預測目標從單一疾病的診斷擴展到多種疾病。機器學習從業者很容易掌握數據和標簽清晰的“明顯”目標。但可能在算法的設置上沒能解決正確的問題。必須牢記總體目標,否則再精確的系統解決的也是錯誤的問題。
首先,機器學習研究人員要讓自己和同事保持更高的標準。對于一臺新的實驗設備,必須充分了解其功能,如何校準,如何檢測錯誤,設備的局限性有哪些等。對于機器學習模型和算法也要如此。所謂“神奇的魔法”其實是不存在的,使用工具的人必須要理解這些工具。其次,對于不同的學科,需要制定明確的標準。適當的控制,健全性檢查和錯誤測量將因不同領域而異,這些都需要清楚地說明,以便研究人員、審稿人和期刊編輯能夠鼓勵良性的科學行為。第三,關于機器學習科學教育需要囊括這些更廣泛的問題。雖然目前已經有一些資源,但我們還需要做更多工作。筆者所在的團隊經常教授算法和工具,但學生需要更多地了解如何應用他們的算法,并對算法本身保持適當的質疑。目前,算力、數據和算法的匯集正迸發出巨大的合力,在機器學習的加持下,為更多的新發現創造了巨大的機會。作為科學共同體的一員,我們有責任確保能夠最充分、高效地將這個機會利用好。
https://www.nature.com/articles/d41586-019-02307-y