當(dāng)然了,和往常的文章一樣,我不會(huì)復(fù)述這一篇文章,而是聊聊里面的一些關(guān)鍵點(diǎn)和一些有意思的內(nèi)容,拿出來和大家討論一下。
搜索的常規(guī)結(jié)構(gòu)
有關(guān)搜索的結(jié)構(gòu),其實(shí)在很多之前的文章都已經(jīng)有聊過,這里再借這篇文章聊聊吧,直接上圖:
先從左邊開始,是用戶視角的處理流程,用戶輸入檢索query后,需要經(jīng)過一系列的預(yù)處理和解析,包括以前常說的意圖識(shí)別,在這個(gè)圖里都算入parser中,經(jīng)過預(yù)處理后,就會(huì)進(jìn)入常規(guī)的信息檢索流程,現(xiàn)在的主流就是“檢索+召回”的模式,即先從庫里面找出一整批比較接近的,然后經(jīng)過一定的排序模型對這些結(jié)果進(jìn)行排序,最終給出搜索結(jié)果。
而從右邊開始,是各種文檔,或者說物料的輸入到入庫的流程,Parser和Encoder就是預(yù)處理和編碼的流程,然后就可以入庫了,這里用“index”就是一個(gè)索引的過程,索引本身是一個(gè)協(xié)助檢索加速的過程,有了索引能讓檢索過程變得足夠快,畢竟用戶視角的檢索速度不能因?yàn)閹旌艽蠖唤档停@其實(shí)是搜索里面非常重要的問題了,因和本文無關(guān)這個(gè)點(diǎn)到為止。
因此,其實(shí)要算法工作的地方,其實(shí)就這幾個(gè):
Query Parser,即query預(yù)處理和理解部分,需要通過算法的方式對query進(jìn)行解析。
Retrieval,即檢索部分,從庫里面粗篩出可能對的結(jié)果的部分。
Rerank,即排序部分,這里涉及的就是排出最優(yōu)的結(jié)果有限放到用戶面前的過程。
Doc Parser&Encoder,即對文檔處理的部分,什么樣的解析和表征能更好地入庫檢索的同時(shí),更快更準(zhǔn)地被Retrieval找到。
Retrieval
所謂的檢索,其實(shí)就是輸入用戶query,然后從庫里面找到和query最相關(guān)的TOPN的結(jié)果的這個(gè)過程,而一般地,主要是3種情況,按照論文的說法:
sparse,稀疏型,其實(shí)就是經(jīng)典的全匹配的形式,我理解是因?yàn)閛nehot化后其實(shí)就是稀疏的所以這么說吧。
dense,稠密型,說白了就是我們常說的向量表征后用ANN的方式來進(jìn)行查詢的方法。
綜合型,就是綜合上述兩者來進(jìn)行的操作。
首先聊聊sparse型吧,這應(yīng)該是前一個(gè)階段比較流行的方案了,但是現(xiàn)在仍方興未艾。在預(yù)訓(xùn)練的使用上,則更聚焦在稀疏型特征的更精準(zhǔn)地抽取上,例如上游意圖識(shí)別的處理(這個(gè)其實(shí)放在了后續(xù)的章節(jié)里),或者是在詞權(quán)重問題上的進(jìn)一步優(yōu)化(term-weighting),這些其實(shí)在比較老的階段已經(jīng)有一些比較優(yōu)秀的方案,但是換上預(yù)訓(xùn)練模型后,確實(shí)有不小的提升,同時(shí)從系統(tǒng)層面,系統(tǒng)的迭代升級(jí),直接更換模型會(huì)比較方便,風(fēng)險(xiǎn)低而且可控性高,確實(shí)是大家更容易想到的手段了。
而dense型,對應(yīng)的就是我們說的語義向量召回,別以為只是把表征模塊換成預(yù)訓(xùn)練模型那么簡單(如SBERT),其實(shí)還有很多花樣,我來列舉一下:
單向量表征和多向量表征,即在計(jì)算相似度的時(shí)候是用一個(gè)向量還是多個(gè)向量,這種用多個(gè)向量的其實(shí)并不少見,至少在論文里。
專門為了向量檢索而設(shè)計(jì)的預(yù)訓(xùn)練模型和任務(wù),也可以說是Further pretrain或者是fine-tuning的一種思路。
難負(fù)例的挖掘和使用的探索,這方面在排序階段也有提及,屬于語義相似度上的老問題了。
而綜合型,則是一些統(tǒng)一考慮兩種類型特征,一起使用的方案,本質(zhì)上研究的是這兩種信息的融合方式,同時(shí)也是在探索兩者的分工和地位,例如有的研究是讓預(yù)訓(xùn)練模型擬合BM25后的殘差,有的研究這是考慮復(fù)雜的融合。
Rerank
排序也是搜索中非常重要的部分,要最終的結(jié)果足夠準(zhǔn),排序肯定是更為關(guān)鍵的一環(huán),甚至更為極端的,很多搜索在架構(gòu)上,設(shè)計(jì)的排序模塊是多層多元的,和推薦類似,所以更多大家會(huì)叫reranker,這個(gè)點(diǎn)到為止,回到排序本身,而常見的,模型在排序側(cè),尤其是預(yù)訓(xùn)練模型的使用上,會(huì)有兩種形式:
判別式,即直接用類似分類的方式,直接給出query對各個(gè)doc的打分,選下圖種中間的那個(gè)形式。
生成式,假設(shè)文檔和query中間存在一個(gè)生成的過程,通過刻畫文檔->query或相反的過程來判斷兩者的相似關(guān)系。
判別式排序
先聊聊前者,這個(gè)大家也比較熟悉,說白了就是直接通過分類的方式來計(jì)算得分,按照論文的總結(jié),應(yīng)該就是這幾個(gè)形式,在NLP里,更多其實(shí)可以理解為交互式的語義相似度計(jì)算吧,但是由于一對多的存在,所以演化了更多的形式:
而與常規(guī)的NLP不同的是,搜索還需要面臨這些問題:
長文本問題,雖然query大都還比較短,但是doc很少是短文本了,因此有了一些類似BERT-firstP、BERT-sumP之類選擇最優(yōu)段落等的一些方案和PARADE等的一些用來聚合全文信息再來計(jì)算的方案。
性能問題。多個(gè)文檔和query都要計(jì)算匹配度,性能扛不住,所以有了一些類似延遲交互、蒸餾、動(dòng)態(tài)建模的方案。
生成式排序
然后聊聊生成式排序模型,思路上就是這個(gè)形式:
前者是把query和doc都輸入文本,生成True/False的結(jié)果,個(gè)人感覺其實(shí)和上面的判別型多少有些類似,只是解釋的視角不同吧,后者則是借助Doc生成Query的方式,隨后用條件概率來判斷兩者的相關(guān)性。
混合型排序
混合型排序則是混合了上述生成式和判別式方案的特點(diǎn),例如通過多任務(wù)學(xué)習(xí)等的方案進(jìn)行,這里不贅述了。
其他檢索相關(guān)的組件
檢索本就是一個(gè)系統(tǒng),內(nèi)部有大量的組件,而因此,預(yù)訓(xùn)練模型也不見得只用在上面的召回和排序階段,例如query理解,這塊我自己是已經(jīng)用了不少了,例如分類、實(shí)體抽取等,當(dāng)然還有論文里提到的query拓展改寫,和其他的特征,這些是query側(cè)的,而物料側(cè),則有很多類似文本摘要之類的方案,論文里面也有不少,大家可以看看拓展下思路。
檢索專用預(yù)訓(xùn)練方案
要讓預(yù)訓(xùn)練方案在特定場景表現(xiàn)更好,肯定離不開對這個(gè)場景適配的一些研究,甚至有一些針對對話場景的預(yù)訓(xùn)練技術(shù),首先是預(yù)訓(xùn)練任務(wù)的設(shè)計(jì),讓預(yù)訓(xùn)練模型能更好適配檢索任務(wù),例如ICT從論文中隨機(jī)采樣一句話來和剩余句子進(jìn)行匹配,這些思路的核心其實(shí)就是強(qiáng)調(diào)預(yù)訓(xùn)練模型對query-doc這種信息匹配類任務(wù)的理解能力;另一方面,就是一些比較大膽的,對Transformer結(jié)構(gòu)的調(diào)整,例如在淺層先隔離q和d之間的關(guān)系,后續(xù)再來聯(lián)合的預(yù)訓(xùn)練結(jié)構(gòu),算是一種思路的拓展吧。
自己的一些其他的想法
全文給我的收獲其實(shí)挺大的,能在論文里看到很多有關(guān)預(yù)訓(xùn)練模型在搜索中使用的思路和方案,這些也打開了我的思路。但是感覺還有不少問題可能還有待進(jìn)一步的探索和研究吧,也是自己比較關(guān)注和研究的,當(dāng)然這些也比較實(shí)踐化,科研視角可能很難關(guān)心到。
目前的論文方案似乎都是把整個(gè)檢索系統(tǒng)割裂來看的,即任務(wù)拆解后,逐一優(yōu)化實(shí)現(xiàn)的,小到term-weight問題,達(dá)到召回和排序的問題,但是對于一個(gè)系統(tǒng),將預(yù)訓(xùn)練模型集成到系統(tǒng)中的時(shí)候,有很多問題需要考慮,我舉幾個(gè)例子:
一個(gè)系統(tǒng)這么多任務(wù),每個(gè)都布一個(gè)預(yù)訓(xùn)練模型,系統(tǒng)能支撐嗎?這時(shí)候的性能優(yōu)化,就不只是優(yōu)化一個(gè)算法一個(gè)任務(wù)這么簡單了,而是一個(gè)系統(tǒng)問題。
什么位置上預(yù)訓(xùn)練模型對端到端結(jié)果收益會(huì)更高。
上游計(jì)算預(yù)訓(xùn)練的中間信息,有沒有可能用到下游,產(chǎn)生新的提升,即有沒有可能“一肉多吃”。(這個(gè)其實(shí)論文里有提,具體論文也有看到,感覺是個(gè)方向吧)
再者,表面上看這些任務(wù)是對應(yīng)到了檢索系統(tǒng),但是多少還是沒有離開預(yù)訓(xùn)練所固有的NLP場景,有些搜索的特定特征或者這種信息,并沒有考慮引入到模型中,如有點(diǎn)率、點(diǎn)擊量等,都沒有考慮到融合預(yù)訓(xùn)練模型中,說白了,其實(shí)還是只是考慮了文檔和Query之間語義的相關(guān)性而已,沒有考慮更多更復(fù)雜的信息匹配,而這些信息其實(shí)在現(xiàn)實(shí)應(yīng)用中也必不可少,例如“最新消息”之類的query,是和時(shí)效性有關(guān)的,本身和語義關(guān)系真不大,這個(gè)例子可能有些極端了,但是在一個(gè)相對綜合的系統(tǒng)中,確實(shí)是個(gè)不能忽略的重要問題。
小結(jié)
當(dāng)然了,文章中還有很多內(nèi)容我沒有提到,例如現(xiàn)有數(shù)據(jù)集和對應(yīng)的sota,大家可以根據(jù)自己的興趣在論文里看,另外對于自己感興趣的部分,作者都有列出出處,大家可以進(jìn)一步深入閱讀,很久前就和大家說過讀綜述的好處就是能快速理解一個(gè)方向比較全面的研究現(xiàn)狀,也能把握住一些研究熱點(diǎn)和前沿,所以非常建議大家精讀,我花了一個(gè)中秋節(jié)假期的事件來看,感覺收獲不小,希望也對大家有用吧。
-
編碼
+關(guān)注
關(guān)注
6文章
957瀏覽量
54954 -
nlp
+關(guān)注
關(guān)注
1文章
489瀏覽量
22110 -
訓(xùn)練模型
+關(guān)注
關(guān)注
1文章
36瀏覽量
3888
原文標(biāo)題:綜述 | 預(yù)訓(xùn)練模型在信息檢索中的應(yīng)用
文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
基于不同量級(jí)預(yù)訓(xùn)練數(shù)據(jù)的RoBERTa模型分析
【大語言模型:原理與工程實(shí)踐】大語言模型的預(yù)訓(xùn)練
為什么要使用預(yù)訓(xùn)練模型?8種優(yōu)秀預(yù)訓(xùn)練模型大盤點(diǎn)
![為什么要使用<b class='flag-5'>預(yù)</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>模型</b>?8種優(yōu)秀<b class='flag-5'>預(yù)</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>模型</b>大盤點(diǎn)](https://file.elecfans.com/web1/M00/8D/6A/o4YBAFylecGAJedZAAAVzjmeFLg055.png)
小米在預(yù)訓(xùn)練模型的探索與優(yōu)化
![小米<b class='flag-5'>在</b><b class='flag-5'>預(yù)</b><b class='flag-5'>訓(xùn)練</b><b class='flag-5'>模型</b>的探索與優(yōu)化](https://file.elecfans.com/web1/M00/D7/F7/o4YBAF_tNTCAWi3CAAAoB6kAp6g101.png)
2021 OPPO開發(fā)者大會(huì):NLP預(yù)訓(xùn)練大模型
![2021 OPPO開發(fā)者大會(huì):NLP<b class='flag-5'>預(yù)</b><b class='flag-5'>訓(xùn)練</b>大<b class='flag-5'>模型</b>](https://file.elecfans.com/web2/M00/1A/0A/pYYBAGF474SATRFeAAQLZtrxtfA029.png)
評論