1. 程式人生 > >神經網路與推薦系統初步簡介

神經網路與推薦系統初步簡介

作者:一人

1.深度神經網路對於任何領域都是適用的

這裡寫圖片描述
深度神經網路(Deep Neural Networks,
DNN)在過去的數年已經在影象分類、語音識別、自然語言處理中取得了突破性的進展。在實踐中的應用已經證明了它可以作為對於一種十分有效的技術手段應用在大資料相關領域中。深度神經網路通過眾多的簡單線性變換層次性的進行非線性變換對於資料中的複雜關係能夠很好的進行擬合,即對資料特徵進行的深層次的挖掘。因此作為一種技術手段,深度神經網路對於任何領域都是適用的。

2.推薦系統簡介

推薦系統的功能是幫助使用者主動的找到滿足偏好的個性化物品並推薦給使用者。在本質上可以當做一個個性化的搜尋引擎,輸入的資料為使用者行為資訊、偏好資訊等,返回的結果為最符合查詢條件的物品列表。數學化的表示:

=f()1

我們的推薦引擎就扮演者這裡的函式的角色,它主要需要完成兩部分的工作:

A > 針對查詢條件對物品的相關性進行估計。

B > 晒選出topN個最相關的物品。

因此,推薦系統的關鍵就是對上面函式的一種求解

實際應用中的物品數量很大,因此在滿足業務需要的前提下,對於所有物品使用評估函式進行評估是不實際的。因此為了實現效能與效果的平衡,大多的推薦系統將以上的計算過程分為兩個部分:

  • 推薦召回

  • 推薦排序

推薦召回指在所有物品集合中檢索到符合使用者興趣的候選集,大約篩選出幾百個候選的列表。排序的目的是要利用展示、點選(或轉化)資料,然後加入更多的使用者、物品特徵,對推薦候選進行更精細的修正、打分。這種模式另一個好處是能夠利用多種候選集。

這裡寫圖片描述

因此,推薦系統需要完成兩步計算:候選集生成和排序,這兩階段的估計函式分別表示為g和h,即有:

f=g(h(x))2

3.使用神經網路近似求解函式參考1

對於函式的求解大多分為以下幾種途徑:

  • 確定性求解:通過對資料的規律進行建模直接求解。

  • 確定性近似求解:通過變分推斷的相關方法進行求解,EM。

  • 隨機性近似求解: 通過取樣的方法對函式進行求解,蒙特卡洛方法。

  • 非結構化求解

不管這個函式是什麼樣的,總會有一個神經網路能夠對任何可能的輸入 x網路可以得到對應的值 f(x)(或者某個足夠準確的近似)

即使函式有很多輸入或者多個輸出,這個結果都是成立的,f

=f(x1,...,xm) 。例如,這裡有一個輸入為 m=3 和輸出為 n=2 的網路:
這裡寫圖片描述

綜上,神經網路作為一種近似化求解方法可以用來對於公式(2)兩個函式g, h進行近似。

4.推薦召回

  • Google利用DNN來做YouTube的視訊推薦其模型圖如下圖所示。通過對使用者觀看的視訊,搜尋的關鍵字做embedding,然後在串聯上使用者的side
    information等資訊,作為DNN的輸入,利用一個多層的DNN學習出使用者的隱向量,然後在其上面加上一層softmax學習出Item的隱向量,進而即可為使用者做Top-N的推薦。
    這裡寫圖片描述

  • Autoencoder(AE)是一個無監督學習模型(類似矩陣分解),它利用反向傳播演算法,讓模型的輸出等於輸入。利用AE來預測使用者對物品missing的評分值,該模型的輸入為評分矩陣中的一行(User-based)或者一列(Item-based),其目標函式通過計算輸入與輸出的損失來優化模型,而評分矩陣中missing的評分值通過模型的輸出來預測,進而為使用者做推薦,其模型如下圖所示。後續,Denoising Autoencoder(DAE)是在AE的基礎之上,對輸入的訓練資料加入噪聲。所以DAE必須學習去除這些噪聲而獲得真正的沒有被噪聲汙染過的輸入資料。因此,這就迫使編碼器去學習輸入資料的更加魯棒的表達,通常DAE的泛化能力比一般的AE強。Stacked
    Denoising
    Autoencoder(SDAE)是一個多層的AE組成的神經網路,其前一層自編碼器的輸出作為其後一層自編碼器的輸入。還有Bayesian
    SDAE等等眾多方法均同源於此。
    這裡寫圖片描述

