追一科技CoQA冠軍方案分享:基於對抗訓練和知識蒸餾的機器閱讀理解...

2021-01-11 手機鳳凰網

近日,在由史丹福大學發起的對話式問答挑戰賽 CoQA (Conversational Question Answering Challenge)中,追一科技AI Lab團隊超越微軟團隊成為榜單第一[1],刷新了之前微軟等團隊創造的CoQA紀錄。值得注意的是,團隊提交的技術方案中,單模型的各項指標表現首次全面超越人類。

CoQA Leaderboard

一直以來,機器閱讀理解都是自然語言處理界最受關注、進步最快的技術方向之一,主要有兩大比賽較受矚目,分別是注重一問一答的SQuAD [2]和多輪對話問答的CoQA [3]。相比於SQuAD,CoQA更注重模型在對話過程中回答關聯問題的能力,答案形式自由,而且數據來自兒童故事、文學、初高中英語考試、新聞、維基百科、Reddit和科學等七個不同的領域,這些改進都極大地提高了挑戰賽的難度,對模型的魯棒性和泛化能力有著更高的要求。團隊針對CoQA數據集的難點,通過對抗訓練(Adversarial training)和知識蒸餾(Knowledge Distillation)等方法,有效地提高了模型的泛化能力,從而依靠單模型刷新了CoQA榜單的記錄,並首次單模型超越人工評測指標。在這裡分別從模型、訓練方法、後處理等方面做一個簡單的介紹。

模型

Baseline模型:RoBERTa

我們的基線模型以Facebook開源的RoBERTa [4]預訓練模型為基礎,之所以選擇RoBERTa,是因為其相較於BERT [5]在語言模型預訓練的過程中用了更多領域的語料,更適合CoQA數據來自不同領域的特點。

在輸入端,由於CoQA的數據集是對話式的,每個問題都依賴於歷史對話,因此在訓練過程中,我們將對話歷史拼接到當前問題之前,問題和答案之間用分隔符分開,組成當前輪次的Query,然後將其與Context拼接,作為模型的輸入。

在輸出端,CoQA數據集的答案有可能是自由文本、Yes、No和Unk。由於頭部的自由文本的答案都能在Context中找到相近的片段,我們採取抽取+Yes/No/Unk分類的輸出層結構。其中,對於抽取的部分,我們使用Pointer-Network的輸出結構得到答案開始和結尾位置的logits;對於分類的部分,則用一個簡單的全連接層得到Yes/No/Unk三分類的logits。

Baseline模型結構

在計算損失函數時,我們將預測答案開始和結尾位置的兩個logits向量分別與Yes/No/Unk三分類的logits拼接,得到兩個最終的logits向量,此時這兩個logits對應的label依然是one-hot的,所以我們可以把這兩個logits向量過softmax,然後用交叉熵計算開始和結尾的損失,取平均,得到基線模型的損失值。

依據標註輔助任務

在CoQA數據集中,每一個回答(除了unknown)都附帶了一段Context中的原文片段作為邏輯依據。為了充分利用該信息,我們在Baseline模型的基礎上,增加了一個依據標註的任務,同步進行多任務訓練。對於Context的每一個token,我們會判斷其是否在邏輯依據中(標成1或者0)。這部分的損失函數用二元交叉熵計算,按照一定比例累加到總的loss上。

依據標註任務

除此之外,我們發現,Yes/No類型答案的邏輯依據中,常常包含了肯定或否定的語義,可以用來輔助Yes/No/Unk的分類,所以我們在RoBERTa池化輸出的基礎上又利用注意力機制融合了邏輯依據的輸出信息,以提高最後模型的表現。

訓練方法

除了模型上的修改,為了提高模型的泛化能力以應付CoQA數據集來源豐富、問題類型多樣的特點,我們還採用了對抗訓練和知識蒸餾等訓練方法。

對抗訓練

