Efficient GlobalPointer:少点参数,多点效果
?PaperWeekly 原創 ·?作者 | 蘇劍林
單位 | 追一科技
研究方向 | NLP、神經網絡
在《GlobalPointer:用統一的方式處理嵌套和非嵌套 NER》中,我們提出了名為“GlobalPointer”的 token-pair 識別模塊,當它用于 NER 時,能統一處理嵌套和非嵌套任務,并在非嵌套場景有著比 CRF 更快的速度和不遜色于 CRF 的效果。換言之,就目前的實驗結果來看,至少在 NER 場景,我們可以放心地將 CRF 替換為 GlobalPointer,而不用擔心效果和速度上的損失。
在這篇文章中,我們提出 GlobalPointer 的一個改進版——Efficient GlobalPointer,它主要針對原 GlobalPointer 參數利用率不高的問題進行改進,明顯降低了 GlobalPointer 的參數量。更有趣的是,多個任務的實驗結果顯示,參數量更少的 Efficient GlobalPointer 反而還取得更好的效果。
大量的參數
這里簡單回顧一下 GlobalPointer,詳細介紹則請讀者閱讀《GlobalPointer:用統一的方式處理嵌套和非嵌套 NER》。簡單來說,GlobalPointer 是基于內積的 token-pair 識別模塊,它可以用于 NER 場景,因為對于 NER 來說我們只需要把每一類實體的“(首, 尾)”這樣的 token-pair 識別出來就行了。
設長度為 的輸入 經過編碼后得到向量序列 ,原始 GlobalPointer 通過變換 和 我們得到序列向量序列 和 ,然后定義
作為從 到 的連續片段是一個類型為 的實體的打分。這里我們暫時省略了偏置項,如果覺得有必要,自行加上就好。
這樣一來,有多少種類型的實體,就有多少個 和 。不妨設 ,那么每新增一種實體類型,我們就要新增 個參數;而如果用 CRF+BIO 標注的話,每新增一種實體類型,我們只需要增加 的參數(轉移矩陣參數較少,忽略不計)。對于 BERT base 來說,常見的選擇是 ,可見 GlobalPointer 的參數量遠遠大于 CRF。
識別與分類
事實上,不難想象對于任意類型 ,其打分矩陣 必然有很多相似之處,因為對于大多數 token-pair 而言,它們代表的都是“非實體”,這些非實體的正確打分都是負的。這也就意味著,我們沒必要為每種實體類型都設計獨立的 ,它們應當包含更多的共性。
怎么突出 的共性呢?以 NER 為例,我們知道 NER 實際上可以分解為“抽取”和“分類”兩個步驟,“抽取”就是抽取出為實體的片段,“分類”則是確定每個實體的類型。這樣一來,“抽取”這一步相當于只有一種實體類型的 NER,我們可以用一個打分矩陣就可以完成,即 ,而“分類”這一步,我們則可以用“特征拼接+ Dense 層”來完成,即 。于是我們可以將兩項組合起來,作為新的打分函數:
這樣一來,“抽取”這部分的參數對所有實體類型都是共享的,因此每新增一種實體類型,我們只需要新增對應的 就行了,即新增一種實體類型增加的參數量也只是 。進一步地,我們記 ,然后為了進一步地減少參數量,我們可以用 來代替 ,此時
此時 ,因此每新增一種實體類型所增加的參數量為 ,由于通常 ,所以式(3)的參數量往往少于式(2),它就是 Efficient GlobalPointer 最終所用的打分函數。
驚喜的實驗
Efficient GlobalPointer 已經內置在 bert4keras>=0.10.9 中,讀者只需要更改一行代碼,就可以切換 Efficient GlobalPointer 了。
1#?from?bert4keras.layers?import?GlobalPointer 2from?bert4keras.layers?import?EfficientGlobalPointer?as?GlobalPointer下面我們來對比一下 GlobalPointer 和 Efficient GlobalPointer 的結果:
可以看到,Efficient GlobalPointer 的實驗結果還是很不錯的,除了在人民日報任務上有輕微下降外,其他兩個任務都獲得了一定提升,并且整體而言提升的幅度大于下降的幅度,所以 Efficient GlobalPointer 不單單是節省了參數量,還提升了效果。而在速度上,Efficient GlobalPointer 與原始的 GlobalPointer 幾乎沒有差別。
分析與評述
考慮到人民日報 NER 只有 3 種實體類型,CLUENER 和 CMeEE 分別有 10 種和 9 種實體類型,從分數來看也是人民日報比其他兩種要高,這說明 CLUENER 和 CMeEE 的難度更大。另一方面,在 CLUENER 和 CMeEE 上 Efficient GlobalPointer 都取得了提升,所以我們可以初步推斷:實體類別越多、任務越難時,Efficient GlobalPointer 越有效。
這也不難理解,原版 GlobalPointer 參數過大,那么平均起來每個參數更新越稀疏,相對來說也越容易過擬合;而 Efficient GlobalPointer 共享了“抽取”這一部分參數,僅通過“分類”參數區分不同的實體類型,那么實體抽取這一步的學習就會比較充分,而實體分類這一步由于參數比較少,學起來也比較容易。反過來,Efficient GlobalPointer 的實驗效果好也間接證明了式(3)的分解是合理的。
當然,不排除在訓練數據足夠多的時候,原版 GlobalPointer 會取得更好的效果。但即便如此,在類別數目較多時,原版 GlobalPointer 可能會占用較多顯存以至于難以使用,還是以 base 版 為例,如果類別數有 100 個,那么原版 GlobalPointer 的參數量為 ,接近千萬,不得不說確實是不夠友好了。
最后的總結
本文指出了原版 GlobalPointer 的參數利用率不高問題,并提出了相應的改進版 Efficient GlobalPointer。實驗結果顯示,Efficient GlobalPointer 在降低參數量的同時,基本不會損失性能,甚至還可能獲得提升。
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的Efficient GlobalPointer:少点参数,多点效果的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民生信用卡不同意协商怎么办
- 下一篇: 退市整理股票什么意思 此类股票购入风险极