丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
人工智能 正文
發(fā)私信給CSDN
發(fā)送

0

深度RNN解決語義搜索難題

本文作者: CSDN 2016-08-15 22:34
導語:語音識別在使用深度學習之后不再是難題,但是語義識別還是有一定難度,本文介紹了基于深度RNN的3中語義搜索模式。

雷鋒網(wǎng)按:本文作者張俊林,主要介紹了3種基于深度RNN的語義搜索模式。

本文討論如何用深度學習系統(tǒng)來構(gòu)造語義搜索引擎的問題。這里所謂的語義搜索,是指的能做用戶查詢和搜索網(wǎng)頁之間的語義級別匹配,比如說,用戶輸入“Iphone”,雖然某篇文章講到了“蘋果公司正在試圖做新型的手機”,但是沒有明確說iphone的字樣,那么即使如此也能夠?qū)⑦@篇文章找出來。傳統(tǒng)的搜索引擎對于這種情況是無能為力的,因為它們基本上還是基于字面匹配作為排序的基礎(chǔ)的,沒有任何字面匹配的結(jié)果是不會被搜索出來的,即使兩者在語義上講非常相關(guān)也不行。

搜索引擎大家平常都會用,所以這塊不必說。但是從技術(shù)角度講,搜索是在干什么事情?這個需要簡單說明一下。所謂搜索,就是說我們手頭假設(shè)有10億個網(wǎng)頁,形成文檔集合D,用戶想找一個信息,向搜索引擎發(fā)出用戶查詢Query。搜索引擎本質(zhì)上就是計算文檔集合D中每個網(wǎng)頁和用戶查詢Query之間的相關(guān)程度,越相關(guān)的排在搜索結(jié)果前列,就形成了搜索結(jié)果。

所以本質(zhì)上搜索就是對于兩個信息:Query 和某篇文檔Di,計算兩者之間的相關(guān)程度。傳統(tǒng)的方法是尋找兩者之間的特征重合程度來判斷的(此文我們不考慮鏈接關(guān)系等因素,純考慮文本匹配角度),比如TF.IDF啊,查詢詞是否在標題出現(xiàn)啊等等特征。

也就是說,對于搜索來說,可以將其改造成句子對匹配的問題,即可以如下理解搜索問題:

深度RNN解決語義搜索難題

意思是說,給定了用戶查詢和某篇文章,經(jīng)過映射函數(shù),給出兩者相關(guān)還是不相關(guān)的判斷,或者給出從1到5的不同相關(guān)程度的分類結(jié)果,1代表不相關(guān),5代表非常相關(guān):


深度RNN解決語義搜索難題

就是說給定Doc和Query,利用神經(jīng)網(wǎng)絡(luò)構(gòu)造映射函數(shù),映射到1到5分值空間里面。

之前我們歸納過對于句子匹配問題常見的幾種基于RNN的網(wǎng)絡(luò)結(jié)構(gòu),而本文給出將搜索問題看做是典型的句子匹配問題以及將其看做是特殊的句子匹配問題的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。我們可以將這種基于RNN構(gòu)建出的語義搜索神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)稱之為NeuralSearch結(jié)構(gòu)。就我的閱讀視野范圍來看,目前看到過CNN做搜索問題的,還沒有看到RNN結(jié)構(gòu)的。當然其實神經(jīng)網(wǎng)絡(luò)做搜索的工作相對來說不多,這可能跟查詢太短文檔太長有一定關(guān)系,至于這里介紹的方法是否有效我也不知道,本文只是把這個想法分享一下。

 在給出后續(xù)的RNN結(jié)構(gòu)前,先給出一個非常簡單易行的非監(jiān)督的語義搜索模型。

|一種非監(jiān)督的簡單語義搜索模型

其實你要想通過神經(jīng)網(wǎng)絡(luò)做語義搜索,有一種非常簡單的方式。這里描述下其工作機制。

深度RNN解決語義搜索難題

                  圖1 抽象的語義搜索結(jié)構(gòu)

