
文 | QvQ編 | Sheryc_王蘇
今天給大家介紹一篇來自工業界巨頭微軟的工作,這篇論文真是把資本家的嘴臉暴露的一覽無餘:用最低的成本,創造最高的收益(狗頭.jpg)
文章從頭到尾就闡述了一個結論:通過在輸入文本中拼接與之最相似的已標註數據,能大幅度提升模型性能。
實驗結果表明,這種簡單的方法可以在各種包括摘要生成、機器翻譯、語言建模和問答等任務上都有更好的表現。
論文題目:Training Data is More Valuable than You Think: A Simple and Effective Method by Retrieving from Training Data
論文鏈接:https://arxiv.org/abs/2203.08773
源碼:https://github.com/microsoft/REINA


在自然語言處理中,通過從大型語料庫中利用檢索的方法獲取與輸入相關的文本信息來作為補充,通常可以較為顯著的提升模型性能。這是因為通過檢索,模型收穫了額外的與輸入相關的知識。因此,基於檢索的方法已成功地應用於許多任務,如開放領域問答、機器翻譯等。
然而,這些方法都需要建立大規模語料庫的索引,並且檢索會顯著地增加計算負擔。例如,機器翻譯的kNN-MT模型的生成速度比傳統的MT模型慢兩個數量級。
那麼有什麼既可以獲取額外知識,又能高效訓練的辦法嗎?


對於給定輸入,通過檢索從語料庫中收集與輸入最相似的信息,然後將檢索結果與輸入結合,一同輸入到自然語言處理模型中。
具體來說,和把大象放進冰箱的步驟數量一致,分為如下三步:
於是乎,模型從原始輸入
變化為:
其中,為檢索得到的鍵值對。
沒了嗎?
沒了....
以上就是最核心的思路。但是別急,雖然這些步驟看上去只有「拼接」這一步操作與之前不同,但這個框架還沒有解決所有的問題。大規模語料庫的索引效率問題如何解決?如何尋找最相似的鍵值對?這需要對本文的細節一探究竟。


如果從大型語料庫中檢索的話,計算開銷較大。所以,本文提出直接從有標籤的訓練集數據中檢索,即REtrieval from traINing datA。(?,好傢夥,這就是REINA的由來唄,沒縮寫硬湊唄?)
這裡實際上就是把訓練集中每一行的輸入與其對應的ground-truth label轉化為格式。訓練集的規模遠小於大型語料庫,這就解決了索引效率問題。說了這麼多,合着就一行代碼搞定啊...
from collections import defaultdict :)
檢索算法對於檢索,本文用BM25算法來找出與輸入最相似的個句子。文中說主要是看上了它的檢索速度之快。果然,最trick的提點的技巧,往往只需要最樸素的算法:)
KV定義 & 組合形式
接下來的就是比較關鍵的步驟了。對於不同任務如何定義對,以及檢索到的對以何種形式與組合似乎大有說法。根據任務的不同,輸入所拼接的索引內容也不盡相同:
摘要生成摘要生成任務是為給定的文檔生成摘要。
首先將訓練數據轉為的對。對於給定文檔,從訓練數據中檢索出與之最相似的k個文檔下標,取出其對應摘要與輸入進行拼接,即:
這裡沒有選擇拼接相似文檔本身的原因顯而易見:文檔本身太…長…了…
語言模型語言模型任務通常是生成給定單詞/序列的概率。在本文中使用基於Seq2Seq的方法,即給定上一個文本塊,我們預測下一個文本塊。
這裡的索引是 為每一對上下文塊建立索引 ,最後與輸入拼接的時候同樣只拼接 ,即輸入為。
機器翻譯這沒什麼好說的,原句與譯文組成對,最後與輸入拼接的時候同樣只拼接譯文 ,即輸入為:
問答
問答任務這裡關注的是從多個選項里選擇最正確答案的問答任務。
該任務中,索引是為唯一正確的答案建立kv問答對。但是與上述任務不同的是該任務將索引得到最相似的數個對直接與輸入拼接,即輸入為。
訓練 & 預測訓練階段:考慮到在訓練階段BM25算法可能檢索到原輸入,所以需要過濾掉原輸入對應的對,以防止數據泄露。
預測階段:無需過濾。







可以看到,REINA在多個任務的多個數據集上都取得不錯的提升,有效的證明了該方法雖然簡單但還是非常work的~


本文算是一篇數據增強方面的工作,其原理也比較容易理解:即使有數億個參數,模型也不能記住訓練數據中的所有範式。因此,提取相關訓練數據作為輸入,可以顯式地提供所需的一些候補信息,以提高模型的推理性能。可以預見到該方法同樣試用於few-shot learning。
說句題外話,這種思路應該早在10年前就在工業界中應用了,與搜索中click-query真是如出一轍...
這種濃濃工業界文風的文章,有時候很容易讓人「失望」。要麼大力出奇蹟,要麼簡單到「可恥」卻有用!但是不得不說,這種提點的trick你難道不想在工作中一試嗎?
不說了,我先去了~
萌屋作者:樂樂QvQ。
碩士畢業於中國科學院大學,前ACM校隊隊長,區域賽金牌。競賽混子,Kaggle兩金一銀,國內外各大NLP、大數據競賽Top10。校招拿下國內外數十家大廠offer,超過半數的SSP。目前在百度大搜擔任搜索算法工程師。知乎ID:QvQ
作品推薦:
1.13個offer,8家SSP,談談我的秋招經驗
2.2020深度文本匹配最新進展:精度、速度我都要!
3.7款優秀Vim插件幫你打造完美IDE
4.他與她,一個兩年前的故事
5.Bing與DuckDuckGo搜索結果驚人一致?Google展現強勢差異
後台回復關鍵詞【入群】
加入賣萌屋NLP、CV與搜推廣求職討論群
後台回復關鍵詞【頂會】
獲取ACL、CIKM等各大頂會論文集!
