NLP模型超越人類水平?你可能碰到了大忽悠
大數據文摘出品
來源:thegradient
編譯:張睿毅、武帥、錢天培
一個軍方訓練的神經網絡聲稱可以分類圖像中的坦克,但實際上,它只是學會了識別不同的亮度,因為一種類型的坦克僅出現在明亮的圖片中,而另一種類型僅出現在較暗的圖片中。
一個游戲AI在學會了在第一關的最后故意死去,而不是在更難的第二關的開局死去,因為這樣可以得到更高的分數。
AI通過某種讓人啼笑皆非的奇怪方式嘗試騙過人類,并達到自己的目的,這樣的案例之前文摘菌總結過一大批。
模型通過學習“錯誤”的信息來解決任務的問題已經存在很長時間了,并被稱之為“聰明漢斯效應(Clever Hans effect)”。
該效應說的是,一匹名為漢斯的馬看似能完成一些簡單的智力任務,但實際上只是依賴于人們給出的無意識線索。
“聰明漢斯效應(Clever Hans effect)”在圖像檢測領域早已有之,但最近,在一篇最新論文中,來自臺灣國立成功大學的Niven和Kao指出,這一現象也正在NLP領域大受關注。脫去它的影響后,BERT也許沒有我們想得那么神奇。
先附上論文鏈接,再一起看看這個論證過程:https://www.aclweb.org/anthology/P19-1459/
Niven和Kao采用了一個論證理解數據集。隨機選擇的準確率為50%;之前表現最好的模型的準確率為71%;然后他們選擇了BERT,僅僅微調后,便達到了驚人的77%的準確率。
如此看來,BERT似乎確實名不虛傳。
但是,作者對這一看似很成功的“微調”產生了懷疑,并嘗試對此進行論證。
NLP迎來“聰明的漢斯”時刻
論證理解是一項相當困難的任務,需要世界知識和常識推理。雖然BERT毫無疑問是目前為止最好的語言模型之一,其遷移學習正是“NLP的Imagenet時刻”,但鮮有證據表明,語言模型已經習得高級自然語言理解這一技能。
給定一個論點和一個原因,我們需要找出使得該推理成立的論據。
舉個例子,假設論點是“谷歌不存在壟斷”,原因是“人們可以選擇不使用谷歌”。這一推理成立背后需要一個論據,即“其他搜索引擎并沒有導向谷歌”。但是如果說“其他搜索引擎都導向了谷歌”,那么論點就不能成立了。
作者也對BERT模型進行了三項分析。
首先,他們在可能的答案(即論點)中計算了一元文法(unigrams)和二元文法(bigrams),并觀察到像not,is,or之類的單個一元文法相較于隨機概率而言,能夠更好地預測出正確的論點。這表明這些線索是有用的,并且也可能為模型所利用。
接著,為了檢查模型是否確實利用了這些線索,作者只給模型提供了部分輸入,這使得模型不可能推出正確答案。例如,如果沒有給出論點或原因,就不可能推斷出“其他搜索引擎沒有重定向到谷歌”或“其他搜索引擎全都重定向到了谷歌”這兩個論據哪一個是正確的。然而,模型并不理會這一不可能性,并以71%的準確率識別出了正確的論點。
在試驗完其他兩項類似的任務之后(僅論點和論據;僅原因和論據),作者總結到,數據集中包含著統計線索,而BERT的良好表現完全歸功于對這些線索的利用。
為了說明這一點,在他們的第三個實驗中,作者構建了一個數據集,其中的線索不再提供信息,發現BERT性能下降到隨機概率水平。
相信大多數人會同意,一個基于大量的如not,is,do之類的一元文法做出預測的模型是不可能真正理解論證的。
因而,作者聲明他們的SOTA結果毫無意義。
這讓人聯想到最近兩個臭名昭著的案例。一個是圖像分類器,聲稱能夠區分罪犯的面孔和守法公民的面孔,但實際上只是在檢測微笑;另一個是所謂的“性取向檢測器”,實則是在檢測眼鏡,胡須和眼影。
如果NLP跟隨計算機視覺的腳步,似乎也注定要重蹈它的覆轍。
回到論文中,作者指出,最近大量的工作顯示NLP數據集中的“聰明漢斯效應”。
要明確的是,這也不是說像BERT這樣的大型模型或深度學習都是無用的。但是,對于深度學習模型在高級自然語言理解任務中表現出的近乎人類表現的報告,我們應該持懷疑態度。
模型表現超好?別急著開心,試試能不能騙過它!
發現聰明漢斯效應案例的論文越來越多,這為NLP研究提出了重要的新議題。最明顯的一個議題就是,如何預防這種影響。
當數據集中的模式與手頭任務的目標一致時,那么能夠識別、記住并概括這些模式的模型就是可取的。 如果不是的話,那模型就很可能在不理解任務的情況下依然表現良好。
為了防止聰明漢斯效應,我們需要更好的數據集,并且對模型進行嚴格的魯棒性分析。
提出一個模型、并對其進行改進可以讓你在開發過程中獲得即時的滿足感。此外,在公共數據集上的SOTA也可以確保論文被接收。
然而,創建數據集所獲得的的滿足感更加滯后且不確定。據說,ACL會議評審人員對提出獲取SOTA的新模型的論文的默認立場是“接受”,而引入新數據集的論文則很可能因為“本文只引入新數據集”而拒絕。他們認為,創建數據集的人沒有做真正的科學研究。
移除模型的一部分(ablation)并觀察其對性能的影響是驗證某部件是否有用的常用方法。 如果性能沒有下降,那么該部件就是無用的,應該被消除。
這也應該成為執行數據集消除任務的常見做法,例如:
- 僅提供不完整的輸入(如前文所述):這將驗證是否需要完整輸。如果不需要,則說明數據集包含著一些可以采取捷徑的線索。
- 打亂輸入:這可以驗證單詞(或句子)順序的重要性。 如果分數沒有太大變化,那說明模型并沒有理解輸入的順序信息。
- 分配隨機標簽:如果10%的實例被隨機重新標記,性能會下降多少呢?所有實例重新標記呢?如果分數沒有太大變化,那么模型可能沒有學到任何有趣的東西。
- 隨機替換內容詞:如果所有名詞短語或動詞短語都被隨機名詞短語和動詞替換,性能會下降多少?如果不多,則數據集可能提供了預料之外的非內容提示,例如句子長度或功能詞的分布。
再舉個例子。如果在輸入中添加一個不相關的句子會導致問答模型給出不同的答案(見下圖),就說明該模型并不能真正理解問題。
除了創建更好的數據集外,模型的創建者也應該有“建造它,破壞它”(Build It,Break It)的心態。模型不僅要在特定數據集上獲得高分,也要有足夠的魯棒性。
如果你的模型表現優良,先別急著開心!嘗試改變你的輸入,看看你是否能能夠騙過你的模型。
如果你挖空心思也無法騙過你的模型,大概這時你才創造出了一個真正的好模型!
相關報道:
https://thegradient.pub/nlps-clever-hans-moment-has-arrived/?nsukey=zGUM%2BitIg2PGgczL9OmBgiXDHkdeWy4hJYQG33fkllynu9PqhCkmZecP%2Bjrltr7xEB14BaM3FGFlyRWfJj9geFWr9cIsH%2FXosh%2B1kWc8%2BYCti2mUogfGmD8YTXENuU9X2slPjqbQOkYURwZHDx%2FnRv68UyeFpeWbEu6YIyOjk2eonxejiqu8sWZT%2B8FWxdUSAEOqQ%2Bwr6iGpCV8y3AgrAA%3D%3D
【本文是51CTO專欄機構大數據文摘的原創譯文,微信公眾號“大數據文摘( id: BigDataDigest)”】