百度NLP|神經網路語義匹配技術
百度NLP專欄
作者:百度NLP
一、序言
文本匹配是自然語言處理中一個重要的基礎問題,自然語言處理中的許多任務都可以抽象為文本匹配任務。例如網頁搜索可抽象為網頁同用戶搜索 Query 的一個相關性匹配問題,自動問答可抽象為候選答案與問題的滿足度匹配問題,文本去重可以抽象為文本與文本的相似度匹配問題。
傳統的文本匹配技術如信息檢索中的向量空間模型 VSM、BM25 等演算法,主要解決辭彙層面的匹配問題,或者說辭彙層面的相似度問題。而實際上,基於辭彙重合度的匹配演算法有很大的局限性,原因包括:
1)語言的多義同義問題
相同的詞在不同語境下,可以表達不同的語義,例如「蘋果」既表示水果,也表示一家科技公司。同理,相同的語義也可由不同的詞表達,例如「的士」、「taxi」都表示計程車。
2)語言的組合結構問題
相同的片語成的短語或句子,不同的語序可表達不同的語義,例如「深度學習」和「學習深度」。更進一步,還存在句法結構問題,例如「從北京到上海高鐵」和「從上海到北京高鐵「雖然含有的詞語完全相同,但其語義完全不同。而「北京隊打敗了廣東隊」和「廣東隊被北京隊打敗了」又語義完全相同。
3)匹配的非對稱問題
文本匹配類的任務,並不單單是文本相似度問題。一方面不一定要求語言上的相似,例如網頁搜索任務中 query 端的語言表述形式和網頁端往往具有很大的差別,至少在長度上就差距很大。另一方面也不一定要求語義上的相同,例如問答任務中,待匹配的兩段文本並不要求同義,而是看候選答案是否真正回答了問題。
這表明,對文本匹配任務,不能只停留在字面匹配層面,更需要語義層面的匹配,不僅是相似度匹配,還包括更廣泛意義上的匹配。
針對前述問題,有各種改進工作。比如基於統計機器翻譯方法,挖掘同義詞或同義片段來解決 mismatch 問題;從語義緊密度、詞語間隔等度量出發來規避結構轉義問題;從對網頁打關鍵詞標籤、點擊關聯計算等來一定程度解決非對稱匹配問題等。這些方法,都有一定效果,但整體上造成策略邏輯非常複雜,還是沒有完全解決具體任務下語義層面的匹配問題。
而語義層面的匹配,首先面臨語義如何表示、如何計算問題。
上世紀 90 年代流行起來的潛在語義分析技術(Latent Semantic Analysis,LSA),開闢了一個新思路,將詞句映射到等長的低維連續空間,可在此隱式的「潛在語義」空間上進行相似度計算。此後又有 PLSA(Probabilistic Latent Semantic Analysis)、LDA(Latent Dirichlet Allocation)等更高級的概率模型被設計出來,逐漸形成非常火熱的主題模型技術方向。這些技術對文本的語義表示形式簡潔、運算方便,較好的彌補了傳統辭彙匹配方法的不足。不過從效果上來看,這些技術都無法替代字面匹配技術,只能作為字面匹配的有效補充。
深度學習技術興起後,基於神經網路訓練出的 Word Embedding 來進行文本匹配計算引起了廣泛的興趣。Word Embedding 的訓練方式更加簡潔,而且所得的詞語向量表示的語義可計算性進一步加強。但是,只利用無標註數據訓練得到的 Word Embedding 在匹配度計算的實用效果上和主題模型技術相差不大,它們本質上都是基於共現信息的訓練。另外,Word Embedding 本身沒有解決短語、句子的語義表示問題,也沒有解決匹配的非對稱性問題。
我們於 2013 年設計研發了一種有監督的神經網路語義匹配模型 SimNet,大幅度提升了語義匹配計算的效果。SimNet 在語義表示上沿襲了隱式連續向量表示的方式,但對語義匹配問題在深度學習框架下進行了 End-to-End 的建模,將詞語的 Embedding 表示與句篇的語義表示、語義的向量表示與匹配度計算、文本對的匹配度計算與 pair-wise 的有監督學習全部統一在一個整體框架內。在實際應用場景下,海量的用戶點擊行為數據可以轉化大規模的弱標記數據,搭配我們研發的高效並行訓練演算法,大數據訓練的 SimNet 顯著超越了主題模型類演算法的效果,並首次實現了可完全取代基於字面匹配的策略,而且可以直接建模非相似度類的匹配問題。在網頁搜索任務上的初次使用即展現出極大威力,帶來了相關性的明顯提升。
近年來,學術界相關的研究也逐漸增多。像 Microsoft Research 提出的 DSSM 模型(Deep Structured Semantic Model)即和 SimNet 初版在模型框架上非常類似,只是在訓練手段上有所區別。華為 NOAH"S ARK LAB 也提出了一些新的神經網路匹配模型變體,如基於二維交互匹配的卷積匹配模型。中科院等研究機構也提出了諸如多視角循環神經網路匹配模型(MV-LSTM)、基於矩陣匹配的的層次化匹配模型 MatchPyramid 等更加精緻的神經網路文本匹配模型。
與此同時,我們也在 SimNet 基礎上進行了持續優化改進,模型效果持續提升,適用場景不斷擴大。除網頁搜索產品外,還成功應用到了廣告、新聞推薦、機器翻譯、深度問答等多個產品線和應用系統中,並取得了顯著效果。特別需要指出的是,與學術界的一些研究工作相比,我們除了模型演算法本身的優化改進之外,還特別注重了深度學習模型與自然語言處理基礎技術的結合,尤其深入考慮了中文的語言特性,更多從實用性角度提升了神經網路語義匹配技術的應用效果。
下面,首先整體介紹一下 SimNet 框架及模型演算法變體,然後著重從文本特性出發和 NLP 方法更好結合的角度介紹一些改進策略,最後談一下實際應用中需要考量的一些因素。
二、SimNet 框架
圖 1 SimNet 框架
SimNet 框架如上圖所示,主要分為輸入層、表示層和匹配層。
1.輸入層
該層通過 look up table 將文本詞序列轉換為 word embedding 序列。
2.表示層
該層主要功能是由詞到句的表示構建,或者說將序列的孤立的詞語的 embedding 表示,轉換為具有全局信息的一個或多個低維稠密的語義向量。最簡單的是 Bag of Words(BOW)的累加方法,除此之外,我們還在 SimNet 框架下研發了對應的序列卷積網路(CNN)、循環神經網路(RNN)等多種表示技術。當然,在得到句子的表示向量後,也可以繼續累加更多層全連接網路,進一步提升表示效果。
3.匹配層
該層利用文本的表示向量進行交互計算,根據應用的場景不同,我們研發了兩種匹配演算法。
1)Representation-based Match
該方式下,更側重對表示層的構建,儘可能充分地將待匹配的兩端都轉換到等長的語義表示向量里。然後在兩端對應的兩個語義表示向量基礎上,進行匹配度計算,我們設計了兩種計算方法:一種是通過固定的度量函數計算,實際中最常用的就是 cosine 函數,這種方式簡單高效,並且得分區間可控意義明確;還有就是將兩個向量再過一個多層感知器網路(MLP),通過數據訓練擬合出一個匹配度得分,這種方式更加靈活擬合能力更強,但對訓練的要求也更高。
2)Interaction-based Match
該方式更強調待匹配兩端更充分的交互,以及交互基礎上的匹配。所以不會在表示層將文本轉換成唯一的一個整體表示向量,而一般會保留和詞位置相對應的一組表示向量。下面介紹該方式下我們實際應用的一種的 SimNet 模型變體。首先基於表示層採用雙向 RNN 得到的文本中間位置表示,和詞位置對應的每個向量體現了以本詞語為核心的一定的全局信息;然後對兩段文本按詞對應交互,由此構建兩段文本之間的 matching matrix(當然也可以構建多組 matrix,形成 tensor),這裡面包括了更細緻更局部的文本交互信息;基於該局部匹配特徵矩陣,我們進一步使用卷積來提取高級的從單詞到 N-Gram 多層次的匹配特徵,再經過 pooling 和 MLP 得到最終匹配得分。
圖 4 Interaction-based match 方法
Interaction-based Match 匹配方法匹配建模更加細緻、充分,一般來說效果更好一些,但計算成本會增加非常多,適合一些效果精度要求高但對計算性能要求不高的應用場景。大部分場景下我們都會選擇更加簡潔高效的 Representation-based 匹配方式。
圖 5 Pair-wise 的 SimNet 訓練框架
我們採用了 pair-wise Ranking Loss 來進行 SimNet 的訓練。以網頁搜索任務為例,假設搜索查詢文本為 Q,相關的一篇文檔為 D+,不相關的一篇文檔為 D-,二者經過 SimNet 網路得到的和 Q 的匹配度得分分別為 S(Q,D+) 和 S(Q,D-),而訓練的優化目標就是使得 S(Q,D+)>S(Q,D-)。實際中,我們一般採用 Max-Margin 的 Hinge Loss:
max?{0,margin-(S(Q,D+)-S(Q,D-))}
這種 loss 簡潔、高效,還可以通過 margin 的不同設定,來調節模型得分的區分度。
三、文本任務下的特色改進
SimNet 的匹配框架非常普適。特別是 Representation-based 模式,其實很早在圖像中就有類似應用。九十年代即有利用 Siamese Networks 來進行簽名真偽匹配的工作。但對於文本任務來講,語言的一些特殊性還是需要我們有一些更多針對性的考慮。
針對文本的一維序列的特性,在表示層需要有更針對性的建模。比如我們實現的一維序列卷積網路和長短時記憶網路 LSTM,都充分考慮到了文本的特性。
此外,從輸入信號角度我們也充分考慮到文本的特點。SimNet 作為一種 End-to-End 的語義匹配框架,極大地降低了特徵設計的代價,直接輸入文本的詞序列即可。但對中文而言,由於基本語言單位是字,所以仍需要切詞這個步驟,但切詞本身就是個難題,而且詞語的粒度本身也沒有嚴格的定義,所以 SimNet 框架下需要降低對精準切詞的依賴,或者說要考慮如何從切詞角度來進一步提升匹配效果。另一方面,雖然不再需要進一步的複雜的特徵設計,但一些基本的 NLP 技術的產出,如高頻共現片段和句法結構信息,能否作為先驗知識融入 SimNet 框架發揮作用,也是值得探索的方向。
1. 中文字粒度匹配和多切分粒度融合
我們首先驗證了字粒度的匹配。由於中文字的數量遠小於詞的數量(可達百萬量級),即使將 embedding 的維度適當擴充,整個模型的大小也會大大降低。我們在 SimNet-RNN 模式下,經過精緻設計,字粒度輸入是可以比較接近詞粒度下的匹配效果的。當然在大部分 SimNet 變體下,字粒度較詞粒度效果上有一定的差距,但是差距並不太大。這就使得,在一些內存緊張或者沒有切詞模塊的場景下,可以直接使用字粒度模型,也可以達到較好的效果。
此外,我們還發現字粒度下有很好的泛化性,能很好的彌補詞粒度輸入的不足,如切詞的錯誤和未登錄詞 OOV 問題。這也提示我們可以將字粒度和詞粒度進行融合互補。另一方面,由於切詞自身不存在唯一客觀標準,實際上不同的切分方式也可以實現互補,比如可以同時使用大粒度切詞和細粒度切詞。這樣一來,我們對單一切詞的精度要求就可以不那麼高了。這也從某種意義上降低了語義匹配任務對切詞的高度依賴。
從最終結果上來看,多切分粒度的融合帶來了實際應用中的顯著效果提升。但是,多切分粒度如何融合,並沒有一個唯一模式。在 SimNet 框架下,多切分粒度融合在輸入層、表示層和匹配層都可以設計實現。
圖 6 多切分粒度在 SimNet 框架下融合方式
輸入層的融合要考慮到表示層網路的特點。對於 BOW 這種無序的表示結構,我們可以把多種切分粒度直接當輸入灌入模型。而對於 CNN/RNN 這些有序的表示結構,輸入層的融合則需要一些「技巧」,比如說需要考慮粒度在字層面對齊的問題。
表示層的融合會更加靈活方便些。神經網路有非常多有效的方式能把多個定長向量融合為一個,簡單的如拼接或者逐位相加,複雜的也可以加入 Gate 機制。那麼,我們可以容易地把多切分粒度生成的多表示向量進行融合,再通過融合後的語義表示層得到最終的匹配相似度。
匹配層的融合可以用最簡單直觀的方式實現,即不同表示粒度的匹配得分上做加權和。這樣有些像不同粒度的匹配模型的 Ensemble,區別是這裡所有粒度是同時訓練的。此種模式下參數量和計算量也是最大的。
經驗表明,越早進行粒度融合,最終的效果會越好。這也應該是因為使得粒度之間的互補性能更早更充分地發揮作用。
2. 高頻 Bigram 和 Collocation 片段引入
比基本切詞更大的短語片段粒度會不會進一步提升效果?理論上越大的文本片段,表義越精確,但也越稀疏。詞語粒度下的詞表已可達百萬量級,再增加更大片段壓力太大,而且還會面臨訓練不充分問題。我們設計了一種巧妙的統計量度量方式,基於大數據只挑選少量對匹配任務有很好信息量的高頻共現 Term 組合,作為 Bigram 詞加入字典,進一步顯著提升了模型效果。
舉個例子,我們輸入語料「汽車藍牙自動連接」,利用基本分詞工具,可以把序列分割為「汽車 藍牙 自動 連接」四個 Term。此時,我們依據大數據下的統計分析,可以發現「汽車-藍牙」的統計量得分最高,「自動-連接」次之,「藍牙-自動」最小,那麼依照設定的統計量閾值,我們就得到了基於 Bigram 粒度的輸出。
以上方式比較適合於連續 Term 共現組合,而對文本語義來講,有時候一些跨詞的 Collocation 搭配也非常重要。我們使用依存句法分析工具來獲得相應的 Collocation 片段。還是上面的例子,輸入語料「汽車藍牙自動連接」。此時,我們對輸入語料構建依存分析樹,統計父節點和子節點共現頻率,最終認為「藍牙-連接」顯得比「自動-連接」重要,因此最終輸出就成了「汽車-藍牙 藍牙-連接」。
不論是 Bigram 還是 Collocation,都相當於使用 NLP 基礎技術,用簡潔地方式引入了一些先驗信息到模型裡面,降低了模型學習的難度,在很多場景下都較明顯地提升了語義匹配的效果。
以上探索表明,針對文本任務的特點、語言本身特色,我們除了從神經網路模型更好地設計選型之外,也可以將一些基礎 NLP 分析技術更好地和模型融合,以更高效地獲取更好的效果。
四、實際應用中的考量因素
在實際應用中,除了模型演算法之外,還有很多因素會對最終效果產生很大的影響。其中最重要的就是數據,還有就是應用場景的特點。
對深度學習模型來講,數據的規模是非常關鍵的。在網頁搜索應用上的成功,有個很重要的因素就是有海量的用戶點擊數據。但是光有數量還不夠,還要看數據如何篩選,正例負例如何設定,特別是負例如何選擇的問題。例如在網頁搜索應用中,如果不考慮頻次問題,可能訓練數據的絕大部分構成都是高頻 Query 數據,但高頻 Query 的搜索效果一般是比較好的了。另外,有的 Query 有點擊的網頁很多,有的很少,能組成的正負 pair 數差別會很大,這時候如何處理?而對於負例,數量和質量上還應該考慮哪些因素?這些問題都至關重要,不同的數據設計方式會極大地影響最後效果。
應用場景同樣很重要。比如最終匹配度得分就是最終的結果,還是作為下一層模型的特徵輸入?如果作為下一層輸入的話,對得分的可比性有沒有要求?最終的任務是分類還是排序,是排序的話排序的優化目標和訓練中的優化目標如何可以做的更一致?這其中有一些會影響到對數據的組織方式,有一些需要針對性的對一些模型超參數做調整。例如前文 loss 中 margin 的具體設定,會影響到準確率指標和得分區分性之間的一些折中變化。
當然,訓練中諸如學習率等因素對任務成敗也有很大影響,但這些設定和調整的難易也取決於具體的訓練程序和平台。
※谷歌發布高效的移動端視覺識別模型:MobileNets
※開源|谷歌發布高效的移動端視覺識別模型:MobileNets
※Facebook開源基於強化學習的端到端談判AI
※Vicarious詳解新型圖式網路:賦予強化學習泛化能力
※微軟全球資深副總裁王永東:人工智慧一面是智能,另一面一定要接近於人
TAG:機器之心 |
※智能物聯 網路劃分之VLAN技術
※談SDN網路技術的大家族
※生物神經網路與機器學習的碰撞,Nature論文DNA試管網路識別
※生物神經網路與機器學習的碰撞,Nature論文提出DNA試管網路識別手寫數字
※訓練神經網路最快的方式:AdamW優化演算法+超級收斂
※針對複雜場景,「甲蟲網路」結合LoRa和NB-IoT特性,開發低功耗廣域物聯網組網傳輸技術
※英特爾提出新型壓縮技術DeepThin,適合移動端設備深度神經網路
※DNeT區塊鏈技術助力新一代網路運營商
※基於軟體定義網路的戰術移動Ad Hoc網路
※當前訓練神經網路最快的方式:AdamW優化演算法+超級收斂
※新型循環神經網路IndRNN:可構建更長更深的RNN
※深度|卷積神經網路十五問:CNN與生物視覺系統的研究探索
※業界 | 進化演算法 + AutoML,谷歌提出新型神經網路架構搜索方法
※龐際網路——VR+文創 助力文化產業轉型升級
※進化演算法+AutoML,谷歌提出新型神經網路架構搜索方法
※傳統網路設備商如何向VNF廠商成功轉型
※深度學習第6期:循環神經網路RNN
※網路技術課程:新韓式造型
※連接全球網路,觀脈科技欲撬動百億SD-WAN市場
※TP-Link新推網狀網路由器 可控制智能家居設備