圖1給出了一個最抽象的神經(jīng)網(wǎng)絡(luò)做語義搜索的模型結(jié)構(gòu)。它的核心思想是:把文檔集合D中的每個網(wǎng)頁通過一定映射方法表示為Word Embedding的表達方式,同時把用戶查詢Q也映射到Word Embedding表達方式,在這里其實已經(jīng)分別將查詢和文檔映射到了語義空間了。然后對兩者通過相似性函數(shù)進行匹配:


深度RNN解決語義搜索難題

然后根據(jù)相似性得分由高到低輸出就完成了文檔排序工作,給出了搜索結(jié)果。

之前有一些結(jié)合Word Embedding和IR的工作其實都是在這個抽象框架里覆蓋范圍里的,區(qū)別無非在于:從文檔的單詞列表如何映射出文檔的Word Embedding表示可能方法(圖1中的文檔WE轉(zhuǎn)換模塊)是不一樣的;從用戶查詢?nèi)绾斡成涑霾樵兊腤ord Embedding表示可能方法(圖1中的查詢WE轉(zhuǎn)換模塊)是不一樣的;相似性計算函數(shù)F可能也是不一樣的。

在這個框架下,我們給出一個最簡單易行的做語義搜索的方法,在上述框架下,只需要做兩點:

1. 如何獲得文檔的Word Embedding表示以及如何獲得查詢的Word Embedding表示?直接把單詞的Word Embedding表示累加或者求個平均即可,簡單吧。其實這種方法效果并不一定就差,在有些場合直接累加效果還是挺好的,實現(xiàn)起來又異常簡單;

2. 文檔和查詢的相似性度量函數(shù)如何?。恐苯佑肅osine計算就行。

這樣,就能夠構(gòu)造出非常簡單可行的語義搜索系統(tǒng)了。由于采用的是Word Embedding表示,所以它肯定可以支持語義搜索,因為即使文檔里面沒有出現(xiàn)過查詢詞,只要文檔中包含和查詢詞語義接近的單詞,那么他們的Word Embedding就非常像,就能算出語義相似性來。

從感覺上說,這種非監(jiān)督的方法肯定能增加搜索系統(tǒng)的召回率,因為原先無法匹配的文檔現(xiàn)在可以匹配了,但是理論上說對于搜索精度來說很可能是下降的,所以可能需要和傳統(tǒng)方法結(jié)合來一起用。

在圖1的抽象結(jié)構(gòu)上,其實我們很容易產(chǎn)生一個創(chuàng)新性想法,就是把個性化搜索融合進來,做個“個性化語義搜索引擎”,改動很簡單,只需要加入一個用戶個性化建模模塊即可,如圖2所示,只需要把用戶個人歷史通過“User歷史WE轉(zhuǎn)換模塊”來將用戶個性模型能夠表達為Word Embedding形式,就將個性化因素融合到這個語義搜索系統(tǒng)里面來了。

深度RNN解決語義搜索難題


            圖2 個性化語義搜索抽象框架圖

這個結(jié)構(gòu)目前好像我也沒看到過有提到的,應(yīng)該是種新想法,當然,算是一種簡單的新想法。而且如何構(gòu)建個性化模塊可能有很多不同的方法,所以這個結(jié)構(gòu)也是大有文章可作的。

|將搜索問題看成典型的RNN句子匹配問題

在之前的文章里面,我們從現(xiàn)有文獻里面歸納抽象出了用RNN解決句子匹配問題的幾種常見神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。既然我們把搜索問題看做是句子匹配問題,那么完全可以套用這些模型來解決這個問題。當然,直接使用RNN累加一個文檔Word Embedding未必是個很好的想法,但是這塊可以采用分句子給出Word Embedding,然后在累加等其它變體,這里為了簡化說明,采用簡單方法描述。

深度RNN解決語義搜索難題


                   圖3 NeuralSearch結(jié)構(gòu)一

