深度学习在文本领域的应用
背景
近幾年以深度學(xué)習(xí)技術(shù)為核心的人工智能得到廣泛的關(guān)注,無論是學(xué)術(shù)界還是工業(yè)界,它們都把深度學(xué)習(xí)作為研究應(yīng)用的焦點(diǎn)。而深度學(xué)習(xí)技術(shù)突飛猛進(jìn)的發(fā)展離不開海量數(shù)據(jù)的積累、計(jì)算能力的提升和算法模型的改進(jìn)。本文主要介紹深度學(xué)習(xí)技術(shù)在文本領(lǐng)域的應(yīng)用,文本領(lǐng)域大致可分為4個(gè)維度:詞、句子、篇章、系統(tǒng)級(jí)應(yīng)用。
- 詞。分詞方面,從最經(jīng)典的前后向匹配到條件隨機(jī)場(chǎng)(Conditional Random Field,CRF)序列標(biāo)注,到現(xiàn)在Bi-LSTM+CRF模型,已經(jīng)不需要設(shè)計(jì)特征,從字粒度就能做到最好的序列標(biāo)注效果,并且可以推廣到文本中序列標(biāo)注問題上,比如詞性標(biāo)注和專門識(shí)別等。
- 句子。Parser方面,除詞粒度介紹的深度學(xué)習(xí)序列標(biāo)注外,還可以使用深度學(xué)習(xí)模型改善Shift-Reduce中間分類判斷效果;句子生成方面,可以通過序列到序列(Seq2Seq)模型訓(xùn)練自動(dòng)的句子生成器,可用于閑聊或者句子改寫等場(chǎng)景。
- 篇章。情感分析方面,可以使用卷積神經(jīng)網(wǎng)絡(luò)對(duì)輸入文本直接建模預(yù)測(cè)情感標(biāo)簽;閱讀理解方面,可以設(shè)計(jì)具有記憶功能的循環(huán)神經(jīng)網(wǎng)絡(luò)來做閱讀理解,這個(gè)也是近年非常熱的研究問題。
- 系統(tǒng)級(jí)應(yīng)用。信息檢索方面,把深度學(xué)習(xí)技術(shù)用在文本匹配做相似度計(jì)算,可以通過BOW、卷積神經(jīng)網(wǎng)絡(luò)或循環(huán)神經(jīng)網(wǎng)絡(luò)表示再學(xué)習(xí)匹配關(guān)系(如DSSM系列),還有使用DNN做排序模型(如Google的Wide & Deep等,后面會(huì)重點(diǎn)介紹);機(jī)器翻譯方面,源于Seq2Seq模型到Stack-LSTM + Attention等多層LSTM網(wǎng)絡(luò),使得基于詞的統(tǒng)計(jì)機(jī)器翻譯模型已經(jīng)被基于神經(jīng)網(wǎng)絡(luò)的翻譯模型超越,并且已經(jīng)應(yīng)用到產(chǎn)品中,比如谷歌翻譯、百度翻譯、有道翻譯等;智能交互方面,在做閑聊、對(duì)話、問答等系統(tǒng)時(shí)深度學(xué)習(xí)在分類、狀態(tài)管理(如深度強(qiáng)化學(xué)習(xí))、回復(fù)生成等環(huán)節(jié)都有很好的應(yīng)用。
總之,上面這些文本領(lǐng)域的深度學(xué)習(xí)應(yīng)用只是冰山一角,深度學(xué)習(xí)應(yīng)用還有知識(shí)圖譜、自動(dòng)摘要、語(yǔ)音、圖像文本生成等。總體趨勢(shì)是,各文本研究和應(yīng)用的方向都在嘗試深度學(xué)習(xí)技術(shù),并分別取得了進(jìn)展。在文本領(lǐng)域,如果想跟圖像、語(yǔ)音那樣取得突破性進(jìn)展還面臨重重困難,如不同任務(wù)的大規(guī)模標(biāo)注數(shù)據(jù)缺乏,如何建模能捕捉語(yǔ)言的邏輯性以及所蘊(yùn)含的地域、文化特色等等。限于篇幅,本文只對(duì)美團(tuán)在文本中應(yīng)用較多的文本匹配、排序模型進(jìn)行介紹。
基于深度學(xué)習(xí)的文本匹配
文本匹配在很多領(lǐng)域都有用到,尤其是信息檢索相關(guān)場(chǎng)景,比如搜索的Query和Doc、廣告中Query-Ad、搜索Suggestion中Query前綴和Query(見圖1)、關(guān)鍵詞推薦中Query和Query、文檔去重時(shí)Doc和Doc等。
文本匹配主要研究計(jì)算兩段文本的相似度問題。相似度問題包含兩層:一是兩段文本如何表示可使得計(jì)算機(jī)方便處理,這需要研究不同的表示方法效果的區(qū)別:二是如何定義相似度來作為優(yōu)化目標(biāo),如語(yǔ)義匹配相似度、點(diǎn)擊關(guān)系相似度、用戶行為相似度等,這和業(yè)務(wù)場(chǎng)景關(guān)系很緊密。
在解決這兩個(gè)問題過程中會(huì)遇到很多難題,其中一個(gè)難題就是設(shè)計(jì)模型如何充分考慮語(yǔ)義。因?yàn)橹形牡亩嗔x詞、同義詞非常普遍,它們?cè)诓煌恼Z(yǔ)境中表達(dá)的含義是不一樣的。比如蘋果多少錢一臺(tái)?蘋果多少錢一斤?對(duì)于前者,根據(jù)“一臺(tái)”能看出它是指蘋果品牌的電子設(shè)備,后者則是指水果。當(dāng)然,還有很多語(yǔ)言現(xiàn)象更加困難,比如語(yǔ)氣、語(yǔ)境、口語(yǔ)的不同表述等。
文本的表示和匹配是本節(jié)的主線,如何做到語(yǔ)義層面匹配就成為本節(jié)的主旨。 受到整體技術(shù)的演進(jìn)影響,文本的匹配技術(shù)同樣有一個(gè)順應(yīng)時(shí)代的技術(shù)歷程,如圖2所示。
1. 向量空間
1970年左右提出的向量空間模型,就是把文檔表示詞表維度的向量通過TF-IDF計(jì)算出詞的權(quán)重,比如一種標(biāo)準(zhǔn)詞表包含詞ID、詞和IDF,另一種是停用詞表,如圖3所示。
對(duì)文本“麗江的酒店價(jià)格”分詞去除停用詞后,得到麗江、酒店、價(jià)格,詞出現(xiàn)次數(shù)是1,查表IDF得到這句文本的表示:[0, 1.5, 2.1, 0, 0, …, 0, 4.1]。其中權(quán)重使用的是TF×IDF,TF是Term在文本里的頻次,IDF是逆文檔頻次,兩者定義有很多形式,如圖4所示。這里使用第二種定義。
向量空間模型用高維稀疏向量來表示文檔,簡(jiǎn)單明了。對(duì)應(yīng)維度使用TF-IDF計(jì)算,從信息論角度包含了詞和文檔的點(diǎn)互信息熵,以及文檔的信息編碼長(zhǎng)度。文檔有了向量表示,那么如何計(jì)算相似度?度量的公式有Jaccard、Cosine、Euclidean distance、BM25等,其中BM25是衡量文檔匹配相似度非常經(jīng)典的方法,公式如下:
向量空間模型雖然不能包含同義詞、多義詞的信息,且維度隨著詞典增大變得很大,但因?yàn)樗?jiǎn)單明了,效果不錯(cuò),目前仍然是各檢索系統(tǒng)必備的特征。
2. 矩陣分解
向量空間模型的高維度對(duì)語(yǔ)義信息刻畫不好,文檔集合會(huì)表示成高維稀疏大矩陣。1990年左右,有人研究通過矩陣分解的方法,把高維稀疏矩陣分解成兩個(gè)狹長(zhǎng)小矩陣,而這兩個(gè)低維矩陣包含了語(yǔ)義信息,這個(gè)過程即潛在語(yǔ)義分析。
假設(shè)有N篇文檔,共有V個(gè)詞,用TF-IDF的向量空間表示一個(gè)N×V的稀疏矩陣X,詞和文檔的語(yǔ)義分析就在這個(gè)共現(xiàn)矩陣上操作。這個(gè)共現(xiàn)矩陣通過奇異值分解, 能變成三個(gè)矩陣,狹長(zhǎng)矩陣U的維度是N×K,V的維度是K×V,中間是對(duì)角陣K×K維,如圖5所示。
經(jīng)過分解后,每個(gè)文檔由K維向量表示,(K<<V),代表了潛在語(yǔ)義信息,可以看成是文檔需要表達(dá)的語(yǔ)義空間表示。V矩陣代表詞在潛空間上的分布都是通過共現(xiàn)矩陣分解得到的。
潛在語(yǔ)義分析能對(duì)文檔或者詞做低維度語(yǔ)義表示,在做匹配時(shí)其性能較高(比如文檔有效詞數(shù)大于K),它包含語(yǔ)義信息,對(duì)于語(yǔ)義相同的一些文檔較準(zhǔn)確。但是,潛在語(yǔ)義分析對(duì)多義詞語(yǔ)義的建模不好,并且K維語(yǔ)義向量完全基于數(shù)學(xué)分解得到,物理含義不明確。因此,在2000年左右,為解決上述問題,主題模型出現(xiàn)了。
3. 主題模型
2000~2015年,以概率圖模型為基礎(chǔ)的主題模型掀起了一股熱潮,那么究竟這種模型有什么吸引大家的優(yōu)勢(shì)呢?
pLSA(Probabilistic Latent Semantic Analysis)
pLSA在潛在語(yǔ)義分析之上引入了主題概念。它是一種語(yǔ)義含義,對(duì)文檔的主題建模不再是矩陣分解,而是概率分布(比如多項(xiàng)式分布),這樣就能解決多義詞的分布問題,并且主題是有明確含義的。但這種分析的基礎(chǔ)仍然是文檔和詞的共現(xiàn)頻率,分析的目標(biāo)是建立詞/文檔與這些潛在主題的關(guān)系,而這種潛在主題進(jìn)而成為語(yǔ)義關(guān)聯(lián)的一種橋梁。這種轉(zhuǎn)變過渡可如圖6所示。
假設(shè)每篇文章都由若干主題構(gòu)成,每個(gè)主題的概率是p(z|d),在給定主題的條件下,每個(gè)詞都以一定的概率p(w|z)產(chǎn)生。這樣,文檔和詞的共現(xiàn)可以用一種產(chǎn)生式的方式來描述:
其概率圖模型如圖7所示:
可以通過EM算法把p(z|d)和p(w|z)作為參數(shù)來學(xué)習(xí),具體算法參考Thomas Hofmann的pLSA論文。需要學(xué)習(xí)的p(z|d)參數(shù)數(shù)目是主題數(shù)和文檔數(shù)乘的關(guān)系,p(w|z)是詞表數(shù)乘主題數(shù)的關(guān)系,參數(shù)空間很大,容易過擬合。因而我們引入多項(xiàng)式分布的共軛分布來做貝葉斯建模,即LDA使用的方法。
LDA(Latent Dirichlet Allocation)
如果說pLSA是頻度學(xué)派代表,那LDA就是貝葉斯學(xué)派代表。LDA通過引入Dirichlet分布作為多項(xiàng)式共軛先驗(yàn),在數(shù)學(xué)上完整解釋了一個(gè)文檔生成過程,其概率圖模型如圖8所示。
和pLSA概率圖模型不太一樣,LDA概率圖模型引入了兩個(gè)隨機(jī)變量α和β,它們就是控制參數(shù)分布的分布,即文檔-主題符合多項(xiàng)式分布。這個(gè)多項(xiàng)式分布的產(chǎn)生受Dirichlet先驗(yàn)分布控制,可以使用變分期望最大化(Variational EM)和吉布斯采樣(Gibbs Sampling)來推導(dǎo)參數(shù),這里不展開敘述。
總體來講,主題模型引入了“Topic”這個(gè)有物理含義的概念,并且模型通過共現(xiàn)信息能學(xué)到同義、多義、語(yǔ)義相關(guān)等信息。得到的主題概率分布作為表示,變得更加合理有意義。有了文檔的表示,在匹配時(shí),我們不僅可以使用之前的度量方式,還可以引入KL等度量分布的公式,這在文本匹配領(lǐng)域應(yīng)用很多。當(dāng)然,主題模型會(huì)存在一些問題,比如對(duì)短文本推斷效果不好、訓(xùn)練參數(shù)多速度慢、引入隨機(jī)過程建模避免主題數(shù)目人工設(shè)定不合理問題等。隨著研究進(jìn)一步發(fā)展,這些問題基本都有較好解決,比如針對(duì)訓(xùn)練速度慢的問題,從LDA到SparseLDA、AliasLDA, 再到LightLDA、WarpLDA等,采樣速度從O(K)降低O(1)到。
4. 深度學(xué)習(xí)
2013年,Tomas Mikolov發(fā)表了Word2Vec相關(guān)的論文,提出的兩個(gè)模型CBOW(Continuous Bag of Words,連續(xù)詞袋)和Skip-Gram能極快地訓(xùn)練出詞嵌入,并且能對(duì)詞向量加減運(yùn)算,這得到了廣泛關(guān)注。在這項(xiàng)工作之前,神經(jīng)網(wǎng)絡(luò)模型經(jīng)歷了很長(zhǎng)的演進(jìn)歷程。這里先介紹2003年Yoshua Bengio使用神經(jīng)網(wǎng)絡(luò)做語(yǔ)言模型的工作,Word2Vec也是眾多改進(jìn)之一。
神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型
在2003年,Yoshua Bengio使用神經(jīng)網(wǎng)絡(luò)來訓(xùn)練語(yǔ)言模型比N-Gram的效果好很多,網(wǎng)絡(luò)結(jié)構(gòu)如圖9所示。輸入是N-Gram的詞,預(yù)測(cè)下一個(gè)詞。前n個(gè)詞通過詞向量矩陣Matrix C(維度:n*emb_size)查出該詞的稠密向量C(w(t-1)),C(w(t-2));再分別連接到隱含層(Hidden Layer)做非線性變換;再和輸出層連接做Softmax預(yù)測(cè)下一個(gè)詞的概率;訓(xùn)練時(shí)根據(jù)最外層誤差反向傳播以調(diào)節(jié)網(wǎng)絡(luò)權(quán)重。可以看出,該模型的訓(xùn)練復(fù)雜度為O(n×emb_size + n×emb_size×hidden_size + hidden_size×output_size),其中n為5~10,emb_size為64~1024,hidden_size為64~1023,output_size是詞表大小,比如為10^7。因?yàn)镾oftmax在概率歸一化時(shí),需要所有詞的值,所以復(fù)雜度主要體現(xiàn)在最后一層。從此以后,提出了很多優(yōu)化算法,比如Hierarchical Softmax、噪聲對(duì)比估計(jì)(Noise Contrastive Estimation)等。
Word2Vec
Word2Vec的網(wǎng)絡(luò)結(jié)構(gòu)有CBOW和Skip-Gram兩種,如圖10所示。相比NNLM,Word2Vec減少了隱含層,只有投影層。輸出層是樹狀的Softmax,對(duì)每個(gè)詞做哈夫曼編碼,預(yù)測(cè)詞時(shí)只需要對(duì)路徑上的0、1編碼做預(yù)測(cè),從而復(fù)雜度從O(V)降低到O(log(V))。
以CBOW為例,算法流程如下:
(1) 上下文詞(窗口大小是Win)的詞向量對(duì)應(yīng)維相加映射到投影層。 (2) 投影層經(jīng)Sigmoid變換后預(yù)測(cè)當(dāng)前詞的編碼路徑(哈夫曼樹)。 (3) 使用交叉熵?fù)p失函數(shù)(Cross Entropy Loss)反向傳播,更新Embedding層參數(shù)和中間層參數(shù)。 (4) 訓(xùn)練使用反向傳播機(jī)制,優(yōu)化方法使用SGD。
從該算法流程可以看出,最外層的預(yù)測(cè)復(fù)雜度大幅降低,隱含層也去掉,這使得計(jì)算速度極大提高。該算法可得到詞的Dense 的Word Embedding,這是一個(gè)非常好的表示,可以用來計(jì)算文本的匹配度。但由于該模型的學(xué)習(xí)目標(biāo)是預(yù)測(cè)詞發(fā)生概率,即語(yǔ)言模型,所以從海量語(yǔ)料中學(xué)習(xí)到的是詞的通用語(yǔ)義信息,無法直接應(yīng)用于定制業(yè)務(wù)的匹配場(chǎng)景。能否根據(jù)業(yè)務(wù)場(chǎng)景對(duì)語(yǔ)義表示和匹配同時(shí)建模,以提升匹配效果呢?DSSM系列工作就充分考慮了表示和匹配。
DSSM系列
這類方法可以把表示和學(xué)習(xí)融合起來建模,比較有代表性的是微軟的相關(guān)工作。下面將介紹DSSM系列內(nèi)容。
(1) DSSM模型框架
DSSM網(wǎng)絡(luò)結(jié)構(gòu)如圖11所示:
使用搜索的點(diǎn)擊數(shù)據(jù)訓(xùn)練語(yǔ)義模型,輸入查詢Query(Q)和展現(xiàn)點(diǎn)擊的Doc(D)列表,先對(duì)Q和D做語(yǔ)義表示,再通過Q-DK的Cosine計(jì)算相似度,通過Softmax來區(qū)分點(diǎn)擊與否。其中,語(yǔ)義表示先使用詞散列對(duì)詞表做降維(比如英文字母的Ngram),經(jīng)過幾層全連接和非線性變化后得到128維的Q和D的表示。從實(shí)驗(yàn)結(jié)論可知,NDCG指標(biāo)提升還是很明顯的,如圖12所示。
**(2) CLSM **
在DSSM基礎(chǔ)上,CLSM增加了1維卷積和池化操作來獲取句子全局信息,如圖13所示。通過引入卷積操作,可以充分考慮窗口內(nèi)上下文的影響,從而保證詞在不同語(yǔ)境下的個(gè)性化語(yǔ)義。
對(duì)應(yīng)效果如圖14所示:
(3) LSTM-DSSM
LSTM-DSSM使用LSTM作為Q和D的表示,其他框架和DSSM一致,其網(wǎng)絡(luò)結(jié)構(gòu)圖如圖15所示。由于LSTM具備語(yǔ)義記憶功能且蘊(yùn)含了語(yǔ)序信息,因此更適合作為句子的表示。當(dāng)然也可以使用雙向LSTM以及注意力模型(Attention Model)。
美團(tuán)的深度學(xué)習(xí)文本匹配算法
文本的語(yǔ)義匹配作為自然語(yǔ)言處理經(jīng)典的問題,可以用在搜索、推薦、廣告等檢索系統(tǒng)的召回、排序中,還可以用在文本的去重、歸一、聚類、抽取等場(chǎng)景。語(yǔ)義匹配的常用技術(shù)和最新進(jìn)展前文已經(jīng)介紹了。
在美團(tuán)這樣典型的O2O應(yīng)用場(chǎng)景下,結(jié)果的呈現(xiàn)除了和用戶表達(dá)的語(yǔ)言層語(yǔ)義強(qiáng)相關(guān)之外,還和用戶意圖、用戶狀態(tài)強(qiáng)相關(guān)。用戶意圖即用戶是來干什么的?比如用戶在百度上搜索“關(guān)內(nèi)關(guān)外”,其意圖可能是想知道關(guān)內(nèi)和關(guān)外代表的地理區(qū)域范圍,“關(guān)內(nèi)”和“關(guān)外”被作為兩個(gè)詞進(jìn)行檢索。而在美團(tuán)上搜索“關(guān)內(nèi)關(guān)外”,用戶想找的可能是“關(guān)內(nèi)關(guān)外”這家飯店,“關(guān)內(nèi)關(guān)外”被作為一個(gè)詞來對(duì)待。再說用戶狀態(tài),一個(gè)在北京的用戶和一個(gè)在武漢的用戶,在百度或淘寶上搜索任何一個(gè)詞條,他們得到的結(jié)果不會(huì)差太多。但是在美團(tuán)這樣與地理位置強(qiáng)相關(guān)的應(yīng)用下就會(huì)完全不一樣。比如在武漢搜“黃鶴樓”,用戶找的可能是景點(diǎn)門票,而在北京搜索“黃鶴樓”,用戶找的很可能是一家飯店。
如何結(jié)合語(yǔ)言層信息和用戶意圖、用戶狀態(tài)來做語(yǔ)義匹配呢?
在短文本外引入部分O2O業(yè)務(wù)場(chǎng)景相關(guān)特征,將其融入到設(shè)計(jì)的深度學(xué)習(xí)語(yǔ)義匹配框架中,通過點(diǎn)擊/下單數(shù)據(jù)來指引語(yǔ)義匹配模型的優(yōu)化方向,最終把訓(xùn)練出的點(diǎn)擊相關(guān)性模型應(yīng)用到搜索相關(guān)業(yè)務(wù)中。
針對(duì)美團(tuán)場(chǎng)景設(shè)計(jì)的點(diǎn)擊相似度框架ClickNet,是比較輕量級(jí)的模型,兼顧了效果和性能兩方面,能很好推廣到線上應(yīng)用,如圖16所示。
- 表示層。Query和商家名分別用語(yǔ)義和業(yè)務(wù)特征表示,其中語(yǔ)義特征是核心,通過DNN/CNN/RNN/LSTM/GRU方法得到短文本的整體向量表示。另外會(huì)引入業(yè)務(wù)相關(guān)特征,比如用戶或商家的相關(guān)信息、用戶和商家距離、商家評(píng)價(jià)等。
- 學(xué)習(xí)層。通過多層全連接和非線性變化后,預(yù)測(cè)匹配得分,根據(jù)得分和標(biāo)簽來調(diào)整網(wǎng)絡(luò),以學(xué)習(xí)出Query和商家名的點(diǎn)擊匹配關(guān)系。
如果ClickNet算法框架上要訓(xùn)練效果很好的語(yǔ)義模型,還需要根據(jù)場(chǎng)景做模型調(diào)優(yōu)。首先,我們從訓(xùn)練語(yǔ)料做很多優(yōu)化,比如考慮樣本不均衡、樣本重要度等問題。其次,在模型參數(shù)調(diào)優(yōu)時(shí)考慮不同的優(yōu)化算法、網(wǎng)絡(luò)大小層次、超參數(shù)的調(diào)整等問題。
經(jīng)過模型訓(xùn)練優(yōu)化,該語(yǔ)義匹配模型已經(jīng)在美團(tuán)平臺(tái)搜索、廣告、酒店、旅游等召回和排序系統(tǒng)中上線,使訪購(gòu)率/收入/點(diǎn)擊率等指標(biāo)有很好的提升。
總結(jié)一下,深度學(xué)習(xí)應(yīng)用在語(yǔ)義匹配上,需要針對(duì)業(yè)務(wù)場(chǎng)景設(shè)計(jì)合適的算法框架。此外,深度學(xué)習(xí)算法雖然減少了特征工程工作,但模型調(diào)優(yōu)的難度會(huì)增加。因此可以將框架設(shè)計(jì)、業(yè)務(wù)語(yǔ)料處理、模型參數(shù)調(diào)優(yōu)三方面綜合起來考慮,實(shí)現(xiàn)一個(gè)效果和性能兼優(yōu)的模型。
基于深度學(xué)習(xí)的排序模型
排序模型簡(jiǎn)介
在搜索、廣告、推薦、問答等系統(tǒng)中,由于需要在召回的大量候選集合中選擇出有限的幾個(gè)用于展示,因此排序是很重要的一環(huán)。如何設(shè)計(jì)這個(gè)排序規(guī)則使得最終業(yè)務(wù)效果更好呢?這就需要復(fù)雜的排序模型。比如美團(tuán)搜索系統(tǒng)中的排序會(huì)考慮用戶歷史行為、本次查詢Query、商家信息等多維度信息,抽取設(shè)計(jì)出各種特征,通過海量數(shù)據(jù)的訓(xùn)練得到排序模型。這里只簡(jiǎn)要回顧排序模型類型和演進(jìn),重點(diǎn)介紹深度學(xué)習(xí)用在排序模型中的情況。
排序模型主要分類三類:Pointwise、Pairwise、Listwise,如圖17所示。Pointwise對(duì)單樣本做分類或者回歸,即預(yù)測(cè) 的得分作為排序準(zhǔn)則,比較有代表性的模型有邏輯回歸、XGBoost。Pairwise會(huì)考慮兩兩樣本之間偏序關(guān)系,轉(zhuǎn)化成單分類問題,比如 比 高,那這個(gè)Pair預(yù)測(cè)正,反之則負(fù),典型的模型有RankSVM、LambdaMART。第三類就是Listwise模型,排序整體作為優(yōu)化目標(biāo),通過預(yù)測(cè)分布和真實(shí)排序分布的差距來優(yōu)化模型,典型的模型如ListNet。 ,> ,> ,>
深度學(xué)習(xí)排序模型的演進(jìn)
在排序模型的發(fā)展中,神經(jīng)網(wǎng)絡(luò)很早就被用來做排序模型,比如2005年微軟研究院提出的RankNet使用神經(jīng)網(wǎng)絡(luò)做Pairwise學(xué)習(xí);2012年谷歌介紹了用深度學(xué)習(xí)做CTR的方法;與此同時(shí),百度開始在鳳巢中用深度學(xué)習(xí)做CTR,于2013年上線。隨著深度學(xué)習(xí)的普及,各大公司和研究機(jī)構(gòu)都在嘗試把深度學(xué)習(xí)應(yīng)用在排序中,比如谷歌的Wide & Deep、YouTube的DNN推薦模型等,前面介紹的DSSM也可用來排序。下面將對(duì)RankNet、Wide & Deep、YouTube的排序模型作簡(jiǎn)單介紹。
RankNet
RankNet是Pairwise的模型,同樣轉(zhuǎn)化為Pointwise來處理。比如一次查詢里,Di和Dj有偏序關(guān)系,前者比后者更相關(guān),那把兩者的特征作為神經(jīng)網(wǎng)絡(luò)的輸入,經(jīng)過一層非線性變化后,接入Loss來學(xué)習(xí)目標(biāo)。如果Di比Dj更相關(guān),那么預(yù)測(cè)的概率為下式,其中Si和Sj是對(duì)應(yīng)Doc的得分。
在計(jì)算得分時(shí)使用神經(jīng)網(wǎng)絡(luò),如圖18所示,每樣本的輸入特征作為第一層,經(jīng)過非線性變換后得到打分,計(jì)算得到Pair的得分后進(jìn)行反向傳播更新參數(shù),這里可以使用Mini-Batch。由于RankNet需要預(yù)測(cè)的概率公式具有傳遞性,即Di和Dj的偏序概率可以由Di和Dk以及Dk和Dj得到,因此RankNet把計(jì)算復(fù)雜度從O(n2)變成了O(n),具體介紹可參考文獻(xiàn)。
當(dāng)然,后續(xù)研究發(fā)現(xiàn),RankNet以減少錯(cuò)誤Pair為優(yōu)化目標(biāo),對(duì)NDCG等指標(biāo)(關(guān)心相關(guān)文檔所在位置)衡量的效果不是太好,于是后面出現(xiàn)了改進(jìn)模型,如LambdaRank。RankNet是典型的神經(jīng)網(wǎng)絡(luò)排序模型,但當(dāng)時(shí)工業(yè)界用得多的還是簡(jiǎn)單的線性模型,如邏輯回歸,線性模型通過大量的人工設(shè)計(jì)特征來提高效果,模型解釋性好性能也高。當(dāng)人工設(shè)計(jì)特征到一定程度就遇到了瓶頸,而深度學(xué)習(xí)能通過原始的特征學(xué)習(xí)出復(fù)雜的關(guān)系,很大程度減輕了特征工程的工作。并且GPU、FPGA等高性能輔助處理器變得普及,從而促進(jìn)了深度神經(jīng)網(wǎng)絡(luò)做排序模型的廣泛研究。
Wide&Deep
谷歌發(fā)表過一篇論文“Wide & Deep Learning”,其觀點(diǎn)可以用在推薦里,比如谷歌的Apps推薦利用此觀點(diǎn)取得很好的效果,并把模型發(fā)布在TensorFlow中。Wide & Deep整體模型結(jié)構(gòu)分為Wide和Deep兩部分,這兩部分在最外層合并一起來學(xué)習(xí)模型,如圖19所示。輸入都是稀疏特征,但特征分為兩種:一種適合做Deep的深度網(wǎng)絡(luò)變化,適合時(shí)效性或者記憶性的特征,比如統(tǒng)計(jì)特征或者展示位置等;另一種可以直接連在最外層,適合有推廣力但需要深度組合抽樣的特征,比如品類、類型等。在模型優(yōu)化時(shí)兩部分做聯(lián)合優(yōu)化,Wide部分使用FTRL,而Deep使用Adagrad算法。這樣,Wide和Deep對(duì)不同類型特征區(qū)分開來,充分發(fā)揮各自作用,解釋性比較好。
這種思路其實(shí)可以做些擴(kuò)展。比如Wide連接不是在最外層,而是在某一層,Deep的某些層也可以連接到最外層,這樣能充分利用不同層抽象的Dense信息。與Wide & Deep的網(wǎng)絡(luò)連接方式類似,如2003年NNLM和2010年RNNLM模型里的直接連接(Direct Connection),其淺層和深層的結(jié)合能很好地加速收斂,深度學(xué)習(xí)的Highway方式也是類似的。目前Wide & Deep應(yīng)用較多,比如在阿里巴巴就有比較好的應(yīng)用。
YouTube DNN排序模型
YouTube用來預(yù)測(cè)用戶觀看視頻時(shí)長(zhǎng),轉(zhuǎn)化為加權(quán)的邏輯回歸問題。DNN排序模型和前面的工作類似,其網(wǎng)絡(luò)結(jié)構(gòu)是標(biāo)準(zhǔn)的前饋神經(jīng)網(wǎng)絡(luò),如圖20所示。DNN排序模型的特點(diǎn)還是在輸入特征上。雖然深度學(xué)習(xí)模型對(duì)特征工程要求很低,但很多數(shù)據(jù)需要經(jīng)過簡(jiǎn)單處理后才可加入模型。圖20中的特征分為很多域,比如語(yǔ)言方面、視頻方面、用戶歷史看過的視頻ID,還有之前觀看時(shí)長(zhǎng)的統(tǒng)計(jì)量和歸一化的值。離散值經(jīng)過Embedding的處理后變成連續(xù)向量,再級(jí)聯(lián)起來經(jīng)過多層非線性變化后來預(yù)測(cè)最終的標(biāo)簽。
從上面介紹的深度學(xué)習(xí)相關(guān)排序模型可以看出,排序模型所需要的數(shù)據(jù)類型多種多樣,數(shù)據(jù)的含義也各有不同,不同于圖像、語(yǔ)音領(lǐng)域單一的輸入形式。因此在做排序模型中,輸入特征的選取和表示方式是很重要的,比如連續(xù)特征、離散特征處理、用戶歷史、文檔特征的區(qū)分等。在美團(tuán)場(chǎng)景中,設(shè)計(jì)排序模型需考慮業(yè)務(wù)特點(diǎn),對(duì)輸入特征的表示做很多嘗試。
美團(tuán)的深度學(xué)習(xí)排序模型嘗試
在語(yǔ)義匹配模型中介紹了ClickNet框架,其實(shí)該框架同時(shí)也可用于排序,與語(yǔ)義匹配的區(qū)別主要在表示層,如圖21所示。如果ClickNet用作搜索的CTR模型,那表示層的Query和Title的語(yǔ)義特征只是一部分,還有用戶查詢、用戶行為、商家信息以及交叉組合特征都可以作為業(yè)務(wù)特征,并按特征的類型分不同的域。進(jìn)一步講,如果場(chǎng)景不包含語(yǔ)義匹配,模型的輸入可以只有業(yè)務(wù)特征。下面簡(jiǎn)單講解在美團(tuán)用ClickNet做排序模型的嘗試。
ClickNet-v1
ClickNet設(shè)計(jì)的初衷是它作為文本的匹配模型,并作為一維語(yǔ)義特征加入到業(yè)務(wù)的Rank模型中以提升效果。但根據(jù)上線之后的數(shù)據(jù)分析,我們發(fā)現(xiàn)以語(yǔ)義特征表示為主、輔以部分業(yè)務(wù)特征的ClickNet在排序系統(tǒng)中有更好的表現(xiàn)。我們針對(duì)排序模型做了如下改進(jìn)。
- (1) 業(yè)務(wù)特征選取。從業(yè)務(wù)方Rank已有的人工特征中,選取O2O有代表性的且沒經(jīng)過高級(jí)處理過的特征,比如用戶位置、商家位置、用戶歷史信息、商家評(píng)價(jià)星級(jí)、業(yè)務(wù)的季節(jié)性等。
- (2) 特征離散化。選取的業(yè)務(wù)特征做離散化處理,比如按特征區(qū)間離散化等。
- (3) 樣本處理。針對(duì)業(yè)務(wù)需要對(duì)正負(fù)例采樣,對(duì)點(diǎn)擊、下單、付費(fèi)做不同的加權(quán)操作。
- (4) 信息的融合。通過引入Gate來控制語(yǔ)義特征和各業(yè)務(wù)特征的融合,而不僅是求和或者級(jí)聯(lián),通過樣本學(xué)習(xí)出Gate的參數(shù)。
針對(duì)業(yè)務(wù)Rank的目標(biāo)優(yōu)化ClickNet后,效果有很大改善,但模型還是偏重于語(yǔ)義特征。能否直接使用ClickNet做排序模型呢?答案是可以的。只需要加重業(yè)務(wù)特征、弱化或者去除語(yǔ)義表示特征就可以,這樣修改后的模型就是ClickNet-v2。
ClickNet-v2
ClickNet-v2以業(yè)務(wù)特征為主,替換業(yè)務(wù)Rank模型為目標(biāo),使用業(yè)務(wù)特征作為ClickNet的表示層輸入,通過對(duì)各特征離散化后傳入模型。和ClickNet-v1不一樣的是,ClickNet-v2業(yè)務(wù)特征種類繁多,需要做深度的分析和模型設(shè)計(jì)。
比如如何考慮位置偏好問題?因?yàn)檎故疚恢脮?huì)有前后順序,后面的展示不容易被用戶看到,從而天然點(diǎn)擊率會(huì)偏低。一種解決思路是可以把位置信息直接連接到最外層,不做特征組合處理。
再比如各業(yè)務(wù)特征通過多層非線性變化后,特征組合是否充分?一種解決思路是使用多項(xiàng)式非線性變換,這能很好組合多層的特征。
又比如模型組合的效果是否更好?一種解決思路是嘗試FM和ClickNet的級(jí)聯(lián),或者各模型的Bagging。
此外還有模型的解釋性等很多和業(yè)務(wù)場(chǎng)景相關(guān)的情況需要考慮。
ClickNet是基于自研的深度學(xué)習(xí)框架Ginger實(shí)現(xiàn)的,收斂速度和效果都非常理想。我們來看看分類任務(wù)上的一些測(cè)試,如圖22所示。在Higgs數(shù)據(jù)上,基于Ginger的ClickNet比基于XGBoost的AUC提升34個(gè)千分點(diǎn),使用TensorFlow實(shí)現(xiàn)的ClickNet比基于Ginger的AUC差3個(gè)千分點(diǎn),且其速度慢于Ginger。如圖23所示,ClickNet相比線性模型,其準(zhǔn)確率都有較好的提升。
總結(jié)
因?yàn)樯疃葘W(xué)習(xí)的擬合能力強(qiáng)、對(duì)特征工程要求低,它在文本領(lǐng)域已經(jīng)有很多應(yīng)用。本章以語(yǔ)義匹配和排序模型為例,分別介紹了業(yè)界進(jìn)展和美團(tuán)場(chǎng)景的應(yīng)用。
第一部分介紹了語(yǔ)義匹配經(jīng)歷的向量空間、潛在語(yǔ)義分析、主題模型、深度學(xué)習(xí)幾個(gè)階段,重點(diǎn)介紹了深度學(xué)習(xí)應(yīng)用在語(yǔ)義匹配上的Embedding和DSSM系列模型,以及美團(tuán)嘗試的ClickNet模型。第二部分介紹了深度學(xué)習(xí)在排序模型的一些進(jìn)展和美團(tuán)的一些嘗試。除了這兩部分內(nèi)容外,深度學(xué)習(xí)幾乎滲透了文本的各方面,美團(tuán)還有很多嘗試方式,比如情感分析、對(duì)話系統(tǒng)、摘要生成、關(guān)鍵詞生成等,限于篇幅不做介紹。總之,認(rèn)知智能還有很長(zhǎng)的路需要走,語(yǔ)言文字是人類歷史的文化沉淀,涉及語(yǔ)義、邏輯、文化、情感等眾多復(fù)雜的問題。我們相信,深度學(xué)習(xí)在文本領(lǐng)域很快會(huì)有很大突破。
參考文獻(xiàn)
- [1] Thomas Hofmann. “Probabilistic Latent Semantic Analysis”. 1999.
- [2] David M.Blei, Andrew Y.Ng, Michael Jordan. “Latent Dirichlet Allocation” . 2002.
- [3] Huang, Po-Sen et al. “Learning deep structured semantic models for web search using clickthrough data” in CIKM 2013.
- [4] Shen, Yelong, He, Xiaodong, Gao, Jianfeng, et al. “A latent semantic model with convolutional-pooling structure for information retrieval” in CIKM 2014.
- [5] H. Palangi et al. “Semantic modeling with long-short-term memory for information retrieval”. 2015.
團(tuán)隊(duì)簡(jiǎn)介
美團(tuán)點(diǎn)評(píng)算法團(tuán)隊(duì)是整個(gè)美團(tuán)點(diǎn)評(píng)技術(shù)團(tuán)隊(duì)的“大腦”,涵蓋搜索、推薦、廣告、智能調(diào)度、自然語(yǔ)言處理、計(jì)算機(jī)視覺、機(jī)器人以及無人駕駛等多個(gè)技術(shù)領(lǐng)域。幫助美團(tuán)點(diǎn)評(píng)數(shù)億活躍用戶改善了用戶體驗(yàn),也幫助餐飲、酒店、結(jié)婚、麗人、親子等200多個(gè)品類的數(shù)百萬商戶提升了運(yùn)營(yíng)效率。目前,美團(tuán)點(diǎn)評(píng)算法團(tuán)隊(duì)在人工智能領(lǐng)域進(jìn)行積極的探索和研究,不斷創(chuàng)新與實(shí)踐,致力于應(yīng)用最前沿的技術(shù),給廣告大消費(fèi)者帶來更好的生活服務(wù)體驗(yàn)。
總結(jié)
以上是生活随笔為你收集整理的深度学习在文本领域的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网企业安全之端口监控
- 下一篇: ICDAR 2019论文:自然场景文字定