博客專欄

EEPW首頁 > 博客 > NLP模型讀不懂人話?微軟AdaTest挑錯效率高5倍

NLP模型讀不懂人話?微軟AdaTest挑錯效率高5倍

發(fā)布人:數(shù)據(jù)派THU 時間:2022-06-19 來源:工程師 發(fā)布文章

來源:新智元

自然語言處理(NLP)模型讀不懂人話、將文本理解為相反的意思,是業(yè)界頑疾了。

 

現(xiàn)在微軟表示,開發(fā)出解決此弊的方法。


微軟開發(fā)AdaTest方法來測試NLP模型

 

可作為跨越各種應(yīng)用基礎(chǔ)的大型模型,或稱平臺模型的進展已經(jīng)大大改善了AI處理自然語言的能力。但自然語言處理(NLP)模型仍然遠不完美,有時會以令人尷尬的方式暴露缺陷。

 

例如有個頂級的商用模型,將葡萄牙語中的「我不推薦這道菜」翻譯成英語中的「我非常推薦這道菜」。

 

這些失敗之所以繼續(xù)存在,部分原因是尋找和修復(fù)NLP模型中的錯誤很難,以至于嚴(yán)重的錯誤影響了幾乎所有主要的開源和商業(yè)NLP模型。

 

目前尋找和修復(fù)NLP模型錯誤的方法有兩種:或是用戶驅(qū)動的,或是自動的。 

 

用戶驅(qū)動的方法很靈活,可以測試NLP模型行為的任何方面。但此方法依賴于人類極為參差不齊的想象且辨識錯誤的能力,并且是極度勞動密集型的,以至于在實踐中只有一小部分的輸入數(shù)據(jù)量可用來測試。

 

另一方面,自動方法很快速,因此可以處理輸入數(shù)據(jù)的很大一部分。然而,由于缺乏人類的把控,它們只能在非常有限的情況下測試一個模型是對還是錯,例如當(dāng)模型處理有輕微變化的輸入措辭時,其預(yù)測結(jié)果就會出現(xiàn)不一致。

 

圖片


微軟的研究者們認為,像GPT-3這樣的現(xiàn)代大型語言模型(LLMs),為業(yè)界提供了一個機會,可以嘗試將用戶驅(qū)動方法和自動方法的優(yōu)勢結(jié)合起來,讓用戶來定義被測試的模型應(yīng)該做什么,同時利用現(xiàn)代大型語言模型的生成能力,在特定的模型行為類別中生成大規(guī)模的測試。

 

微軟研究者將此類人機結(jié)合的路徑,稱之為「適應(yīng)性測試與去Bug」,縮寫為AdaTest。

 

通過AdaTest,一個大型的語言模型被賦予了重負:生成大量的、針對受測模型中的錯誤的測試。

 

而人工干涉則通過選擇有效的測試、并將它們組織到語義相關(guān)的主題中,來引導(dǎo)語言模型的生成工作。

 

這種來自人工的指導(dǎo)極大地提高了語言模型的生成性能,并將其引向目標(biāo)領(lǐng)域。

 

因為這些測試實際上是一種標(biāo)記數(shù)據(jù)的形式,它們不僅可以識別NLP模型的錯誤,而且可以用來在類似于傳統(tǒng)軟件開發(fā)的迭代調(diào)試循環(huán)中,修復(fù)NLP模型的錯誤。

 

AdaTest為專業(yè)用戶提供了顯著的效率提升,同時又足夠簡單,可以讓沒有編程背景的普通人也能有效使用。

 

這意味著專業(yè)用戶和普通用戶都能更好地理解和控制在NLP模型一系列場景中的行為,這不僅使AI系統(tǒng)表現(xiàn)更好,而且使AI系統(tǒng)更有效呼應(yīng)用戶需求。 


用測試循環(huán)發(fā)現(xiàn)漏洞

 

AdaTest模式由一個內(nèi)部測試循環(huán)和一個外部調(diào)試循環(huán)組成,前者用于發(fā)現(xiàn)錯誤,后者用于修復(fù)錯誤。

 

雖然這項任務(wù)看起來很簡單,但即使是市面上的SOTA模型們也常出現(xiàn)失誤。

 

比如有的SOTA模型會將「我認為我一生中沒有過更美好的時光」的雙重否定句歸類為情緒負面,或者簍子更大的將「我是一個少數(shù)族裔」這句話歸類為情緒負面。

 

這兩種情況都是在市面上商業(yè)模型真實發(fā)生過的失誤。

 

為了證明AdaTest可以發(fā)現(xiàn)和修復(fù)錯誤,微軟的研究團隊演示了如何測試并修復(fù)NLP模型的文本公平性失誤。

 

