CommonsenseQA:A question answering challenge targeting commonsense knowledge
2019.03 -NAACL 2019
CommonsenseQA 任務排名結果
數據眾包連接及demo
訓練集
測試集
論文地址
論文解讀1
論文解讀2
技術分享丨ALBERT在CommonsenseQA方向的應用
ALBERT代碼
ALBERT論文
任務關鍵
CommonsenseQA任務的關鍵是讓模型學到更多的先驗知識,這樣在一些給定相關文件或上下文的問題(只需要很少的背景知識)上,模型獲得的先驗知識越多,給出正確預測答案的概率越大。
預訓練本質
預訓練本質上是通過設計好一個網絡結構來做語言模型任務,然后把大量甚至是無窮盡的無標注的自然語言文本利用起來,預訓練任務把大量語言學知識抽取出來編碼到網絡結構中,當手頭任務帶有標注信息的數據有限時,這些先驗的語言學特征當然會對手頭任務有極大的特征補充作用,因為當數據有限的時候,很多語言學現象是覆蓋不到的,泛化能力就弱,集成盡量通用的語言學知識自然會加強模型的泛化能力。
改進方向
針對CommonsenseQA任務主要有兩大改進方向,一是采用更強大,引用更多高質量、大規模數據集訓練的預訓練模型–xlnet、roberta、albert等。越強大的預訓練語言模型其特征抽取能力越強,能更好的引入大量無監督數據中包含的語言學知識,其推理能力也就越強大。二是引入外部知識。針對常識問答在問題中只給定很少的背景知識,而預訓練模型本身蘊含的知識不足以讓模型“推理”出正確答案,于是,引入跟答案或者問題關聯的外部知識就成了關鍵。
XLNet與Bert
XLNet通過引入permutation language modeling,解決了BERT預訓練階段和微調階段差異性,消除了BERT的預測目標獨立性假設,同時數據規模擴充到了126G。
RoBERTa與Bert
RoBERTa在BERT基礎上主要做了四點改進:使用動態mask;移除NSP任務;更大的batch size;更長的輸入序列。
同時,它使用了更大規模的數據集(160G)。
這或許證明不了這三個模型的內部機制誰更為優秀,但至少證明了一點:引入更大規模,更高質量的數據集能更好的提升模型表現。
本質上預訓練是通過設計好一個網絡結構來做語言模型任務,然后把大量甚至是無窮盡的無標注的自然語言文本利用起來,預訓練任務把大量語言學知識抽取出來編碼到網絡結構中。這樣,引入的數據集規模越大,質量越高,模型學到的先驗的語言學特征越多,集成更多的通用的語言學知識,模型的泛化能力也就越強。
在CommonsenseQA任務上,目前由于并沒有引入外部數據,并且需要正確預測只需要很少背景知識的問答,所以預訓練模型本身蘊含的知識就成了關鍵。相比之下,RoBERTa引用了最大規模、更高質量的數據集(160G),故而目前效果最好。
ALBERT帶來的變化
通常而言,在預訓練自然語言表征時增加模型大小可以提升模型在下游任務中的性能。但在某些情況下,由于 GPU/TPU 內存限制、訓練時間延長以及意外的模型退化等原因,進一步增加模型大小的難度也隨之增加。為了解決這些問題,
谷歌提出了ALBERT(A Lite BERT),通過兩種參數精簡技術來降低內存消耗,提高BERT的訓練速度。
Factorized Embedding Parameterization。研究者通過將大的詞匯嵌入矩陣分解為兩個小的矩陣,從而將隱藏層的大小與詞匯嵌入的大小分離開來。這種分隔使得在不顯著增加詞匯表嵌入參數大小的情況下更容易增加隱藏層的大小。
Cross-layer Parameter Sharing。研究者共享了所有層的參數,這一技術可以避免參數量隨著網絡深度的增加而增加。
為了進一步提升 ALBERT 的性能,研究者還引入了一個自監督損失函數,用于句子級別的預測(SOP)。SOP 主要聚焦于句間連貫,用于解決原版 BERT 中下一句預測(NSP)損失低效的問題。
評價
ALBERT通過兩大參數削減技術(嵌入向量參數化的因式分解、跨層參數共享)可以充當某種形式的正則化,使訓練更加穩定,而且有利于泛化。然后為了進一步提升 ALBERT 的性能,研究者還引入了一個自監督損失函數,用于句子級別的預測(SOP)。SOP 主要聚焦于句間連貫,用于解決原版 BERT 中下一句預測(NSP)損失低效的問題。正是由于這些改造技術,能讓ALBERT在很大程度上降低內存消耗,從而能夠擴展為更大的版本。尤其要注意到ALBERT_xxlarge的隱藏層已經擴展到4096規模了(BER-TLarge隱藏層H為1024),這是模型能夠進一步提升的重要原因。同時,由于所有層共享一樣的參數,不斷加深ALBERT的網絡結構,無法獲得持續的性能提升,所以ALBERT_xxlarge只有12層(BERTLarge為24層)。
ALBERT通過一系列改造,大大降低了內存消耗,從而能夠擴展為更大版本-
ALBERT-xxlarge,成功地提升了模型的規模并且減少了參數(規模為BERTLarge的70%)。ALBERT_xxlarge超過RoBERTa也不奇怪了,畢竟,這兩者“規模”不一樣。
有趣的例子
demo
Q: bob早上想吃冰的、甜的東西,下面哪個合適?
A 冰淇淋 B 米飯 C 蛋糕 機器答: C
將C 蛋糕 改為 苦蛋糕 機器答: A
將C 蛋糕 改為 甜蛋糕 機器答: C
也就是說當前訓練的72%準確率的模型知道 苦蛋糕不符合冰的、甜的概念,但同時也并不知道冰淇淋是冰的且甜的東西,至少不知道冰淇淋比甜蛋糕更符合問題的描述。
總結
以上是生活随笔為你收集整理的CommonsenseQA:A question answering challenge targeting commonsense knowledge的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式理论,看完这篇你定能有所获
- 下一篇: java math.abs_Java M