對抗訓練 [6]是一種能有效提高模型魯棒性和泛化能力的訓練手段,其基本原理是通過在原始輸入上增加對抗擾動,得到對抗樣本,再利用對抗樣本進行訓練,從而提高模型的表現。由於CoQA數據集對模型的泛化能力較高,我們在訓練時,使用了對抗訓練來提高模型的表現。

由於自然語言文本是離散的,一般會把對抗擾動添加到嵌入層上。在我們的系統中,為了最大化對抗樣本的擾動能力,我們利用梯度上升的方式生成對抗樣本。為了避免擾動過大,我們將梯度做了歸一化處理。

其中,v為嵌入向量。實際訓練過程中,我們在訓練完一個batch的原始輸入數據時,保存當前batch對輸入詞向量的梯度,得到對抗樣本後,再使用對抗樣本進行對抗訓練。

除了對抗訓練,我們還利用虛擬對抗訓練做半監督訓練。

知識蒸餾

與對抗訓練類似,知識蒸餾也是一種常用的提高模型泛化能力的訓練方法。

知識蒸餾[7] 這個概念最早由Hinton在2015年提出。一開始,知識蒸餾通往往應用在模型壓縮方面,利用訓練好的複雜模型(teacher model)輸出作為監督信號去訓練另一個簡單模型(student model),從而將teacher學習到的知識遷移到student。Tommaso [8]在18年提出,如果student和teacher的模型完全相同,蒸餾後則會對模型的表現有一定程度上的提升。

在我們的訓練過程中,我們先用RoBERTa + 對抗訓練得到teacher model,再用知識蒸餾的方法得到student模型。訓練student時,我們同時採用真實label和teacher的輸出來計算損失。

後處理

在CoQA數據集中,有一小部分的問題是多選題,比如問題是「How Jack goes to school? Walk or ride? 」,而Context中的片段是「walked」。即使模型抽取到了「walked」,也並不能得分。因此,針對這類問題,我們做了一個簡單的後處理。通過一定規則識別到多選題型的問題,然後抽取出問題中出現的選項,找到與我們模型抽取的Context片段語義相似度最高的選項,作為我們系統最終的回答。

結果分析與消融實驗

最終,我們的單模型在CoQA Leaderboard上超越了微軟團隊2.6個百分點,並首次超過了人工評測的水平。值得一提的是,與微軟和其他團隊不同,我們在模型訓練的過程,沒有用任何CoQA以外的有監督的數據集,進行多任務訓練或是數據增強。

驗證集結果分析

為了驗證各個技巧的作用,我們進行了消融實驗。從實驗結果中可以看出,依據標記和對抗訓練帶來的提升較大,知識蒸餾和後處理也能帶來一定程度的提升。

驗證集消融實驗結果

最終可以看到,利用對抗訓練、知識蒸餾等方法,我們的單模型在RoBERTa Baseline的基礎上提升了1.8個百分點。

總結

這次的CoQA挑戰賽經歷,是我們團隊站在巨人肩膀上的一次眺望。在優化模型的過程中,我們發現由於預訓練模型已經相當強大,以往一些屢試不爽的優化技巧在RoBERTa上卻並不能奏效。這就需要我們在比賽的過程中,大膽地設想,仔細地實驗,驗證不同方法的有效性和穩定性,從而找到真正行之有效的解決方案。希望我們的這次分享也能給其他團隊帶來一些經驗上的啟發。

Reference:

[1] CoQA Leaderboard. https://stanfordnlp.github.io/coqa/

[2] SQuAD: 100,000+ Questions for Machine Comprehension of Text. https://arxiv.org/abs/1606.05250

[3] CoQA: A Conversational Question Answering Challenge. https://arxiv.org/abs/1808.07042

[4] RoBERTa: A Robustly Optimized BERT Pretraining Approach. https://arxiv.org/abs/1907.11692

[5] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. https://arxiv.org/abs/1810.04805