NLP模型的文本公平性失誤,即是在一段文本中對特定屬性群體的中性描述,可能導(dǎo)致NLP模型的文本情感分析功能出錯,錯誤地降低文本的情感權(quán)重。也就是說,模型可能會更負面地對待特定群體的描述。

 

圖片


在測試循環(huán)中,微軟研究者從一組關(guān)于各種身份的文本單元測試開始,并將這組測試標(biāo)記為「敏感」。這些最初的例子并沒有發(fā)現(xiàn)任何模型的錯誤。

 

不過AdaTest方法用GPT-3生成了大量語料類似的暗示性測試,以此來突出測試對象模型潛藏的bug。

 

雖然產(chǎn)生了數(shù)以百計的測試,但干預(yù)的人員只需要審查前幾個錯誤或接近錯誤的測試。

 

然后,人工干預(yù)忽略那些并沒有真正犯錯的測試結(jié)果,并將其他有效的測試結(jié)果添加到當(dāng)前主題中,也偶爾將它們組織到其他的子主題中去

 

這些經(jīng)過人工過濾的測試結(jié)果會包含在下一輪輸入的語言模型提示中,如此將下一組輸入數(shù)據(jù)的處理結(jié)果,推向用戶關(guān)注點和模型出錯bug之間的交叉點。

 

重復(fù)這一內(nèi)部測試循環(huán),可以讓NLP模型從不出錯開始,慢慢地暴露出越來越顯著的錯誤和bug。

 

因此,即使用戶自己不能找到模型的故障,他們也可以從一小部分通過的測試開始,然后迅速與NLP模型迭代,產(chǎn)生一大批測試,揭示出被測模型的錯誤。

 

圖片

內(nèi)部測試循環(huán)示例

 

如果測試者不使用文本情感分析的主題,而是針對一個不同的主題,比如處理否定句與雙重否定句,測試者會發(fā)現(xiàn)不同的故障。

 

例如,「我從未比現(xiàn)在更快樂」這樣簡單的語句,商業(yè)模型可以正確地將其歸類為積極的。不過用AdaTest方法,可以很快發(fā)現(xiàn)像 「我不認為我曾經(jīng)見過一個更好的城市」這樣的復(fù)雜語句會被NLP模型錯誤標(biāo)記為消極。

 

一旦測試者看到這些錯誤,就會發(fā)現(xiàn)它們的惡劣性和明顯性,但它們很難被人工直接發(fā)現(xiàn),因為它們只發(fā)生在非常具體的措辭中。

 

微軟的研究團隊進行了用戶調(diào)研,以定量評估AdaTest是否使專業(yè)用戶和非專業(yè)用戶更好地編寫測試和發(fā)現(xiàn)NLP模型中的錯誤。

 

研究者要求專業(yè)用戶測試兩個模型中的特定主題功能:一個商業(yè)用的文本情感分類器和GPT-2用于下一個詞的自動完成。

 

這個功能用于預(yù)測正在輸入的電子郵件中的下一個詞等應(yīng)用。

 

對于每個主題和模型,參與者被隨機分配到使用CheckList(代表用戶驅(qū)動測試的SOTA)或AdaTest。

 

研究者觀察到AdaTest在不同的模型和專業(yè)參與者中都有五倍的改進。

 

研究者對非專業(yè)用戶的測試要求,是在NLP模型測試毒性語料的內(nèi)容管制。參與者要找到被模型判定為有毒語料中的非毒性內(nèi)容,也就是他們個人覺得合適的內(nèi)容。

 

參與者可以使用改進版的Dynabench眾包界面進行模型測試,也可以使用AdaTest。

 

結(jié)果是AdaTest提供了高達10倍的改進。


圖片

不同觀點人群做測試參與者的測試效果圖

 

利用調(diào)試循環(huán)修復(fù)bug

 

一旦發(fā)現(xiàn)了足夠多的錯誤,模型的測試人員就會進行外部調(diào)試循環(huán)(如下圖),修復(fù)在測試循環(huán)中發(fā)現(xiàn)的錯誤,然后重新測試模型。

 

在這個流程中,調(diào)試循環(huán)的「再測試」部分(即再次運行測試循環(huán))是至關(guān)重要的,因為一旦用測試來修復(fù)模型,它們就不再是測試數(shù)據(jù),而是訓(xùn)練數(shù)據(jù)了。修復(fù)錯誤的過程往往會過度補償,在調(diào)試循環(huán)的最初幾輪中引入捷徑或錯誤,而這些錯誤只能用一組適應(yīng)新的「固定」模型的測試來發(fā)現(xiàn)。

 