圖3是第一種可能的RNN解決語義搜索問題的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),我們可以稱之為NeuralSearch Model1。核心思想是:針對文檔D和用戶查詢Q,分別建立一個深度RNN神經(jīng)網(wǎng)絡(luò),用來抽取兩者的特征,然后將兩者特征拼接成MLP三層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的輸入層,進行非線性變換,在這里來探討兩者之間的關(guān)系,之后給出分類結(jié)果。圖中W代表文檔中出現(xiàn)的單詞,而Q代表查詢中出現(xiàn)的單詞。與CNN模型比,RNN模型可以顯示地將單詞順序因素考慮進來。

深度RNN解決語義搜索難題


     圖4 NeuralSearch結(jié)構(gòu)二

圖4是第二種可能的RNN解決語義搜索問題的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),我們稱之為NeuralSearch Model2。核心思想是:將文檔D和用戶查詢Q的單詞依次拼接起來作為深層RNN結(jié)構(gòu)的輸入,兩者之間用特殊分隔符EOS來進行分隔,然后上面套上深層RNN結(jié)構(gòu),在此之上,可以用Mean Pooling來收集各個BLSTM單元的投票信息,并通過SoftMax給出最終分類結(jié)果。一樣的,圖中W代表文檔中出現(xiàn)的單詞,而Q代表查詢中出現(xiàn)的單詞。這種模型相對NeuralSearch Model1來說,在神經(jīng)網(wǎng)絡(luò)輸入層級就開始對D和Q中單詞之間的關(guān)系建立聯(lián)系。

深度RNN解決語義搜索難題


                        圖5 NeuralSearch結(jié)構(gòu)三

圖5是第三種可能的RNN解決語義搜索問題的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),我們稱之為NeuralSearch Model3。這個模型和NeuralSearch Model2在輸入層以及之后的深度網(wǎng)絡(luò)結(jié)構(gòu)是一樣的,區(qū)別在于:在做最后分類之前,不是每個BLSTM單元各自做出投票,而是將雙向RNN的首節(jié)點和尾節(jié)點隱層狀態(tài)拼接起來作為最后分類的基礎(chǔ),因為這兩個狀態(tài)存儲了文檔D和用戶查詢Q之間的語義關(guān)系信息。

我們標題說的是語義搜索,但是好像半天沒講語義怎么體現(xiàn)出來的,其實最初那個簡單語義搜索模型已經(jīng)能夠說明這個問題了,只要單詞是以Word Embedding的方式進行的,那么其實已經(jīng)能夠處理那些字面不同但是語義相同的語義匹配問題了,也就是說,它肯定是語義級別進行匹配的。

上面三種結(jié)構(gòu)是將搜索問題完全看成句子匹配問題引出的,下面看看是否可以構(gòu)造具有搜索特性的網(wǎng)絡(luò)結(jié)構(gòu)。

|將搜索問題看成非典型的RNN句子匹配問題

因為搜索問題和一般的句子匹配問題相比,有個明顯的特點:文檔內(nèi)容長,而用戶查詢短,也就是兩者信息含量非常不同。在此基礎(chǔ)上看,是否采用典型的RNN句子匹配思路來做會獲得非常好的效果,帶有一定的不確定性因素,因為上面的結(jié)構(gòu)中查詢很短而文檔很長,拼接作為輸入是否查詢信息會被弱化,以及LSTM是否能夠捕獲如此長距離的關(guān)系等影響都是未知數(shù)。

那么我們是否可以根據(jù)搜索問題的特點,來對RNN模型結(jié)構(gòu)進行進一步的改造,使得神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)更能符合搜索任務(wù)的特點。

深度RNN解決語義搜索難題


                     圖6 NeuralSearch結(jié)構(gòu)四

