技驚四座的BERT全靠數據集?大模型霸榜或許是學界的災難
機器之心整理
機器之心編輯部
作為 2018 年自然語言處理領域的新秀,BERT 是過去幾年自然語言處理(NLP)領域的集大成者,一經出場就技驚四座,碾壓所有演算法,刷新了 11 項 NLP 測試的最高紀錄,甚至有「超越人類」的表現,它被認為是未來 NLP 研究和工業應用最為主流的語言模型之一。
然而最近台灣國立成功大學的一篇論文卻給人們潑了冷水。這一研究認為,BERT 至少在 ARCT 任務上利用了不正常的統計線索。正是這些統計線索,BERT 才能獲得極好的效果,如果在不改變原數據的情況下去除不正常的線索,BERT 甚至不如隨機猜測。
此言一出,立即引發了機器學習社區的強烈反響,在研究社區中有人評價道:「我非常喜歡這篇論文,它用簡單有效的方式表明這些模型沒有被正確地『理解』,並且只使用了簡單的(錯誤的)統計線索。我認為大多數人(可能除了伊隆·馬斯克)都很清楚,這就是 BERT 模型所做的事情。然而,目前有關 BERT 在少量標籤情況下的改進版仍層出不窮。」
毫無疑問,BERT 的研究很有價值,但目前的一些基準測試可能已被證明並沒有效果。當我們看到 BERT「解決」了一些任務的消息時,看起來就像我們已經解決了 NLP 問題,這些事件已經形成了浮誇的風氣,值得我們擔憂。
首先,是時候重新審視一下當今的 NLP Benchmark 現狀了。
NLP 是如此活躍的一個開發領域,其熱度的不斷增加離不開各種排行榜:這些排行榜是多個共享任務、基準系統的核心,如 GLUE 基準以及 SQUAD、AllenAI 等單獨的數據集。這些排行榜激發了工程團隊之間的競爭,幫助其開發出更好的模型來解決人類自然語言處理問題。但事實真的是這樣嗎?麻省大學博士後 Anna Rogers 就這一現象表達了她的觀點。
排行榜有什麼錯?
通常來講,NLP 領域的排行榜都是下圖這個樣子:
網上和學術論文中的排行榜(將所提出的模型和基準模型進行對比)都遵循以上這種格式。
如今,用模型的測試性能來評估其是否新穎或有趣是遠遠不夠的,但排行榜恰恰展示的只有這一點。由於深度學習的範圍如此之廣,充滿各種不同的架構,因此很難找出標準方法來衡量模型參數、訓練數據等額外信息。在論文中,這些細節有時寫在方法部分,有時出現在附錄或 GitHub repo 的評論里,或者直接就沒有提。在那些在線排行榜中,每個系統的細節也只能從論文鏈接(若有的話)或 repo 的代碼中找到。
在這個越發忙碌的世界裡,如果不是為了評審和復現,我們中有多少人會真正去找這些細節呢?這些簡單的排行榜已經提供了我們最關心的信息,即哪些是最新的 SOTA。我們通常懶得思考,不會去批判性地接收這些信息,即使在提醒很快出現的時候也會選擇忽略。如果我們不得不積極地去找到這些警示信號……好吧,根本不可能。冠軍模型在 twitter 上爆紅,可能還會在盲審中得到一些好處。
這種 SOTA 至上方法的危害也引發了很多討論。如果讀者眼裡只有排行榜,那研究者就會認為:只有擊敗 SOTA 才是有價值的研究。這樣的想法帶來了一大批水論文,它們的性能提升非常有限,而且很多無法復現(Crane, 2018)。這也給那些做同樣任務的研究者帶來了一些問題,他們的模型沒有達到 SOTA,因此會覺得連論文都沒必要寫。
GLUE 基準當前排名,上面每一個模型成本都非常大,基本不是一般研究者能復現的。
本文旨在探討排行榜最近帶來的另一個問題。其成因非常簡單:從根本上來說,模型性能的提升可能基於多個原因,要麼是從可用的數據中構建了更好的表徵,要麼只是用了更多的數據或更深的網路。問題是,如果一個模型用了更多的數據/計算,我們就很難找出其性能提升的真正原因。
最流行的排行榜現在由基於 Transformer 的模型佔據。在橫掃各大排行榜數月之後,BERT 在 NAACL 2019 大會上獲得了最佳論文獎。最近,XLNet 又後來者居上,在 20 項任務上碾壓 BERT,成為新的預訓練模型 SOTA。其他的 Transformers 模型還包括 GPT-2、ERNIE 等。
問題在於:這些模型都很大。雖然代碼是開源的,但復現這些結果或創造可與之匹敵的模型所需的算力不是一般實驗室可以承擔的。例如,XLNet 的訓練 token 達到了 32B,需要使用 128 個 Cloud TPU 訓練 2 天,費用超過 6.14 萬美元。單單只是微調模型也非常昂貴。
這樣的排行榜真的還 OK?
但一方面,這一趨勢看起來又是可預測,甚至是必然的:擁有較多資源的用戶會想法設法利用更多資源來實現更好的性能。有人甚至認為大模型證明了自身的可擴展性,並實現了深度學習與生俱來的潛力,即能夠基於更多信息學習到更複雜的模式。沒有人知道解決特定 NLP 任務時到底需要多少數據,但數據越多應該效果越好,並且限制數據似乎會適得其反。
從此觀點來看——從現在開始,似乎只有業界才能做頂層 NLP 研究。學者們只能通過獲得更多資助或與高性能計算中心合作來提升自己的參與度。此外,他們還可以轉向分析,在業界提供的大模型之上構建一些東西或者創建數據集。
但是,就 NLP 的整體進展而言,這或許不是最好的選擇。
為什麼「大模型+排行榜=災難」?
簡單來講,大模型的主要問題在於:「更多數據和計算帶來的 SOTA 結果」並不是真正的研究進展(「More data & compute = SOTA」is NOT research news)。
排行榜的目的在於顯示真正的進步,那麼我們需要著眼於提出新架構。很明顯,大型預訓練模型是珍貴的,但是除非作者證明他們的系統在使用同等規模數據和算力時性能優於其他模型,否則很難判斷他們展示的是模型還是資源。
此外,該研究相當程度上是不可復現的:沒人會花 6.14 萬美元復現 XLNet 訓練。其控制變數測試表明 XLNet 在 3 個數據集上的性能僅比 BERT 高出 1-2%,因此我們實際上並不清楚其 masking 策略是否比 BERT 更成功。
同時,學習器模型的開發並未被推動,因為其面臨的基礎任務更難,而看重排行榜的社區只關注 SOTA。這最後會讓學術團隊付出代價,學生畢業時可能無法成為更好的工程師。
最後,大型深度學習模型通常過參數化。例如,BERT 的較小版本在大量語法測試實驗中的得分高於大型版本。深度學習模型需要大量算力這件事本身並不一定是壞事,但浪費算力對環境是沒有益處的。
BERT 不過是統計擬合
除了對數據與算力的質疑,台灣國立成功大學的研究者近日發表了一篇新論文,他們重新探討了神經網路在理解自然語言中的作用。研究者首先發現 BERT 在 Argument Reasoning Comprehension Task 中性能極好,且只比人類基線水平低 3 個百分點。但是進一步研究卻發現,該結果只是利用數據集中的統計線索得出。所以如果針對這些線索做個對抗數據集,那麼模型的效果不會比隨機猜強多少。
- 論文:Probing Neural Network Comprehension of Natural Language Arguments
- 論文地址:https://arxiv.org/pdf/1907.07355.pdf
這項研究是在論證推理理解(ARCT)這一任務上測試的,這種任務還是挺難的,例如簡單的論證「今天會下雨,所以要帶傘。」,它潛在的前提即「淋濕是不好的」。而 ARCT 避免直接理解潛在前提,並將重心放在了推斷上,如下所示為 ARCT 任務的一個數據點:
ARCT 測試集中的一個樣本,模型需要從 Reason 和 Warrant 推斷出 Claim。例如「我們可以選擇不使用谷歌,且其它搜索引擎也不會重定向到谷歌,那麼谷歌就不是寡頭壟斷」。
BERT 這樣的預訓練模型能在該數據集上獲得 77% 的準確率,只比正常人類基線水平低三個百分點。如果沒有足夠的通用知識,它能獲得這麼好的效果是不科學的,因此研究者繼續探索 BERT 在該任務中學到了什麼。
這種探索也不是這篇論文開啟的,先前已經有很多研究試圖探索 BERT 的決策過程。但研究者發現 BERT 會搜索 warrant 中的線索詞,例如 not 等。這也就表明,BERT 如此優秀的性能都將歸功於探索一些「偽」統計線索。
如果我們取推論的逆否命題,那麼就有可能去除這些不正常的統計線索,也就能構建對抗樣本了。在這樣的的對抗數據集上,BERT 只能實現 53% 的準確率,差不多是隨機猜測的概率了。此外,因為很多模型實際上也都在發現這樣的不正常統計線索,該對抗數據集能作為更多的度量方法。如下所示為上面 ARCT 案例的對抗樣本:
我們只需要按照邏輯改變「Not」之類的詞,模型就解決不了了。BERT 在這樣的對抗數據集只能獲得如下效果:
從這樣的實驗結果可以看出,BERT 這類模型很大程度上都在擬合某些不正常的統計線索。但毋庸置疑的是,BERT 的擬合建模能力還是非常強的,遠遠超過了 BiLSTM 之類的模型。研究者在最後表示,除了 GLUE 這樣的基準,對抗數據集也應該被採用為標準的度量方法,並為模型性能提供更魯棒的評估標準。
可能的解決方案
對 NLP 排行榜的追捧正將我們置於危險的境地,它讓我們放棄了可復現性的目標,只看到谷歌的某個模型在幾個月之後超越了另一個模型。為了避免這種情況再次發生,排行榜需要做出改變。
大體上有兩種可能的解決方案:
對於某一特定任務而言,我們應該可以提供一個標準的訓練語料庫,並將計算量限制在強大基線模型所使用的範圍內。如果基線類似於 BERT,這將激勵研究者進一步開發能夠更好利用資源的模型。如果一個系統利用預訓練表徵(詞嵌入、BERT 等),則最後得分應該將預訓練數據的大小考慮進來。
對於像 GLUE 這樣的一整組任務而言,我們可以令參與者使用他們想要的所有數據和計算,但需要將它們考慮進最後得分之中。排行榜不應只體現模型相對於基線的性能提升,還應列出其利用的資源量。
這兩種方法都需要一種可靠的方式來估測算力消耗,至少可以是任務組織者估計的推理時間。Aleksandr Drozd(RIKEN CCS)認為最好的方法是僅報告 FLOP 計數,這在 PyTorch 和 TensorFlow 等框架中已經可以實現。我們或許也可以為接收深度學習模型的共享任務建立通用的服務,在一批數據上訓練一個 epoch,為研究人員提供估測數字。
評估訓練數據也不是一個簡單的任務:純文本語料庫的價值應該低於帶注釋的語料庫或 Freebase。這或許是可以進行測量的。例如,非結構化數據應該可被估測為原始 token 計數 N、aN 這樣的增強/解析數據和 N^2 這樣的結構化數據作為索引。
與上述相反的一個論點是,某些模型本身可能需要比其他模型更多的數據,且只有在大規模實驗中才能獲得合理的評估。但即使在這種情況下,一篇令人信服的論文也需要展示新模型能夠比其他模型更好地利用大量數據,我們也需要對所有模型在相同的數據上做多輪訓練。
近幾個月來,我們不斷看到 NLP 領域的新進展,每隔幾個月都會出現更新、更強大的模型,實現不切實際的結果。但每當人們開始檢視數據集的時候就會發現:其實這些模型根本沒有學到任何知識。我們是時候從模型優化的工作上後退一步,仔細研究這些數據集,以及它們的真正意義了。
參考內容:
https://hackingsemantics.xyz/2019/leaderboards/
https://arxiv.org/abs/1907.07355
※如何在Windows上做Python開發?微軟出了官方教程
※機器人見多了,你見過機器船嗎?MIT新版ROBOAT可以自動組裝
TAG:機器之心 |