提升支付寶搜索體驗,螞蟻、北大基于層次化對比學(xué)習(xí)文本生成框架
文本生成任務(wù)通常采用 teacher forcing 的方式進行訓(xùn)練,這種訓(xùn)練方式使得模型在訓(xùn)練過程中只能見到正樣本。然而生成目標(biāo)與輸入之間通常會存在某些約束,這些約束通常由句子中的關(guān)鍵元素體現(xiàn),例如在 query 改寫任務(wù)中,“麥當(dāng)勞點餐” 不能改成 “肯德基點餐”,這里面起到約束作用的關(guān)鍵元素是品牌關(guān)鍵詞。通過引入對比學(xué)習(xí)給生成的過程中加入負樣本的模式使得模型能夠有效地學(xué)習(xí)到這些約束。
現(xiàn)有的基于對比學(xué)習(xí)方法主要集中在整句層面實現(xiàn) [1][2],而忽略了句子中的詞粒度的實體的信息,下圖中的例子展示了句子中關(guān)鍵詞的重要意義,對于一個輸入的句子,如果對它的關(guān)鍵詞進行替換(e.g. cosmology->astrophysics),句子的含義會發(fā)生變化,從而在語義空間中的位置(由分布來表示)也會變化。而關(guān)鍵詞作為句子中最重要的信息,對應(yīng)于語義分布上的一個點,它很大程度上也決定了句子分布的位置。同時,在某些情況下,現(xiàn)有的對比學(xué)習(xí)目標(biāo)對模型來說顯得過于容易,導(dǎo)致模型無法真正學(xué)習(xí)到區(qū)分正負例之間的關(guān)鍵信息。
基于此,來自螞蟻集團、北大等機構(gòu)的研究者提出了一種多粒度對比生成方法,設(shè)計了層次化對比結(jié)構(gòu),在不同層級上進行信息增強,在句子粒度上增強學(xué)習(xí)整體的語義,在詞粒度上增強局部重要信息。研究論文已被 ACL 2022 接收。

論文地址:https://aclanthology.org/2022.acl-long.304.pdf

方法
我們的方法基于經(jīng)典的 CVAE 文本生成框架 [3][4],每個句子都可以映射成為向量空間中的一個分布,而句子中的關(guān)鍵詞則可以看成是這個分布上采樣得到的一個點。我們一方面通過句子粒度的對比來增強隱空間向量分布的表達,另一方面通過構(gòu)造的全局關(guān)鍵詞 graph 來增強關(guān)鍵詞點粒度的表達,最后通過馬氏距離對關(guān)鍵詞的點和句子的分布構(gòu)造層次間的對比來增強兩個粒度的信息表達。最終的損失函數(shù)由三種不同的對比學(xué)習(xí) loss 相加而得到。

句子粒度對比學(xué)習(xí)
在 Instance-level,我們利用原始輸入 x、目標(biāo)輸出

及對應(yīng)的輸出負樣本構(gòu)成了句子粒度的對比 pair

。我們利用一個先驗網(wǎng)絡(luò)學(xué)習(xí)到先驗分布

,記為

;通過一個后驗網(wǎng)絡(luò)學(xué)習(xí)到近似的后驗分布

和

,分別記為

和

。句子粒度對比學(xué)習(xí)的目標(biāo)就是盡可能的縮小先驗分布和正后驗分布的距離,同時盡可能的推大先驗分布和負后驗分布的距離,相應(yīng)的損失函數(shù)如下:

其中為正樣本或負樣本,為溫度系數(shù),用來表示距離度量,這里我們使用 KL 散度(Kullback–Leibler divergence )[5] 來度量兩個分布直接的距離。
關(guān)鍵詞粒度對比學(xué)習(xí)
- 關(guān)鍵詞網(wǎng)絡(luò)
關(guān)鍵詞粒度的對比學(xué)習(xí)是用來讓模型更多的關(guān)注到句子中的關(guān)鍵信息,我們通過利用輸入輸出文本對應(yīng)的正負關(guān)系構(gòu)建一個 keyword graph 來達到這個目標(biāo)。具體來說,根據(jù)一個給定的句對

,我們可以分別從其中確定一個關(guān)鍵詞

和

(關(guān)鍵詞抽取的方法我采用經(jīng)典的 TextRank 算法 [6]);對于一個句子

,可能存在與其關(guān)鍵詞

相同的其他句子,這些句子共同組成一個集合

,這里面每一個句子

都有一對正負例輸出句子

,他們分別又有一個正例關(guān)鍵詞

和負例關(guān)鍵詞

。這樣在整個集合中,對任何一個輸出的句子

,可以認為它所對應(yīng)的關(guān)鍵詞

和每一個周圍的

(通過句子之間的正負關(guān)系關(guān)聯(lián))之間都存在一條正邊

,和每一個周圍的

之間都存在一條負邊

?;谶@些關(guān)鍵詞節(jié)點和他們直接的邊,我們就可以構(gòu)建一個 keyword graph

我們使用 BERT embedding[7] 來作為每個節(jié)點

的初始化,并使用一個 MLP 層來學(xué)習(xí)每條邊的表示

。我們通過一個 graph attention (GAT) 層和 MLP 層來迭代式地更新關(guān)鍵詞網(wǎng)絡(luò)中的節(jié)點和邊,每個迭代中我們先通過如下的方式更新邊的表示:

這里

可以是

或者

。
然后根據(jù)更新后的邊

,我們通過一個 graph attention 層來更新每個節(jié)點的表示:

這里

都是可學(xué)習(xí)的參數(shù),

