ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型
一只小狐貍帶你解鎖 煉丹術&NLP?秘籍
作者:機智的叉燒(OPPO算法工程師,擅長Query理解方向)
背景
搜索和推薦經常會被放在一起對比,其中最突出的區別就是搜索中存在query,需要充分考慮召回內容和query之間的相關性,而如果內容是搜索廣告,則對內容有更高的要求,相關性過低的內容被展示會讓用戶有很差的體驗。
相關性在一定程度上可以被抽象成doc和query之間的語義相似度問題,其實當前語義相似度的研究已經非常成熟,在sigir2018中有人曾經對搜索和推薦中的深度學習匹配進行了非常全面的綜述:Deep Learning for Matching in Search and Recommendation[1]。在語義匹配上,大家的關注點經常在于如何去定義“匹配”上,尤其是分析如何將兩者的編碼內容更好地匹配起來。
常見的其實就是兩個思路:
前者是重表示學習,也就是我們常說的“endocer”,然后通過簡單的方法計算他們的相似度(如余弦相似度)。最具有代表性的應該是DSSM[2]等雙塔模型了。
后者則重相似度計算,encode之后,通過句子之間的交互關系計算相似度,達成目標。常用的交互計算就是兩個句子token間相互attention的過程,當然也有一些兩者一起進入encoder共同計算的方法,比如BERT中的Text_a+Text_b的訓練方式,就是同時進行句內和句間的表示計算。
雖然語義相似度問題已經有很多解決辦法了,然而事實上,在應用過程中,相關性和相似度還是有著很大的差距,因為搜索內容的細微變化會帶來較大的語義意圖變化。比如用戶想買“手機充電器”,但結果出了“手機殼”。雖然兩者有一定的相似度,但明顯是不相關的。
回過頭來談搜索廣告,搜索廣告是搜索中商(zhuan)業(qian)化的一環,希望的是能給到用戶盡可能接觸的東西盡可能相關,本來廣告點的人就少,還無關就更涼涼了。
不慌,今天就介紹一個最新方法,來自亞馬遜ACL20的《Learning Robust Models for e-Commerce Product Search》[3],文章主要用在商品搜索的場景下,目的是判斷query和item/doc之間的相關性。文中提出了一個與“對抗生成網絡”類似結構的模型[4],其中的判別器能夠衡量query和doc之間的相關性,判斷兩者是否相關,生成器則能夠生成與query相似卻不相關的doc,借助類似對抗生成網絡模式的訓練,能夠在較多噪音數據下,仍盡可能保證模型的魯棒性。
模型
問題定義
為了更好的對模型進行描述,對問題進行定義,對一個匹配對,其中文檔內容和對應的query ,表示兩者的匹配情況,表示兩者不匹配而表示兩者匹配,而在建模過程中,會產生一個,當時會有。
模型架構
想要學東西,看論文肯定不能錯過模型部分了。
模型主要分為3大部分:LSTM-attention為基礎的分類模型(藍色虛線框)
變分編碼-解碼生成器(a variational encoder-decoder query generator,VED)(紅色虛線框)
狀態融合器(橙色實心矩形)
分類器
上面提到,分類器是一個LSTM-attention模式的模型。它的模式是基于(Rocktaschel et al., 2015)[5]產生的,作者認為搜索場景的語句格式和常規的自然語言會存在差異。首先query和對應的物品title,在語法結構上會存在不同,query一般較短,而title的描述則更多的是關鍵詞的堆砌。廣告場景下的query和title,更可能是一個多對一的情況,比如“紅色跑鞋 耐克”和“紅色 耐克運動鞋”都對應著同一個商品;另外,query中存在的對屬性的描述,如品牌顏色等(電商場景),這些屬性會在長句中出現,因此需要具有一定記憶性的模型。綜上,作者對query和物品的標題title分別進行了不同的詞向量訓練,最終合并然后計算。
底層的輸入本就有兩塊,一塊是titie,另一塊是query,兩者分別通過自己訓練的word2vector進行編碼,然后如圖所示地進入各自的LSTM,其中還能看到的是query的LSTM其實還用了title LSTM的末端信息信息,隨后,進入了一個additive attention,其實是一種比較常規的attention方法(Bahdanau et al., 2014)[6],此后,就進入三層全連接,最終完成了匹配度的計算。值得注意的是里面attention的使用,作者雖然使用的是additive attention,但是還提出了一個改進,這個改進把attention本來不包含上下文信息的模式升級為考慮了上一期信息的模式,來看看他具體是怎么做的:
設為LSTM的輸出維數,和是title和query分別經過各自LSTM的輸出矩陣。
要理解attention,首先要弄明白的是attention的對象和依據,顯然,構造的時候,我們針對的是query中LSTM輸出后每一個節點進行計算的,因此公式表示的意思是,對于query中的每個詞,分別對title的表示進行attention并得到分數,另外計算時引入了,目的是加入t-1步之前模型主要focus的信息。
當然了,attention只是一種對信息的調整,最終還要考慮原來的信息,匯總出去,于是有:
其中是query經過LSTM后的最終輸出。得到的就是query這一次送入全連接層之前的形態。
細心的我們可以發現,除了我們計算得到的和,還多考慮了,作者給出的解釋是提升分類的效果,具體的體現就在于前面所提到的query和item之間的“多對一”的關系,attention中考慮了query中每個位置和title整體的關系后計算得到,而這個通過參數的訓練,其實能夠表示一整批與title相關的query,具有統一的表達能力,此時則能夠體現這個所謂“統一的表達”與特定query之間的差距。
最后,當然就是損失函數了:
其中是一個調整正樣本權重的超參數,在本文中會更看重正樣本(不匹配的),因此有。
文本生成器
搜索引擎下正樣本(不匹配)很簡單,但是要找到與對應title不匹配,但是和對應query比較相似的文本,也就是我們所說的“對抗樣本”,真的不容易,我們希望的是找到對抗樣本協助訓練,從而提升模型的魯棒性。
文章里作者使用的是VED——變分編碼解碼器,我們希望的是,輸入,能夠生成一個,這個與不匹配,但是與非常接近(其實某種程度上可以理解為我們要去挖掘相似度分類的“決策邊界”)。作者本身對VED沒有很多的改進,而是直接沿用(Bahuleyan et al., 2017)[7]的操作,具體的格式就變得很簡單:
生成器和query的聯動
由于內部其實涉及了兩個任務:分類和生成,要使這兩者總體端到端化,有必要涉及一個統一的損失函數,權衡兩者使兩者盡可能同時達到最優。
回過頭來重新看看整個模型架構,尤其是橙色部分:
這里的和分別是query和生成的query分別通過query LSTM后產生的結果,是一個滿足概率為的伯努利分布。
展開來看看這個公式其中的原理,首先,如果query本身就和title不相似,也就是,則整個公式下其實就只使用了原始query,相反,如果,則完全使用生成的query。而為了產生一定的噪音,引入了一個隨機數。
損失函數設計與訓練
雙重任務——分類和生成,那就要謹慎考慮兩者的聯合學習了,為此作者設計出了這么一個公式:
仔細看看這個公式是不是和上面公式(3)有些類似?說白了,只有當query和titile非常相似的時候(負例),才會更多的考慮生成器生成的query與title之間的相關性。但是其實我們可以發現,上面這個損失函數,無論是看query還是生成的query,都只是在分析他們與doc的不相似性,換言之都是再考慮“正樣本”,而沒有負樣本,實際上他們是怎么做的呢?來看看他們的訓練流程。
在訓練過程中,首先要做的是對分類器進行第一輪訓練,然后用分類器劃分出相似和不相似的query,然后用這塊數據訓練出第一版本的VED,在此基礎上,再用公式(4)作為損失去做調整,最終得到需要的模型,尤其是這個分類模型。實驗與效果
有了基本的模型以及一定的理論基礎,當然就要開始實操這塊的內容了。作者是針對電商搜索來進行的設計,當然就要用電商的數據進行實驗,實驗數據量將達到了320萬對,其中只有少量是不匹配的,這里面的“匹配”是指query查詢后頻繁購買的那些商品的title。
模型效果
以gbdt為基線(說實話這里其實并不太同意用gbdt來做基線,我的視角看語義相似度他并非主流,dssm才是比較出名的基線),可以看到還是有比較明顯的提升,從這里看,作者的模型效果甚至要高于著名的bert,哪怕是只有分類器,在加上生成器進行協助訓練后,效果得到了進一步的提升。
不僅離線評估效果喜人,QUARTS在線上也獲得了很好的表現,經過在兩個國家的A/B測試后,相比當前的基線分別提升了12.2%和5.75%。
生成器效果
生成器的效果,根據作者分析現實準確率能達到82%,算是一個不錯的水平吧,來看一些case:
可以看到,如作者預期,query和生成的query具有較高的相似性的同時,也能夠滿足與對應title之間的關系。
結論與展望
讀完這篇文章后,我們需要做的,當然就是吸收這篇文章提到和提出的一些建模的trick:
在進行語義相似度時,query和title的embedding可以通過設置兩個來表達不同的語義句式。
attention中引入上一期的信息。
在進行語義相似度時,attention對query進行處理,可以加入title的所有信息輔助生成。
(核心)變分編碼產生正樣本對原模型進行微調。
這里面讓我感到比較驚喜的是,bert被干趴下了,而且輸得挺多的,不過這主要是因為BERT是在DSSM基礎上進行的改進,其實可以嘗試把本文模型下訓練的title embedding和query embedding都換成bert,估計會有新的提升(但模型估計會蹭蹭蹭的變大)。那么我下面給一些可以盡可能提升的思路吧(快記著,下一篇頂會就是你的了)
另外,我還想提的一個點是,在bert被干趴下的同時,這個模型除了LSTM之外本身沒有復雜度很高的操作,耗時預計就在10ms左右。
中文是否有這個效果?
搜索的query大都是短句,現在看來效果還是不錯的,但是從上面生成器的效果來看,還是出現一些語義類似但是文本匹配低的情況,是否可以加入文本匹配的信息協助保證文本層面的匹配度(如BM25)。
相似度的衡量目前比較粗暴,直接用的全連接,是否有必要升級為余弦、矩陣相似度?
嘗試訓練一個title embedding和query embedding都換成bert的模型,然后用本文的模型來做蒸餾,估計還會有提升。
本文收錄于原創專輯:《賣萌屋@自然語言處理》
重磅驚喜:賣萌屋小可愛們苦心經營的?自然語言處理討論群?成立三群啦!掃描下方二維碼,后臺回復「入群」即可加入。眾多頂會審稿人、大廠研究員、知乎大V以及美麗小姐姐等你來撩噢~(手慢無
夕小瑤的賣萌屋
_
關注&星標小夕,帶你解鎖AI秘籍
訂閱號主頁下方「撩一下」有驚喜哦
參考文獻
[1] SIGIR2018的報告,有關這個領域的語義匹配模型都有談到: http://staff.ustc.edu.cn/~hexn/papers/sigir18-tutorial-deep-matching.pdf[2]Learning deep structured semantic models for web search using clickthrough data: https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/cikm2013_DSSM_fullversion.pdf
[3] Learning Robust Models for e-Commerce Product Search: https://arxiv.org/abs/2005.03624
[4] Adventure: Adversarial training for textual entailment with knowledge-guided examples: https://arxiv.org/abs/1805.04680
[5] Reasoning about entailment with neural attention: https://arxiv.org/pdf/1509.06664.pdf
[6] Neural machine translation by jointly learning to align and translate.: https://arxiv.org/abs/1409.0473
[7] Variational attention for sequence-to-sequence models.: https://cs.uwaterloo.ca/~ppoupart/publications/conversational-agents/variational-attention-sequence.pdf
總結
以上是生活随笔為你收集整理的ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ICLR最高分论文揭秘模型泛化,GNN是
- 下一篇: 中科院博士整理的机器学习算法知识手册,完