• 小螞蟻站長吧-互聯網運營、增長黑客學習交流平臺

    您好,歡迎訪問小螞蟻站長吧!

    推薦策略產品經理必讀系列—第五講推薦系統的

    2000-01-01 00:00分類:產品經理 閱讀:

     

    前面幾篇介紹了基于規則的召回和基于協同過濾思想的召回,本篇文章給大家詳細介紹基于向量的召回。這也是目前實際工業界落地時應用最多的召回方法。

    一、什么是向量召回

    1. 向量

    具有大小和方向的量。向量召回的核心思想就是將用戶特征和物料特征全部用向量來表示,然后基于向量來計算用戶與物料的相似度、用戶與用戶的相似度、物料與物料的相似度。

    2. Embedding

    何為Embedding?大家應該經常聽到這個詞,那么到底什么是Embedding了?Embedding翻譯:“嵌入”& “向量映射”,是一種用一個數值向量“表示”一個對象(Object)的方法。Embedding可以理解為是一種編碼方式,把相關字符類值比如“安徽”通過編碼的方式轉化為可以供計算機使用的數字。

    下面我們用一個例子來先看一下基于向量的表達。

    上圖中一個用戶有六個特征,分別是【年齡、性別、年薪、愛好、戶籍、學歷】,很多特征都是文本特征,計算機無法直接基于文本特征來計算兩個用戶之間的相似度,需要先把文本轉化為向量,計算機最后基于向量計算出兩個用戶之間的相似度了。

    二、隱語義模型

    向量召回中最經典的應用也就是隱語義模型了,或者叫做隱向量模型,或者叫做矩陣分解模型。我們之前介紹了協同過濾思想,協同過濾思想有什么不好的地方了,隱語義模型對比協同過濾有什么先進之處了。

    2.1 案例引入

    首先我們通過一個生動的例子來回顧一下協同過濾的思想。某天吃貨路飛走進了一家飯店進行點餐,服務員小薇上來服務:

    1)Item-CF思想點餐

    基于路飛之前吃過的菜,為其推薦相似的菜品。

    2)User-CF思想點餐

    基于和路飛口味相同的人,為其推薦口味相同的人愛吃的菜。

    3)隱語義思想點餐

    隱語義模型的思想是先確認User的興趣偏好分類,然后將User的興趣偏好分類和Item的分類對齊。各位讀者也可以明顯看得出來隱語義思想是一種更加貼近于我們實際生活,更加先進的思想。

    我們用這么一張概括圖片,大家就能夠非常清晰地明白協調過濾思想和隱語義模型思想之間的差異了:

    協同過濾是將物料和用戶之間建立更多的鏈接,而隱語義模型的思想是將用戶和物料歸到相同的特征維度上,最后在相同的特征維度上進行相似度比較。

    User-CF:首先找到和目標用戶吃同樣菜的其他用戶,然后為目標用戶推薦其他用戶喜歡吃的菜;Item-CF:首先明確目標用戶歷史喜歡吃的菜,然后找到和歷史喜歡吃的菜比較相似的新菜;

    隱語義模型:首先明確目標用戶的興趣愛好,比如喜歡什么類型的菜,將用戶的興趣分類和菜的分類對齊,最后為其匹配符合其偏好的菜品;下面一個例子就是基于原始的用戶對于物料的評分表,將用戶和物料進行矩陣分解Embedding在相同的特征維度上。

    通過路飛和沙拉在相同維度下的匹配度,最后計算出路飛對于沙拉的偏好為0。

    2.2 隱語義模型概述

    我們對隱語義模型進行一個概述,日常我們經常聽到的隱向量模型或者矩陣分解模型,它們的其實含義是一樣的。

    隱語義模型 or 隱向量模型 or 矩陣分解模型:通過用戶的行為數據,挖掘出隱含的特征(Latent Factor),最終將用戶與物料Embedding在相同維度的特征上,在相同維度下進行相似度計算。使用更稠密的隱向量表示用戶和物品, 挖掘用戶和物品的隱含興趣和隱含特征。大家經常會看到Embedding這個詞,翻譯成中文叫做“嵌入”或者“向量映射”,實際就是將用戶和物料的特征映射到某個特征空間用向量來表達的一種方法。

    隱語義模型的核心就是如何將一個共現矩陣(用戶和物料的交互矩陣)分解成兩個小矩陣,也就是分解成一個用戶矩陣和一個物料矩陣,其中兩個小矩陣必須分解在相同的隱向量維度上,也就是下圖中的K,兩個小矩陣相乘可以變回原本的共現矩陣。

    當我們將一個大矩陣分解成兩個小矩陣時,面臨兩個核心問題,第一個核心問題是兩個小矩陣公用的這個隱向量維度K怎么設置?K的維度設置為多少比較合適?

    隱向量K維度的設置:

    第一點:K代表的含義是什么?

    K本身代表的隱向量維度不具有現實世界中的實際語義含義,不可解釋。Part2.1里面的點餐案例用了一些大家都能夠熟悉的語義進行舉例,但實際在隱語義模型里隱向量都是不可解釋的,也不具備實際的語義含義。

    第二點:K是不是越大越好?

    K本身并不是越大越好,K越大雖然表示的信息維度就會越多,但是泛化能力也會越差,K越大對于系統性能的要求以及算力要求也會越高;K越小表示的信息維度就會越少,但是泛化能力也會越強。最終K的取值是在模型效果和系統性能之間進行權衡利弊后做出的選擇。

    第三點:用戶U對于物料I的偏好度如何計算?

    用戶U對于物料I的偏好度最終的計算其實就是將用戶在第K個隱向量上的分數和物料在第K個隱向量上的分數進行相乘,最終將所有K維度的分數累加在一起。

    2.3 矩陣分解

    矩陣分解的第二個核心問題就是通過什么方法將一個大矩陣拆分成兩個小矩陣,其實這本質是一個數學問題。目前有三種比較常見的方法。

    方法一:特征值分解

    只能作用于N * N的方矩陣,而實際User和Item的矩陣均不是方矩陣,所以不具有適用性;

    方法二:奇異值分解

    適用于所有M * N矩陣,但是對矩陣的稠密度要求高,現實中的矩陣都是稀疏的,如果需要使用必須把缺失的值通過近似值進行補全,一般通過平均值等方式;計算復雜度極高Ο(m?n^2)。具體的數學計算邏輯較復雜,這里我們也不進行詳細數學計算過程的展開了。因為奇異值分解方式對于計算資源要求極高而且要求矩陣必須是稠密的,所以實際在互聯網場景中我們也不使用奇異值分解的方式。

    方法三:梯度下降法

    梯度下降法,2006年網飛舉辦的電影預測評分大賽上一位叫做 Simon Funk的選手提出一種新的方法叫做Funk SVD,后來又被稱為LFM。梯度下降法矩陣分解引入了用戶向量和物品向量,用q_{u}表示用戶u的向量,p_{i}表示物品i的向量,利用用戶向量與物品向量的內積q_{u}^{T}p_{i}來擬合用戶對物品的評分r_{u,i},利用梯度下降的方法來逐步迭代更新參數。目前工業界都使用方法三來進行矩陣分解。

    三、隱語義模型的優缺點

    對比上一篇文章里面介紹的協同過濾思想下的召回方法,隱語義模型具有哪些優缺點了。

    3.1 優點

    • 泛化能力強:隱語義模型同樣需要依賴于數據,但是一定程度上可以緩解矩陣稀疏的問題;
    • 計算空間復雜度低:矩陣分解最終生成的是用戶向量、物品向量,其復雜度為(m+n)*k,而協同過濾所需維護的用戶或物品相似度矩陣的復雜度為m*m或n*n,遠遠高于矩陣分解的復雜度;
    • 更好的靈活性和擴展性:矩陣分解生成的用戶向量、物品向量可以很好的與其他特征組合或拼接,也可以和深度學習神經網絡相結合。

    3.2 缺點

    僅考慮了用戶與物料各自的特征,不方便加入用戶、物料與上下文的特征以及其他的一些交互特征,模型本身仍然具有一定局限性。

    本文由 @King James 原創發布于人人都是產品經理。未經許可,禁止轉載。

    題圖來自 Pexels,基于 CC0 協議

    該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。

    上一篇: 重讀產品經理崗位勝任模型

    下一篇: 工具型數據產品經理,如何突破職業天花板?

    相關推薦
    ?

    關注我們

      小螞蟻站長吧-互聯網運營、增長黑客學習交流平臺
    返回頂部
    日韩在线精品视频a