為注意力權(quán)重。為了防止梯度消失的問題,我們在

上加上了殘差連接,得到該迭代中節(jié)點的表示

。我們使用最后一個迭代的節(jié)點表示作為關(guān)鍵詞的表示,記為 u。
- 關(guān)鍵詞對比
關(guān)鍵詞粒度的對比來自于輸入句子的關(guān)鍵詞

和一個偽裝(impostor)節(jié)點

。我們將輸入句子的輸出正樣本中提取的關(guān)鍵詞記為

,它在上述關(guān)鍵詞網(wǎng)絡(luò)中的負鄰居節(jié)點記為

,則

,關(guān)鍵詞粒度的對比學(xué)習(xí) loss 計算如下:

這里

用來指代

或者

,h(·) 用來表示距離度量,在關(guān)鍵詞粒度的對比學(xué)習(xí)中我們選用了余弦相似度來計算兩個點之間的距離。
- 跨粒度對比學(xué)習(xí)
可以注意到上述句子粒度和關(guān)鍵詞粒度的對比學(xué)習(xí)分別是在分布和點上實現(xiàn),這樣兩個粒度的獨立對比可能由于差異較小導(dǎo)致增強效果減弱。對此,我們基于點和分布之間的馬氏距離(Mahalanobis distance)[8] 構(gòu)建不同粒度之間對比關(guān)聯(lián),使得目標(biāo)輸出關(guān)鍵詞到句子分布的距離盡可能小于 imposter 到該分布的距離,從而彌補各粒度獨立對比可能帶來的對比消失的缺陷。具體來說,跨粒度的馬氏距離對比學(xué)習(xí)希望盡可能縮小句子的后驗語義分布

和

之間的距離,同時盡可能拉大其與

之間的距離,損失函數(shù)如下:

這里

同樣用來指代

或者

,而 h(·) 為馬氏距離。
實驗 & 分析
實驗結(jié)果
我們在三個公開數(shù)據(jù)集 Douban(Dialogue)[9],QQP(Paraphrasing)[10][11] 和 RocStories(Storytelling)[12] 上進行了實驗,均取得了 SOTA 的效果。我們對比的基線包括傳統(tǒng)的生成模型(e.g. CVAE[13],Seq2Seq[14],Transformer[15]),基于預(yù)訓(xùn)練模型的方法(e.g. Seq2Seq-DU[16],DialoGPT[17],BERT-GEN[7],T5[18])以及基于對比學(xué)習(xí)的方法(e.g. Group-wise[9],T5-CLAPS[19])。我們通過計算 BLEU score[20] 和句對之間的 BOW embedding 距離(extrema/average/greedy)[21] 來作為自動化評價指標(biāo),結(jié)果如下圖所示:

我們在 QQP 數(shù)據(jù)集上還采用了人工評估的方式,3 個標(biāo)注人員分別對 T5-CLAPS,DialoGPT,Seq2Seq-DU 以及我們的模型產(chǎn)生的結(jié)果進行了標(biāo)注,結(jié)果如下圖所示:

消融分析
我們對是否采用關(guān)鍵詞、是否采用關(guān)鍵詞網(wǎng)絡(luò)以及是否采用馬氏距離對比分布進行了消融分析實驗,結(jié)果顯示這三種設(shè)計對最后的結(jié)果確實起到了重要的作用,實驗結(jié)果如下圖所示。

可視化分析
為了研究不同層級對比學(xué)習(xí)的作用,我們對隨機采樣的 case 進行了可視化,通過 t-sne[22] 進行降維處理后得到下圖。圖中可以看出,輸入句子的表示與抽取的關(guān)鍵詞表示接近,這說明關(guān)鍵詞作為句子中最重要的信息,通常會決定語義分布的位置。并且,在對比學(xué)習(xí)中我們可以看到經(jīng)過訓(xùn)練,輸入句子的分布與正樣本更接近,與負樣本遠離,這說明對比學(xué)習(xí)可以起到幫助修正語義分布的作用。

關(guān)鍵詞重要性分析
最后,我們探索采樣不同關(guān)鍵詞的影響。如下表所示,對于一個輸入問題,我們通過 TextRank 抽取和隨機選擇的方法分別提供關(guān)鍵詞作為控制語義分布的條件,并檢查生成文本的質(zhì)量。關(guān)鍵詞作為句子中最重要的信息單元,不同的關(guān)鍵詞會導(dǎo)致不同的語義分布,產(chǎn)生不同的測試,選擇的關(guān)鍵詞越多,生成的句子越準(zhǔn)確。同時,其他模型生成的結(jié)果也展示在下表中。

業(yè)務(wù)應(yīng)用
這篇文章中我們提出了一種跨粒度的層次化對比學(xué)習(xí)機制,在多個文本生成的數(shù)據(jù)集上均超過了具有競爭力的基線工作?;谠摴ぷ鞯?query 改寫模型在也在支付寶搜索的實際業(yè)務(wù)場景成功落地,取得了顯著的效果。支付寶搜索中的服務(wù)覆蓋領(lǐng)域?qū)拸V并且領(lǐng)域特色顯著,用戶的搜索 query 表達與服務(wù)的表達存在巨大的字面差異,導(dǎo)致直接基于關(guān)鍵詞的匹配難以取得理想的效果(例如用戶輸入 query“新上市汽車查詢”,無法召回服務(wù) “新車上市查詢”),query 改寫的目標(biāo)是在保持 query 意圖不變的情況下,將用戶輸入的 query 改寫為更貼近服務(wù)表達的方式,從而更好的匹配到目標(biāo)服務(wù)。如下是一些改寫示例:



