圖6是這種經(jīng)過特殊化改造的感覺更適合搜索場景的NeuralSearch結(jié)構(gòu),我們稱之為NeuralSearch Model4。首先,第一層神經(jīng)網(wǎng)絡(luò)首先把用戶查詢和文檔的每個句子根據(jù)RNN進行語義編碼,上層仍然采用經(jīng)典的深層雙向RNN結(jié)構(gòu),與之前的網(wǎng)絡(luò)結(jié)構(gòu)區(qū)別在于:對于每個BLSTM單元來說,輸入由兩部分拼接而成,一個是Query 的語義編碼,另外一個是某個句子的語義編碼。兩者拼接后作為新的輸入,這樣每個BLSTM節(jié)點實際是在判斷每個句子和用戶查詢的相關(guān)程度,而通過雙向RNN結(jié)構(gòu)將構(gòu)成文檔的所有句子按照順序串接起來,這里的RNN結(jié)構(gòu)是能體現(xiàn)句子之間的順序關(guān)系的。對于更深層的網(wǎng)絡(luò)來說,不斷重復這個過程,直到最高層的BLSTM產(chǎn)生輸出,而對于每個句子的輸出通過Mean Pooling進行信息融合,然后通過SoftMax產(chǎn)生最后的分類結(jié)果,也就是{1,2,3,4,5}幾個不同相關(guān)類別中。這個過程可以理解為判斷查詢和每個句子之間的語義相關(guān)程度,然后每個句子做出投票,根據(jù)每個句子的投票結(jié)果構(gòu)造出文檔整體和查詢的語義相關(guān)程度。

可以看出,上述結(jié)構(gòu)把文檔轉(zhuǎn)換為句子的集合,而在每一層結(jié)構(gòu)中反復使用用戶查詢,同時在每個句子處反復拼接用戶查詢,通過這種方式,一方面可以試圖解決文檔和查詢長度差異極大的情況,對用戶查詢進行了強化,另外一方面這種將查詢的語義表示在不同層級間反復使用的思路,類似于Residual Network的那種建立輸入和深層網(wǎng)絡(luò)中間結(jié)構(gòu)之間的ShortCut直連思想。

有了上述幾種NeuralSearch神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),可以采取傳統(tǒng)的Learning to rank的思路,用人工標好的訓練數(shù)據(jù)去訓練神經(jīng)網(wǎng)絡(luò)。當神經(jīng)網(wǎng)絡(luò)訓練好之后,就可以集成到搜索系統(tǒng)里,來實現(xiàn)語義搜索的功能。

當然,上述幾種RNN結(jié)構(gòu)做搜索是我自己拍腦袋想的,目前還沒有看到相似想法的相關(guān)文獻,而我也沒有時間精力以及訓練數(shù)據(jù)來對其效果進行驗證,所以上述的任意一種結(jié)構(gòu)用來解決搜索問題是否有效也沒有結(jié)論。很可能其中某種會有效,也許都沒有效果。所以這里對此不能作任何結(jié)論性的假設(shè)或說明,只是將一種自己認為也許可行的思路分享出來,有興趣的且有數(shù)據(jù)的同學可以試試。

最后再補充兩句,其實如果對Learningto rank有了解的同學可以看出來,Learning to rank包含三種范型:單文檔方法、文檔對方法和文檔列表方法。上面幾個模型本質(zhì)上都是單文檔方法,其實可以將RNN神經(jīng)網(wǎng)絡(luò)和文檔對方法以及文檔列表方法結(jié)合起來構(gòu)建新的Learning to Rank模型,這塊我不確定是否已經(jīng)出現(xiàn),就我跟蹤的范圍看好像還沒有看到,但是很明顯的一點是,這個結(jié)合的出現(xiàn)只是時間問題。而這種結(jié)合如果證明有效,就是比較大的創(chuàng)新,所以這塊是有很多文章可以做的,我是一沒有數(shù)據(jù)二沒有精力放在這塊,否則條件允許,這個方向是值得投入較大精力去摸索的。

雷鋒網(wǎng)注:本文轉(zhuǎn)自CSDN,轉(zhuǎn)載請聯(lián)系授權(quán),并注明作者和出處,不得刪減內(nèi)容。

雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。

深度RNN解決語義搜索難題

分享:
相關(guān)文章

CSDN 深度文集

當月熱門文章
最新文章
請?zhí)顚懮暾埲速Y料
姓名
電話
郵箱
微信號
作品鏈接
個人簡介
為了您的賬戶安全,請驗證郵箱
您的郵箱還未驗證,完成可獲20積分喲!
請驗證您的郵箱
立即驗證
完善賬號信息
您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
立即設(shè)置 以后再說