論文速讀紀錄 - 202408

Milkha發表於2024-09-04

特別鳴謝kimi,以下論文均在kimi輔助下閱讀。

目錄

  • RMIB: Representation Matching Information Bottleneck for Matching Text Representations
  • AttentionRank: Unsupervised keyphrase Extraction using Self and Cross Attentions
  • ANSWERING COMPLEX OPEN-DOMAIN QUESTIONS WITH MULTI-HOP DENSE RETRIEVAL
  • APPROXIMATE NEAREST NEIGHBOR NEGATIVE CONTRASTIVE LEARNING FOR DENSE TEXT RETRIEVAL
  • CogLTX: Applying BERT to Long Texts
  • How to Fine-Tune BERT for Text Classification?
  • Optimizing E-commerce Search: Toward a Generalizable andRank-Consistent Pre-Ranking Model

RMIB: Representation Matching Information Bottleneck for Matching Text Representations

  • 2024 ICML
  • https://github.com/chenxingphh/rmib/tree/main

來自不同域的文字,經過表徵後得到的向量表示是不對成的,作者基於資訊瓶頸(Information Bottleneck,IB)提出了RMIB,透過匹配文字表示的先驗分佈來縮小其分佈範圍,從而最佳化資訊瓶頸。具體的,主要在模型學習過程中增加了以下兩項約束:

  • 文字表示之間互動的充分性。
  • 單一文字表示的不完整性。

看了一眼程式碼,論文的最佳化點主要體現在損失函式上,如下圖所示:

損失函式可以寫為:

\[Z_{1}^{*}, Z_{2}^{*} = \arg \min_{Z_1,Z_2} I(X_1,X_2;Z_1)+ I(X_1,X_2;Z_2) \ s.t. \ \max I(Z_1;Z_2\mid Y) \]

改寫成通俗易懂的:

\[L_{\text{RMIB}} = -\alpha_1 \cdot \text{KL}(p(Z_1 | X_1, X_2) \| p(Z)) - \alpha_2 \cdot \text{KL}(p(Z_2 | X_1, X_2) \| p(Z)) + \alpha_3 \cdot \text{CE}(Y, \hat{Y}) \]

這篇論文吸引我的是其中提到的非對稱文字匹配,概述一下論文中提到的這種場景:

  • 領域差異。比如醫學領域和電腦科學領域。
  • 資料分佈差異。同一領域內的資料也可能存在分佈差異,比如搜尋裡使用者query偏口語且更短,文件則更規範也更長。
  • 任務差異。比如問答,長短文字匹配等。

最近在做文字匹配,剛好遇到了長短文字匹配的問題,感覺這篇論文會有點幫助,後面有時間了可以試一試。🙈

AttentionRank: Unsupervised keyphrase Extraction using Self and Cross Attentions

  • 2021 EMNLP

論文提出了一種無監督的關鍵短語抽取方法AttentionRank,在PLM的基礎上計算了兩種注意力:

  • 自注意力(Self-Attention) :用於確定一個候選短語(透過詞性標註,名詞作為候選)在句子上下文中的重要性。
  • 交叉注意力(Cross-Attention) :計算候選短語與文件內其他句子之間的語義相關性。

整個過程:

  1. 給定輸入的文件,透過PoS標註識別出文字中的名詞類的詞,再基於NLTK生成名詞性的候選短語。
  2. 透過自注意力計算每個候選短語在句子中的注意力權重。
  3. 透過交叉注意力計算每個候選短語與文件的注意力權重。
  4. 結合自注意力權重和交叉注意力權重,計算候選短語最終的權重。

模型結構如下(這圖做的有點糙):

ANSWERING COMPLEX OPEN-DOMAIN QUESTIONS WITH MULTI-HOP DENSE RETRIEVAL

  • https://arxiv.org/pdf/2009.12756,ICLR 2021, Facebook.

提出了一種多跳稠密檢索方法,用於回答開放領域的複雜問題,主要面向的複雜問題是多跳問題。方案是:迭代地編碼問題和先前檢索到的文件作為查詢向量,並使用高效的最大內積搜尋(MIPS)方法檢索下一個相關文件。大致流程如下:

偶然之間看到了這篇論文,雖然是21年的,但感覺已經是“上古”的方法了(自從LLM霸榜問答領域),現在應該基本都上LLM了吧😂~

APPROXIMATE NEAREST NEIGHBOR NEGATIVE CONTRASTIVE LEARNING FOR DENSE TEXT RETRIEVAL

  • https://arxiv.org/pdf/2007.00808,2020 Microsoft

針對稠密檢索(Dense Retrieval)中一個主要的學習瓶頸問題:DR任務訓練時通常取樣batch內負取樣,這些負樣本計算損失時梯度較小,對模型的學習幫助不大,且不同batch間樣本分佈差異大,導致學習過程中梯度方差大,學習過程不穩定。

除此之外,DR任務對負樣本的要求更高。(插句題外話,在資訊漏斗系統中,越靠近底層,越是負樣本的藝術?越靠近上層越是特徵的藝術?當然是在其他環節構造合理的情況下)DR階段要能區分各種型別的負樣本,如下圖所示,DR要能區分相關和不相關,但是不相關可以有很多種維度,比如字面不相關、字面相關但是語義不相關、以及語義上難以區分的不相關。總的來說,DR見過的東西要儘可能全面,接近實際的分佈。論文要解決的問題也很直接:batch內負取樣太簡單,既不符合實際分佈,也不利於模型學習

對此,論文提出了ANCE(Approximate nearest neighbor Negative Contrastive Learning),基於已經最佳化過的DR模型構建ANN索引來選擇全域性負樣本,訓練流程如下:

