演算法分析已經成為科學研究的重要方法,生物學家、高能物理學家、病理學家等許多領域的研究者都正在廣泛採用機器學習演算法來發現新配方和新方法,但是谷歌 Accelerated Science 團隊高階研究員 Patrick Riley 近日在 Nature 上發表的文章認為,科研工作者對機器學習的預期普遍過高,這可能會導致研究者將資源浪費在錯誤的研究方向上。他在文中列出了科研工作者在使用機器學習時可能遇到的一些陷阱和應對思路。
機器學習正在推動各個科學領域的研究進展,其強大的模式發現和預測工具正在助力所有領域的科學家——從尋找合成分子到提升醫學診斷效果再到揭示基本粒子,可謂應有盡有。
但是,機器學習工具也可能做出一些徒勞無功的探索——得到假陽性結果、不可行的方法和錯誤結果。而且很多演算法還過於複雜,以至於我們不可能檢查其所有引數或推斷其處理輸入的確切方式。隨著這些演算法的應用日益廣泛,理解錯誤、得出錯誤結論以及浪費科研工作資源的風險將會急劇上升。
這些都不是新問題。機器學習領域幾十年來一直備受「坦克問題(tank problem)」之苦。最初的研究似乎出現在 1960 年代(據信參考文獻 1 是這一研究方向上最早的文獻;這是軟體工程師 Jeff Kaufman 的功績),但被埋沒在了時間長河裡。這樣的故事總是層出不窮。
那時候,研究者編寫了一個用於識別軍方提供的照片中的坦克的演算法。得到的模型成功地找到了測試影像中的坦克,但卻無法成功識別之後的真實照片的坦克。原因為何?這個故事已被複述太多次了,細節已經無法考證——但其訓練所用的圖片包含其它模式——出現在晨光之中或雲朵之下的坦克。因此,驅動這一演算法的是類似這樣的其它因素,而不是坦克的存在本身。
類似的迷思帶來了今天的反省。很多機器學習論文都沒能完成足夠的實驗集。用於評議的標準也不一致。而且現在競爭很激烈,某些研究者在得到想要的答案後就抄近道、跳過檢查步驟。
我們無法預測每次分析中的所有難題,但至少,正將機器學習引入自己領域的研究者應當熟悉常見的陷阱以及用於檢測和避開這些陷阱的實踐方法。
本文將介紹谷歌 Accelerated Science 團隊在使用機器學習分析時所面臨並解決了的三個問題,以說明展示這種做法。
三個問題
不恰當地分割資料
在構建模型時,機器學習實踐者通常會將資料劃分為訓練集和測試集。訓練集用於模型學習,測試集則用於評估模型在未知資料上的表現。研究者通常以隨機方式分割資料,但現實生活中的資料很少是隨機的。它們可能包含隨時間變化的趨勢——比如資料收集方式的變化趨勢或所要收集資訊的變化。
舉個例子,分子資料集中就埋藏著這樣的歷史模式,它在經過機器學習演算法的虛擬篩選後可用於發現候選藥物。這個問題的難點在於預測假想分子被人體吸收或減緩炎症的效果。篩選是從有/無所需效果的分子的資料開始的,但資料的收集場景卻可能不同於機器學習模型的使用方式。
舉個例子,一個模型可能是基於一組公開可用的分子資料集構建的,但卻被用在了一個不同的專有資料集上。並且當化學家檢查到或丟棄了有潛在希望的線索時,他們的研究重心往往會從特定的分子分組轉向其它分組。因此,研究者在實踐中往往高估模型的表現。這可能導致預期過高,從而在選擇不佳的分子上浪費時間和資金。很多模型構建者(包括我本人)都曾掉入過這個陷阱。
也就是說,你想要解答的問題應當會影響你分割資料的方式。為了使模型預測向一個在分子中分子中新增幾個原子的效果,測試集中的每個分子都應在訓練集中有僅有幾個原子不同的對應分子。如果你希望很好地預測化學上不同的分子,那麼測試集中的每個分子應該任訓練集中的任何分子。分割資料的「正確」做法可能並不顯而易見,但審慎考慮和嘗試多種方法能為你提供更多見解。
隱變數
在一個理想的實驗中,研究者只需要改變感興趣的變數,其他都是固定不變的。這種水平的變數控制在現實中往往是不可能實現的。裝置的準確性會隨著時間的推移而發生變化,試劑的批次也會發生變化,一種實驗條件先於另一種執行,實驗結果甚至可能被天氣影響。這些不可控變數在機器學習模型中可能是有害的。
例如,我在谷歌的團隊一直在與加州的一家核聚變創業公司 TAE Technologies 合作,致力於優化生產高能等離子體的實驗。我們建立模型,試圖瞭解等離子體機的最佳裝置設定。機器中有數百個控制引數,從什麼時候給電極通電到在磁鐵上設定什麼電壓。我們記錄了一系列測量結果,包括溫度和光譜。
加州的 TAE Technologies 和谷歌的研究者正使用機器學習優化產生高能等離子體的裝置。
在幾個月的時間裡,我們從執行數千次的等離子體機中獲取資料。設定會隨著裝置的調整和修改、元件的磨損以及多個想法的付諸實踐而發生變化。我們最終得到了一個令人欣慰的模型,它能很好地預測在給定環境下,等離子體的能量是否會很高。但很快我們發現,我們的預測和想法不一致。
當再次訓練模型的時候,我們將實驗時間作為唯一的輸入,而沒有選擇所有的機器設定,我們獲得了類似的預測能力。為什麼呢?我們認為第一代模型鎖定在了時間趨勢,而不是物理現象。隨著實驗的推進,機器在一段時間內執行良好,而在另一段時間內執行不佳。所以,實驗完成的時間會為你提供一些資訊,以判斷生成的等離子體是否具有高能量。此外,實驗的完成時間也可以通過控制引數的設定來進行粗略地預測——這些引數的變化也存在時間趨勢。
隱變數也源於實驗佈局。例如,我們正與很多合作者共同解讀顯微影像,包括紐約幹細胞基金會研究所(New York Stem Cell Foundation Research Institute)。這些影像包括滴定板上的生物實驗陣列——通常是包含細胞和液體的網格。目的是發現具有某些特徵的阱,如化療後細胞外觀的變化。但是,生物變異意味著每個滴定板常常看起來截然不同。同時,單個滴定板也可能出現變化。例如,如果邊緣井中蒸發掉了更多液體或者滴定板出現了傾斜,則邊緣常常看起來與中心不同。
機器學習演算法可以輕鬆地捕捉到這些無意的變化。例如,模型或許只是識別出了哪些阱位於滴定板的邊緣。檢查這種情況是否已經發生的一種簡單方式是令模型預測其他情況,如滴定板的位置、這是哪個滴定板以及影像來自哪一批次。如果模型可以做到這一點,則應該對結果提出疑問。
經驗教訓:使用多個機器學習模型來檢測意料之外和隱藏的變數。一個模型集中於你關心的問題——等離子體高能耗還是低能耗;細胞健康還是處於病態?其他模型則排除這些混雜因子。如果後者的效果非常好,則對資料進行標準化處理,做進一步的實驗或調整結論。
定錯訓練目標
機器學習演算法要求研究者指定一個「損失函式」,以確定各種誤差的嚴重程度。從業者傾向於使用一小組函式,這組函式可能無法捕獲到他們真正關心的東西。
例如,我們利用深度學習來幫助求解偏微分方程。這些公式在各個領域都很常見,如流體力學、電磁學、材料科學等。通常,必須利用數值解法來求解問題,我們訓練模型在有限的解中提供更高的準確率。
我們從描述水波在一維中的傳播開始。演算法的任務是反覆預測當前步驟的下一個時間步長。我們在兩個存在細微差別的公式上訓練模型。根據我們的損失函式,兩個模型的表現旗鼓相當。然而,雖然其中一個模型的結果接近預期,另一個模型卻產生了無意義的結果。
為什麼會出現這種情況呢?原因在於,控制學習的損失函式只考慮了下一步的誤差,而沒有考慮多步求解的有效性,後者才是我們真正想要的。
我們在構建糖尿病性視網膜病變篩查機器時也遇到了目標不一致的情況。如果能及早地從眼底影像中檢測出這種病變,患者就能得到有效的治療。在我們收集資料並讓眼科醫生基於影像進行診斷時,我們令機器學習工具預測醫生接下來會說什麼。這個時候就出現了兩個問題。
首先,眼科醫生們經常在診斷時存在分歧。因此,我們意識到,我們的模型不能只有單一的預測,也不能採用少數服從多數的策略,因為在醫療準確度方面,有時候少數派的意見才是對的。
其次,單一疾病的診斷實際上並不是真正的目標。醫療領域真正面臨的問題是:「這個病人是否需要看醫生?」因此,我們將目標從單病種診斷擴充套件到多病種。
糖尿病性視網膜病變篩查。
機器學習從業者很容易受限於一個「顯而易見」的目標,該目標所需的資料和標籤都很清楚。但是,他們設計的演算法可能無法解決真正的問題。我們必須牢記整體目標,否則就會開發出不實用的精確系統。
如何解決這些問題?
第一點,機器學習專家自身及其同事需要保持更高的標準。當收到新的實驗室裝置時,我們希望實驗室夥伴可以瞭解它的功能、如何校正、如何檢測誤差以及裝置的功能限制。機器學習也是如此,使用相關工具的人必須充分了解它們的功能。
第二點,不同的學科需要在各自領域就如何執行和衡量機器學習制定明確的標準。適當的控制、穩定性檢查和誤差測量將因領域而異,並且需要清楚地闡明,這樣研究人員、評審者和編輯才可以鼓勵良好的行為。
第三點,科學家在機器學習領域的教育內容需要涵蓋這些更廣泛的問題。我們雖然可以參考現有的一些資源(如 Google AI),但依然需要做更多的事情。我們通常會教給學生演算法和工具,但他們需要更多地學習如何應用這些演算法,並適當地提出問題。
我們正處在一個神奇的時代——在機器學習的幫助下,計算能力、資料和演算法緊密結合,從而有更多的機會發現一些新事物。作為學術界的一份子,我們有責任確保自身能夠好好抓住並利用這些機會。
原文地址:https://www.nature.com/articles/d41586-019-02307-y