來自:NLPCAB
句子表示在很多任務(wù)中都是重要的一環(huán)。尤其是在大數(shù)據(jù)量的場景下,很多場景都需要召回+排序兩個步驟,如果第一個環(huán)節(jié)沒有召回候選結(jié)果,那最后的排序模型再怎么優(yōu)秀也沒法給出正確答案。
今天就給大家介紹一個微軟在EMNLP2020上發(fā)表的最新工作,利用transformer生成更高質(zhì)量的句子編碼。
雖然BERT式模型的出現(xiàn)解決了很多判別問題,但直接用無監(jiān)督語料訓練出的BERT做句子表示并不理想:
如果只取CLS,這個表示是針對NSP進行優(yōu)化的,表示的信息有限
如果取平均或最大池化,可能會把無用信息計算進來,增加噪聲
所以作者的改進目的是設(shè)計一個下游任務(wù),直接優(yōu)化得到的句子embedding。
那怎么設(shè)計目標才能充分利用無監(jiān)督數(shù)據(jù)呢?
作者給出了一個巧妙的方法,就是用周邊其他句子的表示預測當前句子的token。
具體的做法是:先利用Transformer抽取句子表示,再對句子表示進行attention,選取相關(guān)的句子預測當前token。有點Hierarchical Attention的意思。
比如在預測上圖中最后一句的黃藍兩個token時,明顯第一句的信息就夠用了,那目標函數(shù)的設(shè)置會讓第一句的權(quán)重變大,也會讓抽取出的句子表示去包含這些信息。
接下來詳細介紹一下預訓練和精調(diào)的步驟,以及作者加入的其他tricks。
Cross-Thought模型
預訓練
下圖是預訓練的模型結(jié)構(gòu),計算的步驟是:
將段落按順序拆成獨立短句,通過12層Transformer(藍色半透明的矩形)分別進行編碼。在實際的預訓練中,每個sample包含500個長度為64的短句,batch size是128(16張V100)
取出
把每列句子表示作為一個序列輸入到cross-sequence transformer(藍色弧線,每一列的cross-sequence transformer參數(shù)都不同),輸出attention分數(shù)加權(quán)后的新表示
將新的句子表示與第一步的token表示進行拼接,經(jīng)過一層transformer,預測被mask的15%個token(每個句子都這么處理,圖中只畫了第一個句子的)
整體流程理解起來比較簡單,作者還用了一些額外的tricks提升效果:
為了抽取更多的信息,在句子開頭加入了多個占位token(之前BERT只有一個[CLS]),在實驗結(jié)論中發(fā)現(xiàn)5個占位的表現(xiàn)較好(但占位token的增加會加大計算量)
占位token的位置表示是固定的,而真實token是隨機從0-564中抽取連續(xù)的64個,這樣可以訓練更多的位置表示,方便之后對更長的序列進行編碼
精調(diào)
精調(diào)主要是考慮和下游任務(wù)的銜接。作者選擇了問答和句子對分類來驗證模型的表現(xiàn)。
對于問答任務(wù),假設(shè)答案句子的表示都已經(jīng)編碼好了:
輸入問題,經(jīng)過12層Transformer得到問題表示
利用cross-sequence transformers,對問題表示與答案表示進行計算,得到各個答案的權(quán)重 (每列都會得到一個,作者對所有列取了平均)
根據(jù)gold answer的index m,計算Ranking loss(代表第0個答案的權(quán)重)
對于句子對分類任務(wù)比較簡潔,輸入兩個句子A和B:
分別對A和B進行編碼,取出句子表示,輸入cross-sequence transformers得到融合后的句子表示
將兩個句子的所有表示拼接起來,得到2Nxd的矩陣(N是占位token的個數(shù),d是表示的維度)
把第二步得到的表示flatten,得到一個長度 2Nd 的一維向量,輸入到分類層
實驗效果
作者在不少數(shù)據(jù)集上都驗證了效果,單純從輸出句子表示的效果來看,不僅是句間關(guān)系還是問答的候選召回上都有不小的提升,尤其是召回:
除了指標對比外,作者還展示了兩個無監(jiān)督預訓練模型的打分結(jié)果:
總結(jié)
近兩年句子表示的研究越來越少了,因為句子表示經(jīng)常用于句間關(guān)系判斷的任務(wù),而交互式的判別顯然比雙塔效果要好。所以研究者們要不在研究更輕量的句間匹配模型(比如RE2、Deformer),要不就是繼續(xù)用BERT類模型做出更好的效果。但對于業(yè)界來說,句子表示在召回上的速度還是最快的,效果也比單純的字面匹配要好。
為了充分利用無監(jiān)督數(shù)據(jù)、得到更高質(zhì)量的句子表示,Cross-Thought提供了一個新的預訓練思路:用句子表示預測token。同時也給我們展現(xiàn)出了它在候選召回上的巨大潛力,添加的額外cross-sequence transformer對速度的影響也不會太大。另外,作者只使用了wiki語料進行預訓練,如果有更多語料相信效果會更好。
目前源碼還未放出,希望開源社區(qū)的富有大佬們早日訓一個中文的Cross-Thought~
原文標題:【EMNLP2020】超越MLM,微軟打造全新預訓練任務(wù)
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
微軟
+關(guān)注
關(guān)注
4文章
6600瀏覽量
104120 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4333瀏覽量
62687
原文標題:【EMNLP2020】超越MLM,微軟打造全新預訓練任務(wù)
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論