近日,2018易觀A10大數(shù)據(jù)應(yīng)用峰會在北京如期召開,本次峰會以“數(shù)造未來 精益成長”為主題。來自國內(nèi)外的大數(shù)據(jù)實(shí)踐者、資本掌舵人、企業(yè)家、技術(shù)大咖、運(yùn)營專家、應(yīng)用開發(fā)者以及知名媒體人齊聚一堂,共同討論和分享在數(shù)據(jù)驅(qū)動下的企業(yè)精益成長之道。
蘇寧云商IT總部搜索算法團(tuán)隊(duì)負(fù)責(zé)人孫鵬飛
在10月27日下午舉行的數(shù)據(jù)挖掘?qū)稣搲希?strong>蘇寧云商IT總部搜索算法團(tuán)隊(duì)負(fù)責(zé)人孫鵬飛做了題為《蘇寧易購大數(shù)據(jù)在搜索中的應(yīng)用》的演講。演講主要分享了搜索數(shù)據(jù)挖掘應(yīng)用場景的具體體現(xiàn)。以下為其演講實(shí)錄:
今天分享的主要內(nèi)容是大數(shù)據(jù)技術(shù)在搜索當(dāng)中的應(yīng)用,我們首先來整體看下搜索為哪些產(chǎn)品提供服務(wù)?我們這里有蘇寧易購、蘇寧推客、PP視頻、蘇寧小店、蘇寧金融等,大家可以看到我們的數(shù)據(jù)已經(jīng)覆蓋到了線上和線下。
我們支撐這么多產(chǎn)品線,是因?yàn)椴捎昧巳龑拥捏w系架構(gòu)。最左邊這部分是我們數(shù)據(jù)生成模塊,中間是數(shù)據(jù)加工模塊,最右邊是數(shù)據(jù)應(yīng)用。我們可以看到,在數(shù)據(jù)生成模塊,主要由以下幾部分組成:Spider爬取的一些數(shù)據(jù)、商品數(shù)據(jù)、視頻等結(jié)構(gòu)化數(shù)據(jù),以及用戶行為數(shù)據(jù),最后一塊是我們的圖片庫,圖片庫包括商品的圖片信息,還有異構(gòu)圖片信息,我們都會根據(jù)不同的用戶場景建立不同的管道,為我們不同的業(yè)務(wù)提供服務(wù)。在數(shù)據(jù)加工層面,針對不同的業(yè)務(wù)場景去建立不同的業(yè)務(wù)模型,為我們數(shù)據(jù)應(yīng)用提供相應(yīng)的支持和服務(wù)。在數(shù)據(jù)應(yīng)用層里面都會把這些包裝好,對外提供相應(yīng)的服務(wù)。
搜索數(shù)據(jù)挖掘應(yīng)用場景
下面我來介紹一下今天主要分享內(nèi)容,即數(shù)據(jù)挖掘應(yīng)用場景。主要包括架構(gòu)方面的一些優(yōu)化、個(gè)性化搜索排序,還有Query分析、智能導(dǎo)購、知識圖譜等等。
首先我們先來看下架構(gòu)方面的優(yōu)化。我們知道搜索引擎都是對檢索的商品數(shù)據(jù)建立倒排,提供檢索服務(wù),根據(jù)用戶query去召回一些商品。但這只能解決80%的問題,20%的熱詞,召回商品數(shù)量非常多,直接影響召回速度,以至于我們后面的級聯(lián)排序無法正常實(shí)現(xiàn)。所以我們這里做了一個(gè)小小的嘗試,建立一個(gè)加權(quán)的倒排索引,使我們整體性能得到了提升。我們加權(quán)的依據(jù)是根據(jù)商品的瀏覽、購買等一些行為數(shù)據(jù),預(yù)先建模,并通過這個(gè)模型算出相應(yīng)的商品質(zhì)量分,通過商品質(zhì)量分干預(yù)這些商品在倒排表中出現(xiàn)的位置,做數(shù)據(jù)截?cái)?,加速我們的檢索性能。
優(yōu)化前后對比分析,可以看到整體的響應(yīng)時(shí)間縮短了近乎一倍,性能得到大幅提升。但是有人會問,我們這樣做會不會影響召回商品的質(zhì)量?其實(shí)恰恰相反,因?yàn)槲覀兪峭ㄟ^模型計(jì)算相應(yīng)的商品質(zhì)量分,保證在召回的過程當(dāng)中,把高質(zhì)量商品召回過來;同時(shí)基于截?cái)嗟臄?shù)據(jù)進(jìn)行排序提高了排序結(jié)果的精準(zhǔn)度,進(jìn)而提升整體服務(wù)質(zhì)量,使得用戶體驗(yàn)變得更好。
下面來介紹下搜索的大腦——Query分析系統(tǒng)。它主要是理解和分析用戶背后的意圖,包括如下幾個(gè)模塊:類目預(yù)測、智能糾錯(cuò)、成分識別、知識擴(kuò)展、品類關(guān)系識別,以及品牌關(guān)系識別。
在這里我們結(jié)合知識圖譜,以及關(guān)系模型去計(jì)算、分析Query的成分,最終識別出相應(yīng)的品類、品牌及屬性,理解用戶背后的意圖,為精準(zhǔn)召回提供服務(wù)。
搜索個(gè)性化排序。談到個(gè)性化,自然而然會想到千人千面。在電商領(lǐng)域,建立用戶畫像和商品畫像;對于用戶畫像,基于用戶的行為對用戶打標(biāo)簽,提取用戶的偏好及興趣標(biāo)簽。在建畫像的過程當(dāng)中,也遇到了一些問題。例如,如何去評價(jià)畫像的準(zhǔn)確度?此外,不同品類下它的購買力偏好是不一致的。比如說,一個(gè)用戶在手機(jī)品類下,他可能比較喜歡iPhone,iPhone在手機(jī)里應(yīng)該屬于一個(gè)高端品牌,所以他的購買力是一個(gè)高端用戶;但是他換到家電,換到冰箱洗衣機(jī)的時(shí)候,他可能是一個(gè)中低端的用戶,所以這個(gè)里面不同品類購買力是不一樣。
我們看一下是怎么構(gòu)建我們的用戶畫像?以及怎么把用戶畫像和我們的應(yīng)用結(jié)合起來?我們在做的過程中發(fā)現(xiàn)用戶畫像需要和Query系統(tǒng)結(jié)合起來,為引擎去提供服務(wù)。在這里有幾個(gè)好處:Query可以實(shí)時(shí)分析一個(gè)用戶的意圖,可以根據(jù)這個(gè)意圖對標(biāo)簽進(jìn)行一個(gè)裁減。同時(shí),還可以根據(jù)意圖,對標(biāo)簽進(jìn)行加權(quán),這樣可以更好地為整個(gè)引擎去提供服務(wù),并且可以制定一些排序策略。
下面看看是怎樣設(shè)計(jì)整體架構(gòu)?首先整體架構(gòu)是一個(gè)三層體系,online、offline、near-line。在offline階段,利用用戶行為數(shù)據(jù)、商品數(shù)據(jù)及外部異構(gòu)數(shù)據(jù),建立復(fù)雜的模型,獲得用戶的長期行為偏好;在near-line階段,對用戶行為數(shù)據(jù)進(jìn)行相應(yīng)的實(shí)時(shí)分析,建立一個(gè)準(zhǔn)實(shí)時(shí)的模型,計(jì)算用戶的短期偏好;在online階段,結(jié)合offline和near-line的模型數(shù)據(jù)以及query分析和反作弊系統(tǒng),建精排模型實(shí)現(xiàn)個(gè)性化排序。
介紹完架構(gòu)后,再介紹下算法模型體系。這里采用multi-task learning,從下至上依次是:input layer,representation layer,multi-task layer。下面舉例介紹下多任務(wù)學(xué)習(xí),如任務(wù)一是CTR任務(wù),在該任務(wù)中訓(xùn)練CTR模型,得到表示層的信息。將表示層信息應(yīng)用于任務(wù)二、任務(wù)三。此外,任務(wù)二里面可以對任務(wù)一里面學(xué)到的表示層的信息,進(jìn)行微調(diào),以滿足任務(wù)二的需求,共享表示層,加快模型的迭代速度。
剛才談到了個(gè)性化排序,有排序存在,就一定會有一些作弊行為,這里面在介紹下反作弊系統(tǒng),保障排序的公平、公正。下面來看看我們是怎么做的呢?最底層就是數(shù)據(jù)分析平臺,我們會把日志數(shù)據(jù)、商品數(shù)據(jù),還有店鋪的數(shù)據(jù)收集上來之后,進(jìn)行分析、提取相應(yīng)的feature,然后在識別引擎里進(jìn)行作弊識別,最終提供一個(gè)相應(yīng)的服務(wù)。
下面介紹一下,最核心的學(xué)習(xí)引擎,大家知道反作弊問題是一個(gè)樣本不均衡,作弊的數(shù)據(jù)比起正常的數(shù)據(jù)少了很多。所以我們在建模型之初考慮這一點(diǎn),采用集成學(xué)習(xí)思想,構(gòu)建多個(gè)弱分類器組成一個(gè)強(qiáng)度分類器,綜合地去判定是否屬于作弊行為,然后進(jìn)行相應(yīng)的輸出打分。
這幾年,隨著深度學(xué)習(xí)和大數(shù)據(jù)技術(shù)的發(fā)展,越來越多人將其結(jié)合起來,應(yīng)用于不同的產(chǎn)品上,特別是在智能導(dǎo)購類,智能助手類的應(yīng)用。我們團(tuán)隊(duì)很早的開始嘗試這方面的研發(fā)工作,2016年底的時(shí)候推出了第一版智能導(dǎo)購的產(chǎn)品。經(jīng)過了幾年改造,產(chǎn)品現(xiàn)在比較完善,不僅能支持智能導(dǎo)購,還可以支持售前、售后客服,甚至還支持其他助手類服務(wù)。
整體的架構(gòu)體系如下,首先最上層是處理用戶的輸入,包括語音和文本,將這些信息輸出到我們的路由層;路由層是兩部分組成,一個(gè)是分析這些數(shù)據(jù)背后的意圖,另一個(gè)是提取相應(yīng)的屬性信息,為不同的機(jī)器人引擎提供相應(yīng)的服務(wù);第三層是機(jī)器人引擎層,我們現(xiàn)在已經(jīng)接入了三大類的一個(gè)機(jī)器人:第一個(gè)機(jī)器人,任務(wù)型的機(jī)器人,比方說問天氣、訂票、財(cái)務(wù)機(jī)器人;第二個(gè)機(jī)器人,導(dǎo)購型的機(jī)器人,比如我想買手機(jī),買便宜型的手機(jī),這種是任務(wù)型的機(jī)器人;第三個(gè)機(jī)器人,閑聊型的機(jī)器人。
最下面這一層是我們API的服務(wù),以及由語料庫組成的知識庫等等。
下面詳細(xì)介紹一下各個(gè)模塊。先來介紹一下意圖識別,我們將意圖識別問題抽象成分類問題,在上線之初,利用SVM進(jìn)行意圖分類,它可以解決85%問答的需求,但是還有15%分析不出來,這是由于語義鴻溝造成的。所以我們考慮用深度學(xué)習(xí)技術(shù)去實(shí)現(xiàn)它,這里選用CNN的網(wǎng)絡(luò),沒有選用其他更復(fù)雜的網(wǎng)絡(luò)?因?yàn)槲覀儼l(fā)現(xiàn)CNN從準(zhǔn)確率和效率上可以滿足我們上線的需求。雖然可以通過復(fù)雜的網(wǎng)絡(luò)把準(zhǔn)確率提高一些,但是它的性能就會極具下降,這樣用戶體驗(yàn)就變得非常差,所以我們從準(zhǔn)確率和效率兩方面考慮,選擇了CNN。在CNN里面我們做了一個(gè)小小的改進(jìn),就是在輸入層融入了符號化向量特征,下面我會詳細(xì)介紹一下。比如,右邊是華為手機(jī)完整的知識圖譜,可以看到知識的表示。當(dāng)我們拿到用戶的Query信息,我們會結(jié)合知識圖譜對其進(jìn)行向量化,一同拼接作為CNN的輸入。這樣做的好處是通過增加一些feature,使得整個(gè)CNN準(zhǔn)確率進(jìn)一步提升;同時(shí),對性能上的損失不大,在上線要求的范圍內(nèi)。
再來介紹一下槽位提取,或者屬性提取。這個(gè)階段主要是把屬性抽取這個(gè)問題轉(zhuǎn)換成一個(gè)序列標(biāo)注問題。這里面我們嘗試了用字進(jìn)行序列標(biāo)注,還有用詞進(jìn)行序列標(biāo)注。但是在對比的過程中發(fā)現(xiàn),以詞進(jìn)行序列標(biāo)注的效果更好一些。我們通過一些案例去分析后,得出一個(gè)結(jié)論:因?yàn)樵~的語義信息可能更完整一些,在序列標(biāo)注的時(shí)候,就可以獲得更好的標(biāo)注效果。
下面我來介紹一下客服機(jī)器人。在客服問答中經(jīng)常用的一個(gè)技術(shù),就是基于檢索式的機(jī)器人,因?yàn)槲覀円呀?jīng)構(gòu)建了龐大的問答知識庫,95%的問題可以從庫中檢索出相應(yīng)的答案。故這里面采用了Deep Match模型,避免語義鴻溝的問題。
最后介紹一下搜索的知識圖譜,這幾年我們嘗試了很多新技術(shù),也沉淀下來去做了很多方面的嘗試;現(xiàn)有平臺也給我們提供的一些相應(yīng)服務(wù)和技術(shù)支撐上,基于此去構(gòu)建了整個(gè)知識圖譜。
可以看到,底層是由分布式的存儲、分布式的檢索、流式計(jì)算,以及人工標(biāo)注的系統(tǒng),自動標(biāo)注的系統(tǒng)構(gòu)成的。上面是知識獲取,知識獲取之后,會對這些知識進(jìn)一步提煉,提煉出所需要的一些實(shí)體,比方說構(gòu)建一些三元組,構(gòu)建一些邊的關(guān)系等,形成了我們的知識圖譜。
知識圖譜構(gòu)建完了之后,我們需要做另外一方面的嘗試,就是知識的推理。我們會預(yù)先推理出一些東西,存在庫里面,為圖譜的應(yīng)用提供服務(wù)。比如說會挖掘一些邊關(guān)系,還有一些知識的理解,一些實(shí)體的理解等等,為我們圖譜的應(yīng)用提供相應(yīng)的服務(wù)。
最后是應(yīng)用層,我們會對所有的產(chǎn)品提供服務(wù),比如剛才介紹的問答系統(tǒng),結(jié)合知識圖譜,提高意圖識別的精準(zhǔn)度。
之后是商品參數(shù)的一個(gè)糾錯(cuò)。因?yàn)橘I家在上架的新品過程中,經(jīng)常會遇到屬性維護(hù)錯(cuò)誤,掛錯(cuò)類目等問題,利用知識圖譜,建立相應(yīng)的模型,幫他糾錯(cuò),并且還可以主動提示這些商家應(yīng)該維護(hù)哪些信息。
最后一塊是Query分析,Query分析過程中大部分的數(shù)據(jù)支撐都來源于知識圖譜,知識圖譜的好壞直接影響Query分析結(jié)果。