5.推薦排序

  • Wide & Deep 模型,Google利用DNN和傳統廣義線性模型結合的方式實現對於Google Play
    中的應用進行推薦。
    DNN具有很好的泛化性而廣義的線性模型具有很好的記憶性,通過將二者結合,在實現很好的泛化性基礎上對於不相干的物品規則進行了抑制。在輸入層將類別特徵通過embedding和連續值進行連線形成輸入的嵌入向量並通過三層的網路形成輸入的隱向量,並在輸入層將app相關的特徵進行交叉相乘,連同隱向量輸入一個邏輯輸出單元中,最終輸出對於特定app的評分。
    這裡寫圖片描述

6.神經網路其他應用

  • 詞向量表示,使用淺層神經網路方法進行學習。利用序列資料中蘊含的資訊,將物品的表示由高維稀疏表示對映到低維密集表示。典型的模型方法有:word2vec
    [無監督]和GloVe[無監督] (Global Vectors for Word Representation)。
    ——————————————————————————————————–
    下圖展示的是基於CBOW層次網路結構的word2vec,輸入層是若干個詞的詞向量,通過對映層進行累加,輸出層中黃色節點是非葉子節點代表一個類別,而葉子節點代表一個詞向量,整個輸出層是一個霍夫曼樹。假設對於特定的上下文,特定的中間詞的預測概率最大,進行訓練得到詞的低維密集表示。
    ——————————————————————————————————–
    例如:語句“直接修改此檔案”,分詞後有“直接”,“修改”,“此檔案”。那麼對於詞“修改”進行訓練,那麼輸入的上下文就是“直接”、“此檔案”,我們期望“修改”的概率最大。通過使用大量樣本訓練後,可以在葉子節點訓練得到對應詞的向量表示。之後,可以計算詞向量之間的相似性來代表詞之間的相似性,諸如此類對進一步的分析提供方便。
    ——————————————————————————————————–
    這裡寫圖片描述

7.神經網路的難點

由於神經網路用多層結構擬合複雜的非線性關係,具有龐大的引數,並且隨著網路的深入進行訓練愈發困難。因此對於實際中的應用具有以下難點:

  • 需要大量的訓練資料

  • 調參不存在合理的選擇方法

  • 對於具體應用不存在標準的網路結構

8.當前資料應用深度模型面臨的挑戰

  • 使用者行為稀疏,因此資料中存在大量的噪音

  • 媒體庫資料可用欄位較少

  • 使用者畫像雜亂,使用者屬性資訊採集不明確

總結

以前,計算資源寶貴,並且計算能力偏弱,因此為了實現智慧化功能,需要研發人員將功能規則通過人為的方式間接的融入進演算法當中,以此來減少計算量。但是由於使用者的應用場景繁雜,因此往往存在著眾多研發人員無法預估的情況。而且由於很多的近似求解方法需要得到精確地結果需要大量的計算而迫使多數應用場景無法實現和採用,因此在過去的數年間,應用層面的智慧化發展停滯不前。而隨著計算能力的迅速發展,利用大量計算實現智慧化的功能已經成為可行策略。而深層神經網路演算法以其強大的擬合能力就是適應了這種發展趨勢,迅速的在影象、語音、自然語言等領域取得了巨大的成就。

個性化推薦作為眾多智慧場景中的一員,已經吸引了眾多的研發人員投入其中,不同於影象、語音等具有豐富的特徵且演算法結果和真實樣本不會產生互相影響,由於推薦中特徵資料的繁雜,且推薦的結果影響著採集到的資料,目前推薦當中並不存在一種通用型的結構和方法。也有很多人將神經網路的方法應用在整體推薦的子領域當中已經取得了不錯的效果。可以預見隨著更多的人員參與進來,個性化推薦必將被神經網路的方法所侵佔。

在工業中,在有限的資源投入的情況下,緊跟技術前沿的發展,將先進的方法在系統當中進行驗證。或者對於行業取得穩定效果的方法進行驗證並進行系統整合,產品將會獲得巨大的收益。

附:

Word2vec 效果【節目vec之間的相似度】:

  1. 碟中諜5:神祕國度

【 # 危機13小時,# 碟中諜4,# 死亡飛車,# 極限特工2,# 虎膽龍威5,#
星際穿越,# 叢林奇兵, # 刺客聯盟, # 諜影重重2, # 非常人販】

  1. 86版西遊記

【# 西遊記動畫片,# 西遊記之鎖妖封魔塔,# 西遊記之大鬧天宮(3D),#
西遊記之大鬧天宮,# 西遊記之孫悟空三打白骨精, # 嘻遊記, #
西遊記之大聖歸來, # 西洋鏡, # 電哪吒, # 孫悟空七打九尾狐 】

  1. 射鵰英雄傳

【# 射鵰英雄傳 第3集,# 射鵰英雄傳 李亞鵬版,# 神鵰俠侶,#
神鵰俠侶[粵語版],# 天龍八部, # 方世玉與胡惠乾, # 倚天屠龍記大結局, #
新神鵰俠侶, # 神鵰俠侶黃曉明版, # 天涯明月刀】