幾種推薦搜尋場景下的使用者Embedding策略
所謂Embedding策略,就是用一個向量來描述一個實體的思想,這種思想用向量來描述實體資訊,不僅僅包含了實體本身的屬性資訊,同時還包含了實體之間的關聯資訊,以及實體和最終目標任務之間的關聯資訊。
這種方法最早其實是運用在NLP領域—詞向量就是很好的例子,但是隨著深度學習在其他各個領域(尤其是搜尋/推薦/廣告)的應用,衍生出了各種各樣的變種,目前成為了深度學習應用到各個領域之中的標準方法。下面就來講解幾篇使用Embedding策略在各種任務場景中提取使用者資訊的paper。
今天講解的第一篇paper是2015年在WWW會議上發表的論文《Modeling User Activities on the Web using Paragraph Vector》。這個paragraph vector就是NLP領域中的一個模型,他相對於把這個模型拿過來應用到了Web 領域,用來提取的是使用者的Embedding資訊,整個問題場景描述如下:
使用者在瀏覽網頁的時候會留下來一系列的行為,比方說網頁瀏覽,搜尋問題,點選廣告等,設使用者
留下的
個行為表示為
。我們希望根據所有的使用者行為資料,生成表徵每一個使用者的向量,使具有相同行為序列的使用者被對映到相似的向量空間之中。
該論文借鑑了skip-gram 的思想,公式如下:
其中
。由於採用該方式會導致計算量過大,故會採用負取樣技術,最終的優化的損失函式如下:
最終採用的是AdaGrad進行模型的訓練,最終就能得到表徵每個使用者屬性的向量
,該向量可以運用在很多後續的任務之中。
今天講解的第二篇paper是2015年發表的論文《Metadata Embeddings for User and Item Cold-start Recommendations》。其實這篇paper本身的模型非常簡單就是對經典的FM做了小小的改動,但是其用到的思想是非常有啟發意義的。FM在描述實體互動上採用了向量內積的方式,即使用向量來描述實體屬性,使用向量的內積操作來表達實體之間的特徵互動。但是對於一些冷啟動的場景下確是不太適合,比方說有些使用者或者item是新加入的,對於他們的Embedding就很難生成了。這裡作者巧妙的提出了feature Embedding的概念,即使用者的Embedding是由其對應的feature Embedding相加得到的,對於商品的Embedding來說也是相同的處理思想,如下述公式所示:
今天講解的第三篇paper是2018年在KDD會議上發表的論文《Real-time Personalization using Embeddings for Search Ranking at Airbnb》,這是Airbnb針對其名宿租賃場景提出的一個模型,目標是對user和host listing進行Embedding,從而完成host listing的相似度匹配工作。
從本質上來說,這篇paper提出的幾個idea都是對skip-gram模型進行微小的修改,從而適配Airbnb適用的目標場景。
listing Embedding
首先我來介紹一下listing Embedding的應用場景,假設集合
包含了N個使用者的click session行為資訊,每一個click session
其實是由
個listing id組成的。由於每一個使用者點選行為會非常多,這些listing id的長度會很長,為了分段這些記錄,使用30min為間隔進行分段,即同一個使用者兩個click行為之間的間隔在30min以上的就認為是2個session。
從描述中不難看出,每一個session就相當於一個句子,每一個listing 就相對於句子中的每一個詞語,直接套用原始的skip-gram就可以生成每一個listing的Embedding形式的向量,skit-gram + negative sampling公式如下:
當然這是最基本的模型,如果只有這個,這篇paper是不會被kdd錄用的。接下來,作者通過進一步分析每一個session,他發現所有的session可以分為2中型別:1 成功轉化的session,即在一系列的click行為之後,以成功的預訂行為作為session的結尾;2 瀏覽性的session,即在一系列的click行為之後,並沒有以成功的預訂行為結束的session。作者通過這一點,對原始的skip-gram模型進行了修改,主要針對的是那些成功轉換的session,如下圖所示:
即把每一個session中成功預訂的listing作為整個session中所有其他listing的context,整個損失函式如下所示: