推薦策略產(chǎn)品經(jīng)理必讀系列—第五講推薦系統(tǒng)的召回三

2 評(píng)論 11903 瀏覽 64 收藏 12 分鐘

前面幾篇介紹了基于規(guī)則的召回和基于協(xié)同過濾思想的召回,本篇文章給大家詳細(xì)介紹基于向量的召回。這也是目前實(shí)際工業(yè)界落地時(shí)應(yīng)用最多的召回方法。

一、什么是向量召回

1. 向量

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

2. Embedding

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

下面我們用一個(gè)例子來先看一下基于向量的表達(dá)。

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

二、隱語義模型

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

2.1 案例引入

首先我們通過一個(gè)生動(dòng)的例子來回顧一下協(xié)同過濾的思想。某天吃貨路飛走進(jìn)了一家飯店進(jìn)行點(diǎn)餐,服務(wù)員小薇上來服務(wù):

1)Item-CF思想點(diǎn)餐

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

2)User-CF思想點(diǎn)餐

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

3)隱語義思想點(diǎn)餐

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

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

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

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

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

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

2.2 隱語義模型概述

我們對(duì)隱語義模型進(jìn)行一個(gè)概述,日常我們經(jīng)常聽到的隱向量模型或者矩陣分解模型,它們的其實(shí)含義是一樣的。

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

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

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

隱向量K維度的設(shè)置:

第一點(diǎn):K代表的含義是什么?

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

第二點(diǎn):K是不是越大越好?

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

第三點(diǎn):用戶U對(duì)于物料I的偏好度如何計(jì)算?

用戶U對(duì)于物料I的偏好度最終的計(jì)算其實(shí)就是將用戶在第K個(gè)隱向量上的分?jǐn)?shù)和物料在第K個(gè)隱向量上的分?jǐn)?shù)進(jìn)行相乘,最終將所有K維度的分?jǐn)?shù)累加在一起。

2.3 矩陣分解

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

方法一:特征值分解

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

方法二:奇異值分解

適用于所有M * N矩陣,但是對(duì)矩陣的稠密度要求高,現(xiàn)實(shí)中的矩陣都是稀疏的,如果需要使用必須把缺失的值通過近似值進(jìn)行補(bǔ)全,一般通過平均值等方式;計(jì)算復(fù)雜度極高Ο(m?n^2)。具體的數(shù)學(xué)計(jì)算邏輯較復(fù)雜,這里我們也不進(jìn)行詳細(xì)數(shù)學(xué)計(jì)算過程的展開了。因?yàn)槠娈愔捣纸夥绞綄?duì)于計(jì)算資源要求極高而且要求矩陣必須是稠密的,所以實(shí)際在互聯(lián)網(wǎng)場(chǎng)景中我們也不使用奇異值分解的方式。

方法三:梯度下降法

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

三、隱語義模型的優(yōu)缺點(diǎn)

對(duì)比上一篇文章里面介紹的協(xié)同過濾思想下的召回方法,隱語義模型具有哪些優(yōu)缺點(diǎn)了。

3.1 優(yōu)點(diǎn)

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

3.2 缺點(diǎn)

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

本文由 @King James 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來自 Pexels,基于 CC0 協(xié)議

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 路飛和沙拉的相似度是算錯(cuò)了嗎?感覺應(yīng)該是10分才對(duì)啊

    來自上海 回復(fù)
    1. 確實(shí),里面有個(gè)數(shù)據(jù)寫錯(cuò)了,感謝指正

      來自北京 回復(fù)