[6] Adversarial Training Methods for Semi-Supervised Text Classification. https://arxiv.org/abs/1605.07725

[7] Distilling the Knowledge in a Neural Network. https://arxiv.org/abs/1503.02531

[8] Born Again Neural Networks. https://arxiv.org/abs/1805.04770

相關焦點

  • 刷新CoQA榜單:基於對抗訓練和知識蒸餾的機器閱讀理解方案解析
    機器之心發布作者:追一科技 AI Lab研究員 Nicolas近日,在由史丹福大學發起的對話式問答挑戰賽 CoQA (Conversational Question Answering Challenge)中,追一科技AI Lab團隊成為榜單第一[1],刷新了之前微軟等團隊創造的CoQA紀錄。
  • 追一科技AI Lab團隊獲CoQA閱讀理解冠軍
    閱讀理解是目前語言AI最受關注、進步最快的技術方向,全球有兩大頂級比賽最受矚目,分別是注重一問一答的SQuAD和多輪對話問答的CoQA。相比SQuAD,CoQA比賽重點挑戰的是模型在對話過程中回答相互關聯問題的能力,而且對話問答數據集由來自不同領域一系列文章中的對話問題組成,答案的形式非常自由,這些改進點都極大地提高了挑戰賽的難度。
  • 京東AI研究院獲QuAC機器閱讀理解競賽冠軍,模型能力業界領先
    QuAC 新挑戰:更複雜的數據集、更開放的問題、更貼近真實場景機器閱讀理解能力已成為判斷機器是否具有自然語言理解(語義理解、閱讀、問答等)能力的重要標準。SQuAD[2] (Rajpurkar et al., 2016) 數據集的提出極大地推動了機器閱讀理解的研究與發展。
  • 突破AI和機器理解的界限,牛津CS博士143頁畢業論文學習重建和分割...
    牛津大學計算機科學系博士生 Bo Yang 在其畢業論文中詳細解讀了如何重建和分割 3D 物體,進而賦予機器感知 3D 環境的能力,突破了人工智慧和機器理解的界限。賦予機器像人類一樣感知三維真實世界的能力,這是人工智慧領域的一個根本且長期存在的主題。考慮到視覺輸入具有不同類型,如二維或三維傳感器獲取的圖像或點雲,該領域研究中一個重要的目標是理解三維環境的幾何結構和語義。
  • 支付寶奪冠CVPR細粒度視覺分類挑戰賽:數據增強+知識蒸餾
    機器之心發布機器之心編輯部近日,支付寶天筭安全實驗室在 CVPR FGVC(細粒度視覺分類)workshop 舉辦的植物病理學挑戰賽(Plant Pathology Challenge)中奪冠。本文介紹了冠軍隊伍及其解決方案。
  • 「金猿技術展」文心ERNIE——基於知識增強的語義理解技術
    文心(ERNIE)是一個取得世界級突破的語義理解技術與平臺,依託百度的深度學習平臺飛槳打造,將機器理解語言的水平提升到新的高度,全面刷新了各項NLP任務的世界最好效果,取得了諸多權威語義評測比賽的世界冠軍。除語言理解外,提出的基於多流機制生成完整語義片段語言生成技術ERNIE-GEN、知識增強跨模態語義理解技術ERNIE-ViL等,均達到世界領先水平。
  • 機器不學習:生成對抗網絡-NIPS 2017對抗樣本攻防賽冠軍算法分享
    對抗樣本是一類被惡意設計來攻擊機器學習模型的樣本。它們與真實樣本的區別幾乎無法用肉眼分辨,但是卻會導致模型進行錯誤的判斷。對抗樣本的存在會使得深度學習在安全敏感性領域的應用收到威脅,如何對其進行有效的防禦是重要的研究課題。我們提出了動量迭代快速符號化梯度法和高層引導去躁算法,分別應用於對抗樣本的攻擊和防禦,取得了NIPS 2017對抗樣本比賽的冠軍。
  • 業界| 機器閱讀理解打破人類記錄,解讀阿里iDST SLQA技術
    >幾乎在同一時間,微軟和阿里巴巴的機器閱讀理解系統在最新的 SQuAD 數據集測評結果中取得了並列第一的成績。兩家的 PK 發生在 SQuAD 數據集上,這是行業內公認的機器閱讀理解標準水平測試,也是該領域頂級賽事,被譽為機器閱讀理解界的 ImageNet(圖像識別領域的頂級賽事)。和 ImageNet 一樣,SQuAD 的成績排名也會定時更新。
  • IROS 2019 機器視覺全球挑戰賽:賦予 AI 終生學習能力(附冠軍算法...
    多位機器人領域大咖來到現場進行特邀報告和圓桌討論,包括:義大利技術研究院科學主任 Giorgio Metta 教授、漢堡大學張建偉教授、浙江大學章國鋒教授等知名學者,演講主題從 Lifelong Learning 算法到 SLAM 均有涉獵;同時,決賽入圍團隊——海康威視、新加坡南洋理工大學、香港中文大學等也在現場向大家分享了賽事算法報告,雷鋒網 AI 開發者將賽事內容及冠軍方案整理如下
  • 如何理解和評價機器學習中的表達能力、訓練難度和泛化性能
    雷鋒網 AI 科技評論按:這篇文章來自 Eric Jang 的個人博客,雷鋒網 AI 科技評論授權轉載。我非常感謝王家興 (Jiaxing Wang) 把這個博客文章翻譯成中文。基於神經網絡的含有離散隱變量的模型之前同樣難以訓練,因為離散變量的蒙特卡洛梯度估計具有很大的方差。近些年含離散變量的模型在各種結構中都有出現,從對抗式生成網絡到語言模型到記憶增強網絡到強化學習。從模型的表達能力的角度來看離散的表示是非常有用的,而且我們現在可以非常可靠地訓練這些模型。
  • 知識蒸餾-Distilling the knowledge in a neural network
    概念介紹「很多昆蟲在幼蟲形態的時候是最擅長從環境中吸取能量和養分的,而當他們成長為成蟲的時候則需要擅長完全不同能力比如遷移和繁殖。」在2014年Hinton發表的知識蒸餾的論文中用了這樣一個很形象的比喻來說明知識蒸餾的目的。在大型的機器學習任務中,我們也用兩個不同的階段 training stage 和 deployment stage 來表達兩種不同的需求。
  • 追星就追科學家:科大訊飛為青少年教育「點燃一把火」
    杜蘭表示,將孩子們帶到未來論壇的科學殿堂與大科學家對話就是希望在孩子們心中埋下三顆種子——第一顆是科學的種子,相信科技的力量,尊重科學、崇尚科學,追星就追科學家;第二顆是奮鬥的種子,相信知識可以改變命運,幸福是奮鬥出來的;第三顆是快樂的種子,「Save the best for last」,要學會延遲滿足。
  • 圖鴨科技 CVPR 2019 CLIC 圖像壓縮挑戰賽冠軍方案全解讀
    AI 科技評論按:在 CVPR 2019 CLIC 圖像壓縮挑戰賽中,圖鴨科技所提出的算法 TucodecSSIM 奪得了 MS-SSIM 和 MOS 兩項指標的冠軍,算法 TucodecPSNR 奪得了 PSNR 指標的冠軍,算法 TucodecPSNR40dB 則奪得高碼點圖像壓縮 Transparent Track 的冠軍。以
  • 百度機器翻譯團隊獲得WMT2019中英翻譯冠軍
    8月1日,WMT2019國際機器翻譯大賽研討會在義大利佛羅倫斯召開。本屆大賽,百度機器翻譯團隊在中文-英文翻譯任務上獲得冠軍。如上圖所示,數據處理模塊通過數據篩選、噪音去除、數據增強等,產生訓練數據;對於翻譯模型,從預訓練、網絡結構等方面進行改進,使模型學到更多維度、更深層次的信息。在訓練和模型集成階段,憑藉百度強大的機器學習平臺和海量的計算資源,從上百個模型中選擇不同的模型組合集成。
  • 百度機器翻譯五大領域實現新突破 獲WMT2019中英翻譯冠軍
    8月1日,WMT2019國際機器翻譯大賽研討會在義大利佛羅倫斯召開。本屆大賽,百度機器翻譯團隊在中文-英文翻譯任務上獲得冠軍。圖4 聯合訓練流程圖  對於雙語數據的源端(中文),採用知識蒸餾的方法,以R2L翻譯模型(從右到左的翻譯順序)和異構模型(不同結構的模型)作為「Teacher
  • 知識蒸餾(Knowledge Distillation) 經典之作,論文筆記
    知識蒸餾是一種模型壓縮方法,是一種基於「教師-學生網絡思想」的訓練方式,由於其簡單,有效,並且已經在工業界被廣泛應用。而」模型蒸餾「屬於模型壓縮的一種方法。插句題外話,我們可以從模型參數量和訓練數據量之間的相對關係來理解underfitting和overfitting。AI領域的從業者可能對此已經習以為常,但是為了力求讓小白也能讀懂本文,還是引用我同事的解釋(我印象很深)形象地說明一下:模型就像一個容器,訓練數據中蘊含的知識就像是要裝進容器裡的水。
  • 清華大學團隊包攬三項冠軍,NIPS 2017對抗樣本攻防競賽總結
    其中清華大學博士生董胤蓬、廖方舟、龐天宇及指導老師朱軍、胡曉林、李建民、蘇航組成的團隊在競賽中的全部三個項目中得到冠軍。雷鋒網 AI 科技評論把這篇比賽總結的主要內容編譯如下。這可以在很大程度上通過來自多個模型集合的對抗樣本進行訓練來克服。對抗訓練還有一個關鍵缺點,即它傾向於過擬合到用於產生對抗樣本示例的特定約束區域中去(即模型被訓練為拒絕某一 max-norm 球型區域的對抗樣本,但是卻不能拒絕那些甚至對人類觀察者來說都不具有特別挑戰性的對抗樣本,比如對背景像素進行大幅修改的對抗樣本)。對抗競賽在本部分中,我們將簡單介紹本次競賽的規則,目標和評價標準等。
  • 微軟創CoQA挑戰新紀錄,最接近人類水平的NLP系統誕生
    近日,微軟語音與對話研究團隊在斯坦福機器對話式問答數據挑戰賽CoQA Challenge中奪冠,並且單模型和集成模型分別位列第二和第一,讓機器閱讀理解向著人類水平又靠近了一步。這也是繼語音識別、機器翻譯等成果之後,微軟取得的又一項好成績。
  • 走進機器閱讀理解的世界,飛槳開源升級版 BiDAF模型解讀
    在重要的機器閱讀領域,基於DuReader數據集,飛槳升級並開源了一個經典的閱讀理解模型 —— BiDAF,相較於DuReader原始論文中的基線,在效果上有了大幅提升,驗證集上的ROUGE-L指標由原來的39.29提升至47.68,測試集上的ROUGE-L指標由原來的45.90提升至54.66。1.
  • 從京東 618 導購機器人說起,機器如何更理解人類?
    據了解,2020年6月在中國中文信息學會(CIPS)和中國計算機學會(CCF)主辦的中文語言理解的全球權威賽事「2020語言與智能技術競賽」上,深思考在全球1000多家參與單位中脫穎而出,在機器評測指標和人工評估指標中均登頂榜首,獲得全球冠軍。據了解,取得這一成績,是因為深思考團隊提出的「多源整合的解碼器」的深度神經網絡模型技術。