近幾年以深度學習技術爲核心的人工智能獲得普遍的關注,不管是學術界仍是工業界,它們都把深度學習做爲研究應用的焦點。而深度學習技術日新月異的發展離不開海量數據的積累、計算能力的提高和算法模型的改進。本文主要介紹深度學習技術在文本領域的應用,文本領域大體可分爲4個維度:詞、句子、篇章、系統級應用。web
總之,上面這些文本領域的深度學習應用只是冰山一角,深度學習應用還有知識圖譜、自動摘要、語音、圖像文本生成等。整體趨勢是,各文本研究和應用的方向都在嘗試深度學習技術,並分別取得了進展。在文本領域,若是想跟圖像、語音那樣取得突破性進展還面臨重重困難,如不一樣任務的大規模標註數據缺少,如何建模能捕捉語言的邏輯性以及所蘊含的地域、文化特點等等。限於篇幅,本文只對美團在文本中應用較多的文本匹配、排序模型進行介紹。算法
文本匹配在不少領域都有用到,尤爲是信息檢索相關場景,好比搜索的Query和Doc、廣告中Query-Ad、搜索Suggestion中Query前綴和Query(見圖1)、關鍵詞推薦中Query和Query、文檔去重時Doc和Doc等。網絡
文本匹配主要研究計算兩段文本的類似度問題。類似度問題包含兩層:一是兩段文本如何表示可以使得計算機方便處理,這須要研究不一樣的表示方法效果的區別:二是如何定義類似度來做爲優化目標,如語義匹配類似度、點擊關係類似度、用戶行爲類似度等,這和業務場景關係很緊密。框架
在解決這兩個問題過程當中會遇到不少難題,其中一個難題就是設計模型如何充分考慮語義。由於中文的多義詞、同義詞很是廣泛,它們在不一樣的語境中表達的含義是不同的。好比蘋果多少錢一臺?蘋果多少錢一斤?對於前者,根據「一臺」能看出它是指蘋果品牌的電子設備,後者則是指水果。固然,還有不少語言現象更加困難,好比語氣、語境、口語的不一樣表述等。dom
文本的表示和匹配是本節的主線,如何作到語義層面匹配就成爲本節的主旨。 受到總體技術的演進影響,文本的匹配技術一樣有一個順應時代的技術歷程,如圖2所示。ide
1970年左右提出的向量空間模型,就是把文檔表示詞表維度的向量經過TF-IDF計算出詞的權重,好比一種標準詞表包含詞ID、詞和IDF,另外一種是停用詞表,如圖3所示。函數
對文本「麗江的酒店價格」分詞去除停用詞後,獲得麗江、酒店、價格,詞出現次數是1,查表IDF獲得這句文本的表示:[0, 1.5, 2.1, 0, 0, …, 0, 4.1]。其中權重使用的是TF×IDF,TF是Term在文本里的頻次,IDF是逆文檔頻次,二者定義有不少形式,如圖4所示。這裏使用第二種定義。性能
向量空間模型用高維稀疏向量來表示文檔,簡單明瞭。對應維度使用TF-IDF計算,從信息論角度包含了詞和文檔的點互信息熵,以及文檔的信息編碼長度。文檔有了向量表示,那麼如何計算類似度?度量的公式有Jaccard、Cosine、Euclidean distance、BM25等,其中BM25是衡量文檔匹配類似度很是經典的方法,公式以下:學習
向量空間模型雖然不能包含同義詞、多義詞的信息,且維度隨着詞典增大變得很大,但由於它簡單明瞭,效果不錯,目前仍然是各檢索系統必備的特徵。測試
向量空間模型的高維度對語義信息刻畫很差,文檔集合會表示成高維稀疏大矩陣。1990年左右,有人研究經過矩陣分解的方法,把高維稀疏矩陣分解成兩個狹長小矩陣,而這兩個低維矩陣包含了語義信息,這個過程即潛在語義分析。
假設有N篇文檔,共有V個詞,用TF-IDF的向量空間表示一個N×V的稀疏矩陣X,詞和文檔的語義分析就在這個共現矩陣上操做。這個共現矩陣經過奇異值分解, 能變成三個矩陣,狹長矩陣U的維度是N×K,V的維度是K×V,中間是對角陣K×K維,如圖5所示。
通過分解後,每一個文檔由K維向量表示,(K<<V),表明了潛在語義信息,能夠當作是文檔須要表達的語義空間表示。V矩陣表明詞在潛空間上的分佈都是經過共現矩陣分解獲得的。
潛在語義分析能對文檔或者詞作低維度語義表示,在作匹配時其性能較高(好比文檔有效詞數大於K),它包含語義信息,對於語義相同的一些文檔較準確。可是,潛在語義分析對多義詞語義的建模很差,而且K維語義向量徹底基於數學分解獲得,物理含義不明確。所以,在2000年左右,爲解決上述問題,主題模型出現了。
2000~2015年,以機率圖模型爲基礎的主題模型掀起了一股熱潮,那麼究竟這種模型有什麼吸引你們的優點呢?
pLSA(Probabilistic Latent Semantic Analysis)
pLSA在潛在語義分析之上引入了主題概念。它是一種語義含義,對文檔的主題建模再也不是矩陣分解,而是機率分佈(好比多項式分佈),這樣就能解決多義詞的分佈問題,而且主題是有明確含義的。但這種分析的基礎仍然是文檔和詞的共現頻率,分析的目標是創建詞/文檔與這些潛在主題的關係,而這種潛在主題進而成爲語義關聯的一種橋樑。這種轉變過渡可如圖6所示。
假設每篇文章都由若干主題構成,每一個主題的機率是p(z|d),在給定主題的條件下,每一個詞都以必定的機率p(w|z)產生。這樣,文檔和詞的共現能夠用一種產生式的方式來描述:
其機率圖模型如圖7所示:
能夠經過EM算法把p(z|d)和p(w|z)做爲參數來學習,具體算法參考Thomas Hofmann的pLSA論文。須要學習的p(z|d)參數數目是主題數和文檔數乘的關係,p(w|z)是詞表數乘主題數的關係,參數空間很大,容易過擬合。於是咱們引入多項式分佈的共軛分佈來作貝葉斯建模,即LDA使用的方法。
LDA(Latent Dirichlet Allocation)
若是說pLSA是頻度學派表明,那LDA就是貝葉斯學派表明。LDA經過引入Dirichlet分佈做爲多項式共軛先驗,在數學上完整解釋了一個文檔生成過程,其機率圖模型如圖8所示。
和pLSA機率圖模型不太同樣,LDA機率圖模型引入了兩個隨機變量α和β,它們就是控制參數分佈的分佈,即文檔-主題符合多項式分佈。這個多項式分佈的產生受Dirichlet先驗分佈控制,可使用變分指望最大化(Variational EM)和吉布斯採樣(Gibbs Sampling)來推導參數,這裏不展開敘述。
整體來說,主題模型引入了「Topic」這個有物理含義的概念,而且模型經過共現信息能學到同義、多義、語義相關等信息。獲得的主題機率分佈做爲表示,變得更加合理有意義。有了文檔的表示,在匹配時,咱們不只可使用以前的度量方式,還能夠引入KL等度量分佈的公式,這在文本匹配領域應用不少。固然,主題模型會存在一些問題,好比對短文本推斷效果很差、訓練參數多速度慢、引入隨機過程建模避免主題數目人工設定不合理問題等。隨着研究進一步發展,這些問題基本都有較好解決,好比針對訓練速度慢的問題,從LDA到SparseLDA、AliasLDA, 再到LightLDA、WarpLDA等,採樣速度從O(K)下降O(1)到。
2013年,Tomas Mikolov發表了Word2Vec相關的論文,提出的兩個模型CBOW(Continuous Bag of Words,連續詞袋)和Skip-Gram能極快地訓練出詞嵌入,而且能對詞向量加減運算,這獲得了普遍關注。在這項工做以前,神經網絡模型經歷了很長的演進歷程。這裏先介紹2003年Yoshua Bengio使用神經網絡作語言模型的工做,Word2Vec也是衆多改進之一。
神經網絡語言模型
在2003年,Yoshua Bengio使用神經網絡來訓練語言模型比N-Gram的效果好不少,網絡結構如圖9所示。輸入是N-Gram的詞,預測下一個詞。前n個詞經過詞向量矩陣Matrix C(維度:n*emb_size)查出該詞的稠密向量C(w(t-1)),C(w(t-2));再分別鏈接到隱含層(Hidden Layer)作非線性變換;再和輸出層鏈接作Softmax預測下一個詞的機率;訓練時根據最外層偏差反向傳播以調節網絡權重。能夠看出,該模型的訓練複雜度爲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。由於Softmax在機率歸一化時,須要全部詞的值,因此複雜度主要體如今最後一層。今後之後,提出了不少優化算法,好比Hierarchical Softmax、噪聲對比估計(Noise Contrastive Estimation)等。
Word2Vec
Word2Vec的網絡結構有CBOW和Skip-Gram兩種,如圖10所示。相比NNLM,Word2Vec減小了隱含層,只有投影層。輸出層是樹狀的Softmax,對每一個詞作哈夫曼編碼,預測詞時只須要對路徑上的0、1編碼作預測,從而複雜度從O(V)下降到O(log(V))。
以CBOW爲例,算法流程以下:
(1) 上下文詞(窗口大小是Win)的詞向量對應維相加映射到投影層。 (2) 投影層經Sigmoid變換後預測當前詞的編碼路徑(哈夫曼樹)。 (3) 使用交叉熵損失函數(Cross Entropy Loss)反向傳播,更新Embedding層參數和中間層參數。 (4) 訓練使用反向傳播機制,優化方法使用SGD。
從該算法流程能夠看出,最外層的預測複雜度大幅下降,隱含層也去掉,這使得計算速度極大提升。該算法可獲得詞的Dense 的Word Embedding,這是一個很是好的表示,能夠用來計算文本的匹配度。但因爲該模型的學習目標是預測詞發生機率,即語言模型,因此從海量語料中學習到的是詞的通用語義信息,沒法直接應用於定製業務的匹配場景。可否根據業務場景對語義表示和匹配同時建模,以提高匹配效果呢?DSSM系列工做就充分考慮了表示和匹配。
DSSM系列
這類方法能夠把表示和學習融合起來建模,比較有表明性的是微軟的相關工做。下面將介紹DSSM系列內容。
(1) DSSM模型框架
DSSM網絡結構如圖11所示:
使用搜索的點擊數據訓練語義模型,輸入查詢Query(Q)和展示點擊的Doc(D)列表,先對Q和D作語義表示,再經過Q-DK的Cosine計算類似度,經過Softmax來區分點擊與否。其中,語義表示先使用詞散列對詞表作降維(好比英文字母的Ngram),通過幾層全鏈接和非線性變化後獲得128維的Q和D的表示。從實驗結論可知,NDCG指標提高仍是很明顯的,如圖12所示。
(2) CLSM
在DSSM基礎上,CLSM增長了1維卷積和池化操做來獲取句子全局信息,如圖13所示。經過引入卷積操做,能夠充分考慮窗口內上下文的影響,從而保證詞在不一樣語境下的個性化語義。
對應效果如圖14所示:
(3) LSTM-DSSM
LSTM-DSSM使用LSTM做爲Q和D的表示,其餘框架和DSSM一致,其網絡結構圖如圖15所示。因爲LSTM具有語義記憶功能且蘊含了語序信息,所以更適合做爲句子的表示。固然也可使用雙向LSTM以及注意力模型(Attention Model)。
文本的語義匹配做爲天然語言處理經典的問題,能夠用在搜索、推薦、廣告等檢索系統的召回、排序中,還能夠用在文本的去重、歸1、聚類、抽取等場景。語義匹配的經常使用技術和最新進展前文已經介紹了。
在美團這樣典型的O2O應用場景下,結果的呈現除了和用戶表達的語言層語義強相關以外,還和用戶意圖、用戶狀態強相關。用戶意圖即用戶是來幹什麼的?好比用戶在百度上搜索「關內關外」,其意圖多是想知道關內和關外表明的地理區域範圍,「關內」和「關外」被做爲兩個詞進行檢索。而在美團上搜索「關內關外」,用戶想找的多是「關內關外」這家飯店,「關內關外」被做爲一個詞來對待。再說用戶狀態,一個在北京的用戶和一個在武漢的用戶,在百度或淘寶上搜索任何一個詞條,他們獲得的結果不會差太多。可是在美團這樣與地理位置強相關的應用下就會徹底不同。好比在武漢搜「黃鶴樓」,用戶找的多是景點門票,而在北京搜索「黃鶴樓」,用戶找的極可能是一家飯店。
如何結合語言層信息和用戶意圖、用戶狀態來作語義匹配呢?
在短文本外引入部分O2O業務場景相關特徵,將其融入到設計的深度學習語義匹配框架中,經過點擊/下單數據來指引語義匹配模型的優化方向,最終把訓練出的點擊相關性模型應用到搜索相關業務中。
針對美團場景設計的點擊類似度框架ClickNet,是比較輕量級的模型,兼顧了效果和性能兩方面,能很好推廣到線上應用,如圖16所示。
若是ClickNet算法框架上要訓練效果很好的語義模型,還須要根據場景作模型調優。首先,咱們從訓練語料作不少優化,好比考慮樣本不均衡、樣本重要度等問題。其次,在模型參數調優時考慮不一樣的優化算法、網絡大小層次、超參數的調整等問題。
通過模型訓練優化,該語義匹配模型已經在美團平臺搜索、廣告、酒店、旅遊等召回和排序系統中上線,使訪購率/收入/點擊率等指標有很好的提高。
總結一下,深度學習應用在語義匹配上,須要針對業務場景設計合適的算法框架。此外,深度學習算法雖然減小了特徵工程工做,但模型調優的難度會增長。所以能夠將框架設計、業務語料處理、模型參數調優三方面綜合起來考慮,實現一個效果和性能兼優的模型。
在搜索、廣告、推薦、問答等系統中,因爲須要在召回的大量候選集合中選擇出有限的幾個用於展現,所以排序是很重要的一環。如何設計這個排序規則使得最終業務效果更好呢?這就須要複雜的排序模型。好比美團搜索系統中的排序會考慮用戶歷史行爲、本次查詢Query、商家信息等多維度信息,抽取設計出各類特徵,經過海量數據的訓練獲得排序模型。這裏只簡要回顧排序模型類型和演進,重點介紹深度學習用在排序模型中的狀況。
排序模型主要分類三類:Pointwise、Pairwise、Listwise,如圖17所示。Pointwise對單樣本作分類或者回歸,即預測 <Query, Doc> 的得分做爲排序準則,比較有表明性的模型有邏輯迴歸、XGBoost。Pairwise會考慮兩兩樣本之間偏序關係,轉化成單分類問題,好比 <Query, Doc1> 比 <Query, Doc2> 高,那這個Pair預測正,反之則負,典型的模型有RankSVM、LambdaMART。第三類就是Listwise模型,排序總體做爲優化目標,經過預測分佈和真實排序分佈的差距來優化模型,典型的模型如ListNet。
在排序模型的發展中,神經網絡很早就被用來作排序模型,好比2005年微軟研究院提出的RankNet使用神經網絡作Pairwise學習;2012年穀歌介紹了用深度學習作CTR的方法;與此同時,百度開始在鳳巢中用深度學習作CTR,於2013年上線。隨着深度學習的普及,各大公司和研究機構都在嘗試把深度學習應用在排序中,好比谷歌的Wide & Deep、YouTube的DNN推薦模型等,前面介紹的DSSM也可用來排序。下面將對RankNet、Wide & Deep、YouTube的排序模型做簡單介紹。
RankNet
RankNet是Pairwise的模型,一樣轉化爲Pointwise來處理。好比一次查詢裏,Di和Dj有偏序關係,前者比後者更相關,那把二者的特徵做爲神經網絡的輸入,通過一層非線性變化後,接入Loss來學習目標。若是Di比Dj更相關,那麼預測的機率爲下式,其中Si和Sj是對應Doc的得分。
在計算得分時使用神經網絡,如圖18所示,每樣本的輸入特徵做爲第一層,通過非線性變換後獲得打分,計算獲得Pair的得分後進行反向傳播更新參數,這裏可使用Mini-Batch。因爲RankNet須要預測的機率公式具備傳遞性,即Di和Dj的偏序機率能夠由Di和Dk以及Dk和Dj獲得,所以RankNet把計算複雜度從O(n²)變成了O(n),具體介紹可參考文獻。
固然,後續研究發現,RankNet以減小錯誤Pair爲優化目標,對NDCG等指標(關心相關文檔所在位置)衡量的效果不是太好,因而後面出現了改進模型,如LambdaRank。RankNet是典型的神經網絡排序模型,但當時工業界用得多的仍是簡單的線性模型,如邏輯迴歸,線性模型經過大量的人工設計特徵來提升效果,模型解釋性好性能也高。當人工設計特徵到必定程度就遇到了瓶頸,而深度學習能經過原始的特徵學習出複雜的關係,很大程度減輕了特徵工程的工做。而且GPU、FPGA等高性能輔助處理器變得普及,從而促進了深度神經網絡作排序模型的普遍研究。
Wide&Deep
谷歌發表過一篇論文「Wide & Deep Learning」,其觀點能夠用在推薦裏,好比谷歌的Apps推薦利用此觀點取得很好的效果,並把模型發佈在TensorFlow中。Wide & Deep總體模型結構分爲Wide和Deep兩部分,這兩部分在最外層合併一塊兒來學習模型,如圖19所示。輸入都是稀疏特徵,但特徵分爲兩種:一種適合作Deep的深度網絡變化,適合時效性或者記憶性的特徵,好比統計特徵或者展現位置等;另外一種能夠直接連在最外層,適合有推廣力但須要深度組合抽樣的特徵,好比品類、類型等。在模型優化時兩部分作聯合優化,Wide部分使用FTRL,而Deep使用Adagrad算法。這樣,Wide和Deep對不一樣類型特徵區分開來,充分發揮各自做用,解釋性比較好。
這種思路其實能夠作些擴展。好比Wide鏈接不是在最外層,而是在某一層,Deep的某些層也能夠鏈接到最外層,這樣能充分利用不一樣層抽象的Dense信息。與Wide & Deep的網絡鏈接方式相似,如2003年NNLM和2010年RNNLM模型裏的直接鏈接(Direct Connection),其淺層和深層的結合能很好地加速收斂,深度學習的Highway方式也是相似的。目前Wide & Deep應用較多,好比在阿里巴巴就有比較好的應用。
YouTube DNN排序模型
YouTube用來預測用戶觀看視頻時長,轉化爲加權的邏輯迴歸問題。DNN排序模型和前面的工做相似,其網絡結構是標準的前饋神經網絡,如圖20所示。DNN排序模型的特色仍是在輸入特徵上。雖然深度學習模型對特徵工程要求很低,但不少數據須要通過簡單處理後纔可加入模型。圖20中的特徵分爲不少域,好比語言方面、視頻方面、用戶歷史看過的視頻ID,還有以前觀看時長的統計量和歸一化的值。離散值通過Embedding的處理後變成連續向量,再級聯起來通過多層非線性變化後來預測最終的標籤。
從上面介紹的深度學習相關排序模型能夠看出,排序模型所須要的數據類型多種多樣,數據的含義也各有不一樣,不一樣於圖像、語音領域單一的輸入形式。所以在作排序模型中,輸入特徵的選取和表示方式是很重要的,好比連續特徵、離散特徵處理、用戶歷史、文檔特徵的區分等。在美團場景中,設計排序模型需考慮業務特色,對輸入特徵的表示作不少嘗試。
在語義匹配模型中介紹了ClickNet框架,其實該框架同時也可用於排序,與語義匹配的區別主要在表示層,如圖21所示。若是ClickNet用做搜索的CTR模型,那表示層的Query和Title的語義特徵只是一部分,還有用戶查詢、用戶行爲、商家信息以及交叉組合特徵均可以做爲業務特徵,並按特徵的類型分不一樣的域。進一步講,若是場景不包含語義匹配,模型的輸入能夠只有業務特徵。下面簡單講解在美團用ClickNet作排序模型的嘗試。
ClickNet-v1
ClickNet設計的初衷是它做爲文本的匹配模型,並做爲一維語義特徵加入到業務的Rank模型中以提高效果。但根據上線以後的數據分析,咱們發現以語義特徵表示爲主、輔以部分業務特徵的ClickNet在排序系統中有更好的表現。咱們針對排序模型作了以下改進。
針對業務Rank的目標優化ClickNet後,效果有很大改善,但模型仍是偏重於語義特徵。可否直接使用ClickNet作排序模型呢?答案是能夠的。只須要加劇業務特徵、弱化或者去除語義表示特徵就能夠,這樣修改後的模型就是ClickNet-v2。
ClickNet-v2
ClickNet-v2以業務特徵爲主,替換業務Rank模型爲目標,使用業務特徵做爲ClickNet的表示層輸入,經過對各特徵離散化後傳入模型。和ClickNet-v1不同的是,ClickNet-v2業務特徵種類繁多,須要作深度的分析和模型設計。
好比如何考慮位置偏好問題?由於展現位置會有先後順序,後面的展現不容易被用戶看到,從而自然點擊率會偏低。一種解決思路是能夠把位置信息直接鏈接到最外層,不作特徵組合處理。
再好比各業務特徵經過多層非線性變化後,特徵組合是否充分?一種解決思路是使用多項式非線性變換,這能很好組合多層的特徵。
又好比模型組合的效果是否更好?一種解決思路是嘗試FM和ClickNet的級聯,或者各模型的Bagging。
此外還有模型的解釋性等不少和業務場景相關的狀況須要考慮。
ClickNet是基於自研的深度學習框架Ginger實現的,收斂速度和效果都很是理想。咱們來看看分類任務上的一些測試,如圖22所示。在Higgs數據上,基於Ginger的ClickNet比基於XGBoost的AUC提高34個千分點,使用TensorFlow實現的ClickNet比基於Ginger的AUC差3個千分點,且其速度慢於Ginger。如圖23所示,ClickNet相比線性模型,其準確率都有較好的提高。
由於深度學習的擬合能力強、對特徵工程要求低,它在文本領域已經有不少應用。本章以語義匹配和排序模型爲例,分別介紹了業界進展和美團場景的應用。
第一部分介紹了語義匹配經歷的向量空間、潛在語義分析、主題模型、深度學習幾個階段,重點介紹了深度學習應用在語義匹配上的Embedding和DSSM系列模型,以及美團嘗試的ClickNet模型。第二部分介紹了深度學習在排序模型的一些進展和美團的一些嘗試。除了這兩部份內容外,深度學習幾乎滲透了文本的各方面,美團還有不少嘗試方式,好比情感分析、對話系統、摘要生成、關鍵詞生成等,限於篇幅不作介紹。總之,認知智能還有很長的路須要走,語言文字是人類歷史的文化沉澱,涉及語義、邏輯、文化、情感等衆多複雜的問題。咱們相信,深度學習在文本領域很快會有很大突破。
參考文獻
[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.
美團點評算法團隊是整個美團點評技術團隊的「大腦」,涵蓋搜索、推薦、廣告、智能調度、天然語言處理、計算機視覺、機器人以及無人駕駛等多個技術領域。幫助美團點評數億活躍用戶改善了用戶體驗,也幫助餐飲、酒店、結婚、麗人、親子等200多個品類的數百萬商戶提高了運營效率。目前,美團點評算法團隊在人工智能領域進行積極的探索和研究,不斷創新與實踐,致力於應用最前沿的技術,給廣告大消費者帶來更好的生活服務體驗。