在一個開源的RoBERTa-Large情感模型上的測試循環(huán)流程。

 

研究者從圖2中的「/敏感/移民 」主題的測試開始,RoBERTa模型將其錯誤地標(biāo)記為負面。在這些測試中對模型進行微調(diào)(與原始訓(xùn)練數(shù)據(jù)混合以保持任務(wù)性能),結(jié)果是一個不再失敗的新模型。

 

然而,當(dāng)重新運行測試循環(huán)時,發(fā)現(xiàn)現(xiàn)在幾乎所有的移民語句都被標(biāo)記為 「中性」,即使它們基于應(yīng)用和測試場景是真正的負面的。使用這些新的測試再次進行微調(diào),結(jié)果是模型正確地修復(fù)了原來的錯誤,而沒有增加 「每個移民語句都是中性的」這一捷徑。

 

當(dāng)然,這并不能保證模型中不存在另一個捷徑,但根據(jù)研究者的經(jīng)驗,幾輪調(diào)試循環(huán)之后,大大減少了修復(fù)原始錯誤時引入的意外錯誤的數(shù)量。

 

測試人員不需要提前詳盡地識別每一個可能的錯誤,AdaTest會自適應(yīng)地顯現(xiàn)并修復(fù)在下一輪測試和調(diào)試中引入的錯誤。因此,調(diào)試循環(huán)推動了當(dāng)前bug測試規(guī)范 的邊界,直到產(chǎn)生一個令人滿意的模型為止。

 

事實上,AdaTest可以被看作是軟件工程中測試-修復(fù)-再測試循環(huán)在NLP中的應(yīng)用。

 

圖片

在調(diào)試循環(huán)的迭代過程中添加的捷徑被發(fā)現(xiàn),并被未來的迭代所修復(fù)

 

為了評估調(diào)試循環(huán)的有效性,使用Quora問題數(shù)據(jù)集對RoBERTa-Large進行了微調(diào),以檢測兩個問題是否重復(fù),還使用斯坦福情感樹庫(SST)數(shù)據(jù)集對其進行了微調(diào),以進行正面/中立/負面的情感分析。

 

結(jié)果發(fā)現(xiàn),基線模型在53個QQP主題中的22個主題上,以及39個情感主題中的11個主題中沒能成功識別。之后,研究者創(chuàng)建了數(shù)據(jù)來修復(fù)主題。

 

從該主題的數(shù)據(jù)中抽取50個例子,用AdaTest運行調(diào)試循環(huán),在QQP數(shù)據(jù)集上,平均進行41.6次測試,在情感數(shù)據(jù)集上,平均要進行55.8次測試。

 

結(jié)果表明,在絕大多數(shù)情況下,AdaTest修復(fù)了用于訓(xùn)練的題目和一些未見過的保留題目,沒有破壞任何題目,而原始的CheckList數(shù)據(jù)經(jīng)常引入新的錯誤,從而破壞其他測試題目。

 

研究者還評估了AdaTest在標(biāo)準(zhǔn)開發(fā)環(huán)境中的有效性。經(jīng)過三個月的開發(fā)、CheckList測試和基于GPT-3的臨時數(shù)據(jù)增強,在野外收集的未見過的數(shù)據(jù)上,F(xiàn)1分?jǐn)?shù)為0.66(滿分1.00)。

 

同一個團隊使用AdaTest,在他們自己運行調(diào)試循環(huán)四個小時后,在相同的未見過的數(shù)據(jù)集上的F1分?jǐn)?shù)為0.77。之后又在第二個未見過的數(shù)據(jù)集上復(fù)現(xiàn)了這些分?jǐn)?shù),這表明,AdaTest可以在傳統(tǒng)方法所涉及領(lǐng)域進行錯誤修復(fù),并取得更好的效果。

 

人們提供語言模型所缺乏的問題規(guī)范,而語言模型則以更大的規(guī)模和范圍上提供高質(zhì)量的測試,并將模型測試和調(diào)試連接起來,有效修復(fù)錯誤,使模型開發(fā)向傳統(tǒng)軟件開發(fā)的迭代性質(zhì)邁進了一步。

 

人類與AI的合作,代表了機器學(xué)習(xí)發(fā)展的一個未來的方向,希望這種協(xié)同會隨著大型語言模型能力的不斷增長而不斷提高。


參考資料:https://www.microsoft.com/en-us/research/blog/partnering-people-with-large-language-models-to-find-and-fix-bugs-in-nlp-systems/https://www.microsoft.com/en-us/research/publication/adaptive-testing-and-debugging-of-nlp-models/


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