剛工作滿一周年,從一年前從零開始接觸搜索系統(tǒng)[2],到現(xiàn)在初步對搜索系統(tǒng)有所認(rèn)識,感覺還是積累了一些也許可以拿來分享的內(nèi)容??偟膩碚f,筆者認(rèn)為搜索系統(tǒng)就是由各種打分與條件規(guī)則組合成的復(fù)雜系統(tǒng),本文也會盡可能對此進(jìn)行解釋。在前文[1]中,我初步對搜索業(yè)務(wù)進(jìn)行了簡單的介紹,從中提到了
商業(yè)搜索引擎本身不帶來太多盈利,但是成功的商業(yè)搜索引擎將帶來巨大的流量,而流量變現(xiàn)就是它最主要的盈利方式,流量變現(xiàn)最主要的手段就是廣告推廣
Fig 1. 用戶借助檢索詞,在搜索系統(tǒng)上直接表明了用戶需求,因此廣告系統(tǒng)可以根據(jù)廣告的相關(guān)程度,廣告質(zhì)量以及廣告競價,在搜索系統(tǒng)自然結(jié)果的基礎(chǔ)上插入廣告,至于哪些廣告才能插入哪些位置,這個由廣告系統(tǒng)決定,搜索系統(tǒng)一般只會發(fā)送廣告請求(以及部分用戶檢索相關(guān)信息)給廣告服務(wù)器請求廣告插入。
如Fig 1. 所示,通過競價廣告的形式,可以將廣告主的廣告插入到對應(yīng)的自然結(jié)果中,借助搜索系統(tǒng)的競價廣告,通常大型商業(yè)搜索公司都可以賺得盆滿缽滿。廣告系統(tǒng)會處理從不同業(yè)務(wù)線發(fā)送的廣告請求,并為此提供廣告服務(wù),這個系統(tǒng)同樣非常復(fù)雜,包括有復(fù)雜的資源召回,廣告質(zhì)量評估,競價策略,內(nèi)容投放策略,流量預(yù)估,CTR預(yù)估等,在此不展開介紹了。
總而言之,巨大的流量是商業(yè)搜索引擎盈利的前提,而搜索引擎只有能夠滿足用戶方方面面對于信息的需求,才能在激烈的市場中分到一杯羹。這一點并不簡單,用戶的信息需求方方面面,在搜索引擎中經(jīng)常見到以下幾類需求:
不同需求對于資源的時效性和權(quán)威性需求強(qiáng)度是不同的,而有些比較高頻并且和公司戰(zhàn)略方向一致的大型垂類需求(比如視頻,圖片,汽車,財經(jīng)等)可能會獨立拉出一個團(tuán)隊,負(fù)責(zé)該品類需求下的內(nèi)容排序。用戶在主頁上搜索的某次檢索,將會觸發(fā)需求檢測,從而判斷是否會觸發(fā)某類垂類需求的排序。如Fig 2. 所示,當(dāng)用戶搜索一個需求,比如“折紙的做法”的時候,搜索引擎判斷其有視頻和圖片的需求,因此觸發(fā)了視頻排序和圖片排序模塊,分別進(jìn)行了視頻和圖片排序然后作為一個卡片,與其他網(wǎng)頁結(jié)果參與主頁排序后呈現(xiàn)出來。同樣的,對于query “白兔糖”,系統(tǒng)判斷其具有知識需求和視頻需求,因此出來了百科卡片與視頻卡片。
Fig 2. 在主頁上搜索某個需求“折紙的做法”,頭條搜索判斷其有視頻需求和圖片需求,因此彈出了視頻和圖片的需求卡片,與其他網(wǎng)頁自然結(jié)果一起參與主頁排序。
而對于檢索詞“白兔糖”,系統(tǒng)判斷其有知識需求和視頻需求。垂類卡片與其他網(wǎng)頁結(jié)果在主頁上互相競爭,互相pk排序位置,而排序的依據(jù)會考慮結(jié)果的相關(guān)性,質(zhì)量性,權(quán)威性,時效性等等。由于主頁搜索上用戶的需求各類各樣,query分析會提取出用戶的需求,對于某些垂類強(qiáng)需的query(比如query里面寫明了視頻需求的,“秒速五厘米 視頻高清”),將會優(yōu)先把視頻卡片扶持到靠前位置(比如top 4)。
在這個綜合搜索的體系下,我們需要query分析能夠?qū)τ脩粜枨筮M(jìn)行判斷,通常會考慮對query進(jìn)行需求分類,并且可能是多層級的需求分類,并由此收集數(shù)據(jù)建立模型(需求判斷模型)。同時,還需要對query的需求強(qiáng)度進(jìn)行判斷,建立需求強(qiáng)度模型,由此判斷某個垂類卡片是否應(yīng)該在主頁進(jìn)行扶持或者打壓(當(dāng)該垂類排序結(jié)果都不盡人意的時候,將會進(jìn)行打壓)。垂類卡片內(nèi)的排序結(jié)果通常是由該垂類業(yè)務(wù)團(tuán)隊負(fù)責(zé)的,該團(tuán)隊可能需要負(fù)責(zé)該垂類資源的檢索庫建庫、召回、粗排、精排、混排等全鏈路,并且在不同階段都可能會需要考慮相關(guān)性,質(zhì)量性,權(quán)威性時效性等,而這就需要各種各樣的模型產(chǎn)生各類型的打分,同時伴隨著各類型的過濾、打壓、調(diào)權(quán)策略介入了。
信息檢索的基礎(chǔ)是信息的建庫,根據(jù)信息的質(zhì)量高低,業(yè)務(wù)類別等多個維度,建庫方式可以多種多樣,比如按照數(shù)據(jù)的時效,質(zhì)量高低等,建立類似于漏斗形的庫層。如Fig 3. 所示,質(zhì)量越高得到庫層往往數(shù)據(jù)數(shù)量越少,也集中著最為高頻的用戶需求資源,而相反的,海量的低質(zhì)量資源庫層可能集中著用戶的長尾需求,雖然這些需求并不常見,但是這些長尾需求嚴(yán)重影響了用戶體驗,能否滿足這些長尾需求將是在商業(yè)搜索市場中爭搶分額的關(guān)鍵因素。
Fig 3. 通常搜索引擎會將檢索到的資源進(jìn)行分層,在每次檢索時,首先查找數(shù)量較少質(zhì)量較高的庫層,如果沒有檢索到足夠滿意的結(jié)果再穿透到下一層的庫層。
在同一個庫層中,同樣可以按照資源的不同垂類需求,進(jìn)行庫種建庫,如Fig 4. 所示,至于對哪些垂類進(jìn)行庫種建庫,取決于公司的戰(zhàn)略規(guī)劃,以及對某類垂類的資源傾向。
Fig 4. 在同一個庫層里面,可以在建庫階段按照不同的業(yè)務(wù)垂類進(jìn)行庫種建庫。
對于有些資源,比如時政敏感類,色情敏感類,惡俗低質(zhì)類,詐騙類資源,可以在建庫端就提前過濾掉,以避免浪費儲存,并且減少政策風(fēng)險。為了對這些惡意低質(zhì)量資源進(jìn)行判斷,需要建立不同的模型進(jìn)行資源分類,這里統(tǒng)稱為低質(zhì)資源分類模型。我們在建庫的時候?qū)⒋◣熨Y源進(jìn)行模型打分,如果被判斷為惡意低質(zhì)內(nèi)容,就予以過濾。在建庫的時候,由于可以見到所有索引庫資源,此時可以對這些建庫資源進(jìn)行某些基礎(chǔ)正排特征的打分刷庫,此處的正排打分可以在召回和排序階段使用。不同的庫種依賴的正排特征可能不同,需要根據(jù)不同的策略進(jìn)行獨立的正排特征刷庫。
有了索引庫,對于某次檢索,就可以從中召回出需要的內(nèi)容了。如Fig 5. 所示,召回階段通常都會采用多隊列召回,筆者認(rèn)為這一點設(shè)計主要基于幾點考慮:
- 用戶的query可能包含有多種層次的需求,比如搜索“白鹿原”,用戶需要的既可能是書籍,也可能是影視作品,搜索“蘋果”,既可能是食物蘋果,有可能是蘋果科技公司,通過采用不同召回隊列進(jìn)行召回,可以為排序模塊降低排序壓力。
- 用戶的query并不一定能完美地表達(dá)自己的需求,極可能需要進(jìn)行query分析,query分析分為很多維度,包括query擴(kuò)展,query糾錯,同義詞近義詞擴(kuò)展等等,如果將不同的query分析結(jié)果都用同一個召回隊列進(jìn)行召回顯然是不合理的。
- 向量化召回(也稱之為語義召回,ANN召回)通常和基于term match的召回結(jié)果差別較大,如果都用同一個召回隊列,很多需要特別對向量化召回進(jìn)行的策略將難以進(jìn)行。
- 時效性結(jié)果通常也會獨立一個召回隊列進(jìn)行召回,時效性結(jié)果需要根據(jù)query需求進(jìn)行排序,如果都用一個召回隊列,那么時效性結(jié)果可能會競爭不贏其他結(jié)果(這些結(jié)果可能相關(guān)性,質(zhì)量性較好,但是時效差),因此拉出一個單獨的時效隊列進(jìn)行召回會方便后續(xù)的處理。
- 方便后續(xù)的需求迭代,如果對于某類型的query,突然有新的產(chǎn)品需求,希望把某類的資源排序上去,但是當(dāng)前的召回結(jié)果里面很少該類資源,那么就可以考慮通過新增一個召回隊列進(jìn)行該類資源的召回,這樣也會方便后續(xù)的排序操作。
- 方便后續(xù)的策略迭代,相同召回隊列的結(jié)果通常都具有某類共性,適合采用類似的策略進(jìn)行隊列內(nèi)去重,調(diào)權(quán),過濾,打壓等等,而不同的召回隊列之間差別比較大,會在多隊列的組合PK階段進(jìn)行結(jié)果匯總。通過多隊列召回的設(shè)計,我們通常只需要對某個隊列進(jìn)行策略迭代,而不用過于擔(dān)心其影響了其他隊列的結(jié)果,因此迭代的影響是可控的。
Fig 5. 在召回階段,有多個召回隊列從索引庫里面進(jìn)行召回,在經(jīng)歷各隊列間的去重,排序后進(jìn)行多隊列間的組合PK得到最終組合結(jié)果,對組合結(jié)果進(jìn)行去重得到最終召回結(jié)果。
由于召回的結(jié)果大部分基于term match,或者語義匹配進(jìn)行召回,召回結(jié)果中容易出現(xiàn)相同的內(nèi)容,顯然用戶也不希望出來的結(jié)果里面都是相同的,或者是雷同的,因此結(jié)果去重是必須進(jìn)行的。最簡單直接的去重策略就是判斷資源標(biāo)題的相同程度,對于圖片搜索或者視頻搜索而言,內(nèi)容雷同而標(biāo)題不同的情況(轉(zhuǎn)載內(nèi)容,盜資源的情況,通過簡單裁剪,鏡像翻轉(zhuǎn),添加水印轉(zhuǎn)載)也時有發(fā)生,因此還需要判斷圖片/視頻的內(nèi)容相似程度,常見的有視頻指紋對比,封面圖對比,預(yù)覽圖對比等。
待各個召回隊列完成了去重,就可以進(jìn)行排序了。排序通常按照特征粒度,資源數(shù)量分為粗排和精排。粗排中,通常資源數(shù)量較多(幾百到一千級別),因此采用的特征都是較為輕量級的,粗排階段同樣需要考慮相關(guān)性,質(zhì)量性等多個維度的綜合排序,而一旦涉及到相關(guān)性,就需要引入當(dāng)前用戶的檢索Query。這意味著通常需要在線計算Query和文檔Doc的相關(guān)性,由于在線計算資源和延遲(latency)的限制,通常都會采用雙塔模型進(jìn)行相關(guān)性建模。如Fig 6. 所示,相關(guān)性雙塔模型通常分為Query塔和Doc塔,其中Doc塔由于輸入和用戶Query無關(guān),可以進(jìn)行離線Embedding特征刷庫,記為 ,而Query塔由于受到實時用戶檢索的影響,難以離線刷庫解決,因此需要在線計算Embedding特征,記為
。在線時,在計算完Query的Embedding特征后,通過余弦相似度計算Query和Doc之間的相關(guān)性,如式子(1-1)所示。
余弦相似度表示了向量
和向量
的夾角的余弦值,其越大表示越相關(guān)。這塊有許多優(yōu)化手段,首先雙塔模型雖然強(qiáng)大,但是由于Query和Doc不能交互(參考Transformer),某些細(xì)粒度的相關(guān)性匹配將無法建模。難以建模細(xì)粒度和長尾資源,這一點其實并不難理解,參考筆者之前博文[4],Doc塔需要提前進(jìn)行刷庫,在線上應(yīng)用時候采用相似度度量的方式和Query塔進(jìn)行匹配,而刷庫產(chǎn)生的
向量也就固定了,一些長尾語義或者細(xì)粒度語義,由于受到訓(xùn)練數(shù)據(jù)的天然限制,導(dǎo)致模型無法學(xué)習(xí)出合適的表征。而采用單塔交互模型,由于可以實時進(jìn)行交互匹配,對細(xì)粒度和長尾需求通常能解決得更好。
Fig 6. 在粗排階段,鑒于在線計算資源和延遲的考慮,經(jīng)常采用雙塔模型進(jìn)行相關(guān)性建模。
而在精排階段,由于待排序資源通常比粗排少很多,因此可以采用單塔交互模型進(jìn)行在線相關(guān)性計算。因此想辦法在粗排階段引入單塔交互模型是符合直覺的,思路主要有兩種:1. 開源,2. 節(jié)流。 開源指的是盡可能增加線上計算的資源(GPU,TPU等異構(gòu)計算資源),節(jié)流指的是在保證模型效果的同時盡可能減少計算量。由于開源收到了經(jīng)費限制,節(jié)流通常是更容易操作,也是更常被采用的方式。通常減少模型計算復(fù)雜度的方法無非幾類:
降低模型規(guī)模,采用更小的模型,比如3層的Transformer等。適配現(xiàn)代GPU的運算特點,采用int8量化的方式提高GPU計算效率。模型剪枝。緩存技術(shù),將過去一段時間內(nèi)的計算結(jié)果進(jìn)行緩存,在有需求的時候直接查詢返回。輕量化模型設(shè)計,以CV為例子就是MobileNet,SqueezeNet等[8],以NLP為例子就是Linformer[6,7]等,圖網(wǎng)絡(luò)操作的Shift-GCN[11,12], Shift卷積算子[9,10]等,這些不完全能在搜索系統(tǒng)中應(yīng)用,只能提供參考。其中的1、2、3、5都可以看成是對模型的小型化,為了保證模型的效果(performance),必須采取一些其他手段。小型模型,比如三層的Transformer效果理論上是不如更深的Transformer網(wǎng)絡(luò)的,可以考慮在更深的Transformer網(wǎng)絡(luò)上進(jìn)行完整的模型訓(xùn)練,然后通過蒸餾的方式將知識蒸餾到小型化網(wǎng)絡(luò)中。對于某些較大的交互模型,也可以采用近線計算(Nearline)的方式,這個詳細(xì)介紹可見百度官方的CSDN博客介紹 [5],簡單而言,Nearline計算是介于在線計算(online)和離線計算(offline)之間的一種計算方式,通過query觸發(fā)大模型運算后會將結(jié)果緩存起來,當(dāng)有用戶進(jìn)行相同的查詢的時候,會將結(jié)果從緩存中返回。int8量化同樣也是廣泛采用的技術(shù),現(xiàn)代GPU對于int8計算通常作了底層優(yōu)化,能以若干倍數(shù)的程度增加計算速度,而量化通常也分為在線量化,離線量化,對稱/非對稱量化,靜態(tài)量化,動態(tài)量化等等,是一門復(fù)雜的技術(shù)。
即便單塔模型通常效果上比雙塔模型好,從預(yù)訓(xùn)練的角度出發(fā),雙塔模型有一個獨有的優(yōu)勢——能夠采用大規(guī)模的對比學(xué)習(xí)進(jìn)行表征學(xué)習(xí)。參考筆者之前的博文[13-15],如Fig 7. 所示,雙塔模型由于可以進(jìn)行雙塔的打分矩陣計算,可以產(chǎn)生大量的負(fù)樣本,n個正樣本對應(yīng)有個負(fù)樣本,通過all_gather操作匯聚多卡之間的雙塔特征,可以把n nn做的很大。海量的負(fù)樣本為表征學(xué)習(xí)提供了極好的預(yù)訓(xùn)練樣本,其中的難負(fù)樣本能與正樣本進(jìn)行更為充分的“對比”,讓大規(guī)模對比學(xué)習(xí)能夠?qū)W習(xí)到很好的表征。而單塔交互模型由于不能進(jìn)行打分矩陣的構(gòu)造,在負(fù)樣本構(gòu)造數(shù)量上天然吃虧,只能想辦法通過設(shè)計更好的負(fù)采樣策略進(jìn)行彌補(bǔ)。目前也有些嘗試結(jié)合單塔模型和雙塔模型的工作,如單雙塔構(gòu)架[4]。
簡單介紹下對比學(xué)習(xí)的訓(xùn)練過程。假設(shè)Query塔的特征為,Doc塔的特征為
,其中的n為訓(xùn)練時的batch size大?。ㄍㄟ^all_gather可聚合不同GPU上的特征從而擴(kuò)增batch size),d為特征維度,那么訓(xùn)練時候構(gòu)造出的打分矩陣為
,其中的對角線都為正樣本,而非對角線樣本皆為負(fù)樣本。一般通過infoNCE損失、hinge損失等進(jìn)行建模,詳見[13]。
Fig 7. 采用雙塔模型,可以通過all_gather的方式,通過多卡之間匯聚特征,形成超大規(guī)模的打分矩陣。
然而通過增大GPU數(shù)量的方式去增大對比學(xué)習(xí)的batch size終究不是一個可持續(xù)的做法,能不能在維持GPU數(shù)量的情況下盡可能地增大batch size,從而增大負(fù)樣本數(shù)量呢?MoCo [14] 在圖像表征自監(jiān)督學(xué)習(xí)任務(wù)中進(jìn)行了嘗試,通過維護(hù)一個負(fù)樣本隊列,將歷史負(fù)樣本壓入該隊列,從而增大了訓(xùn)練時的負(fù)樣本數(shù)量并且理論上不受GPU數(shù)量的限制,WenLan [15] 則將這個思路延伸到了圖文匹配任務(wù)中,詳細(xì)內(nèi)容見[14,15]。
即便從相關(guān)性的角度出發(fā),在粗排里面也遠(yuǎn)不是一個雙塔模型就能解決所有類型的相關(guān)性問題的,雙塔模型是內(nèi)容的語義匹配(Semantic Match),比如Query與Title是否語義相關(guān),如Fig 8. 所示,用戶搜索“蘋果糖怎么做”中的“怎么做”與標(biāo)題中的“制作教程”屬于語義上的相關(guān)(字面上不匹配,但是語義上匹配)。然而有些Query還有精確匹配的需求,比如搜索一首歌的歌詞,歌詞通常是連續(xù)的并且不希望進(jìn)行語義上的擴(kuò)展。還有一大部分Query是Term的散彈組合,比如“烈日灼心 小豐”,當(dāng)用戶不知道如何精確表達(dá)需求的時候(或者沒有明顯需求傾向的時候),會傾向于用一些簡短詞組的組合去檢索,這個時候的匹配結(jié)果大多是散彈匹配上的。這類型的匹配屬于字詞的字面匹配,同時會考慮匹配的緊密度,基礎(chǔ)命中信號等,在粗排中仍然會占據(jù)一定的影響。為了綜合描述各類型相關(guān)性的影響,通常會用GBRank或者GBDT[16],LambdaMART這類型的樹模型進(jìn)行建模綜合相關(guān)性。同時,為了在粗排階段也把權(quán)威性,質(zhì)量性等考慮進(jìn)來,通常會將相關(guān)性,質(zhì)量性和權(quán)威性算子通過樹模型建模形成最終的粗排打分。
Fig 8. Query “蘋果糖怎么做” 中的“怎么做”和Title中的“制作教程”屬于語義上匹配。查找歌詞的時候通常要求完美匹配。
采用樹模型進(jìn)行綜合特征打分的建模,有許多優(yōu)勢。第一點,樹模型具有較好的可解釋性,在訓(xùn)練時候可以通過每個特征的分裂增益(split gain)進(jìn)行該特征重要性的判斷(特征權(quán)重),對于線上出現(xiàn)的bad case能分析是否是輸入中某個特征的影響,為模型特征的進(jìn)一步迭代提供方向。第二點,樹模型具有足夠的擬合能力,能夠挖掘出特征中的復(fù)雜模式關(guān)系,通過pointwise,pairwise,listwise等不同的樣本構(gòu)造和訓(xùn)練方式,樹模型能在不同的排序需求中發(fā)揮重要作用。與此同時樹模型也有些缺點,第一點,樹模型無法進(jìn)行特征交叉,輸入特征之間的更為深層次的交互信息無法通過樹模型建模(也許也不應(yīng)該由它建模?)。第二點,樹模型容易過擬合,需要恰當(dāng)?shù)貥?gòu)造訓(xùn)練數(shù)據(jù)進(jìn)行去偏。第三點,樹模型無法利用稠密向量特征,比如embedding特征。
不管怎么說,樹模型由于其解釋性(模型迭代的友好性)成為了普遍采用的技術(shù),不光是相關(guān)性樹模型,也可以對綜合滿意度進(jìn)行建模,比如輸入質(zhì)量相關(guān)特征,權(quán)威相關(guān)特征等。內(nèi)容的質(zhì)量性是一個和業(yè)務(wù)強(qiáng)相關(guān)的特征,對于網(wǎng)頁質(zhì)量而言,對網(wǎng)頁的結(jié)構(gòu)化信息更為看重,對于視頻圖片,對于其視覺信息更為看重,對于音樂內(nèi)容則更關(guān)心其音頻相關(guān)特征。由于其具有顯著的業(yè)務(wù)特點,在此科普類文章就不展開了。
通過樹模型,我們在粗排階段拿到了綜合相關(guān)性打分,綜合質(zhì)量性打分,綜合權(quán)威性打分,綜合時效性打分,通過閾值篩選可以將這些打分(score)劃分到不同的分檔(level)上,比如都劃分到0、1、2、3這四個分檔上。劃分分檔有一些好處,最主要的就是可以屏蔽打分分布的影響,在模型迭代過程中,模型的打分分布是可能發(fā)生變化的,有時候可能還是劇烈的變化。而下游的一些過濾策略,打壓策略,豁免策略可能依賴于這些打分,一旦打分分布發(fā)生變化,那么將會導(dǎo)致下游策略產(chǎn)生毀滅性的打擊。而采用了分檔之后,各個方向的同學(xué)只需要保證分檔的分布是不變的,那么就能保證下游策略不會受到影響。保證分檔分布不變只需要調(diào)整分檔閾值就能實現(xiàn),因此代價遠(yuǎn)比采用原始打分的來得小。通過閾值分檔后,我們得到了各類型分檔后,我們就開始考慮一些規(guī)則策略了,規(guī)則策略是必要的,因為某些類型的bad case很難用模型進(jìn)行解決。比如說某些query比較長尾,導(dǎo)致其相關(guān)結(jié)果很少,如果此時還過多考慮質(zhì)量性的影響,那么可能就沒有結(jié)果能夠被排上來了,此時需要豁免質(zhì)量的影響。再比如某些query有強(qiáng)烈的時效需求,但是由于模型中無法(或者難以)對時效進(jìn)行很好的建模(由于樣本不容易收集),導(dǎo)致相關(guān)的時效結(jié)果被其他影響因子給排下去了,此時就需要進(jìn)行規(guī)則提權(quán),將時效結(jié)果提權(quán)上來。模型雖然看起來“高大上”,但模型不是萬能的,作為搜索系統(tǒng)這種復(fù)雜系統(tǒng),如果不引入這些規(guī)則策略進(jìn)行保駕護(hù)航,那么解決這些corner case的成本是非常高的。
粗排是對多隊列進(jìn)行粗排序,在每個隊列中選擇一些結(jié)果出來組合成幾十個到一百個結(jié)果送到精排模型參與精排序。精排除了考慮相關(guān)性,質(zhì)量性,權(quán)威性時效性等外,還會考慮用戶的行為特征,比如CTR(Click Through Rate)預(yù)估,用戶后驗信號等。在精排中,由于待排序條目進(jìn)一步縮小到了幾十條,除了將粗排信號透傳至精排外,還可以采用更復(fù)雜的模型進(jìn)行建模,比如更深的Transformer模型。由于在精排里面排序是最接近用戶需求的結(jié)果,需要更兼顧相關(guān)性,質(zhì)量,權(quán)威時效,用戶行為等幾個目標(biāo)的影響,也稱為多目標(biāo)排序。為什么在精排里面要引入用戶行為特征呢?想象一個場景,如Fig 9.所示,在2014年《小蘋果》一曲剛發(fā)行的時候,用戶搜索了“小蘋果”,此時query分析中的NLP模塊由于不可能每天都進(jìn)行迭代,仍無法將“小蘋果”視為一首歌曲(Embedding中沒有歌曲的語義信息),此時就需要通過用戶的后驗信號進(jìn)行query的主要需求判斷。不同資源的用戶點擊率,停留時長,跳轉(zhuǎn)率,評論數(shù),點贊數(shù),轉(zhuǎn)發(fā)數(shù),投幣數(shù)等用戶后驗信號(User Posterior Signal,不同產(chǎn)品的后驗信號可能不同)都是不一樣的,這些用戶后驗信號可以幫助搜索系統(tǒng)判斷當(dāng)前query下用戶的主要需求,主要需求此時也就被定義為是大多數(shù)用戶會想要的結(jié)果。通過用戶后驗信號的指引,即便系統(tǒng)在理解Query的時候并沒有明白到歌曲需求,同樣可以把當(dāng)前大部分用戶想要的結(jié)果進(jìn)行召回和排序。但是用戶后驗信號通常是遵循28原則的,大部分非熱點資源,非高頻資源是沒有后驗信號的,甚至連點擊數(shù)都非常少,我們稱之為用戶信號稀疏,此時就需要想辦法進(jìn)行用戶信號的預(yù)估。CTR點擊率預(yù)估就是這樣一種對用戶點擊某個資源的概率進(jìn)行預(yù)測的一種技術(shù),通常會考慮將用戶歷史行為信息,用戶畫像,站點信息,甚至是用戶之間的相似程度(進(jìn)行FM矩陣分解,推薦系統(tǒng)中的經(jīng)典操作)引入進(jìn)行CTR預(yù)估。用戶后驗信號不僅可用于解決資源的主需求問題,還可以解決一部分資源的質(zhì)量判斷問題,對于某些資源質(zhì)量敏感的需求,在高質(zhì)量的內(nèi)容下用戶的行為會比低質(zhì)量內(nèi)容的顯著正向,通常可以用于挖掘資源的高質(zhì)信號。
Fig 9. 不同搜索引擎對于小蘋果的返回結(jié)果。好像寫得比預(yù)期中的要多不少內(nèi)容,剩下的內(nèi)容后續(xù)拾遺篇再繼續(xù)吧。
Reference
[1]. https://fesian.blog.csdn.net/article/details/125078683, 《【見聞錄系列】我所理解的“業(yè)務(wù)”》
[2]. https://blog.csdn.net/LoseInVain/article/details/116377189,《從零開始的搜索系統(tǒng)學(xué)習(xí)筆記》
[3]. https://blog.csdn.net/LoseInVain/article/details/123615027, 《工作一年時期的土豆總結(jié)——復(fù)雜度和困難度》
[4]. https://blog.csdn.net/LoseInVain/article/details/122735603, 《圖文多模態(tài)語義融合前的語義對齊——一種單雙混合塔多模態(tài)模型》
[5]. https://blog.csdn.net/lihui49/article/details/113342889, 《百度信息流和搜索業(yè)務(wù)中的彈性近線計算探索與應(yīng)用》
[6]. Wang, Sinong, Belinda Li, Madian Khabsa, Han Fang, and Hao Ma. “Linformer: Self-attention with linear complexity.” arXiv preprint arXiv:2006.04768 (2020).[7]. https://blog.csdn.net/LoseInVain/article/details/116242740, 《【論文極速看】 Linformer 線性復(fù)雜性的自注意力機(jī)制》
[8]. https://blog.csdn.net/LoseInVain/article/details/96651171, 《卷積網(wǎng)絡(luò)模型壓縮的若干總結(jié)》
[9]. https://blog.csdn.net/LoseInVain/article/details/109474701, 《緊致卷積網(wǎng)絡(luò)設(shè)計——Shift卷積算子》
[10]. Wu, B., Wan, A., Yue, X., Jin, P., Zhao, S., Golmant, N., … & Keutzer, K. (2018). Shift: A zero flop, zero parameter alternative to spatial convolutions. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 9127-9135).[11]. https://blog.csdn.net/LoseInVain/article/details/109563113, 《Shift-GCN網(wǎng)絡(luò)論文筆記》
[12]. Cheng, K., Zhang, Y., He, X., Chen, W., Cheng, J., & Lu, H. (2020). Skeleton-Based Action Recognition With Shift Graph Convolutional Network. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 183-192).
[13]. https://fesian.blog.csdn.net/article/details/119516894, 《CLIP-對比圖文多模態(tài)預(yù)訓(xùn)練的讀后感》
[14]. https://fesian.blog.csdn.net/article/details/119515146, 《MoCo 動量對比學(xué)習(xí)——一種維護(hù)超大負(fù)樣本訓(xùn)練的框架》
[15]. https://fesian.blog.csdn.net/article/details/120364242,《圖文搜索系統(tǒng)中的多模態(tài)模型:將MoCo應(yīng)用在多模態(tài)對比學(xué)習(xí)上》
[16]. https://fesian.blog.csdn.net/article/details/123767279, 《搜索系統(tǒng)中的Learning To Rank模型:GBRank》
[17]. https://fesian.blog.csdn.net/article/details/113429866, 《GBDT-梯度提升決策樹的一些思考》