CogLTX: Applying BERT to Long Texts

  • https://proceedings.neurips.cc/paper_files/paper/2020/file/96671501524948bc3937b4b30d0e57b9-Paper.pdf,2020 NIPS

通常,BERT是難以處理長文字,原因如下:

  • 輸入長度限制。BERT的輸入最大長度通常是512(雖然BERT的位置編碼是正餘弦的,但訓練時輸入長度通常是512以內的),關鍵內容可能出現在512範圍之後,或關鍵內容之間的距離會超過512。
  • 時間限制。BERT中的自注意力時間複雜度是長度的平方,長文字的計算複雜度可能是難以接受的。

一些處理長文字的方法:

  • 截斷法。
  • 滑動視窗。將長文字分成多塊,分別計算後再池化。
  • 壓縮法。類似於序列建模,逐步處理並進行壓縮。
  • 魔改注意力。如稀疏注意力、滑窗注意力(sliding window attention)等。

針對以上問題,論文提出了CogLTX(Cognize Long TeXts),核心思想:類比人類處理資訊的方式,CongLTX引入MemRecall從長文字中識別關鍵的文字塊,把這些關鍵內容作為模型的輸入。CogLTX依賴的一個基本假設:對於大部分NLP任務,只依賴源文字中的一部分關鍵的句子即可。具體的講:CogLTX引入了MemRecall(是線上可以是另一個BERT模型,與實際要用的BERT模型聯合訓練)來抽取文字中的關鍵block。MemRecall的工作流程如下圖:

這篇論文積攢了很久,主要是為了解決當時將BERT應用於長文字場景時的一些問題,避免無關內容對目標的影響。雖然現在都開始推更大的模型、更長的上下文了,但是在實際的應用場景中這種小一些的模型還是很有用武之地的。以後有機會的可以實踐一下。

How to Fine-Tune BERT for Text Classification?

  • https://arxiv.org/pdf/1905.05583,2020

老早積攢的一篇論文了。BERT在NLP領域的應用無需多言,即使在大模型火熱的今天也依然難以替代。作為一個半路出家的NLPer,還是有必要進補一下這些利器的知識的。

BERT作為encoder模型的代表,常用在判別型別的任務中,如文字分類、相似性計算、摘要抽取等任務中,用於學習token或句子級別的表徵。這篇論文探討了如何對BERT模型進行微調,以用於文字分類任務。從一個預訓練的BERT開始,到一個適用於目標任務的模型,通常有以下三步:

  1. 再預訓練。在目標場景的大量語料下,再來一次預訓練,讓模型適配目標場景下的資料。這一步的作用比較好理解,預訓練的模型一般都是在通用語料下訓練的,可能缺乏一些領域內的資料,比如要應用在法律領域,需要透過再預訓練讓模型理解領域內詞彙的含義。

  2. 多工微調。用目標域下的不同任務對模型進行微調,更進一步適配任務。為什麼要加這個過程呢?其實也可以直接進行下一步驟,但是kimi的提醒下,進行多工微調有以下作用:

    • 提高泛化性:不同任務間共享底層的表示,模型可以學習到跨任務的通用特徵,提高模型的泛化能力,避免過擬合。
    • 知識遷移:如果某些任務的資料量較小,可以從資料量較大的任務中遷移知識,幫助模型更好地學習和適應小資料任務。
  3. 最終的微調。在實際應用的任務上進行微調。

Optimizing E-commerce Search: Toward a Generalizable andRank-Consistent Pre-Ranking Model

  • https://arxiv.org/pdf/2405.05606,2024 SIGIR

也是老早積攢的一篇論文了,關於京東商品搜尋的粗排階段的工作。

粗排,一個輕量的模組,在系統流程中主要起過濾(想起了ad-hoc和filter的對比)作用。之前的很多工作中,粗排的目標主要是和排序階段的排序儘可能一致。針對這個問題,很多工作也做了一些討論,粗排是否和精排越像越好,這裡不做過多討論。論文提出了可泛化的排序一致性粗排(Generalizable and RAnk-ConsistEnt Pre-Ranking Model ,GRACE)。主要有以下這麼幾個改進:

  • 透過引入多個二分類任務來預測產品是否在rank階段的前k個結果中,從而實現排序一致性。
  • 透過對比學習,對所有產品的表示進行預訓練,以提高泛化能力。
  • 在特徵構建和線上部署方面易於實施。

關於第一個改進的一些看法:

這樣考慮還是有道理的,粗排本質上承擔的是一個區分好、壞結果的責任,把壞結果過濾掉,把潛在的好結果給後續的環節。 但是其實也容易讓人疑惑:對齊排序階段不是更直接嗎?畢竟如果不考慮效能的嗎直接把排序模型放在粗排環節效果可能會更好? 那是否粗排就應該對齊精排呢?私以為還是不要過度對齊精排為好。主要有這麼幾個考慮:1)粗排、精排所處環節不同,輸入的樣本分佈不同;2)點選的樣本大機率是好結果,但是曝光未點選的不一定是壞結果,粗排若認為曝光未點選的為壞結果,那麼存在位置偏差或其他bias導致的誤傷;3)粗排過度以精排為目標,容易導致正反饋,點選對整個鏈路的影響會越來越大,對缺少點選的好結果及冷啟動不友好;4)粗排、精排模型複雜度不一樣,弱化粗排的排序能力,強化其好壞區分能力或許更容易最佳化(?),也算是系統的解耦

總結

不得不說,自己看的論文還是挺雜的以後還是要逐漸聚焦一點比較好🤣

這些主要是之前一直積攢下來沒看到論文,拖延症要不得啊😣

另外,雖然本文是速度紀錄,但是也不是特別速😢


相關文章